diff --git a/_docs/master/api.html b/_docs/master/api.html index d31b6a6c9f..452bc58385 100644 --- a/_docs/master/api.html +++ b/_docs/master/api.html @@ -211,6 +211,52 @@ "$ref" : "#/components/schemas/metabase-enterprise.action-v2.api.api-action-expression" } ] }, + "metabase-enterprise.dependencies.api.card-body" : { + "type" : "object", + "properties" : { + "dataset_query" : { + "description" : "Value must be a map.", + "type" : "object", + "properties" : { } + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "result_metadata" : { + "$ref" : "#/components/schemas/metabase.analyze.query-results.ResultsMetadata" + }, + "type" : { + "$ref" : "#/components/schemas/metabase.queries.schema.card-type" + } + }, + "required" : [ "id" ] + }, + "metabase-enterprise.dependencies.api.transform-body" : { + "type" : "object", + "properties" : { + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "name" : { + "type" : "string" + }, + "source" : { + "description" : "Value must be a map.", + "type" : "object", + "properties" : { } + }, + "target" : { + "description" : "Value must be a map.", + "type" : "object", + "properties" : { } + } + }, + "required" : [ "id" ] + }, "metabase-enterprise.metabot-v3.client.schema.message" : { "type" : "object", "properties" : { @@ -4434,8 +4480,8 @@ "optional" : true }, "metabase.lib.schema.metadata.desired-column-alias" : { - "type" : "string", - "minLength" : 1 + "description" : "Name we should use as a column alias for a column in this stage of a query. The desired column alias in stage N\n becomes the source column alias in stage N+1. The right-hand side (RHS) in\n\n SELECT lhs AS rhs", + "type" : "string" }, "metabase.lib.schema.metadata.fingerprint..fingerprint.global" : { "description" : "Fingerprint values that Fields of all types should have.", @@ -4714,7 +4760,8 @@ "optional" : true }, "metabase.lib.schema.metadata.source-column-alias" : { - "$ref" : "#/components/schemas/metabase.lib.schema.common.non-blank-string" + "description" : "Name for a column as returned/projected by the previous stage of the query or source Table/source Card. The\n left-hand side (LHS) of\n\n SELECT lhs AS rhs", + "type" : "string" }, "metabase.lib.schema.middleware-options.middleware-options" : { "description" : "Additional options that can be used to toggle middleware on or off.", @@ -13330,6 +13377,104 @@ "tags" : [ "/api/ee/database-routing" ] } }, + "/api/ee/dependencies/check_card" : { + "post" : { + "summary" : "POST /api/ee/dependencies/check_card", + "description" : "Check a proposed edit to a card, and return the card IDs for those cards this edit will break.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.card-body" + } + } + } + }, + "tags" : [ "/api/ee/dependencies" ] + } + }, + "/api/ee/dependencies/check_snippet" : { + "post" : { + "summary" : "POST /api/ee/dependencies/check_snippet", + "description" : "Check a proposed edit to a native snippet, and return the cards, etc. which will be broken.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object", + "properties" : { + "content" : { + "type" : "string" + }, + "id" : { + "description" : "value must be an integer greater than zero.", + "type" : "integer", + "minimum" : 1 + }, + "name" : { + "description" : "snippet names cannot include '}' or start with spaces" + } + }, + "required" : [ "id" ] + } + } + } + }, + "tags" : [ "/api/ee/dependencies" ] + } + }, + "/api/ee/dependencies/check_transform" : { + "post" : { + "summary" : "POST /api/ee/dependencies/check_transform", + "description" : "Check a proposed edit to a transform, and return the card, transform, etc. IDs for things that will break.", + "parameters" : [ ], + "responses" : { + "2XX" : { + "description" : "Successful response" + }, + "4XX" : { + "description" : "Client error response" + }, + "5XX" : { + "description" : "Server error response" + } + }, + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/metabase-enterprise.dependencies.api.transform-body" + } + } + } + }, + "tags" : [ "/api/ee/dependencies" ] + } + }, "/api/ee/document/" : { "get" : { "summary" : "GET /api/ee/document/", diff --git a/_docs/master/configuring-metabase/caching.md b/_docs/master/configuring-metabase/caching.md index 86b8ae3f0f..c2693b2f21 100644 --- a/_docs/master/configuring-metabase/caching.md +++ b/_docs/master/configuring-metabase/caching.md @@ -129,11 +129,12 @@ If you have databases connected to Metabase that are set to **Use default** poli To set a caching policy for a dashboard, you must have [curate access](../permissions/collections#curate-access) to the dashboard's collection. 1. Go to your dashboard. -2. Click on the **info** icon. -3. Click **Caching policy**. -4. Select the [caching invalidation policy](#cache-invalidation-policies). -5. Optional: turn on [refresh cache automatically](#refresh-cache-automatically). -6. Save your changes. +2. Click on the **three dots** icon in the top-right corner of the dashboard and choose **Edit settings**. +3. By default, each question will use the database default caching settings. Click the current caching policy to change it. +4. Select the new [caching policy](#cache-invalidation-policies). +5. Optional: turn on [refresh cache automatically](#refresh-cache-automatically) +6. Optional: to clear the cache for all questions on a dashboard, click **Clear cache for this dashboard** at the bottom of the setting sidebar. +7. Save your changes. ### Question caching policy diff --git a/_docs/master/databases/uploads.md b/_docs/master/databases/uploads.md index f0dc4025b1..75abf5bc72 100644 --- a/_docs/master/databases/uploads.md +++ b/_docs/master/databases/uploads.md @@ -26,7 +26,7 @@ To manage upload settings, admins can hit cmd/ctrl + K and search for "Settings - [PostgreSQL](../databases/connections/postgresql) - [MySQL](../databases/connections/mysql) - [Redshift](../databases/connections/redshift) -- [ClickHouse](../databases/connections/clickhouse) +- [ClickHouse](../databases/connections/clickhouse) (only supported on ClickHouse Cloud) ## Setting up uploads diff --git a/_docs/master/developers-guide/driver-changelog.md b/_docs/master/developers-guide/driver-changelog.md index 8b8ca0bb57..9e83a2f145 100644 --- a/_docs/master/developers-guide/driver-changelog.md +++ b/_docs/master/developers-guide/driver-changelog.md @@ -36,6 +36,8 @@ layout: new-docs - Added `metabase.driver/type->database-type` multimethod that returns the database type for a given Metabase type (from the type hierarchy) as a HoneySQL spec. This method handles general Metabase base types. +- Added driver multimethods driver/native-result-metadata, driver/validate-native-query-fields, driver.sql/resolve-field, driver.sql.normalize-unquoted-name, driver.sql.normalize/reserved-literal, driver.sql.references/find-used-fields, driver.sql.references/find-returned-fields, and driver.sql.references/field-references-impl for use with the :dependencies/native feature. + - Added `metabase.driver/insert-from-source!` multimethod that abstracts data insertion from various sources into existing tables. This multimethod dispatches on both the driver and the data source type (`:rows` or `:jsonl-file`). It allows drivers to optimize based on the data source type and returns the number diff --git a/_docs/master/embedding/embedded-analytics-js.md b/_docs/master/embedding/embedded-analytics-js.md index 1d52946fa3..af687f77bd 100644 --- a/_docs/master/embedding/embedded-analytics-js.md +++ b/_docs/master/embedding/embedded-analytics-js.md @@ -16,6 +16,8 @@ summary: 'Getting started with Embedded Analytics JS for embedding Metabase enti Embedded analytics JS lets you embed Metabase entities like questions, dashboards, or even the query builder into your own application using customizable components. +{% include shared/in-page-promo-embedding-workshop.html %} + Embedded Analytics JS is a JavaScript library built on top of Metabase's [Embedded Analytics React SDK](./sdk/introduction). But it does not require using React or setting up full SDK embedding. Unlike with [interactive embedding](./interactive-embedding), where you embed the entire Metabase app in an iframe, Embedded Analytics JS lets you choose from a set of predefined components like a single chart, a dashboard with optional drill-through, or query builder, and customize those components. diff --git a/_docs/master/embedding/interactive-embedding.md b/_docs/master/embedding/interactive-embedding.md index 1cde76b8ae..f72f853985 100644 --- a/_docs/master/embedding/interactive-embedding.md +++ b/_docs/master/embedding/interactive-embedding.md @@ -18,12 +18,10 @@ redirect_from: {% include shared/in-page-promo-embedding-workshop.html %} -**Interactive embedding** is what you want if you want to offer [multi-tenant, self-service analytics](/learn/metabase-basics/embedding/multi-tenant-self-service-analytics). +**Interactive embedding** lets you embed the entire Metabase app in an iframe. Interactive embedding integrates your [permissions](../permissions/introduction) and [SSO](../people-and-groups/start#authentication) to give people the right level of access to [query](../questions/query-builder/editor) and [drill-down](/learn/metabase-basics/querying-and-dashboards/questions/drill-through) into your data. > If you are just starting out with Metabase embedding, consider using [Embedded Analytics JS](./embedded-analytics-js) instead of interactive embedding - it's an improved, more customizable option for embedding interactive Metabase elements. Interactive embedding remains fully supported. -Interactive embedding is the only type of embedding that integrates with your [permissions](../permissions/introduction) and [SSO](../people-and-groups/start#authentication) to give people the right level of access to [query](/glossary/query-builder) and [drill-down](/learn/metabase-basics/querying-and-dashboards/questions/drill-through) into your data. - ## Interactive embedding demo To get a feel for what you can do with interactive embedding, check out our [interactive embedding demo](/embedding-demo). diff --git a/_docs/master/embedding/sdk/ai-chat.md b/_docs/master/embedding/sdk/ai-chat.md index f89f39bd3c..0a80002ab7 100644 --- a/_docs/master/embedding/sdk/ai-chat.md +++ b/_docs/master/embedding/sdk/ai-chat.md @@ -31,9 +31,11 @@ You can check out a [demo of the AI chat component](https://embedded-analytics-s ```typescript {% include_file "{{ dirname }}/snippets/questions/ai-question.tsx" %} ``` + ## API reference - [Component](./api/MetabotQuestion) +- [Props](./api/MetabotQuestionProps) ## Setting up AI chat @@ -47,3 +49,11 @@ To configure your embedded AI chat in your Metabase: When embedding the Metabot component in your app, you should specify a collection that embedded Metabot is allowed to use for creating queries. Embedded Metabot will only have access to that collection. For tips and more, see [Metabot settings](../../ai/settings). + +## Layout + +Use the `layout` prop to specify which layout to use for the Metabot component: + +- `auto` (default): Metabot uses the `stacked` layout on mobile screens, and a `sidebar` layout on larger screens. +- `stacked`: the question visualization stacks on top of the chat interface. +- `sidebar`: the question visualization appears to the left of the chat interface, which is on a sidebar on the right. diff --git a/_docs/master/embedding/sdk/api/CreateQuestion.html b/_docs/master/embedding/sdk/api/CreateQuestion.html index 726e591523..6562886c1a 100644 --- a/_docs/master/embedding/sdk/api/CreateQuestion.html +++ b/_docs/master/embedding/sdk/api/CreateQuestion.html @@ -13,6 +13,7 @@
OptionalcomponentPlugins?: MetabasePluginsConfigOptionalentityTypes?: EmbeddingEntityType[]An array that specifies which entity types are available in the data picker
Optionalheight?: Height<string | number>A number or string specifying a CSS size value that specifies the height of the component
+OptionalhiddenParameters?: string[]A list of parameters to hide.
OptionalinitialSqlParameters?: SqlParameterValuesInitial values for the SQL parameters.
OptionalisSaveEnabled?: booleanWhether to show the save button.
OptionalonBeforeSave?: (A callback function that triggers before saving. Only relevant when isSaveEnabled = true
OptionalcomponentAdditional mapper function to override or add drill-down menu
OptionalentityAn array that specifies which entity types are available in the data picker
OptionalheightA number or string specifying a CSS size value that specifies the height of the component
+OptionalhiddenA list of parameters to hide.
OptionalinitialInitial values for the SQL parameters.
OptionalisWhether to show the save button.
OptionalonA callback function that triggers before saving. Only relevant when isSaveEnabled = true
OptionalwithDetermines whether the chart type selector and corresponding settings button are shown. Only relevant when using the default layout.
OptionalwithEnables the ability to download results in the interactive question.
OptionalwithDetermines whether a reset button is displayed. Only relevant when using the default layout.
-OptionalcomponentPlugins?: MetabasePluginsConfigAdditional mapper function to override or add drill-down menu
OptionalentityTypes?: EmbeddingEntityType[]An array that specifies which entity types are available in the data picker
Optionalheight?: Height<string | number>A number or string specifying a CSS size value that specifies the height of the component
+OptionalhiddenParameters?: string[]A list of parameters to hide.
OptionalinitialSqlParameters?: SqlParameterValuesInitial values for the SQL parameters.
OptionalisSaveEnabled?: booleanWhether to show the save button.
OptionalonBeforeSave?: (A callback function that triggers before saving. Only relevant when isSaveEnabled = true
OptionalonCancel?: () => voidCallback function executed when save is cancelled
-FunctionInterface for adding and managing data summaries (like counts, sums, averages). Displays as a set of badges. +
FunctionDropdown button for the Summarize component.
FunctionDisplays a title based on the question's state. Shows:
@@ -119,4 +122,4 @@OptionalclassName?: stringA custom class name to be added to the root element.
Optionalstyle?: CSSPropertiesA custom style object to be added to the root element.
Additional mapper function to override or add drill-down menu