From f5f56ea1c5bfb3c060c7da4f42373dba04730c86 Mon Sep 17 00:00:00 2001 From: Mike DeAngelo Date: Fri, 10 Apr 2026 09:50:32 -0400 Subject: [PATCH] fix(looker): Convert prebuilt tool yaml to flat format --- docs/en/integrations/looker/source.md | 32 +- .../looker/tools/looker-validate-project.md | 26 +- .../looker-conversational-analytics.yaml | 109 +- .../prebuiltconfigs/tools/looker-dev.yaml | 934 +++++----- internal/prebuiltconfigs/tools/looker.yaml | 1632 +++++++++-------- 5 files changed, 1401 insertions(+), 1332 deletions(-) diff --git a/docs/en/integrations/looker/source.md b/docs/en/integrations/looker/source.md index b30c4336205e..445c1d07ab94 100644 --- a/docs/en/integrations/looker/source.md +++ b/docs/en/integrations/looker/source.md @@ -63,17 +63,37 @@ To initialize the application default credential run `gcloud auth login ## Example +Initialize a Looker source for standard and development tools: + ```yaml kind: source name: my-looker-source type: looker -base_url: http://looker.example.com -client_id: ${LOOKER_CLIENT_ID} -client_secret: ${LOOKER_CLIENT_SECRET} -project: ${LOOKER_PROJECT} -location: ${LOOKER_LOCATION} -verify_ssl: true +base_url: ${LOOKER_BASE_URL} +client_id: ${LOOKER_CLIENT_ID:} +client_secret: ${LOOKER_CLIENT_SECRET:} +verify_ssl: ${LOOKER_VERIFY_SSL:true} +timeout: 600s +use_client_oauth: ${LOOKER_USE_CLIENT_OAUTH:false} +show_hidden_models: ${LOOKER_SHOW_HIDDEN_MODELS:true} +show_hidden_explores: ${LOOKER_SHOW_HIDDEN_EXPLORES:true} +show_hidden_fields: ${LOOKER_SHOW_HIDDEN_FIELDS:true} +``` + +Initialize a Looker source for conversational analytics: + +```yaml +kind: source +name: my-looker-conversational-source +type: looker +base_url: ${LOOKER_BASE_URL} +client_id: ${LOOKER_CLIENT_ID:} +client_secret: ${LOOKER_CLIENT_SECRET:} +verify_ssl: ${LOOKER_VERIFY_SSL:true} timeout: 600s +use_client_oauth: ${LOOKER_USE_CLIENT_OAUTH:false} +project: ${LOOKER_PROJECT:} +location: ${LOOKER_LOCATION:} ``` The Looker base url will look like "https://looker.example.com", don't include diff --git a/docs/en/integrations/looker/tools/looker-validate-project.md b/docs/en/integrations/looker/tools/looker-validate-project.md index dd8bd49549e5..4683b52f3f3b 100644 --- a/docs/en/integrations/looker/tools/looker-validate-project.md +++ b/docs/en/integrations/looker/tools/looker-validate-project.md @@ -19,27 +19,27 @@ A "looker-validate-project" tool checks the syntax of a LookML project and repor ## Example ```yaml -tools: - validate_project: - kind: looker-validate-project - source: looker-source - description: | - This tool checks a LookML project for syntax errors. +kind: tool +name: validate_project +type: looker-validate-project +source: looker-source +description: | + This tool checks a LookML project for syntax errors. - Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. + Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. - Parameters: - - project_id (required): The unique ID of the LookML project. + Parameters: + - project_id (required): The unique ID of the LookML project. - Output: - A list of error details including the file path and line number, and also a list of models - that are not currently valid due to LookML errors. + Output: + A list of error details including the file path and line number, and also a list of models + that are not currently valid due to LookML errors. ``` ## Reference | **field** | **type** | **required** | **description** | |-------------|:--------:|:------------:|----------------------------------------------------| -| kind | string | true | Must be "looker-validate-project". | +| type | string | true | Must be "looker-validate-project". | | source | string | true | Name of the source Looker instance. | | description | string | true | Description of the tool that is passed to the LLM. | diff --git a/internal/prebuiltconfigs/tools/looker-conversational-analytics.yaml b/internal/prebuiltconfigs/tools/looker-conversational-analytics.yaml index 4a51cf38fd43..30441910733e 100644 --- a/internal/prebuiltconfigs/tools/looker-conversational-analytics.yaml +++ b/internal/prebuiltconfigs/tools/looker-conversational-analytics.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,57 +12,60 @@ # See the License for the specific language governing permissions and # limitations under the License. -sources: - looker-source: - kind: looker - base_url: ${LOOKER_BASE_URL} - client_id: ${LOOKER_CLIENT_ID:} - client_secret: ${LOOKER_CLIENT_SECRET:} - verify_ssl: ${LOOKER_VERIFY_SSL:true} - timeout: 600s - use_client_oauth: ${LOOKER_USE_CLIENT_OAUTH:false} - project: ${LOOKER_PROJECT:} - location: ${LOOKER_LOCATION:} +kind: source +name: looker-source +type: looker +base_url: ${LOOKER_BASE_URL} +client_id: ${LOOKER_CLIENT_ID:} +client_secret: ${LOOKER_CLIENT_SECRET:} +verify_ssl: ${LOOKER_VERIFY_SSL:true} +timeout: 600s +use_client_oauth: ${LOOKER_USE_CLIENT_OAUTH:false} +project: ${LOOKER_PROJECT:} +location: ${LOOKER_LOCATION:} +--- +kind: tool +name: ask_data_insights +type: looker-conversational-analytics +source: looker-source +description: | + Use this tool to ask questions about your data using the Looker Conversational + Analytics API. You must provide a natural language query and a list of + 1 to 5 model and explore combinations (e.g. [{'model': 'the_model', 'explore': 'the_explore'}]). + Use the 'get_models' and 'get_explores' tools to discover available models and explores. +--- +kind: tool +name: get_models +type: looker-get-models +source: looker-source +description: | + get_models Tool + + This tool retrieves a list of available LookML models in the Looker instance. + LookML models define the data structure and relationships that users can query. + The output includes details like the model's `name` and `label`, which are + essential for subsequent calls to tools like `get_explores` or `query`. + + This tool takes no parameters. +--- +kind: tool +name: get_explores +type: looker-get-explores +source: looker-source +description: | + get_explores Tool -tools: - ask_data_insights: - kind: looker-conversational-analytics - source: looker-source - description: | - Use this tool to ask questions about your data using the Looker Conversational - Analytics API. You must provide a natural language query and a list of - 1 to 5 model and explore combinations (e.g. [{'model': 'the_model', 'explore': 'the_explore'}]). - Use the 'get_models' and 'get_explores' tools to discover available models and explores. - - get_models: - kind: looker-get-models - source: looker-source - description: | - get_models Tool - - This tool retrieves a list of available LookML models in the Looker instance. - LookML models define the data structure and relationships that users can query. - The output includes details like the model's `name` and `label`, which are - essential for subsequent calls to tools like `get_explores` or `query`. - - This tool takes no parameters. + This tool retrieves a list of explores defined within a specific LookML model. + Explores represent a curated view of your data, typically joining several + tables together to allow for focused analysis on a particular subject area. + The output provides details like the explore's `name` and `label`. - get_explores: - kind: looker-get-explores - source: looker-source - description: | - get_explores Tool - - This tool retrieves a list of explores defined within a specific LookML model. - Explores represent a curated view of your data, typically joining several - tables together to allow for focused analysis on a particular subject area. - The output provides details like the explore's `name` and `label`. - - Parameters: - - model_name (required): The name of the LookML model, obtained from `get_models`. - -toolsets: - looker_conversational_analytics_tools: - - ask_data_insights - - get_models - - get_explores \ No newline at end of file + Parameters: + - model_name (required): The name of the LookML model, obtained from `get_models`. +--- +kind: toolset +name: looker_conversational_analytics_tools +tools: +- ask_data_insights +- get_models +- get_explores \ No newline at end of file diff --git a/internal/prebuiltconfigs/tools/looker-dev.yaml b/internal/prebuiltconfigs/tools/looker-dev.yaml index 75eafda2440e..2b97161f8c63 100644 --- a/internal/prebuiltconfigs/tools/looker-dev.yaml +++ b/internal/prebuiltconfigs/tools/looker-dev.yaml @@ -12,457 +12,485 @@ # See the License for the specific language governing permissions and # limitations under the License. -sources: - looker-source: - kind: looker - base_url: ${LOOKER_BASE_URL} - client_id: ${LOOKER_CLIENT_ID:} - client_secret: ${LOOKER_CLIENT_SECRET:} - verify_ssl: ${LOOKER_VERIFY_SSL:true} - timeout: 600s - use_client_oauth: ${LOOKER_USE_CLIENT_OAUTH:false} - show_hidden_models: ${LOOKER_SHOW_HIDDEN_MODELS:true} - show_hidden_explores: ${LOOKER_SHOW_HIDDEN_EXPLORES:true} - show_hidden_fields: ${LOOKER_SHOW_HIDDEN_FIELDS:true} - +kind: source +name: looker-source +type: looker +base_url: ${LOOKER_BASE_URL} +client_id: ${LOOKER_CLIENT_ID:} +client_secret: ${LOOKER_CLIENT_SECRET:} +verify_ssl: ${LOOKER_VERIFY_SSL:true} +timeout: 600s +use_client_oauth: ${LOOKER_USE_CLIENT_OAUTH:false} +show_hidden_models: ${LOOKER_SHOW_HIDDEN_MODELS:true} +show_hidden_explores: ${LOOKER_SHOW_HIDDEN_EXPLORES:true} +show_hidden_fields: ${LOOKER_SHOW_HIDDEN_FIELDS:true} +--- +kind: tool +name: health_pulse +type: looker-health-pulse +source: looker-source +description: | + This tool performs various health checks on a Looker instance. + + Parameters: + - action (required): Specifies the type of health check to perform. + Choose one of the following: + - `check_db_connections`: Verifies database connectivity. + - `check_dashboard_performance`: Assesses dashboard loading performance. + - `check_dashboard_errors`: Identifies errors within dashboards. + - `check_explore_performance`: Evaluates explore query performance. + - `check_schedule_failures`: Reports on failed scheduled deliveries. + - `check_legacy_features`: Checks for the usage of legacy features. + + Note on `check_legacy_features`: + This action is exclusively available in Looker Core instances. If invoked + on a non-Looker Core instance, it will return a notice rather than an error. + This notice should be considered normal behavior and not an indication of an issue. +--- +kind: tool +name: health_analyze +type: looker-health-analyze +source: looker-source +description: | + This tool calculates the usage statistics for Looker projects, models, and explores. + + Parameters: + - action (required): The type of resource to analyze. Can be `"projects"`, `"models"`, or `"explores"`. + - project (optional): The specific project ID to analyze. + - model (optional): The specific model name to analyze. Requires `project` if used without `explore`. + - explore (optional): The specific explore name to analyze. Requires `model` if used. + - timeframe (optional): The lookback period in days for usage data. Defaults to `90` days. + - min_queries (optional): The minimum number of queries for a resource to be considered active. Defaults to `1`. + + Output: + The result is a JSON object containing usage metrics for the specified resources. +--- +kind: tool +name: health_vacuum +type: looker-health-vacuum +source: looker-source +description: | + This tool identifies and suggests LookML models or explores that can be + safely removed due to inactivity or low usage. + + Parameters: + - action (required): The type of resource to analyze for removal candidates. Can be `"models"` or `"explores"`. + - project (optional): The specific project ID to consider. + - model (optional): The specific model name to consider. Requires `project` if used without `explore`. + - explore (optional): The specific explore name to consider. Requires `model` if used. + - timeframe (optional): The lookback period in days to assess usage. Defaults to `90` days. + - min_queries (optional): The minimum number of queries for a resource to be considered active. Defaults to `1`. + + Output: + A JSON array of objects, each representing a model or explore that is a candidate for deletion due to low usage. +--- +kind: tool +name: dev_mode +type: looker-dev-mode +source: looker-source +description: | + This tool allows toggling the Looker IDE session between Development Mode and Production Mode. + Development Mode enables making and testing changes to LookML projects. + + Parameters: + - enable (required): A boolean value. + - `true`: Switches the current session to Development Mode. + - `false`: Switches the current session to Production Mode. +--- +kind: tool +name: get_projects +type: looker-get-projects +source: looker-source +description: | + This tool retrieves a list of all LookML projects available on the Looker instance. + It is useful for identifying projects before performing actions like retrieving + project files or making modifications. + + Parameters: + This tool takes no parameters. + + Output: + A JSON array of objects, each containing the `project_id` and `project_name` + for a LookML project. +--- +kind: tool +name: get_project_files +type: looker-get-project-files +source: looker-source +description: | + This tool retrieves a list of all LookML files within a specified project, + providing details about each file. + + Parameters: + - project_id (required): The unique ID of the LookML project, obtained from `get_projects`. + + Output: + A JSON array of objects, each representing a LookML file and containing + details such as `path`, `id`, `type`, and `git_status`. +--- +kind: tool +name: get_project_file +type: looker-get-project-file +source: looker-source +description: | + This tool retrieves the raw content of a specific LookML file from within a project. + + Parameters: + - project_id (required): The unique ID of the LookML project, obtained from `get_projects`. + - file_path (required): The path to the LookML file within the project, + typically obtained from `get_project_files`. + + Output: + The raw text content of the specified LookML file. +--- +kind: tool +name: create_project_file +type: looker-create-project-file +source: looker-source +description: | + This tool creates a new LookML file within a specified project, populating + it with the provided content. + + Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. + + Parameters: + - project_id (required): The unique ID of the LookML project. + - file_path (required): The desired path and filename for the new file within the project. + - content (required): The full LookML content to write into the new file. + + Output: + A confirmation message upon successful file creation. +--- +kind: tool +name: update_project_file +type: looker-update-project-file +source: looker-source +description: | + This tool modifies the content of an existing LookML file within a specified project. + + Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. + + Parameters: + - project_id (required): The unique ID of the LookML project. + - file_path (required): The exact path to the LookML file to modify within the project. + - content (required): The new, complete LookML content to overwrite the existing file. + + Output: + A confirmation message upon successful file modification. +--- +kind: tool +name: delete_project_file +type: looker-delete-project-file +source: looker-source +description: | + This tool permanently deletes a specified LookML file from within a project. + Use with caution, as this action cannot be undone through the API. + + Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. + + Parameters: + - project_id (required): The unique ID of the LookML project. + - file_path (required): The exact path to the LookML file to delete within the project. + + Output: + A confirmation message upon successful file deletion. +--- +kind: tool +name: get_project_directories +type: looker-get-project-directories +source: looker-source +description: | + This tool retrieves the list of directories within a specified LookML project. + + Parameters: + - project_id (required): The unique ID of the LookML project. + + Output: + A JSON array of strings, where each string is the name of a directory within the project. +--- +kind: tool +name: create_project_directory +type: looker-create-project-directory +source: looker-source +description: | + This tool creates a new directory within a specified LookML project. + + Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. + + Parameters: + - project_id (required): The unique ID of the LookML project. + - directory_path (required): The path to the new directory within the project. + + Output: + A confirmation message upon successful directory creation. +--- +kind: tool +name: delete_project_directory +type: looker-delete-project-directory +source: looker-source +description: | + This tool permanently deletes a specified directory within a LookML project. + + Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. + + Parameters: + - project_id (required): The unique ID of the LookML project. + - directory_path (required): The path to the directory within the project. + + Output: + A confirmation message upon successful directory deletion. +--- +kind: tool +name: validate_project +type: looker-validate-project +source: looker-source +description: | + This tool checks a LookML project for syntax errors. + + Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. + + Parameters: + - project_id (required): The unique ID of the LookML project. + + Output: + A list of error details including the file path and line number, and also a list of models + that are not currently valid due to LookML errors. +--- +kind: tool +name: get_connections +type: looker-get-connections +source: looker-source +description: | + This tool retrieves a list of all database connections configured in the Looker system. + + Parameters: + This tool takes no parameters. + + Output: + A JSON array of objects, each representing a database connection and including details such as: + - `name`: The connection's unique identifier. + - `dialect`: The database dialect (e.g., "mysql", "postgresql", "bigquery"). + - `default_schema`: The default schema for the connection. + - `database`: The associated database name (if applicable). + - `supports_multiple_databases`: A boolean indicating if the connection can access multiple databases. +--- +kind: tool +name: get_connection_schemas +type: looker-get-connection-schemas +source: looker-source +description: | + This tool retrieves a list of database schemas available through a specified + Looker connection. + + Parameters: + - connection_name (required): The name of the database connection, obtained from `get_connections`. + - database (optional): An optional database name to filter the schemas. + Only applicable for connections that support multiple databases. + + Output: + A JSON array of strings, where each string is the name of an available schema. +--- +kind: tool +name: get_connection_databases +type: looker-get-connection-databases +source: looker-source +description: | + This tool retrieves a list of databases available through a specified Looker connection. + This is only applicable for connections that support multiple databases. + Use `get_connections` to check if a connection supports multiple databases. + + Parameters: + - connection_name (required): The name of the database connection, obtained from `get_connections`. + + Output: + A JSON array of strings, where each string is the name of an available database. + If the connection does not support multiple databases, an empty list or an error will be returned. +--- +kind: tool +name: get_connection_tables +type: looker-get-connection-tables +source: looker-source +description: | + This tool retrieves a list of tables available within a specified database schema + through a Looker connection. + + Parameters: + - connection_name (required): The name of the database connection, obtained from `get_connections`. + - schema (required): The name of the schema to list tables from, obtained from `get_connection_schemas`. + - database (optional): The name of the database to filter by. Only applicable for connections + that support multiple databases (check with `get_connections`). + + Output: + A JSON array of strings, where each string is the name of an available table. +--- +kind: tool +name: get_connection_table_columns +type: looker-get-connection-table-columns +source: looker-source +description: | + This tool retrieves a list of columns for one or more specified tables within a + given database schema and connection. + + Parameters: + - connection_name (required): The name of the database connection, obtained from `get_connections`. + - schema (required): The name of the schema where the tables reside, obtained from `get_connection_schemas`. + - tables (required): A comma-separated string of table names for which to retrieve columns + (e.g., "users,orders,products"), obtained from `get_connection_tables`. + - database (optional): The name of the database to filter by. Only applicable for connections + that support multiple databases (check with `get_connections`). + + Output: + A JSON array of objects, where each object represents a column and contains details + such as `table_name`, `column_name`, `data_type`, and `is_nullable`. +--- +kind: tool +name: get_lookml_tests +type: looker-get-lookml-tests +source: looker-source +description: | + Returns a list of tests which can be run to validate a project's LookML code and/or the underlying data, optionally filtered by the file id. + + Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. + + Parameters: + - project_id (required): The unique ID of the LookML project. + - file_id (optional): The ID of the file to filter tests by. This must be the complete file path from the project root (e.g., `models/my_model.model.lkml` or `views/my_view.view.lkml`). + + Output: + A JSON array of LookML test objects, each containing: + - model_name: The name of the model. + - name: The name of the test. + - explore_name: The name of the explore being tested. + - query_url_params: The query parameters used for the test. + - file: The file path where the test is defined. + - line: The line number where the test is defined. +--- +kind: tool +name: run_lookml_tests +type: looker-run-lookml-tests +source: looker-source +description: | + This tool runs LookML tests in the project, filtered by file, test, and/or model. These filters work in conjunction (logical AND). + + Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. + + Parameters: + - project_id (required): The unique ID of the project to run LookML tests for. + - file_id (optional): The ID of the file to run tests for. This must be the complete file path from the project root (e.g., `models/my_model.model.lkml` or `views/my_view.view.lkml`). + - test (optional): The name of the test to run. + - model (optional): The name of the model to run tests for. + + Output: + A JSON array containing the results of the executed tests, where each object includes: + - model_name: Name of the model tested. + - test_name: Name of the test. + - assertions_count: Total number of assertions in the test. + - assertions_failed: Number of assertions that failed. + - success: Boolean indicating if the test passed. + - errors: Array of error objects (if any), containing details like `message`, `file_path`, `line_number`, and `severity`. + - warnings: Array of warning messages (if any). +--- +kind: tool +name: create_view_from_table +type: looker-create-view-from-table +source: looker-source +description: | + This tool generates boilerplate LookML views directly from the database schema. + It does not create model or explore files, only view files in the specified folder. + + Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. + + Parameters: + - project_id (required): The unique ID of the LookML project. + - connection (required): The database connection name. + - tables (required): A list of objects to generate views for. Each object must contain `schema` and `table_name` (note: table names are case-sensitive). Optional fields include `primary_key`, `base_view`, and `columns` (array of objects with `column_name`). + - folder_name (optional): The folder to place the view files in (defaults to 'views/'). + + Output: + A confirmation message upon successful view generation, or an error message if the operation fails. +--- +kind: tool +name: list_git_branches +type: looker-list-git-branches +source: looker-source +description: | + This tool is used to retrieve the list of available git branches of a LookML project. + + Parameters: + - project_id (required): The unique ID of the LookML project. +--- +kind: tool +name: get_git_branch +type: looker-get-git-branch +source: looker-source +description: | + This tool is used to retrieve the current git branch of a LookML project. + + Parameters: + - project_id (required): The unique ID of the LookML project. +--- +kind: tool +name: create_git_branch +type: looker-create-git-branch +source: looker-source +description: | + This tool is used to create a new git branch of a LookML project. This only works in dev mode. + + Parameters: + - project_id (required): The unique ID of the LookML project. + - branch (required): The branch to create. + - ref (optional): The ref to start a newly created branch. +--- +kind: tool +name: switch_git_branch +type: looker-switch-git-branch +source: looker-source +description: | + This tool is used to switch the git branch of a LookML project. This only works in dev mode. + + Parameters: + - project_id (required): The unique ID of the LookML project. + - branch (required): The branch to switch to. + - ref (optional): The ref to change a branch with `reset --hard` on a switch operation. +--- +kind: tool +name: delete_git_branch +type: looker-delete-git-branch +source: looker-source +description: | + This tool is used to delete a git branch of a LookML project. This only works in dev mode. + + Parameters: + - project_id (required): The unique ID of the LookML project. + - branch (required): The branch to delete. +--- +kind: toolset +name: looker_dev_tools tools: - health_pulse: - kind: looker-health-pulse - source: looker-source - description: | - This tool performs various health checks on a Looker instance. - - Parameters: - - action (required): Specifies the type of health check to perform. - Choose one of the following: - - `check_db_connections`: Verifies database connectivity. - - `check_dashboard_performance`: Assesses dashboard loading performance. - - `check_dashboard_errors`: Identifies errors within dashboards. - - `check_explore_performance`: Evaluates explore query performance. - - `check_schedule_failures`: Reports on failed scheduled deliveries. - - `check_legacy_features`: Checks for the usage of legacy features. - - Note on `check_legacy_features`: - This action is exclusively available in Looker Core instances. If invoked - on a non-Looker Core instance, it will return a notice rather than an error. - This notice should be considered normal behavior and not an indication of an issue. - - health_analyze: - kind: looker-health-analyze - source: looker-source - description: | - This tool calculates the usage statistics for Looker projects, models, and explores. - - Parameters: - - action (required): The type of resource to analyze. Can be `"projects"`, `"models"`, or `"explores"`. - - project (optional): The specific project ID to analyze. - - model (optional): The specific model name to analyze. Requires `project` if used without `explore`. - - explore (optional): The specific explore name to analyze. Requires `model` if used. - - timeframe (optional): The lookback period in days for usage data. Defaults to `90` days. - - min_queries (optional): The minimum number of queries for a resource to be considered active. Defaults to `1`. - - Output: - The result is a JSON object containing usage metrics for the specified resources. - - health_vacuum: - kind: looker-health-vacuum - source: looker-source - description: | - This tool identifies and suggests LookML models or explores that can be - safely removed due to inactivity or low usage. - - Parameters: - - action (required): The type of resource to analyze for removal candidates. Can be `"models"` or `"explores"`. - - project (optional): The specific project ID to consider. - - model (optional): The specific model name to consider. Requires `project` if used without `explore`. - - explore (optional): The specific explore name to consider. Requires `model` if used. - - timeframe (optional): The lookback period in days to assess usage. Defaults to `90` days. - - min_queries (optional): The minimum number of queries for a resource to be considered active. Defaults to `1`. - - Output: - A JSON array of objects, each representing a model or explore that is a candidate for deletion due to low usage. - - dev_mode: - kind: looker-dev-mode - source: looker-source - description: | - This tool allows toggling the Looker IDE session between Development Mode and Production Mode. - Development Mode enables making and testing changes to LookML projects. - - Parameters: - - enable (required): A boolean value. - - `true`: Switches the current session to Development Mode. - - `false`: Switches the current session to Production Mode. - - get_projects: - kind: looker-get-projects - source: looker-source - description: | - This tool retrieves a list of all LookML projects available on the Looker instance. - It is useful for identifying projects before performing actions like retrieving - project files or making modifications. - - Parameters: - This tool takes no parameters. - - Output: - A JSON array of objects, each containing the `project_id` and `project_name` - for a LookML project. - - get_project_files: - kind: looker-get-project-files - source: looker-source - description: | - This tool retrieves a list of all LookML files within a specified project, - providing details about each file. - - Parameters: - - project_id (required): The unique ID of the LookML project, obtained from `get_projects`. - - Output: - A JSON array of objects, each representing a LookML file and containing - details such as `path`, `id`, `type`, and `git_status`. - - get_project_file: - kind: looker-get-project-file - source: looker-source - description: | - This tool retrieves the raw content of a specific LookML file from within a project. - - Parameters: - - project_id (required): The unique ID of the LookML project, obtained from `get_projects`. - - file_path (required): The path to the LookML file within the project, - typically obtained from `get_project_files`. - - Output: - The raw text content of the specified LookML file. - - create_project_file: - kind: looker-create-project-file - source: looker-source - description: | - This tool creates a new LookML file within a specified project, populating - it with the provided content. - - Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. - - Parameters: - - project_id (required): The unique ID of the LookML project. - - file_path (required): The desired path and filename for the new file within the project. - - content (required): The full LookML content to write into the new file. - - Output: - A confirmation message upon successful file creation. - - update_project_file: - kind: looker-update-project-file - source: looker-source - description: | - This tool modifies the content of an existing LookML file within a specified project. - - Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. - - Parameters: - - project_id (required): The unique ID of the LookML project. - - file_path (required): The exact path to the LookML file to modify within the project. - - content (required): The new, complete LookML content to overwrite the existing file. - - Output: - A confirmation message upon successful file modification. - - delete_project_file: - kind: looker-delete-project-file - source: looker-source - description: | - This tool permanently deletes a specified LookML file from within a project. - Use with caution, as this action cannot be undone through the API. - - Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. - - Parameters: - - project_id (required): The unique ID of the LookML project. - - file_path (required): The exact path to the LookML file to delete within the project. - - Output: - A confirmation message upon successful file deletion. - - get_project_directories: - kind: looker-get-project-directories - source: looker-source - description: | - This tool retrieves the list of directories within a specified LookML project. - - Parameters: - - project_id (required): The unique ID of the LookML project. - - Output: - A JSON array of strings, where each string is the name of a directory within the project. - - create_project_directory: - kind: looker-create-project-directory - source: looker-source - description: | - This tool creates a new directory within a specified LookML project. - - Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. - - Parameters: - - project_id (required): The unique ID of the LookML project. - - directory_path (required): The path to the new directory within the project. - - Output: - A confirmation message upon successful directory creation. - - delete_project_directory: - kind: looker-delete-project-directory - source: looker-source - description: | - This tool permanently deletes a specified directory within a LookML project. - - Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. - - Parameters: - - project_id (required): The unique ID of the LookML project. - - directory_path (required): The path to the directory within the project. - - Output: - A confirmation message upon successful directory deletion. - - validate_project: - kind: looker-validate-project - source: looker-source - description: | - This tool checks a LookML project for syntax errors. - - Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. - - Parameters: - - project_id (required): The unique ID of the LookML project. - - Output: - A list of error details including the file path and line number, and also a list of models - that are not currently valid due to LookML errors. - - get_connections: - kind: looker-get-connections - source: looker-source - description: | - This tool retrieves a list of all database connections configured in the Looker system. - - Parameters: - This tool takes no parameters. - - Output: - A JSON array of objects, each representing a database connection and including details such as: - - `name`: The connection's unique identifier. - - `dialect`: The database dialect (e.g., "mysql", "postgresql", "bigquery"). - - `default_schema`: The default schema for the connection. - - `database`: The associated database name (if applicable). - - `supports_multiple_databases`: A boolean indicating if the connection can access multiple databases. - - get_connection_schemas: - kind: looker-get-connection-schemas - source: looker-source - description: | - This tool retrieves a list of database schemas available through a specified - Looker connection. - - Parameters: - - connection_name (required): The name of the database connection, obtained from `get_connections`. - - database (optional): An optional database name to filter the schemas. - Only applicable for connections that support multiple databases. - - Output: - A JSON array of strings, where each string is the name of an available schema. - - get_connection_databases: - kind: looker-get-connection-databases - source: looker-source - description: | - This tool retrieves a list of databases available through a specified Looker connection. - This is only applicable for connections that support multiple databases. - Use `get_connections` to check if a connection supports multiple databases. - - Parameters: - - connection_name (required): The name of the database connection, obtained from `get_connections`. - - Output: - A JSON array of strings, where each string is the name of an available database. - If the connection does not support multiple databases, an empty list or an error will be returned. - - get_connection_tables: - kind: looker-get-connection-tables - source: looker-source - description: | - This tool retrieves a list of tables available within a specified database schema - through a Looker connection. - - Parameters: - - connection_name (required): The name of the database connection, obtained from `get_connections`. - - schema (required): The name of the schema to list tables from, obtained from `get_connection_schemas`. - - database (optional): The name of the database to filter by. Only applicable for connections - that support multiple databases (check with `get_connections`). - - Output: - A JSON array of strings, where each string is the name of an available table. - - get_connection_table_columns: - kind: looker-get-connection-table-columns - source: looker-source - description: | - This tool retrieves a list of columns for one or more specified tables within a - given database schema and connection. - - Parameters: - - connection_name (required): The name of the database connection, obtained from `get_connections`. - - schema (required): The name of the schema where the tables reside, obtained from `get_connection_schemas`. - - tables (required): A comma-separated string of table names for which to retrieve columns - (e.g., "users,orders,products"), obtained from `get_connection_tables`. - - database (optional): The name of the database to filter by. Only applicable for connections - that support multiple databases (check with `get_connections`). - - Output: - A JSON array of objects, where each object represents a column and contains details - such as `table_name`, `column_name`, `data_type`, and `is_nullable`. - - get_lookml_tests: - kind: looker-get-lookml-tests - source: looker-source - description: | - Returns a list of tests which can be run to validate a project's LookML code and/or the underlying data, optionally filtered by the file id. - - Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. - - Parameters: - - project_id (required): The unique ID of the LookML project. - - file_id (optional): The ID of the file to filter tests by. This must be the complete file path from the project root (e.g., `models/my_model.model.lkml` or `views/my_view.view.lkml`). - - Output: - A JSON array of LookML test objects, each containing: - - model_name: The name of the model. - - name: The name of the test. - - explore_name: The name of the explore being tested. - - query_url_params: The query parameters used for the test. - - file: The file path where the test is defined. - - line: The line number where the test is defined. - - run_lookml_tests: - kind: looker-run-lookml-tests - source: looker-source - description: | - This tool runs LookML tests in the project, filtered by file, test, and/or model. These filters work in conjunction (logical AND). - - Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. - - Parameters: - - project_id (required): The unique ID of the project to run LookML tests for. - - file_id (optional): The ID of the file to run tests for. This must be the complete file path from the project root (e.g., `models/my_model.model.lkml` or `views/my_view.view.lkml`). - - test (optional): The name of the test to run. - - model (optional): The name of the model to run tests for. - - Output: - A JSON array containing the results of the executed tests, where each object includes: - - model_name: Name of the model tested. - - test_name: Name of the test. - - assertions_count: Total number of assertions in the test. - - assertions_failed: Number of assertions that failed. - - success: Boolean indicating if the test passed. - - errors: Array of error objects (if any), containing details like `message`, `file_path`, `line_number`, and `severity`. - - warnings: Array of warning messages (if any). - - create_view_from_table: - kind: looker-create-view-from-table - source: looker-source - description: | - This tool generates boilerplate LookML views directly from the database schema. - It does not create model or explore files, only view files in the specified folder. - - Prerequisite: The Looker session must be in Development Mode. Use `dev_mode: true` first. - - Parameters: - - project_id (required): The unique ID of the LookML project. - - connection (required): The database connection name. - - tables (required): A list of objects to generate views for. Each object must contain `schema` and `table_name` (note: table names are case-sensitive). Optional fields include `primary_key`, `base_view`, and `columns` (array of objects with `column_name`). - - folder_name (optional): The folder to place the view files in (defaults to 'views/'). - - Output: - A confirmation message upon successful view generation, or an error message if the operation fails. - - list_git_branches: - kind: looker-list-git-branches - source: looker-source - description: | - This tool is used to retrieve the list of available git branches of a LookML project. - - Parameters: - - project_id (required): The unique ID of the LookML project. - - get_git_branch: - kind: looker-get-git-branch - source: looker-source - description: | - This tool is used to retrieve the current git branch of a LookML project. - - Parameters: - - project_id (required): The unique ID of the LookML project. - - create_git_branch: - kind: looker-create-git-branch - source: looker-source - description: | - This tool is used to create a new git branch of a LookML project. This only works in dev mode. - - Parameters: - - project_id (required): The unique ID of the LookML project. - - branch (required): The branch to create. - - ref (optional): The ref to start a newly created branch. - - switch_git_branch: - kind: looker-switch-git-branch - source: looker-source - description: | - This tool is used to switch the git branch of a LookML project. This only works in dev mode. - - Parameters: - - project_id (required): The unique ID of the LookML project. - - branch (required): The branch to switch to. - - ref (optional): The ref to change a branch with `reset --hard` on a switch operation. - - delete_git_branch: - kind: looker-delete-git-branch - source: looker-source - description: | - This tool is used to delete a git branch of a LookML project. This only works in dev mode. - - Parameters: - - project_id (required): The unique ID of the LookML project. - - branch (required): The branch to delete. -toolsets: - looker_dev_tools: - - health_pulse - - health_analyze - - health_vacuum - - dev_mode - - get_projects - - get_project_files - - get_project_file - - create_project_file - - update_project_file - - delete_project_file - - get_project_directories - - create_project_directory - - delete_project_directory - - validate_project - - get_connections - - get_connection_schemas - - get_connection_databases - - get_connection_tables - - get_connection_table_columns - - get_lookml_tests - - run_lookml_tests - - create_view_from_table - - list_git_branches - - get_git_branch - - create_git_branch - - switch_git_branch - - delete_git_branch +- health_pulse +- health_analyze +- health_vacuum +- dev_mode +- get_projects +- get_project_files +- get_project_file +- create_project_file +- update_project_file +- delete_project_file +- get_project_directories +- create_project_directory +- delete_project_directory +- validate_project +- get_connections +- get_connection_schemas +- get_connection_databases +- get_connection_tables +- get_connection_table_columns +- get_lookml_tests +- run_lookml_tests +- create_view_from_table +- list_git_branches +- get_git_branch +- create_git_branch +- switch_git_branch +- delete_git_branch \ No newline at end of file diff --git a/internal/prebuiltconfigs/tools/looker.yaml b/internal/prebuiltconfigs/tools/looker.yaml index d3954ffd95c9..b1fb2d3cafd5 100644 --- a/internal/prebuiltconfigs/tools/looker.yaml +++ b/internal/prebuiltconfigs/tools/looker.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,810 +12,828 @@ # See the License for the specific language governing permissions and # limitations under the License. -sources: - looker-source: - kind: looker - base_url: ${LOOKER_BASE_URL} - client_id: ${LOOKER_CLIENT_ID:} - client_secret: ${LOOKER_CLIENT_SECRET:} - verify_ssl: ${LOOKER_VERIFY_SSL:true} - timeout: 600s - use_client_oauth: ${LOOKER_USE_CLIENT_OAUTH:false} - show_hidden_models: ${LOOKER_SHOW_HIDDEN_MODELS:true} - show_hidden_explores: ${LOOKER_SHOW_HIDDEN_EXPLORES:true} - show_hidden_fields: ${LOOKER_SHOW_HIDDEN_FIELDS:true} - +kind: source +name: looker-source +type: looker +base_url: ${LOOKER_BASE_URL} +client_id: ${LOOKER_CLIENT_ID:} +client_secret: ${LOOKER_CLIENT_SECRET:} +verify_ssl: ${LOOKER_VERIFY_SSL:true} +timeout: 600s +use_client_oauth: ${LOOKER_USE_CLIENT_OAUTH:false} +show_hidden_models: ${LOOKER_SHOW_HIDDEN_MODELS:true} +show_hidden_explores: ${LOOKER_SHOW_HIDDEN_EXPLORES:true} +show_hidden_fields: ${LOOKER_SHOW_HIDDEN_FIELDS:true} +--- +kind: tool +name: get_models +type: looker-get-models +source: looker-source +description: | + This tool retrieves a list of available LookML models in the Looker instance. + LookML models define the data structure and relationships that users can query. + The output includes details like the model's `name` and `label`, which are + essential for subsequent calls to tools like `get_explores` or `query`. + + This tool takes no parameters. +--- +kind: tool +name: get_explores +type: looker-get-explores +source: looker-source +description: | + This tool retrieves a list of explores defined within a specific LookML model. + Explores represent a curated view of your data, typically joining several + tables together to allow for focused analysis on a particular subject area. + The output provides details like the explore's `name` and `label`. + + Parameters: + - model_name (required): The name of the LookML model, obtained from `get_models`. +--- +kind: tool +name: get_dimensions +type: looker-get-dimensions +source: looker-source +description: | + This tool retrieves a list of dimensions defined within a specific Looker explore. + Dimensions are non-aggregatable attributes or characteristics of your data + (e.g., product name, order date, customer city) that can be used for grouping, + filtering, or segmenting query results. + + Parameters: + - model_name (required): The name of the LookML model, obtained from `get_models`. + - explore_name (required): The name of the explore within the model, obtained from `get_explores`. + + Output Details: + - If a dimension includes a `suggestions` field, its contents are valid values + that can be used directly as filters for that dimension. + - If a `suggest_explore` and `suggest_dimension` are provided, you can query + that specified explore and dimension to retrieve a list of valid filter values. +--- +kind: tool +name: get_measures +type: looker-get-measures +source: looker-source +description: | + This tool retrieves a list of measures defined within a specific Looker explore. + Measures are aggregatable metrics (e.g., total sales, average price, count of users) + that are used for calculations and quantitative analysis in your queries. + + Parameters: + - model_name (required): The name of the LookML model, obtained from `get_models`. + - explore_name (required): The name of the explore within the model, obtained from `get_explores`. + + Output Details: + - If a measure includes a `suggestions` field, its contents are valid values + that can be used directly as filters for that measure. + - If a `suggest_explore` and `suggest_dimension` are provided, you can query + that specified explore and dimension to retrieve a list of valid filter values. +--- +kind: tool +name: get_filters +type: looker-get-filters +source: looker-source +description: | + This tool retrieves a list of "filter-only fields" defined within a specific + Looker explore. These are special fields defined in LookML specifically to + create user-facing filter controls that do not directly affect the `GROUP BY` + clause of the SQL query. They are often used in conjunction with liquid templating + to create dynamic queries. + + Note: Regular dimensions and measures can also be used as filters in a query. + This tool *only* returns fields explicitly defined as `filter:` in LookML. + + Parameters: + - model_name (required): The name of the LookML model, obtained from `get_models`. + - explore_name (required): The name of the explore within the model, obtained from `get_explores`. +--- +kind: tool +name: get_parameters +type: looker-get-parameters +source: looker-source +description: | + This tool retrieves a list of parameters defined within a specific Looker explore. + LookML parameters are dynamic input fields that allow users to influence query + behavior without directly modifying the underlying LookML. They are often used + with `liquid` templating to create flexible dashboards and reports, enabling + users to choose dimensions, measures, or other query components at runtime. + + Parameters: + - model_name (required): The name of the LookML model, obtained from `get_models`. + - explore_name (required): The name of the explore within the model, obtained from `get_explores`. +--- +kind: tool +name: query +type: looker-query +source: looker-source +description: | + This tool runs a query against a LookML model and returns the results in JSON format. + + Required Parameters: + - model_name: The name of the LookML model (from `get_models`). + - explore_name: The name of the explore (from `get_explores`). + - fields: A list of field names (dimensions, measures, filters, or parameters) to include in the query. + + Optional Parameters: + - pivots: A list of fields to pivot the results by. These fields must also be included in the `fields` list. + - filters: A map of filter expressions, e.g., `{"view.field": "value", "view.date": "7 days"}`. + - Do not quote field names. + - Use `not null` instead of `-NULL`. + - If a value contains a comma, enclose it in single quotes (e.g., "'New York, NY'"). + - sorts: A list of fields to sort by, optionally including direction (e.g., `["view.field desc"]`). + - limit: Row limit (default 500). Use "-1" for unlimited. + - query_timezone: specific timezone for the query (e.g. `America/Los_Angeles`). + + Note: Use `get_dimensions`, `get_measures`, `get_filters`, and `get_parameters` to find valid fields. +--- +kind: tool +name: query_sql +type: looker-query-sql +source: looker-source +description: | + This tool generates the underlying SQL query that Looker would execute + against the database for a given set of parameters. It is useful for + understanding how Looker translates a request into SQL. + + Parameters: + All parameters for this tool are identical to those of the `query` tool. + This includes `model_name`, `explore_name`, `fields` (required), + and optional parameters like `pivots`, `filters`, `sorts`, `limit`, and `query_timezone`. + + Output: + The result of this tool is the raw SQL text. +--- +kind: tool +name: query_url +type: looker-query-url +source: looker-source +description: | + This tool generates a shareable URL for a Looker query, allowing users to + explore the query further within the Looker UI. It returns the generated URL, + along with the `query_id` and `slug`. + + Parameters: + All query parameters (e.g., `model_name`, `explore_name`, `fields`, `pivots`, + `filters`, `sorts`, `limit`, `query_timezone`) are the same as the `query` tool. + + Additionally, it accepts an optional `vis_config` parameter: + - vis_config (optional): A JSON object that controls the default visualization + settings for the generated query. + + vis_config Details: + The `vis_config` object supports a wide range of properties for various chart types. + Here are some notes on making visualizations. + + ### Cartesian Charts (Area, Bar, Column, Line, Scatter) + + These chart types share a large number of configuration options. + + **General** + * `type`: The type of visualization (`looker_area`, `looker_bar`, `looker_column`, `looker_line`, `looker_scatter`). + * `series_types`: Override the chart type for individual series. + * `show_view_names`: Display view names in labels and tooltips (`true`/`false`). + * `series_labels`: Provide custom names for series. + + **Styling & Colors** + * `colors`: An array of color values to be used for the chart series. + * `series_colors`: A mapping of series names to specific color values. + * `color_application`: Advanced controls for color palette application (collection, palette, reverse, etc.). + * `font_size`: Font size for labels (e.g., '12px'). + + **Legend** + * `hide_legend`: Show or hide the chart legend (`true`/`false`). + * `legend_position`: Placement of the legend (`'center'`, `'left'`, `'right'`). + + **Axes** + * `swap_axes`: Swap the X and Y axes (`true`/`false`). + * `x_axis_scale`: Scale of the x-axis (`'auto'`, `'ordinal'`, `'linear'`, `'time'`). + * `x_axis_reversed`, `y_axis_reversed`: Reverse the direction of an axis (`true`/`false`). + * `x_axis_gridlines`, `y_axis_gridlines`: Display gridlines for an axis (`true`/`false`). + * `show_x_axis_label`, `show_y_axis_label`: Show or hide the axis title (`true`/`false`). + * `show_x_axis_ticks`, `show_y_axis_ticks`: Show or hide axis tick marks (`true`/`false`). + * `x_axis_label`, `y_axis_label`: Set a custom title for an axis. + * `x_axis_datetime_label`: A format string for datetime labels on the x-axis (e.g., `'%Y-%m'`). + * `x_padding_left`, `x_padding_right`: Adjust padding on the ends of the x-axis. + * `x_axis_label_rotation`, `x_axis_label_rotation_bar`: Set rotation for x-axis labels. + * `x_axis_zoom`, `y_axis_zoom`: Enable zooming on an axis (`true`/`false`). + * `y_axes`: An array of configuration objects for multiple y-axes. + + **Data & Series** + * `stacking`: How to stack series (`''` for none, `'normal'`, `'percent'`). + * `ordering`: Order of series in a stack (`'none'`, etc.). + * `limit_displayed_rows`: Enable or disable limiting the number of rows displayed (`true`/`false`). + * `limit_displayed_rows_values`: Configuration for the row limit (e.g., `{ "first_last": "first", "show_hide": "show", "num_rows": 10 }`). + * `discontinuous_nulls`: How to render null values in line charts (`true`/`false`). + * `point_style`: Style for points on line and area charts (`'none'`, `'circle'`, `'circle_outline'`). + * `series_point_styles`: Override point styles for individual series. + * `interpolation`: Line interpolation style (`'linear'`, `'monotone'`, `'step'`, etc.). + * `show_value_labels`: Display values on data points (`true`/`false`). + * `label_value_format`: A format string for value labels. + * `show_totals_labels`: Display total labels on stacked charts (`true`/`false`). + * `totals_color`: Color for total labels. + * `show_silhouette`: Display a "silhouette" of hidden series in stacked charts (`true`/`false`). + * `hidden_series`: An array of series names to hide from the visualization. + + **Scatter/Bubble Specific** + * `size_by_field`: The field used to determine the size of bubbles. + * `color_by_field`: The field used to determine the color of bubbles. + * `plot_size_by_field`: Whether to display the size-by field in the legend. + * `cluster_points`: Group nearby points into clusters (`true`/`false`). + * `quadrants_enabled`: Display quadrants on the chart (`true`/`false`). + * `quadrant_properties`: Configuration for quadrant labels and colors. + * `custom_quadrant_value_x`, `custom_quadrant_value_y`: Set quadrant boundaries as a percentage. + * `custom_quadrant_point_x`, `custom_quadrant_point_y`: Set quadrant boundaries to a specific value. + + **Miscellaneous** + * `reference_lines`: Configuration for displaying reference lines. + * `trend_lines`: Configuration for displaying trend lines. + * `trellis`: Configuration for creating trellis (small multiple) charts. + * `crossfilterEnabled`, `crossfilters`: Configuration for cross-filtering interactions. + + ### Boxplot + + * Inherits most of the Cartesian chart options. + * `type`: Must be `looker_boxplot`. + + ### Funnel + + * `type`: Must be `looker_funnel`. + * `orientation`: How data is read (`'automatic'`, `'dataInRows'`, `'dataInColumns'`). + * `percentType`: How percentages are calculated (`'percentOfMaxValue'`, `'percentOfPriorRow'`). + * `labelPosition`, `valuePosition`, `percentPosition`: Placement of labels (`'left'`, `'right'`, `'inline'`, `'hidden'`). + * `labelColor`, `labelColorEnabled`: Set a custom color for labels. + * `labelOverlap`: Allow labels to overlap (`true`/`false`). + * `barColors`: An array of colors for the funnel steps. + * `color_application`: Advanced color palette controls. + * `crossfilterEnabled`, `crossfilters`: Configuration for cross-filtering. + + ### Pie / Donut + + * Pie charts must have exactly one dimension and one numerical measure. + * `type`: Must be `looker_pie`. + * `value_labels`: Where to display values (`'legend'`, `'labels'`). + * `label_type`: The format of data labels (`'labPer'`, `'labVal'`, `'lab'`, `'val'`, `'per'`). + * `start_angle`, `end_angle`: The start and end angles of the pie chart. + * `inner_radius`: The inner radius, used to create a donut chart. + * `series_colors`, `series_labels`: Override colors and labels for specific slices. + * `color_application`: Advanced color palette controls. + * `crossfilterEnabled`, `crossfilters`: Configuration for cross-filtering. + * `advanced_vis_config`: A string containing JSON for advanced Highcharts configuration. + + ### Waterfall + + * Inherits most of the Cartesian chart options. + * `type`: Must be `looker_waterfall`. + * `up_color`: Color for positive (increasing) values. + * `down_color`: Color for negative (decreasing) values. + * `total_color`: Color for the total bar. + + ### Word Cloud + + * `type`: Must be `looker_wordcloud`. + * `rotation`: Enable random word rotation (`true`/`false`). + * `colors`: An array of colors for the words. + * `color_application`: Advanced color palette controls. + * `crossfilterEnabled`, `crossfilters`: Configuration for cross-filtering. + + These are some sample vis_config settings. + + A bar chart - + {{ + "defaults_version": 1, + "label_density": 25, + "legend_position": "center", + "limit_displayed_rows": false, + "ordering": "none", + "plot_size_by_field": false, + "point_style": "none", + "show_null_labels": false, + "show_silhouette": false, + "show_totals_labels": false, + "show_value_labels": false, + "show_view_names": false, + "show_x_axis_label": true, + "show_x_axis_ticks": true, + "show_y_axis_labels": true, + "show_y_axis_ticks": true, + "stacking": "normal", + "totals_color": "#808080", + "trellis": "", + "type": "looker_bar", + "x_axis_gridlines": false, + "x_axis_reversed": false, + "x_axis_scale": "auto", + "x_axis_zoom": true, + "y_axis_combined": true, + "y_axis_gridlines": true, + "y_axis_reversed": false, + "y_axis_scale_mode": "linear", + "y_axis_tick_density": "default", + "y_axis_tick_density_custom": 5, + "y_axis_zoom": true + }} + + A column chart with an option advanced_vis_config - + {{ + "advanced_vis_config": "{ chart: { type: 'pie', spacingBottom: 50, spacingLeft: 50, spacingRight: 50, spacingTop: 50, }, legend: { enabled: false, }, plotOptions: { pie: { dataLabels: { enabled: true, format: '\\u003cb\\u003e{key}\\u003c/b\\u003e\\u003cspan style=\"font-weight: normal\"\\u003e - {percentage:.2f}%\\u003c/span\\u003e', }, showInLegend: false, }, }, series: [], }", + "colors": [ + "grey" + ], + "defaults_version": 1, + "hidden_fields": [], + "label_density": 25, + "legend_position": "center", + "limit_displayed_rows": false, + "note_display": "below", + "note_state": "collapsed", + "note_text": "Unsold inventory only", + "ordering": "none", + "plot_size_by_field": false, + "point_style": "none", + "series_colors": {}, + "show_null_labels": false, + "show_silhouette": false, + "show_totals_labels": false, + "show_value_labels": true, + "show_view_names": false, + "show_x_axis_label": true, + "show_x_axis_ticks": true, + "show_y_axis_labels": true, + "show_y_axis_ticks": true, + "stacking": "normal", + "totals_color": "#808080", + "trellis": "", + "type": "looker_column", + "x_axis_gridlines": false, + "x_axis_reversed": false, + "x_axis_scale": "auto", + "x_axis_zoom": true, + "y_axes": [], + "y_axis_combined": true, + "y_axis_gridlines": true, + "y_axis_reversed": false, + "y_axis_scale_mode": "linear", + "y_axis_tick_density": "default", + "y_axis_tick_density_custom": 5, + "y_axis_zoom": true + }} + + A line chart - + {{ + "defaults_version": 1, + "hidden_pivots": {}, + "hidden_series": [], + "interpolation": "linear", + "label_density": 25, + "legend_position": "center", + "limit_displayed_rows": false, + "plot_size_by_field": false, + "point_style": "none", + "series_types": {}, + "show_null_points": true, + "show_value_labels": false, + "show_view_names": false, + "show_x_axis_label": true, + "show_x_axis_ticks": true, + "show_y_axis_labels": true, + "show_y_axis_ticks": true, + "stacking": "", + "trellis": "", + "type": "looker_line", + "x_axis_gridlines": false, + "x_axis_reversed": false, + "x_axis_scale": "auto", + "y_axis_combined": true, + "y_axis_gridlines": true, + "y_axis_reversed": false, + "y_axis_scale_mode": "linear", + "y_axis_tick_density": "default", + "y_axis_tick_density_custom": 5 + }} + + An area chart - + {{ + "defaults_version": 1, + "interpolation": "linear", + "label_density": 25, + "legend_position": "center", + "limit_displayed_rows": false, + "plot_size_by_field": false, + "point_style": "none", + "series_types": {}, + "show_null_points": true, + "show_silhouette": false, + "show_totals_labels": false, + "show_value_labels": false, + "show_view_names": false, + "show_x_axis_label": true, + "show_x_axis_ticks": true, + "show_y_axis_labels": true, + "show_y_axis_ticks": true, + "stacking": "normal", + "totals_color": "#808080", + "trellis": "", + "type": "looker_area", + "x_axis_gridlines": false, + "x_axis_reversed": false, + "x_axis_scale": "auto", + "x_axis_zoom": true, + "y_axis_combined": true, + "y_axis_gridlines": true, + "y_axis_reversed": false, + "y_axis_scale_mode": "linear", + "y_axis_tick_density": "default", + "y_axis_tick_density_custom": 5, + "y_axis_zoom": true + }} + + A scatter plot - + {{ + "cluster_points": false, + "custom_quadrant_point_x": 5, + "custom_quadrant_point_y": 5, + "custom_value_label_column": "", + "custom_x_column": "", + "custom_y_column": "", + "defaults_version": 1, + "hidden_fields": [], + "hidden_pivots": {}, + "hidden_points_if_no": [], + "hidden_series": [], + "interpolation": "linear", + "label_density": 25, + "legend_position": "center", + "limit_displayed_rows": false, + "limit_displayed_rows_values": { + "first_last": "first", + "num_rows": 0, + "show_hide": "hide" + }, + "plot_size_by_field": false, + "point_style": "circle", + "quadrant_properties": { + "0": { + "color": "", + "label": "Quadrant 1" + }, + "1": { + "color": "", + "label": "Quadrant 2" + }, + "2": { + "color": "", + "label": "Quadrant 3" + }, + "3": { + "color": "", + "label": "Quadrant 4" + } + }, + "quadrants_enabled": false, + "series_labels": {}, + "series_types": {}, + "show_null_points": false, + "show_value_labels": false, + "show_view_names": true, + "show_x_axis_label": true, + "show_x_axis_ticks": true, + "show_y_axis_labels": true, + "show_y_axis_ticks": true, + "size_by_field": "roi", + "stacking": "normal", + "swap_axes": true, + "trellis": "", + "type": "looker_scatter", + "x_axis_gridlines": false, + "x_axis_reversed": false, + "x_axis_scale": "auto", + "x_axis_zoom": true, + "y_axes": [ + { + "label": "", + "orientation": "bottom", + "series": [ + { + "axisId": "Channel_0 - average_of_roi_first", + "id": "Channel_0 - average_of_roi_first", + "name": "Channel_0" + }, + { + "axisId": "Channel_1 - average_of_roi_first", + "id": "Channel_1 - average_of_roi_first", + "name": "Channel_1" + }, + { + "axisId": "Channel_2 - average_of_roi_first", + "id": "Channel_2 - average_of_roi_first", + "name": "Channel_2" + }, + { + "axisId": "Channel_3 - average_of_roi_first", + "id": "Channel_3 - average_of_roi_first", + "name": "Channel_3" + }, + { + "axisId": "Channel_4 - average_of_roi_first", + "id": "Channel_4 - average_of_roi_first", + "name": "Channel_4" + } + ], + "showLabels": true, + "showValues": true, + "tickDensity": "custom", + "tickDensityCustom": 100, + "type": "linear", + "unpinAxis": false + } + ], + "y_axis_combined": true, + "y_axis_gridlines": true, + "y_axis_reversed": false, + "y_axis_scale_mode": "linear", + "y_axis_tick_density": "default", + "y_axis_tick_density_custom": 5, + "y_axis_zoom": true + }} + + A single record visualization - + {{ + "defaults_version": 1, + "show_view_names": false, + "type": "looker_single_record" + }} + + A single value visualization - + {{ + "comparison_reverse_colors": false, + "comparison_type": "value", "conditional_formatting_include_nulls": false, "conditional_formatting_include_totals": false, + "custom_color": "#1A73E8", + "custom_color_enabled": true, + "defaults_version": 1, + "enable_conditional_formatting": false, + "series_types": {}, + "show_comparison": false, + "show_comparison_label": true, + "show_single_value_title": true, + "single_value_title": "Total Clicks", + "type": "single_value" + }} + + A Pie chart - + {{ + "defaults_version": 1, + "label_density": 25, + "label_type": "labPer", + "legend_position": "center", + "limit_displayed_rows": false, + "ordering": "none", + "plot_size_by_field": false, + "point_style": "none", + "series_types": {}, + "show_null_labels": false, + "show_silhouette": false, + "show_totals_labels": false, + "show_value_labels": false, + "show_view_names": false, + "show_x_axis_label": true, + "show_x_axis_ticks": true, + "show_y_axis_labels": true, + "show_y_axis_ticks": true, + "stacking": "", + "totals_color": "#808080", + "trellis": "", + "type": "looker_pie", + "value_labels": "legend", + "x_axis_gridlines": false, + "x_axis_reversed": false, + "x_axis_scale": "auto", + "y_axis_combined": true, + "y_axis_gridlines": true, + "y_axis_reversed": false, + "y_axis_scale_mode": "linear", + "y_axis_tick_density": "default", + "y_axis_tick_density_custom": 5 + }} + + The result is a JSON object with the id, slug, the url, and + the long_url. +--- +kind: tool +name: get_looks +type: looker-get-looks +source: looker-source +description: | + This tool searches for saved Looks (pre-defined queries and visualizations) + in a Looker instance. It returns a list of JSON objects, each representing a Look. + + Search Parameters: + - title (optional): Filter by Look title (supports wildcards). + - folder_id (optional): Filter by the ID of the folder where the Look is saved. + - user_id (optional): Filter by the ID of the user who created the Look. + - description (optional): Filter by description content (supports wildcards). + - id (optional): Filter by specific Look ID. + - limit (optional): Maximum number of results to return. Defaults to a system limit. + - offset (optional): Starting point for pagination. + + String Search Behavior: + - Case-insensitive matching. + - Supports SQL LIKE pattern match wildcards: + - `%`: Matches any sequence of zero or more characters. (e.g., `"dan%"` matches "danger", "Danzig") + - `_`: Matches any single character. (e.g., `"D_m%"` matches "Damage", "dump") + - Special expressions for null checks: + - `"IS NULL"`: Matches Looks where the field is null. + - `"NOT NULL"`: Excludes Looks where the field is null. +--- +kind: tool +name: run_look +type: looker-run-look +source: looker-source +description: | + This tool executes the query associated with a saved Look and + returns the resulting data in a JSON structure. + + Parameters: + - look_id (required): The unique identifier of the Look to run, + typically obtained from the `get_looks` tool. + + Output: + The query results are returned as a JSON object. +--- +kind: tool +name: make_look +type: looker-make-look +source: looker-source +description: | + This tool creates a new Look (saved query with visualization) in Looker. + The Look will be saved in the user's personal folder, and its name must be unique. + + Required Parameters: + - title: A unique title for the new Look. + - description: A brief description of the Look's purpose. + - model_name: The name of the LookML model (from `get_models`). + - explore_name: The name of the explore (from `get_explores`). + - fields: A list of field names (dimensions, measures, filters, or parameters) to include in the query. + + Optional Parameters: + - pivots, filters, sorts, limit, query_timezone: These parameters are identical + to those described for the `query` tool. + - vis_config: A JSON object defining the visualization settings for the Look. + The structure and options are the same as for the `query_url` tool's `vis_config`. + + Output: + A JSON object containing a link (`url`) to the newly created Look, along with its `id` and `slug`. +--- +kind: tool +name: get_dashboards +type: looker-get-dashboards +source: looker-source +description: | + This tool searches for saved dashboards in a Looker instance. It returns a list of JSON objects, each representing a dashboard. + + Search Parameters: + - title (optional): Filter by dashboard title (supports wildcards). + - folder_id (optional): Filter by the ID of the folder where the dashboard is saved. + - user_id (optional): Filter by the ID of the user who created the dashboard. + - description (optional): Filter by description content (supports wildcards). + - id (optional): Filter by specific dashboard ID. + - limit (optional): Maximum number of results to return. Defaults to a system limit. + - offset (optional): Starting point for pagination. + + String Search Behavior: + - Case-insensitive matching. + - Supports SQL LIKE pattern match wildcards: + - `%`: Matches any sequence of zero or more characters. (e.g., `"finan%"` matches "financial", "finance") + - `_`: Matches any single character. (e.g., `"s_les"` matches "sales") + - Special expressions for null checks: + - `"IS NULL"`: Matches dashboards where the field is null. + - `"NOT NULL"`: Excludes dashboards where the field is null. +--- +kind: tool +name: run_dashboard +type: looker-run-dashboard +source: looker-source +description: | + This tool executes the queries associated with each tile in a specified dashboard + and returns the aggregated data in a JSON structure. + + Parameters: + - dashboard_id (required): The unique identifier of the dashboard to run, + typically obtained from the `get_dashboards` tool. + + Output: + The data from all dashboard tiles is returned as a JSON object. +--- +kind: tool +name: make_dashboard +type: looker-make-dashboard +source: looker-source +description: | + This tool creates a new, empty dashboard in Looker. Dashboards are stored + in the user's personal folder, and the dashboard name must be unique. + After creation, use `add_dashboard_filter` to add filters and + `add_dashboard_element` to add content tiles. + + Required Parameters: + - title (required): A unique title for the new dashboard. + - description (required): A brief description of the dashboard's purpose. + + Output: + A JSON object containing a link (`url`) to the newly created dashboard and + its unique `id`. This `dashboard_id` is crucial for subsequent calls to + `add_dashboard_filter` and `add_dashboard_element`. +--- +kind: tool +name: add_dashboard_element +type: looker-add-dashboard-element +source: looker-source +description: | + This tool creates a new tile (element) within an existing Looker dashboard. + Tiles are added in the order this tool is called for a given `dashboard_id`. + + CRITICAL ORDER OF OPERATIONS: + 1. Create the dashboard using `make_dashboard`. + 2. Add any dashboard-level filters using `add_dashboard_filter`. + 3. Then, add elements (tiles) using this tool. + + Required Parameters: + - dashboard_id: The ID of the target dashboard, obtained from `make_dashboard`. + - model_name, explore_name, fields: These query parameters are inherited + from the `query` tool and are required to define the data for the tile. + + Optional Parameters: + - title: An optional title for the dashboard tile. + - pivots, filters, sorts, limit, query_timezone: These query parameters are + inherited from the `query` tool and can be used to customize the tile's query. + - vis_config: A JSON object defining the visualization settings for this tile. + The structure and options are the same as for the `query_url` tool's `vis_config`. + + Connecting to Dashboard Filters: + A dashboard element can be connected to one or more dashboard filters (created with + `add_dashboard_filter`). To do this, specify the `name` of the dashboard filter + and the `field` from the element's query that the filter should apply to. + The format for specifying the field is `view_name.field_name`. +--- +kind: tool +name: add_dashboard_filter +type: looker-add-dashboard-filter +source: looker-source +description: | + This tool adds a filter to a Looker dashboard. + + CRITICAL ORDER OF OPERATIONS: + 1. Create a dashboard using `make_dashboard`. + 2. Add all desired filters using this tool (`add_dashboard_filter`). + 3. Finally, add dashboard elements (tiles) using `add_dashboard_element`. + + Parameters: + - dashboard_id (required): The ID from `make_dashboard`. + - name (required): A unique internal identifier for the filter. You will use this `name` later in `add_dashboard_element` to bind tiles to this filter. + - title (required): The label displayed to users in the UI. + - filter_type (required): One of `date_filter`, `number_filter`, `string_filter`, or `field_filter`. + - default_value (optional): The initial value for the filter. + + Field Filters (`filter_type: field_filter`): + If creating a field filter, you must also provide: + - model + - explore + - dimension + The filter will inherit suggestions and type information from this LookML field. +--- +kind: tool +name: generate_embed_url +type: looker-generate-embed-url +source: looker-source +description: | + This tool generates a signed, private embed URL for specific Looker content, + allowing users to access it directly. + + Parameters: + - type (required): The type of content to embed. Common values include: + - `dashboards` + - `looks` + - `explore` + - id (required): The unique identifier for the content. + - For dashboards and looks, use the numeric ID (e.g., "123"). + - For explores, use the format "model_name/explore_name". +--- +kind: toolset +name: looker_tools tools: - get_models: - kind: looker-get-models - source: looker-source - description: | - This tool retrieves a list of available LookML models in the Looker instance. - LookML models define the data structure and relationships that users can query. - The output includes details like the model's `name` and `label`, which are - essential for subsequent calls to tools like `get_explores` or `query`. - - This tool takes no parameters. - - get_explores: - kind: looker-get-explores - source: looker-source - description: | - This tool retrieves a list of explores defined within a specific LookML model. - Explores represent a curated view of your data, typically joining several - tables together to allow for focused analysis on a particular subject area. - The output provides details like the explore's `name` and `label`. - - Parameters: - - model_name (required): The name of the LookML model, obtained from `get_models`. - - get_dimensions: - kind: looker-get-dimensions - source: looker-source - description: | - This tool retrieves a list of dimensions defined within a specific Looker explore. - Dimensions are non-aggregatable attributes or characteristics of your data - (e.g., product name, order date, customer city) that can be used for grouping, - filtering, or segmenting query results. - - Parameters: - - model_name (required): The name of the LookML model, obtained from `get_models`. - - explore_name (required): The name of the explore within the model, obtained from `get_explores`. - - Output Details: - - If a dimension includes a `suggestions` field, its contents are valid values - that can be used directly as filters for that dimension. - - If a `suggest_explore` and `suggest_dimension` are provided, you can query - that specified explore and dimension to retrieve a list of valid filter values. - - get_measures: - kind: looker-get-measures - source: looker-source - description: | - This tool retrieves a list of measures defined within a specific Looker explore. - Measures are aggregatable metrics (e.g., total sales, average price, count of users) - that are used for calculations and quantitative analysis in your queries. - - Parameters: - - model_name (required): The name of the LookML model, obtained from `get_models`. - - explore_name (required): The name of the explore within the model, obtained from `get_explores`. - - Output Details: - - If a measure includes a `suggestions` field, its contents are valid values - that can be used directly as filters for that measure. - - If a `suggest_explore` and `suggest_dimension` are provided, you can query - that specified explore and dimension to retrieve a list of valid filter values. - - get_filters: - kind: looker-get-filters - source: looker-source - description: | - This tool retrieves a list of "filter-only fields" defined within a specific - Looker explore. These are special fields defined in LookML specifically to - create user-facing filter controls that do not directly affect the `GROUP BY` - clause of the SQL query. They are often used in conjunction with liquid templating - to create dynamic queries. - - Note: Regular dimensions and measures can also be used as filters in a query. - This tool *only* returns fields explicitly defined as `filter:` in LookML. - - Parameters: - - model_name (required): The name of the LookML model, obtained from `get_models`. - - explore_name (required): The name of the explore within the model, obtained from `get_explores`. - - get_parameters: - kind: looker-get-parameters - source: looker-source - description: | - This tool retrieves a list of parameters defined within a specific Looker explore. - LookML parameters are dynamic input fields that allow users to influence query - behavior without directly modifying the underlying LookML. They are often used - with `liquid` templating to create flexible dashboards and reports, enabling - users to choose dimensions, measures, or other query components at runtime. - - Parameters: - - model_name (required): The name of the LookML model, obtained from `get_models`. - - explore_name (required): The name of the explore within the model, obtained from `get_explores`. - - query: - kind: looker-query - source: looker-source - description: | - This tool runs a query against a LookML model and returns the results in JSON format. - - Required Parameters: - - model_name: The name of the LookML model (from `get_models`). - - explore_name: The name of the explore (from `get_explores`). - - fields: A list of field names (dimensions, measures, filters, or parameters) to include in the query. - - Optional Parameters: - - pivots: A list of fields to pivot the results by. These fields must also be included in the `fields` list. - - filters: A map of filter expressions, e.g., `{"view.field": "value", "view.date": "7 days"}`. - - Do not quote field names. - - Use `not null` instead of `-NULL`. - - If a value contains a comma, enclose it in single quotes (e.g., "'New York, NY'"). - - sorts: A list of fields to sort by, optionally including direction (e.g., `["view.field desc"]`). - - limit: Row limit (default 500). Use "-1" for unlimited. - - query_timezone: specific timezone for the query (e.g. `America/Los_Angeles`). - - Note: Use `get_dimensions`, `get_measures`, `get_filters`, and `get_parameters` to find valid fields. - - query_sql: - kind: looker-query-sql - source: looker-source - description: | - This tool generates the underlying SQL query that Looker would execute - against the database for a given set of parameters. It is useful for - understanding how Looker translates a request into SQL. - - Parameters: - All parameters for this tool are identical to those of the `query` tool. - This includes `model_name`, `explore_name`, `fields` (required), - and optional parameters like `pivots`, `filters`, `sorts`, `limit`, and `query_timezone`. - - Output: - The result of this tool is the raw SQL text. - - query_url: - kind: looker-query-url - source: looker-source - description: | - This tool generates a shareable URL for a Looker query, allowing users to - explore the query further within the Looker UI. It returns the generated URL, - along with the `query_id` and `slug`. - - Parameters: - All query parameters (e.g., `model_name`, `explore_name`, `fields`, `pivots`, - `filters`, `sorts`, `limit`, `query_timezone`) are the same as the `query` tool. - - Additionally, it accepts an optional `vis_config` parameter: - - vis_config (optional): A JSON object that controls the default visualization - settings for the generated query. - - vis_config Details: - The `vis_config` object supports a wide range of properties for various chart types. - Here are some notes on making visualizations. - - ### Cartesian Charts (Area, Bar, Column, Line, Scatter) - - These chart types share a large number of configuration options. - - **General** - * `type`: The type of visualization (`looker_area`, `looker_bar`, `looker_column`, `looker_line`, `looker_scatter`). - * `series_types`: Override the chart type for individual series. - * `show_view_names`: Display view names in labels and tooltips (`true`/`false`). - * `series_labels`: Provide custom names for series. - - **Styling & Colors** - * `colors`: An array of color values to be used for the chart series. - * `series_colors`: A mapping of series names to specific color values. - * `color_application`: Advanced controls for color palette application (collection, palette, reverse, etc.). - * `font_size`: Font size for labels (e.g., '12px'). - - **Legend** - * `hide_legend`: Show or hide the chart legend (`true`/`false`). - * `legend_position`: Placement of the legend (`'center'`, `'left'`, `'right'`). - - **Axes** - * `swap_axes`: Swap the X and Y axes (`true`/`false`). - * `x_axis_scale`: Scale of the x-axis (`'auto'`, `'ordinal'`, `'linear'`, `'time'`). - * `x_axis_reversed`, `y_axis_reversed`: Reverse the direction of an axis (`true`/`false`). - * `x_axis_gridlines`, `y_axis_gridlines`: Display gridlines for an axis (`true`/`false`). - * `show_x_axis_label`, `show_y_axis_label`: Show or hide the axis title (`true`/`false`). - * `show_x_axis_ticks`, `show_y_axis_ticks`: Show or hide axis tick marks (`true`/`false`). - * `x_axis_label`, `y_axis_label`: Set a custom title for an axis. - * `x_axis_datetime_label`: A format string for datetime labels on the x-axis (e.g., `'%Y-%m'`). - * `x_padding_left`, `x_padding_right`: Adjust padding on the ends of the x-axis. - * `x_axis_label_rotation`, `x_axis_label_rotation_bar`: Set rotation for x-axis labels. - * `x_axis_zoom`, `y_axis_zoom`: Enable zooming on an axis (`true`/`false`). - * `y_axes`: An array of configuration objects for multiple y-axes. - - **Data & Series** - * `stacking`: How to stack series (`''` for none, `'normal'`, `'percent'`). - * `ordering`: Order of series in a stack (`'none'`, etc.). - * `limit_displayed_rows`: Enable or disable limiting the number of rows displayed (`true`/`false`). - * `limit_displayed_rows_values`: Configuration for the row limit (e.g., `{ "first_last": "first", "show_hide": "show", "num_rows": 10 }`). - * `discontinuous_nulls`: How to render null values in line charts (`true`/`false`). - * `point_style`: Style for points on line and area charts (`'none'`, `'circle'`, `'circle_outline'`). - * `series_point_styles`: Override point styles for individual series. - * `interpolation`: Line interpolation style (`'linear'`, `'monotone'`, `'step'`, etc.). - * `show_value_labels`: Display values on data points (`true`/`false`). - * `label_value_format`: A format string for value labels. - * `show_totals_labels`: Display total labels on stacked charts (`true`/`false`). - * `totals_color`: Color for total labels. - * `show_silhouette`: Display a "silhouette" of hidden series in stacked charts (`true`/`false`). - * `hidden_series`: An array of series names to hide from the visualization. - - **Scatter/Bubble Specific** - * `size_by_field`: The field used to determine the size of bubbles. - * `color_by_field`: The field used to determine the color of bubbles. - * `plot_size_by_field`: Whether to display the size-by field in the legend. - * `cluster_points`: Group nearby points into clusters (`true`/`false`). - * `quadrants_enabled`: Display quadrants on the chart (`true`/`false`). - * `quadrant_properties`: Configuration for quadrant labels and colors. - * `custom_quadrant_value_x`, `custom_quadrant_value_y`: Set quadrant boundaries as a percentage. - * `custom_quadrant_point_x`, `custom_quadrant_point_y`: Set quadrant boundaries to a specific value. - - **Miscellaneous** - * `reference_lines`: Configuration for displaying reference lines. - * `trend_lines`: Configuration for displaying trend lines. - * `trellis`: Configuration for creating trellis (small multiple) charts. - * `crossfilterEnabled`, `crossfilters`: Configuration for cross-filtering interactions. - - ### Boxplot - - * Inherits most of the Cartesian chart options. - * `type`: Must be `looker_boxplot`. - - ### Funnel - - * `type`: Must be `looker_funnel`. - * `orientation`: How data is read (`'automatic'`, `'dataInRows'`, `'dataInColumns'`). - * `percentType`: How percentages are calculated (`'percentOfMaxValue'`, `'percentOfPriorRow'`). - * `labelPosition`, `valuePosition`, `percentPosition`: Placement of labels (`'left'`, `'right'`, `'inline'`, `'hidden'`). - * `labelColor`, `labelColorEnabled`: Set a custom color for labels. - * `labelOverlap`: Allow labels to overlap (`true`/`false`). - * `barColors`: An array of colors for the funnel steps. - * `color_application`: Advanced color palette controls. - * `crossfilterEnabled`, `crossfilters`: Configuration for cross-filtering. - - ### Pie / Donut - - * Pie charts must have exactly one dimension and one numerical measure. - * `type`: Must be `looker_pie`. - * `value_labels`: Where to display values (`'legend'`, `'labels'`). - * `label_type`: The format of data labels (`'labPer'`, `'labVal'`, `'lab'`, `'val'`, `'per'`). - * `start_angle`, `end_angle`: The start and end angles of the pie chart. - * `inner_radius`: The inner radius, used to create a donut chart. - * `series_colors`, `series_labels`: Override colors and labels for specific slices. - * `color_application`: Advanced color palette controls. - * `crossfilterEnabled`, `crossfilters`: Configuration for cross-filtering. - * `advanced_vis_config`: A string containing JSON for advanced Highcharts configuration. - - ### Waterfall - - * Inherits most of the Cartesian chart options. - * `type`: Must be `looker_waterfall`. - * `up_color`: Color for positive (increasing) values. - * `down_color`: Color for negative (decreasing) values. - * `total_color`: Color for the total bar. - - ### Word Cloud - - * `type`: Must be `looker_wordcloud`. - * `rotation`: Enable random word rotation (`true`/`false`). - * `colors`: An array of colors for the words. - * `color_application`: Advanced color palette controls. - * `crossfilterEnabled`, `crossfilters`: Configuration for cross-filtering. - - These are some sample vis_config settings. - - A bar chart - - {{ - "defaults_version": 1, - "label_density": 25, - "legend_position": "center", - "limit_displayed_rows": false, - "ordering": "none", - "plot_size_by_field": false, - "point_style": "none", - "show_null_labels": false, - "show_silhouette": false, - "show_totals_labels": false, - "show_value_labels": false, - "show_view_names": false, - "show_x_axis_label": true, - "show_x_axis_ticks": true, - "show_y_axis_labels": true, - "show_y_axis_ticks": true, - "stacking": "normal", - "totals_color": "#808080", - "trellis": "", - "type": "looker_bar", - "x_axis_gridlines": false, - "x_axis_reversed": false, - "x_axis_scale": "auto", - "x_axis_zoom": true, - "y_axis_combined": true, - "y_axis_gridlines": true, - "y_axis_reversed": false, - "y_axis_scale_mode": "linear", - "y_axis_tick_density": "default", - "y_axis_tick_density_custom": 5, - "y_axis_zoom": true - }} - - A column chart with an option advanced_vis_config - - {{ - "advanced_vis_config": "{ chart: { type: 'pie', spacingBottom: 50, spacingLeft: 50, spacingRight: 50, spacingTop: 50, }, legend: { enabled: false, }, plotOptions: { pie: { dataLabels: { enabled: true, format: '\u003cb\u003e{key}\u003c/b\u003e\u003cspan style=\"font-weight: normal\"\u003e - {percentage:.2f}%\u003c/span\u003e', }, showInLegend: false, }, }, series: [], }", - "colors": [ - "grey" - ], - "defaults_version": 1, - "hidden_fields": [], - "label_density": 25, - "legend_position": "center", - "limit_displayed_rows": false, - "note_display": "below", - "note_state": "collapsed", - "note_text": "Unsold inventory only", - "ordering": "none", - "plot_size_by_field": false, - "point_style": "none", - "series_colors": {}, - "show_null_labels": false, - "show_silhouette": false, - "show_totals_labels": false, - "show_value_labels": true, - "show_view_names": false, - "show_x_axis_label": true, - "show_x_axis_ticks": true, - "show_y_axis_labels": true, - "show_y_axis_ticks": true, - "stacking": "normal", - "totals_color": "#808080", - "trellis": "", - "type": "looker_column", - "x_axis_gridlines": false, - "x_axis_reversed": false, - "x_axis_scale": "auto", - "x_axis_zoom": true, - "y_axes": [], - "y_axis_combined": true, - "y_axis_gridlines": true, - "y_axis_reversed": false, - "y_axis_scale_mode": "linear", - "y_axis_tick_density": "default", - "y_axis_tick_density_custom": 5, - "y_axis_zoom": true - }} - - A line chart - - {{ - "defaults_version": 1, - "hidden_pivots": {}, - "hidden_series": [], - "interpolation": "linear", - "label_density": 25, - "legend_position": "center", - "limit_displayed_rows": false, - "plot_size_by_field": false, - "point_style": "none", - "series_types": {}, - "show_null_points": true, - "show_value_labels": false, - "show_view_names": false, - "show_x_axis_label": true, - "show_x_axis_ticks": true, - "show_y_axis_labels": true, - "show_y_axis_ticks": true, - "stacking": "", - "trellis": "", - "type": "looker_line", - "x_axis_gridlines": false, - "x_axis_reversed": false, - "x_axis_scale": "auto", - "y_axis_combined": true, - "y_axis_gridlines": true, - "y_axis_reversed": false, - "y_axis_scale_mode": "linear", - "y_axis_tick_density": "default", - "y_axis_tick_density_custom": 5 - }} - - An area chart - - {{ - "defaults_version": 1, - "interpolation": "linear", - "label_density": 25, - "legend_position": "center", - "limit_displayed_rows": false, - "plot_size_by_field": false, - "point_style": "none", - "series_types": {}, - "show_null_points": true, - "show_silhouette": false, - "show_totals_labels": false, - "show_value_labels": false, - "show_view_names": false, - "show_x_axis_label": true, - "show_x_axis_ticks": true, - "show_y_axis_labels": true, - "show_y_axis_ticks": true, - "stacking": "normal", - "totals_color": "#808080", - "trellis": "", - "type": "looker_area", - "x_axis_gridlines": false, - "x_axis_reversed": false, - "x_axis_scale": "auto", - "x_axis_zoom": true, - "y_axis_combined": true, - "y_axis_gridlines": true, - "y_axis_reversed": false, - "y_axis_scale_mode": "linear", - "y_axis_tick_density": "default", - "y_axis_tick_density_custom": 5, - "y_axis_zoom": true - }} - - A scatter plot - - {{ - "cluster_points": false, - "custom_quadrant_point_x": 5, - "custom_quadrant_point_y": 5, - "custom_value_label_column": "", - "custom_x_column": "", - "custom_y_column": "", - "defaults_version": 1, - "hidden_fields": [], - "hidden_pivots": {}, - "hidden_points_if_no": [], - "hidden_series": [], - "interpolation": "linear", - "label_density": 25, - "legend_position": "center", - "limit_displayed_rows": false, - "limit_displayed_rows_values": { - "first_last": "first", - "num_rows": 0, - "show_hide": "hide" - }, - "plot_size_by_field": false, - "point_style": "circle", - "quadrant_properties": { - "0": { - "color": "", - "label": "Quadrant 1" - }, - "1": { - "color": "", - "label": "Quadrant 2" - }, - "2": { - "color": "", - "label": "Quadrant 3" - }, - "3": { - "color": "", - "label": "Quadrant 4" - } - }, - "quadrants_enabled": false, - "series_labels": {}, - "series_types": {}, - "show_null_points": false, - "show_value_labels": false, - "show_view_names": true, - "show_x_axis_label": true, - "show_x_axis_ticks": true, - "show_y_axis_labels": true, - "show_y_axis_ticks": true, - "size_by_field": "roi", - "stacking": "normal", - "swap_axes": true, - "trellis": "", - "type": "looker_scatter", - "x_axis_gridlines": false, - "x_axis_reversed": false, - "x_axis_scale": "auto", - "x_axis_zoom": true, - "y_axes": [ - { - "label": "", - "orientation": "bottom", - "series": [ - { - "axisId": "Channel_0 - average_of_roi_first", - "id": "Channel_0 - average_of_roi_first", - "name": "Channel_0" - }, - { - "axisId": "Channel_1 - average_of_roi_first", - "id": "Channel_1 - average_of_roi_first", - "name": "Channel_1" - }, - { - "axisId": "Channel_2 - average_of_roi_first", - "id": "Channel_2 - average_of_roi_first", - "name": "Channel_2" - }, - { - "axisId": "Channel_3 - average_of_roi_first", - "id": "Channel_3 - average_of_roi_first", - "name": "Channel_3" - }, - { - "axisId": "Channel_4 - average_of_roi_first", - "id": "Channel_4 - average_of_roi_first", - "name": "Channel_4" - } - ], - "showLabels": true, - "showValues": true, - "tickDensity": "custom", - "tickDensityCustom": 100, - "type": "linear", - "unpinAxis": false - } - ], - "y_axis_combined": true, - "y_axis_gridlines": true, - "y_axis_reversed": false, - "y_axis_scale_mode": "linear", - "y_axis_tick_density": "default", - "y_axis_tick_density_custom": 5, - "y_axis_zoom": true - }} - - A single record visualization - - {{ - "defaults_version": 1, - "show_view_names": false, - "type": "looker_single_record" - }} - - A single value visualization - - {{ - "comparison_reverse_colors": false, - "comparison_type": "value", "conditional_formatting_include_nulls": false, "conditional_formatting_include_totals": false, - "custom_color": "#1A73E8", - "custom_color_enabled": true, - "defaults_version": 1, - "enable_conditional_formatting": false, - "series_types": {}, - "show_comparison": false, - "show_comparison_label": true, - "show_single_value_title": true, - "single_value_title": "Total Clicks", - "type": "single_value" - }} - - A Pie chart - - {{ - "defaults_version": 1, - "label_density": 25, - "label_type": "labPer", - "legend_position": "center", - "limit_displayed_rows": false, - "ordering": "none", - "plot_size_by_field": false, - "point_style": "none", - "series_types": {}, - "show_null_labels": false, - "show_silhouette": false, - "show_totals_labels": false, - "show_value_labels": false, - "show_view_names": false, - "show_x_axis_label": true, - "show_x_axis_ticks": true, - "show_y_axis_labels": true, - "show_y_axis_ticks": true, - "stacking": "", - "totals_color": "#808080", - "trellis": "", - "type": "looker_pie", - "value_labels": "legend", - "x_axis_gridlines": false, - "x_axis_reversed": false, - "x_axis_scale": "auto", - "y_axis_combined": true, - "y_axis_gridlines": true, - "y_axis_reversed": false, - "y_axis_scale_mode": "linear", - "y_axis_tick_density": "default", - "y_axis_tick_density_custom": 5 - }} - - The result is a JSON object with the id, slug, the url, and - the long_url. - - get_looks: - kind: looker-get-looks - source: looker-source - description: | - This tool searches for saved Looks (pre-defined queries and visualizations) - in a Looker instance. It returns a list of JSON objects, each representing a Look. - - Search Parameters: - - title (optional): Filter by Look title (supports wildcards). - - folder_id (optional): Filter by the ID of the folder where the Look is saved. - - user_id (optional): Filter by the ID of the user who created the Look. - - description (optional): Filter by description content (supports wildcards). - - id (optional): Filter by specific Look ID. - - limit (optional): Maximum number of results to return. Defaults to a system limit. - - offset (optional): Starting point for pagination. - - String Search Behavior: - - Case-insensitive matching. - - Supports SQL LIKE pattern match wildcards: - - `%`: Matches any sequence of zero or more characters. (e.g., `"dan%"` matches "danger", "Danzig") - - `_`: Matches any single character. (e.g., `"D_m%"` matches "Damage", "dump") - - Special expressions for null checks: - - `"IS NULL"`: Matches Looks where the field is null. - - `"NOT NULL"`: Excludes Looks where the field is null. - - run_look: - kind: looker-run-look - source: looker-source - description: | - This tool executes the query associated with a saved Look and - returns the resulting data in a JSON structure. - - Parameters: - - look_id (required): The unique identifier of the Look to run, - typically obtained from the `get_looks` tool. - - Output: - The query results are returned as a JSON object. - - make_look: - kind: looker-make-look - source: looker-source - description: | - This tool creates a new Look (saved query with visualization) in Looker. - The Look will be saved in the user's personal folder, and its name must be unique. - - Required Parameters: - - title: A unique title for the new Look. - - description: A brief description of the Look's purpose. - - model_name: The name of the LookML model (from `get_models`). - - explore_name: The name of the explore (from `get_explores`). - - fields: A list of field names (dimensions, measures, filters, or parameters) to include in the query. - - Optional Parameters: - - pivots, filters, sorts, limit, query_timezone: These parameters are identical - to those described for the `query` tool. - - vis_config: A JSON object defining the visualization settings for the Look. - The structure and options are the same as for the `query_url` tool's `vis_config`. - - Output: - A JSON object containing a link (`url`) to the newly created Look, along with its `id` and `slug`. - - get_dashboards: - kind: looker-get-dashboards - source: looker-source - description: | - This tool searches for saved dashboards in a Looker instance. It returns a list of JSON objects, each representing a dashboard. - - Search Parameters: - - title (optional): Filter by dashboard title (supports wildcards). - - folder_id (optional): Filter by the ID of the folder where the dashboard is saved. - - user_id (optional): Filter by the ID of the user who created the dashboard. - - description (optional): Filter by description content (supports wildcards). - - id (optional): Filter by specific dashboard ID. - - limit (optional): Maximum number of results to return. Defaults to a system limit. - - offset (optional): Starting point for pagination. - - String Search Behavior: - - Case-insensitive matching. - - Supports SQL LIKE pattern match wildcards: - - `%`: Matches any sequence of zero or more characters. (e.g., `"finan%"` matches "financial", "finance") - - `_`: Matches any single character. (e.g., `"s_les"` matches "sales") - - Special expressions for null checks: - - `"IS NULL"`: Matches dashboards where the field is null. - - `"NOT NULL"`: Excludes dashboards where the field is null. - - run_dashboard: - kind: looker-run-dashboard - source: looker-source - description: | - This tool executes the queries associated with each tile in a specified dashboard - and returns the aggregated data in a JSON structure. - - Parameters: - - dashboard_id (required): The unique identifier of the dashboard to run, - typically obtained from the `get_dashboards` tool. - - Output: - The data from all dashboard tiles is returned as a JSON object. - - make_dashboard: - kind: looker-make-dashboard - source: looker-source - description: | - This tool creates a new, empty dashboard in Looker. Dashboards are stored - in the user's personal folder, and the dashboard name must be unique. - After creation, use `add_dashboard_filter` to add filters and - `add_dashboard_element` to add content tiles. - - Required Parameters: - - title (required): A unique title for the new dashboard. - - description (required): A brief description of the dashboard's purpose. - - Output: - A JSON object containing a link (`url`) to the newly created dashboard and - its unique `id`. This `dashboard_id` is crucial for subsequent calls to - `add_dashboard_filter` and `add_dashboard_element`. - - add_dashboard_element: - kind: looker-add-dashboard-element - source: looker-source - description: | - This tool creates a new tile (element) within an existing Looker dashboard. - Tiles are added in the order this tool is called for a given `dashboard_id`. - - CRITICAL ORDER OF OPERATIONS: - 1. Create the dashboard using `make_dashboard`. - 2. Add any dashboard-level filters using `add_dashboard_filter`. - 3. Then, add elements (tiles) using this tool. - - Required Parameters: - - dashboard_id: The ID of the target dashboard, obtained from `make_dashboard`. - - model_name, explore_name, fields: These query parameters are inherited - from the `query` tool and are required to define the data for the tile. - - Optional Parameters: - - title: An optional title for the dashboard tile. - - pivots, filters, sorts, limit, query_timezone: These query parameters are - inherited from the `query` tool and can be used to customize the tile's query. - - vis_config: A JSON object defining the visualization settings for this tile. - The structure and options are the same as for the `query_url` tool's `vis_config`. - - Connecting to Dashboard Filters: - A dashboard element can be connected to one or more dashboard filters (created with - `add_dashboard_filter`). To do this, specify the `name` of the dashboard filter - and the `field` from the element's query that the filter should apply to. - The format for specifying the field is `view_name.field_name`. - - add_dashboard_filter: - kind: looker-add-dashboard-filter - source: looker-source - description: | - This tool adds a filter to a Looker dashboard. - - CRITICAL ORDER OF OPERATIONS: - 1. Create a dashboard using `make_dashboard`. - 2. Add all desired filters using this tool (`add_dashboard_filter`). - 3. Finally, add dashboard elements (tiles) using `add_dashboard_element`. - - Parameters: - - dashboard_id (required): The ID from `make_dashboard`. - - name (required): A unique internal identifier for the filter. You will use this `name` later in `add_dashboard_element` to bind tiles to this filter. - - title (required): The label displayed to users in the UI. - - flter_type (required): One of `date_filter`, `number_filter`, `string_filter`, or `field_filter`. - - default_value (optional): The initial value for the filter. - - Field Filters (`flter_type: field_filter`): - If creating a field filter, you must also provide: - - model - - explore - - dimension - The filter will inherit suggestions and type information from this LookML field. - - generate_embed_url: - kind: looker-generate-embed-url - source: looker-source - description: | - This tool generates a signed, private embed URL for specific Looker content, - allowing users to access it directly. - - Parameters: - - type (required): The type of content to embed. Common values include: - - `dashboards` - - `looks` - - `explore` - - id (required): The unique identifier for the content. - - For dashboards and looks, use the numeric ID (e.g., "123"). - - For explores, use the format "model_name/explore_name". - -toolsets: - looker_tools: - - get_models - - get_explores - - get_dimensions - - get_measures - - get_filters - - get_parameters - - query - - query_sql - - query_url - - get_looks - - run_look - - make_look - - get_dashboards - - run_dashboard - - make_dashboard - - add_dashboard_element - - add_dashboard_filter - - generate_embed_url \ No newline at end of file +- get_models +- get_explores +- get_dimensions +- get_measures +- get_filters +- get_parameters +- query +- query_sql +- query_url +- get_looks +- run_look +- make_look +- get_dashboards +- run_dashboard +- make_dashboard +- add_dashboard_element +- add_dashboard_filter +- generate_embed_url \ No newline at end of file