npm install @metabase/embedding-sdk-react@53-stable
+npm install @metabase/embedding-sdk-react@55-stable
To grab the latest version of the SDK that works with Metabase nightly builds, use the canary
dist-tag.
Minimum SDK version
-52 is the minimum version supported for the Embedded analytics SDK.
+Version 52 is the minimum version supported for the Embedded analytics SDK.
-
+
-To pin your version of Metabase, go to Admin settings > Settings > Embedding. Go to the Embedded analytics SDK card and scroll to Version pinning and click Request version pinning.
+By default, if you’re running on Metabase Cloud and using the Embedded analytics SDK, we’ll pin your version to avoid breaking changes.
-Version pinning requirements
+Normally, Metabase Cloud upgrades your Metabase as new versions roll out so you don’t have to deal with upgrades. But if you’re using the SDK with Metabase Cloud, you’ll want to upgrade manually to make sure your embeds don’t break when you upgrade both your Metabase and your SDK version.
-To pin a version of Metabase, you must:
+
-
- - Be on Metabase Cloud (obviously)
- - Be on the Pro or Enterprise plans
-
+To manually pin your version of Metabase:
-
+
+ - Go to Admin settings > Settings > Embedding.
+ - Go to the Embedded analytics SDK card.
+ - Scroll to Version pinning and click Request version pinning.
+
-Normally, Metabase Cloud upgrades your Metabase as new versions roll out so that you don’t have to deal with upgrades.
-
-But if you’re using the SDK with Metabase Cloud, you’ll want to upgrade manually to make sure your embeds don’t break when you upgrade both your Metabase and your SDK version.
-
-To upgrade manually, you can pin your Metabase version so that it stays in sync with the SDK version you’re using. That way you can choose when to upgrade your Metabase.
+This will open a mailto link to our support team.
diff --git a/_site/docs/master/installation-and-operation/upgrading-metabase.html b/_site/docs/master/installation-and-operation/upgrading-metabase.html
index 9fc1f73e59..90d3f51c96 100644
--- a/_site/docs/master/installation-and-operation/upgrading-metabase.html
+++ b/_site/docs/master/installation-and-operation/upgrading-metabase.html
@@ -49,7 +49,7 @@
-
+
@@ -59,7 +59,7 @@
-
+
@@ -4698,11 +4698,17 @@
Other resources
-
This page covers how to upgrade to a new Metabase release.
+
This page covers how to upgrade to a new Metabase release.
+
+
-
If you’re on a Metabase Cloud plan, we’ll upgrade your Metabase automatically with each new release; no action needed on your end.
+
If you’re on a Metabase Cloud plan, we’ll upgrade your Metabase automatically with each new release; no action needed on your end (unless you’re using the Embedded analytics SDK).
How soon we upgrade you depends on the type of release:
@@ -4713,6 +4719,14 @@
Cloud customers can request an early upgrade by emailing support at help@metabase.com. Include the URL of the Metabase you want us to upgrade.
+
+
+
If you’re using the Embedded analytics SDK on Metabase Cloud, we pin your version so that it doesn’t upgrade automatically, as you should test the changes before upgrading.
+
+
To upgrade your Metabase, you’ll need to request an upgrade by contacting support.
+
+
See our upgrade guide for the Embedded analytics SDK.
+
Here are the steps for upgrading to a new Metabase version (major or minor):
diff --git a/_site/docs/master/permissions/impersonation.html b/_site/docs/master/permissions/impersonation.html
index 83207f9b92..4f2399b366 100644
--- a/_site/docs/master/permissions/impersonation.html
+++ b/_site/docs/master/permissions/impersonation.html
@@ -4717,7 +4717,7 @@
Impersonation permissions
- For now, impersonation access is only available for MySQL, PostgreSQL, Redshift, Snowflake, and SQL Server. If you want to switch database connections based on who is logged in, check out Database routing.
+ For now, impersonation access is only available for ClickHouse, MySQL, PostgreSQL, Redshift, Snowflake, and SQL Server. If you want to switch database connections based on who is logged in, check out Database routing.
diff --git a/_site/docs/master/questions/native-editor/writing-sql.html b/_site/docs/master/questions/native-editor/writing-sql.html
index d1f1d8ec85..3b81fb7ace 100644
--- a/_site/docs/master/questions/native-editor/writing-sql.html
+++ b/_site/docs/master/questions/native-editor/writing-sql.html
@@ -4714,7 +4714,7 @@ Starting a new SQL query

