From 13cd3429a791fe4799fb150b160f70df2576e325 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Thu, 29 Feb 2024 17:07:09 +0100 Subject: [PATCH] docs: Add Power BI, extract pages in Semantic Layer Sync --- .../visualization-tools/metabase.mdx | 14 +- .../visualization-tools/powerbi.mdx | 19 +- .../visualization-tools/tableau.mdx | 16 +- .../product/workspace/semantic-layer-sync.mdx | 305 +++--------------- .../workspace/semantic-layer-sync/_meta.js | 7 + .../semantic-layer-sync/metabase.mdx | 74 +++++ .../semantic-layer-sync/power-bi.mdx | 34 ++ .../workspace/semantic-layer-sync/preset.mdx | 71 ++++ .../semantic-layer-sync/superset.mdx | 65 ++++ .../workspace/semantic-layer-sync/tableau.mdx | 117 +++++++ 10 files changed, 436 insertions(+), 286 deletions(-) create mode 100644 docs/pages/product/workspace/semantic-layer-sync/_meta.js create mode 100644 docs/pages/product/workspace/semantic-layer-sync/metabase.mdx create mode 100644 docs/pages/product/workspace/semantic-layer-sync/power-bi.mdx create mode 100644 docs/pages/product/workspace/semantic-layer-sync/preset.mdx create mode 100644 docs/pages/product/workspace/semantic-layer-sync/superset.mdx create mode 100644 docs/pages/product/workspace/semantic-layer-sync/tableau.mdx 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