diff --git a/docs/pages/product/configuration/visualization-tools/metabase.mdx b/docs/pages/product/configuration/visualization-tools/metabase.mdx
index 0fc899c4b8730..bb42a59b0f7c1 100644
--- a/docs/pages/product/configuration/visualization-tools/metabase.mdx
+++ b/docs/pages/product/configuration/visualization-tools/metabase.mdx
@@ -1,17 +1,15 @@
# Metabase
-
-
-Gain instant insights from your data. Join [our webinar on August 30 at 9:00am
-PST](https://cube.dev/events/cube-metabase-webinar) to explore how Cube & Metabase streamline data analysis, leveraging Cube's
-Semantic Layer Sync.
-
-
-
[Metabase][metabase-oss] is an open-source way to help everyone in your company
to ask questions and learn from data. There's also a fully-managed [cloud
service][metabase] for Metabase.
+
+
+Webinar recording: [Instant Insights Unlocked with Cube & Metabase](https://cube.dev/events/cube-metabase-webinar)
+
+
+
## Semantic Layer Sync
It is recommended to use [Semantic Layer Sync][ref-sls] to connect Cube to
diff --git a/docs/pages/product/configuration/visualization-tools/powerbi.mdx b/docs/pages/product/configuration/visualization-tools/powerbi.mdx
index 95fd802c3f55f..33b1d08cfa884 100644
--- a/docs/pages/product/configuration/visualization-tools/powerbi.mdx
+++ b/docs/pages/product/configuration/visualization-tools/powerbi.mdx
@@ -3,12 +3,20 @@ redirect_from:
- /config/downstream/powerbi
---
-# PowerBI
+# Power BI
-You can connect to Cube from Power BI, interactive data visualization software
-product developed by Microsoft, using the [Cube SQL API][ref-sql-api].
+[Power BI](https://www.microsoft.com/en-gb/power-platform/products/power-bi/)
+is an interactive data visualization software product developed by Microsoft.
-## Enable Cube SQL API
+## Semantic Layer Sync
+
+It is recommended to use [Semantic Layer Sync][ref-sls] to connect Cube to
+Power BI. It automatically synchronizes the [data model][ref-data-model] between
+Cube and Power BI.
+
+## SQL API
+
+You can also use the [SQL API][ref-sql-api] to connect Cube to Tableau.
### Cube Cloud
@@ -50,5 +58,6 @@ are columns.
[ref-getting-started]: /product/getting-started/cloud
[ref-sql-api]: /product/apis-integrations/sql-api
[ref-pre-aggs]: /product/caching/using-pre-aggregations
-
+[ref-sls]: /product/workspace/semantic-layer-sync
+[ref-data-model]: /product/data-modeling/overview
[link-powerbi-directquery]: https://learn.microsoft.com/en-us/power-bi/connect-data/desktop-use-directquery
\ No newline at end of file
diff --git a/docs/pages/product/configuration/visualization-tools/tableau.mdx b/docs/pages/product/configuration/visualization-tools/tableau.mdx
index ae9a842b6ef54..055a6589b4a3f 100644
--- a/docs/pages/product/configuration/visualization-tools/tableau.mdx
+++ b/docs/pages/product/configuration/visualization-tools/tableau.mdx
@@ -5,10 +5,17 @@ redirect_from:
# Tableau
-You can connect to Cube from Tableau, a visual analytics platform, using the
-[Cube SQL API][ref-sql-api].
+[Tableau](https://www.tableau.com) is a popular visual analytics platform.
-## Enable Cube SQL API
+## Semantic Layer Sync
+
+It is recommended to use [Semantic Layer Sync][ref-sls] to connect Cube to
+Tableau. It automatically synchronizes the [data model][ref-data-model] between
+Cube and Tableau.
+
+## SQL API
+
+You can also use the [SQL API][ref-sql-api] to connect Cube to Tableau.
### Cube Cloud
@@ -62,5 +69,6 @@ are columns.
[ref-getting-started]: /product/getting-started/cloud
[ref-sql-api]: /product/apis-integrations/sql-api
[ref-pre-aggs]: /product/caching/using-pre-aggregations
-
+[ref-sls]: /product/workspace/semantic-layer-sync
+[ref-data-model]: /product/data-modeling/overview
[link-tableau-extracts]: https://help.tableau.com/current/pro/desktop/en-us/extracting_data.htm
\ No newline at end of file
diff --git a/docs/pages/product/workspace/semantic-layer-sync.mdx b/docs/pages/product/workspace/semantic-layer-sync.mdx
index 712c0605c9752..82469228c72e1 100644
--- a/docs/pages/product/workspace/semantic-layer-sync.mdx
+++ b/docs/pages/product/workspace/semantic-layer-sync.mdx
@@ -5,8 +5,9 @@ layer from Cube to BI tools. It's the easiest way to connect a BI tool to Cube.
-Semantic Layer Sync is available in Cube Cloud on
-[all tiers](https://cube.dev/pricing).
+Semantic Layer Sync with Metabase, Preset, and Superset is available in Cube Cloud on
+[all tiers](https://cube.dev/pricing). Support for Tableau and Power BI is available
+on [Enterprise and above](https://cube.dev/pricing) tiers.
@@ -25,6 +26,39 @@ In general, here's how Cube entities match BI-specific ones:
| Cube, view | Dataset, table, data source |
| Measure, dimension, segment | Column, dimension, metric |
+## Supported tools
+
+Semantic Layer Sync supports the following BI tools. Check relevant pages for details
+on configuration and features for specific tools:
+
+
+
+
+
+
+
+
+
## Creating syncs
You can create a new sync by navigating to theĀ Semantic Layer Sync
@@ -35,23 +69,6 @@ Sync.
Follow the steps in the wizard to create a sync with any of supported BI tools.
-### Supported tools
-
-Semantic Layer Sync supports the following BI tools:
-
-- [Apache Superset](#apache-superset) (self-hosted) and
- [Preset](#preset) (managed)
-- [Metabase](#metabase) (self-hosted and managed)
-- [Tableau](#tableau) (Cloud and Desktop)
-
-
-
-We're working on bringing support for more BI tools, e.g., Power BI and MicroStrategy.
-Please [reach out to us](https://forms.gle/eEit9Pa7ZXSoFxb86) if you're
-interested in using Semantic Layer Sync with other BI tools.
-
-
-
### Configuration
Under the hood, Semantic Layer Sync is configured using the `semantic_layer_sync`
@@ -257,248 +274,6 @@ module.exports = {
-### Apache Superset
-
-Data model is synchronized via [Superset API][superset-api] which uses a `user`
-name and a `password` for authentication. You can use your own user name and
-password or create a new service account. You can copy a `url` at any page of
-your Superset workspace.
-
-Example confguration for Superset:
-
-
-
-```python
-from cube import config
-
-@config('semantic_layer_sync')
-def semantic_layer_sync(ctx: dict) -> list[dict]:
- return [
- {
- 'type': 'superset',
- 'name': 'Superset Sync',
- 'config': {
- 'user': 'mail@example.com',
- 'password': '4dceae-606a03-93ae6dc7',
- 'url': 'superset.example.com',
- 'database': 'Cube Cloud: production-deployment'
- }
- }
- ]
-```
-
-```javascript
-module.exports = {
- semanticLayerSync: ({ securityContext }) => {
- return [
- {
- type: "superset",
- name: "Superset Sync",
- config: {
- user: "mail@example.com",
- password: "4dceae-606a03-93ae6dc7",
- url: "superset.example.com",
- database: "Cube Cloud: production-deployment",
- },
- },
- ];
- },
-};
-```
-
-
-
-### Preset
-
-Data model is synchronized via [Preset API][preset-api] which uses API keys for
-authentication.
-
-You can generate a new API key in your [user
-settings][preset-user-settings] in Preset to obtain an `api_token` and an
-`api_secret`. You can also copy a `workspace_url` at any page of your Preset
-workspace. Note that your use should have the [workspace
-role][preset-user-roles] of `Workspace Admin`.
-
-Example confguration for Preset:
-
-
-
-```python
-from cube import config
-
-@config('semantic_layer_sync')
-def semantic_layer_sync(ctx: dict) -> list[dict]:
- return [
- {
- 'type': 'preset',
- 'name': "Preset Sync",
- 'config': {
- 'api_token': '07988f63-c200-499e-97c9-ba137d8918aa',
- 'api_secret': 'c19fbab4fd4945899795d32898f2e1165bef8e5ee653499e92f083b3d088aecb',
- 'workspace_url': '12345678.us1a.app.preset.io',
- 'database': 'Cube Cloud: production-deployment'
- }
- }
- ]
-```
-
-```javascript
-module.exports = {
- semanticLayerSync: ({ securityContext }) => {
- return [
- {
- type: "preset",
- name: "Preset Sync",
- config: {
- api_token: "07988f63-c200-499e-97c9-ba137d8918aa",
- api_secret: "c19fbab4fd4945899795d32898f2e1165bef8e5ee653499e92f083b3d088aecb",
- workspace_url: "12345678.us1a.app.preset.io",
- database: "Cube Cloud: production-deployment",
- },
- },
- ];
- },
-};
-```
-
-
-
-### Metabase
-
-Data model is synchronized via [Metabase API][metabase-api] which uses a `user`
-name and a `password` for authentication. You can use your own user name and
-password or create a new service account. You can copy a `url` at any page of
-your Metabase workspace.
-
-Example confguration for Metabase:
-
-
-
-```python
-from cube import config
-
-@config('semantic_layer_sync')
-def semantic_layer_sync(ctx: dict) -> list[dict]:
- return [
- {
- 'type': 'metabase',
- 'name': 'Metabase Sync',
- 'config': {
- 'user': 'mail@example.com',
- 'password': '4dceae-606a03-93ae6dc7',
- 'url': 'example.metabaseapp.com',
- 'database': 'Cube Cloud: production-deployment'
- }
- }
- ]
-```
-
-```javascript
-module.exports = {
- semanticLayerSync: ({ securityContext }) => {
- return [
- {
- type: "metabase",
- name: "Metabase Sync",
- config: {
- user: "mail@example.com",
- password: "4dceae-606a03-93ae6dc7",
- url: "example.metabaseapp.com",
- database: "Cube Cloud: production-deployment",
- },
- },
- ];
- },
-};
-```
-
-
-
-When a sync is run, Metabase will send an email with a new login notification.
-You can ignore such emails, [configure Metabase][metabase-skip-emails] to skip
-sending them, or use a service account with a different email address:
-
-
-
-### Tableau
-
-Data model is synchronized via the [Tableau API][tableau-api] which uses [personal
-access tokens][tableau-pat] for authentication. You can create a new [personal access
-token][tableau-api-authentication] on the My Account Settings page.
-
-
-
-Personal access tokens might be disabled in your Tableau site configuration.
-To enable them, navigate to the Settings page of your Tableau site
-and click Enable personal access tokens.
-
-By default, personal access tokens are configured with an expiry period of 180 days.
-Please check your Tableau site configuration for details. To customize the expiry
-period, navigate to the Settings page of your Tableau site. Please
-also make sure to renew your personal access token in time.
-
-
-
-You will also need to specify a `region` and a Tableau `site` name. Consider the
-following URL of a Tableau site: `https://10ax.online.tableau.com/#/site/cubedev/home`.
-In this case, the region would be `10ax` and the site name would be `cubedev`.
-
-Example configuration for Tableau:
-
-
-
-```python
-from cube import config
-
-@config('semantic_layer_sync')
-def semantic_layer_sync(ctx: dict) -> list[dict]:
- return [
- {
- 'type': 'tableau',
- 'name': 'Tableau Sync',
- 'config': {
- 'region': '10ax',
- 'site': 'mytableausite',
- 'personalAccessToken': 'cube-cloud',
- 'personalAccessTokenSecret': 'HW8TFrBfJyen+JQleh0/bw==:1BvJLIti9Fud04rN021EfHMnh4yYD3p4',
- 'database': 'Cube Cloud: production-deployment',
- },
- },
- ]
-```
-
-```javascript
-module.exports = {
- semanticLayerSync: ({ securityContext }) => {
- return [
- {
- type: "tableau",
- name: "Tableau Sync",
- config: {
- region: "10ax",
- site: "mytableausite",
- personalAccessToken: "cube-cloud",
- personalAccessTokenSecret: "HW8TFrBfJyen+JQleh0/bw==:1BvJLIti9Fud04rN021EfHMnh4yYD3p4",
- database: "Cube Cloud: production-deployment",
- },
- },
- ];
- },
-};
-```
-
-
-
-When connecting a Cube Cloud data source to your Tableau workbook, you will be prompted
-to enter the user name and password for Cube Cloud. You can find them at the SQL
-API Connection tab of the BI Integrations page in Cube Cloud.
-
-[tableau-api]:
- https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api.htm
-[tableau-api-authentication]:
- https://help.tableau.com/current/server/en-us/security_personal_access_tokens.htm#create-personal-access-tokens
-[tableau-pat]: https://help.tableau.com/current/server/en-us/security_personal_access_tokens.htm
-
## Running syncs
When the data model is updated, all configured syncs will automatically run.
@@ -553,11 +328,3 @@ on, i.e., your development mode branch, shared branch, or main branch.
[ref-config-schemaversion]: /reference/configuration/config#schemaversion
[ref-workspace-sls]: /workspace/bi-integrations
[ref-dev-mode]: /product/workspace/dev-mode
-[preset-api]: https://api-docs.preset.io
-[preset-user-settings]: https://manage.app.preset.io/app/user
-[preset-user-roles]: https://docs.preset.io/docs/role-based-access-security-rbac#change-user-access-to-a-workspace
-[superset-api]: https://superset.apache.org/docs/api/
-[metabase-api]:
- https://www.metabase.com/learn/administration/metabase-api#authenticate-your-requests-with-a-session-token
-[metabase-skip-emails]:
- https://www.metabase.com/docs/latest/configuring-metabase/environment-variables#mb_send_email_on_first_login_from_new_device
diff --git a/docs/pages/product/workspace/semantic-layer-sync/_meta.js b/docs/pages/product/workspace/semantic-layer-sync/_meta.js
new file mode 100644
index 0000000000000..09dd4df00bf65
--- /dev/null
+++ b/docs/pages/product/workspace/semantic-layer-sync/_meta.js
@@ -0,0 +1,7 @@
+module.exports = {
+ "superset": "Apache Superset",
+ "metabase": "Metabase",
+ "power-bi": "Power BI",
+ "preset": "Preset",
+ "tableau": "Tableau"
+}
\ No newline at end of file
diff --git a/docs/pages/product/workspace/semantic-layer-sync/metabase.mdx b/docs/pages/product/workspace/semantic-layer-sync/metabase.mdx
new file mode 100644
index 0000000000000..6eb1aabf7f079
--- /dev/null
+++ b/docs/pages/product/workspace/semantic-layer-sync/metabase.mdx
@@ -0,0 +1,74 @@
+# Semantic Layer Sync with Metabase
+
+This page details the support for [Metabase](https://www.metabase.com)
+in [Semantic Layer Sync](/product/workspace/semantic-layer-sync).
+
+Semantic Layer Sync works with managed and self-hosted Metabase instances.
+
+## Configuration
+
+To create a new sync, choose Metabase:
+
+
+
+Data model is synchronized via [Metabase API][metabase-api] which uses a `user`
+name and a `password` for authentication. You can use your own user name and
+password or create a new service account. You can copy a `url` at any page of
+your Metabase workspace.
+
+Example confguration for Metabase:
+
+
+
+```python
+from cube import config
+
+@config('semantic_layer_sync')
+def semantic_layer_sync(ctx: dict) -> list[dict]:
+ return [
+ {
+ 'type': 'metabase',
+ 'name': 'Metabase Sync',
+ 'config': {
+ 'user': 'mail@example.com',
+ 'password': '4dceae-606a03-93ae6dc7',
+ 'url': 'example.metabaseapp.com',
+ 'database': 'Cube Cloud: production-deployment'
+ }
+ }
+ ]
+```
+
+```javascript
+module.exports = {
+ semanticLayerSync: ({ securityContext }) => {
+ return [
+ {
+ type: "metabase",
+ name: "Metabase Sync",
+ config: {
+ user: "mail@example.com",
+ password: "4dceae-606a03-93ae6dc7",
+ url: "example.metabaseapp.com",
+ database: "Cube Cloud: production-deployment",
+ },
+ },
+ ];
+ },
+};
+```
+
+
+
+When a sync is run, Metabase will send an email with a new login notification.
+You can ignore such emails, [configure Metabase][metabase-skip-emails] to skip
+sending them, or use a service account with a different email address:
+
+
+
+
+[metabase-api]: https://www.metabase.com/learn/administration/metabase-api#authenticate-your-requests-with-a-session-token
+[metabase-skip-emails]: https://www.metabase.com/docs/latest/configuring-metabase/environment-variables#mb_send_email_on_first_login_from_new_device
\ No newline at end of file
diff --git a/docs/pages/product/workspace/semantic-layer-sync/power-bi.mdx b/docs/pages/product/workspace/semantic-layer-sync/power-bi.mdx
new file mode 100644
index 0000000000000..e02c2cdf37c95
--- /dev/null
+++ b/docs/pages/product/workspace/semantic-layer-sync/power-bi.mdx
@@ -0,0 +1,34 @@
+# Semantic Layer Sync with Power BI
+
+This page details the support for [Power BI](https://www.microsoft.com/en-gb/power-platform/products/power-bi/)
+in [Semantic Layer Sync](/product/workspace/semantic-layer-sync).
+
+
+
+Semantic Layer Sync with Power BI is available on
+[Enterprise and above](https://cube.dev/pricing) tiers.
+
+
+
+## Configuration
+
+To create a new sync, choose Power BI:
+
+
+
+## Features
+
+Click Download .pbit to download a Power BI [report template][pbit]:
+
+
+
+Use can open it in Power BI to create a report.
+
+
+[pbit]: https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-templates
\ No newline at end of file
diff --git a/docs/pages/product/workspace/semantic-layer-sync/preset.mdx b/docs/pages/product/workspace/semantic-layer-sync/preset.mdx
new file mode 100644
index 0000000000000..049ffc081412f
--- /dev/null
+++ b/docs/pages/product/workspace/semantic-layer-sync/preset.mdx
@@ -0,0 +1,71 @@
+# Semantic Layer Sync with Preset
+
+This page details the support for [Preset](https://preset.io)
+in [Semantic Layer Sync](/product/workspace/semantic-layer-sync).
+
+## Configuration
+
+To create a new sync, choose Preset:
+
+
+
+Data model is synchronized via [Preset API][preset-api] which uses API keys for
+authentication.
+
+You can generate a new API key in your [user
+settings][preset-user-settings] in Preset to obtain an `api_token` and an
+`api_secret`. You can also copy a `workspace_url` at any page of your Preset
+workspace. Note that your use should have the [workspace
+role][preset-user-roles] of `Workspace Admin`.
+
+Example confguration for Preset:
+
+
+
+```python
+from cube import config
+
+@config('semantic_layer_sync')
+def semantic_layer_sync(ctx: dict) -> list[dict]:
+ return [
+ {
+ 'type': 'preset',
+ 'name': "Preset Sync",
+ 'config': {
+ 'api_token': '07988f63-c200-499e-97c9-ba137d8918aa',
+ 'api_secret': 'c19fbab4fd4945899795d32898f2e1165bef8e5ee653499e92f083b3d088aecb',
+ 'workspace_url': '12345678.us1a.app.preset.io',
+ 'database': 'Cube Cloud: production-deployment'
+ }
+ }
+ ]
+```
+
+```javascript
+module.exports = {
+ semanticLayerSync: ({ securityContext }) => {
+ return [
+ {
+ type: "preset",
+ name: "Preset Sync",
+ config: {
+ api_token: "07988f63-c200-499e-97c9-ba137d8918aa",
+ api_secret: "c19fbab4fd4945899795d32898f2e1165bef8e5ee653499e92f083b3d088aecb",
+ workspace_url: "12345678.us1a.app.preset.io",
+ database: "Cube Cloud: production-deployment",
+ },
+ },
+ ];
+ },
+};
+```
+
+
+
+
+[preset-api]: https://api-docs.preset.io
+[preset-user-settings]: https://manage.app.preset.io/app/user
+[preset-user-roles]: https://docs.preset.io/docs/role-based-access-security-rbac#change-user-access-to-a-workspace
\ No newline at end of file
diff --git a/docs/pages/product/workspace/semantic-layer-sync/superset.mdx b/docs/pages/product/workspace/semantic-layer-sync/superset.mdx
new file mode 100644
index 0000000000000..2724808aae79a
--- /dev/null
+++ b/docs/pages/product/workspace/semantic-layer-sync/superset.mdx
@@ -0,0 +1,65 @@
+# Semantic Layer Sync with Apache Superset
+
+This page details the support for [Apache Superset](https://superset.apache.org)
+in [Semantic Layer Sync](/product/workspace/semantic-layer-sync).
+
+## Configuration
+
+To create a new sync, choose Apache Superset:
+
+
+
+Data model is synchronized via [Superset API][superset-api] which uses a `user`
+name and a `password` for authentication. You can use your own user name and
+password or create a new service account. You can copy a `url` at any page of
+your Superset workspace.
+
+Example confguration for Superset:
+
+
+
+```python
+from cube import config
+
+@config('semantic_layer_sync')
+def semantic_layer_sync(ctx: dict) -> list[dict]:
+ return [
+ {
+ 'type': 'superset',
+ 'name': 'Superset Sync',
+ 'config': {
+ 'user': 'mail@example.com',
+ 'password': '4dceae-606a03-93ae6dc7',
+ 'url': 'superset.example.com',
+ 'database': 'Cube Cloud: production-deployment'
+ }
+ }
+ ]
+```
+
+```javascript
+module.exports = {
+ semanticLayerSync: ({ securityContext }) => {
+ return [
+ {
+ type: "superset",
+ name: "Superset Sync",
+ config: {
+ user: "mail@example.com",
+ password: "4dceae-606a03-93ae6dc7",
+ url: "superset.example.com",
+ database: "Cube Cloud: production-deployment",
+ },
+ },
+ ];
+ },
+};
+```
+
+
+
+
+[superset-api]: https://superset.apache.org/docs/api/
\ No newline at end of file
diff --git a/docs/pages/product/workspace/semantic-layer-sync/tableau.mdx b/docs/pages/product/workspace/semantic-layer-sync/tableau.mdx
new file mode 100644
index 0000000000000..a2ea0fd775029
--- /dev/null
+++ b/docs/pages/product/workspace/semantic-layer-sync/tableau.mdx
@@ -0,0 +1,117 @@
+# Semantic Layer Sync with Tableau
+
+This page details the support for [Tableau](https://www.tableau.com)
+in [Semantic Layer Sync](/product/workspace/semantic-layer-sync).
+
+
+
+Semantic Layer Sync with Tableau is available on
+[Enterprise and above](https://cube.dev/pricing) tiers.
+
+
+
+Semantic Layer Sync works with Tableau Cloud, Tableau Desktop, and Tableau Server.
+
+## Configuration
+
+To create a new sync, choose either Tableau Cloud, Tableau Desktop,
+or Tableau Server:
+
+
+
+For Tableau Cloud and Tableau Server,
+data model is synchronized via the [Tableau API][tableau-api] which uses [personal
+access tokens][tableau-pat] for authentication. You can create a new [personal access
+token][tableau-api-authentication] on the My Account Settings page.
+
+
+
+Personal access tokens might be disabled in your Tableau site configuration.
+To enable them, navigate to the Settings page of your Tableau site
+and click Enable personal access tokens.
+
+By default, personal access tokens are configured with an expiry period of 180 days.
+Please check your Tableau site configuration for details. To customize the expiry
+period, navigate to the Settings page of your Tableau site. Please
+also make sure to renew your personal access token in time.
+
+
+
+You will also need to specify a `region` and a Tableau `site` name. Consider the
+following URL of a Tableau site: `https://10ax.online.tableau.com/#/site/cubedev/home`.
+In this case, the region would be `10ax` and the site name would be `cubedev`.
+
+Example configuration for Tableau:
+
+
+
+```python
+from cube import config
+
+@config('semantic_layer_sync')
+def semantic_layer_sync(ctx: dict) -> list[dict]:
+ return [
+ {
+ 'type': 'tableau',
+ 'name': 'Tableau Sync',
+ 'config': {
+ 'region': '10ax',
+ 'site': 'mytableausite',
+ 'personalAccessToken': 'cube-cloud',
+ 'personalAccessTokenSecret': 'HW8TFrBfJyen+JQleh0/bw==:1BvJLIti9Fud04rN021EfHMnh4yYD3p4',
+ 'database': 'Cube Cloud: production-deployment',
+ },
+ },
+ ]
+```
+
+```javascript
+module.exports = {
+ semanticLayerSync: ({ securityContext }) => {
+ return [
+ {
+ type: "tableau",
+ name: "Tableau Sync",
+ config: {
+ region: "10ax",
+ site: "mytableausite",
+ personalAccessToken: "cube-cloud",
+ personalAccessTokenSecret: "HW8TFrBfJyen+JQleh0/bw==:1BvJLIti9Fud04rN021EfHMnh4yYD3p4",
+ database: "Cube Cloud: production-deployment",
+ },
+ },
+ ];
+ },
+};
+```
+
+
+
+When connecting a Cube Cloud data source to your Tableau workbook, you will be prompted
+to enter the user name and password for Cube Cloud. You can find them at the SQL
+API Connection tab of the BI Integrations page in Cube Cloud.
+
+## Features
+
+Syncs with Tableau Cloud and Tableau Server run automatically via the [Tableau
+API][tableau-api].
+
+### Tableau Desktop
+
+Click Download .tds to download a Tableau [data source][tds] file:
+
+
+
+Use can open it in Tableau to create a data source.
+
+
+[tds]: https://help.tableau.com/current/pro/desktop/en-us/export_connection.htm
+[tableau-api]: https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api.htm
+[tableau-api-authentication]: https://help.tableau.com/current/server/en-us/security_personal_access_tokens.htm#create-personal-access-tokens
+[tableau-pat]: https://help.tableau.com/current/server/en-us/security_personal_access_tokens.htm
\ No newline at end of file