-To try it out, make sure you’ve selected the Sample Database, then paste in this short SQL query:
+To try it out, make sure you’ve selected the Sample Database, then paste in this short SQL query:
SELECT
sum(subtotal),
diff --git a/_site/docs/master/questions/query-builder/expressions/converttimezone.html b/_site/docs/master/questions/query-builder/expressions/converttimezone.html
index a7a6102e3b..f7a9206aca 100644
--- a/_site/docs/master/questions/query-builder/expressions/converttimezone.html
+++ b/_site/docs/master/questions/query-builder/expressions/converttimezone.html
@@ -5012,7 +5012,7 @@
SQL
-When you run a question using the query builder, Metabase will convert your graphical query settings (filters, summaries, etc.) into a query, and run that query against your database to get your results.
+When you run a question using the query builder, Metabase will convert your graphical query settings (filters, summaries, etc.) into a query, and run that query against your database to get your results.
If our timestamp sample data is a timestamp without time zone
stored in a PostgreSQL database:
diff --git a/_site/docs/master/questions/query-builder/expressions/countif.html b/_site/docs/master/questions/query-builder/expressions/countif.html
index 0fc61eb54d..90e4832a9a 100644
--- a/_site/docs/master/questions/query-builder/expressions/countif.html
+++ b/_site/docs/master/questions/query-builder/expressions/countif.html
@@ -5036,7 +5036,7 @@ Conditional running counts
SQL
-When you run a question using the query builder, Metabase will convert your query builder settings (filters, summaries, etc.) into a SQL query, and run that query against your database to get your results.
+When you run a question using the query builder, Metabase will convert your query builder settings (filters, summaries, etc.) into a SQL query, and run that query against your database to get your results.
If our sample data is stored in a PostgreSQL database, the SQL query:
diff --git a/_site/docs/master/questions/query-builder/expressions/datetimeadd.html b/_site/docs/master/questions/query-builder/expressions/datetimeadd.html
index a7ae1acc9d..c937a46f67 100644
--- a/_site/docs/master/questions/query-builder/expressions/datetimeadd.html
+++ b/_site/docs/master/questions/query-builder/expressions/datetimeadd.html
@@ -4903,7 +4903,7 @@ datetimeSubtract
SQL
-When you run a question using the query builder, Metabase will convert your graphical query settings (filters, summaries, etc.) into a query, and run that query against your database to get your results.
+When you run a question using the query builder, Metabase will convert your graphical query settings (filters, summaries, etc.) into a query, and run that query against your database to get your results.
If our coffee sample data is stored in a PostgreSQL database:
diff --git a/_site/docs/master/questions/query-builder/expressions/datetimediff.html b/_site/docs/master/questions/query-builder/expressions/datetimediff.html
index 23848ba4be..3a35ca52e9 100644
--- a/_site/docs/master/questions/query-builder/expressions/datetimediff.html
+++ b/_site/docs/master/questions/query-builder/expressions/datetimediff.html
@@ -4849,7 +4849,7 @@
SQL
-When you run a question using the query builder, Metabase will convert your graphical query settings (filters, summaries, etc.) into a query, and run that query against your database to get your results.
+When you run a question using the query builder, Metabase will convert your graphical query settings (filters, summaries, etc.) into a query, and run that query against your database to get your results.
If our cheese sample data is stored in a PostgreSQL database:
diff --git a/_site/docs/master/questions/query-builder/expressions/datetimesubtract.html b/_site/docs/master/questions/query-builder/expressions/datetimesubtract.html
index 4153c63d2e..d66542e8c8 100644
--- a/_site/docs/master/questions/query-builder/expressions/datetimesubtract.html
+++ b/_site/docs/master/questions/query-builder/expressions/datetimesubtract.html
@@ -4903,7 +4903,7 @@ datetimeAdd
SQL
-When you run a question using the query builder, Metabase will convert your graphical query settings (filters, summaries, etc.) into a query, and run that query against your database to get your results.
+When you run a question using the query builder, Metabase will convert your graphical query settings (filters, summaries, etc.) into a query, and run that query against your database to get your results.
If our events sample data is stored in a PostgreSQL database:
diff --git a/_site/docs/master/questions/query-builder/expressions/isempty.html b/_site/docs/master/questions/query-builder/expressions/isempty.html
index 1240a735d8..4eace3c9da 100644
--- a/_site/docs/master/questions/query-builder/expressions/isempty.html
+++ b/_site/docs/master/questions/query-builder/expressions/isempty.html
@@ -4861,7 +4861,7 @@
SQL
-In most cases (unless you’re using a NoSQL database), questions created from the query builder are converted into SQL queries that run against your database or data warehouse.
+In most cases (unless you’re using a NoSQL database), questions created from the query builder are converted into SQL queries that run against your database or data warehouse.
CASE WHEN (Feedback = "" OR Feedback IS NULL) THEN "No feedback"
ELSE Feedback END
diff --git a/_site/docs/master/questions/query-builder/expressions/isnull.html b/_site/docs/master/questions/query-builder/expressions/isnull.html
index acfaaf3f85..2d2f760435 100644
--- a/_site/docs/master/questions/query-builder/expressions/isnull.html
+++ b/_site/docs/master/questions/query-builder/expressions/isnull.html
@@ -4865,7 +4865,7 @@
SQL
-In most cases (unless you’re using a NoSQL database), questions created from the query builder are converted into SQL queries that run against your database or data warehouse.
+In most cases (unless you’re using a NoSQL database), questions created from the query builder are converted into SQL queries that run against your database or data warehouse.
CASE WHEN Feedback IS NULL THEN "Unknown feedback",
ELSE Feedback END
diff --git a/_site/docs/master/questions/query-builder/expressions/now.html b/_site/docs/master/questions/query-builder/expressions/now.html
index 88ca6164db..462a81fed9 100644
--- a/_site/docs/master/questions/query-builder/expressions/now.html
+++ b/_site/docs/master/questions/query-builder/expressions/now.html
@@ -4815,7 +4815,7 @@
SQL
-When you run a question using the query builder, Metabase will convert your query builder settings (filters, summaries, etc.) into a SQL query, and run that query against your database to get your results.
+When you run a question using the query builder, Metabase will convert your query builder settings (filters, summaries, etc.) into a SQL query, and run that query against your database to get your results.
By default, now
uses your Metabase’s report time zone. If your admin hasn’t set a report time zone, now
will use your database’s time zone.
diff --git a/_site/docs/master/questions/query-builder/expressions/sumif.html b/_site/docs/master/questions/query-builder/expressions/sumif.html
index 07664d4557..09e3fbe0b3 100644
--- a/_site/docs/master/questions/query-builder/expressions/sumif.html
+++ b/_site/docs/master/questions/query-builder/expressions/sumif.html
@@ -5013,7 +5013,7 @@ CumulativeSum
SQL
-When you run a question using the query builder, Metabase will convert your query builder settings (filters, summaries, etc.) into a SQL query, and run that query against your database to get your results.
+When you run a question using the query builder, Metabase will convert your query builder settings (filters, summaries, etc.) into a SQL query, and run that query against your database to get your results.
If our payment sample data is stored in a PostgreSQL database, the SQL query:
diff --git a/_site/docs/master/questions/query-builder/join.html b/_site/docs/master/questions/query-builder/join.html
index f238639a5b..919d31f21f 100644
--- a/_site/docs/master/questions/query-builder/join.html
+++ b/_site/docs/master/questions/query-builder/join.html
@@ -49,7 +49,7 @@
-
+
@@ -59,7 +59,7 @@
-
+
@@ -4702,28 +4702,28 @@ Joining data
You can join data to combine your current data with another table, or even with a saved question.
-After you click on the Join Data button to add a join step, you’ll need to pick the data (from the same database) that you want to join. You can only pick tables and saved questions that are from the same database as your starting data.
+After you click the “Join Data” button to add a join step, you’ll need to pick the data (from the same database) that you want to join. You can only pick tables and saved questions that are from the same database as your starting data.

-Next, you’ll need to pick the columns you want to join on. This means you pick a column from the first table, and a column from the second table, and the join will stitch rows together where the value from the first column is equal to the value in the second column. A very common example is to join on an ID column in each table, so if you happened to pick a table to join on where there is a foreign key relationship between the tables, Metabase will automatically pick those corresponding ID columns for you. At the end of your join step, there’s a Columns
button you can click to choose which columns you want to include from the joined data.
+Next, you’ll need to pick the columns you want to join on. This means you pick a column from the first table and a column from the second table, and the join will stitch rows together where the value from the first column equals the value in the second column. A very common example is joining on an ID column in each table. If you pick a table to join where there’s a foreign key relationship between the tables, Metabase will automatically pick those corresponding ID columns for you. At the end of your join step, there’s a “Columns” button you can click to choose which columns you want to include from the joined data.
-By default, Metabase will do a left outer join, but you can click on the Venn diagram icon to select a different type of join. Not all databases support all types of joins, so Metabase will only display the options supported by the database you’re using.
+By default, Metabase will do a left outer join, but you can click the Venn diagram icon to select a different type of join. Not all databases support all types of joins, so Metabase will only display the options supported by the database you’re using.
Here are the basic types of joins:
- - Left outer join: select all records from Table A, along with records from Table B that meet the join condition, if any.
- - Right outer join: select all records from Table B, along with records from Table A that meet the join condition, if any.
- - Inner join: only select the records from Table A and B where the join condition is met.
- - Full outer join: select all records from both tables, whether or not the join condition is met.
+ - Left outer join: Select all records from Table A, along with records from Table B that meet the join condition, if any.
+ - Right outer join: Select all records from Table B, along with records from Table A that meet the join condition, if any.
+ - Inner join: Only select the records from Table A and B where the join condition is met.
+ - Full outer join: Select all records from both tables, whether or not the join condition is met.
-A left outer join example: If Table A is Orders and Table B is Customers, and assuming you do a join where the customer_id
column in Orders is equal to the ID
column in Customers, when you do a left outer join your results will be a full list of all your orders, and each order row will also display the columns of the customer who placed that order. Since a single customer can place many orders, a given customer’s information might be repeated many times for different order rows. If there isn’t a corresponding customer for a given order, the order’s information will be shown, but the customer columns will just be blank for that row.
+A left outer join example: If Table A is Orders and Table B is Customers, and you do a join where the customer_id
column in Orders equals the ID
column in Customers, when you do a left outer join your results will be a full list of all your orders, and each order row will also display the columns of the customer who placed that order. Since a single customer can place many orders, a given customer’s information might be repeated many times for different order rows. If there isn’t a corresponding customer for a given order, the order’s information will be shown, but the customer columns will just be blank for that row.
Multiple stages of joins
-In many cases you might have tables A, B, and C, where A and B have a connection, and B and C have a connection, but A and C don’t. If you want to join A to B to C, all you have to do is add multiple join steps. Click on Join Data, join table A to table B, then click the Join Data step below that completed join block to add a second join step, and join the results of your last join to table C.
+In many cases you might have tables A, B, and C, where A and B have a connection, and B and C have a connection, but A and C don’t. If you want to join A to B to C, all you have to do is add multiple join steps. Click “Join Data,” join table A to table B, then click the “Join Data” step below that completed join block to add a second join step, and join the results of your last join to table C.

@@ -4750,9 +4750,9 @@ Joining with different operators
Joins with custom expressions
-Sometimes people want to join data using constant values or relative dates or some other custom conditions.
+Sometimes you want to join data using constant values, relative dates, or some other custom conditions.
-For example, let’s say you have a table of reviews, and want to add a column that includes the average rating for all products.
+For example, let’s say you have a table of reviews and want to add a column that includes the average rating for all products.
You could first calculate the average rating, then join the result to the reviews table on 1=1
.
@@ -4767,13 +4767,27 @@ Joins with custom expressions
Click Done.
-See a list of expressions.
+Another example: Let’s say you have:
+
+
+ - A
customers
table that stores names under first_name
and last_name
+ - An
accounts
table that stores first and last names in a single column, full_name
+
+
+You could join those tables using a custom expression. The join key for the customers
table would look something like:
+
+concat([first_name], " ", [last_name])
+
+
+And the join key for the accounts
table would simply be the full_name
column.
+
+Take a look at our list of expressions.
Further reading