# Tableau

## Tableau

Paradime integrates with Tableau in two ways:

1. **Lineage & Catalog** — extract Tableau metadata to power column-level lineage and the asset catalog
2. **Bolt Refreshes** — trigger Tableau [data source](https://docs.paradime.io/app-help/documentation/bolt/creating-schedules/command-settings/tableau-data-source-refresh) and [workbook](https://docs.paradime.io/app-help/documentation/bolt/creating-schedules/command-settings/tableau-workbook-refresh) refreshes a as part of your dbt pipelines

***

### Prerequisites

#### Enable the Tableau Metadata API

For Tableau Server, make sure to enable the Tableau Metadata API. Check [Tableau's documentation](https://help.tableau.com/current/api/metadata_api/en-us/docs/meta_api_start.html#enable-the-tableau-metadata-api-for-tableau-server). Metadata API is always enabled for Tableau Online.

{% hint style="danger" %}
**Required version:** Ensure you are running Tableau Server or Tableau Online 2020.1 or higher.
{% endhint %}

{% hint style="info" %}
**Note:** Paradime will only extract **published** Tableau assets from the Metadata API.
{% endhint %}

#### Whitelist Paradime IP

If using Tableau Server, allow traffic from the relevant Paradime IP in your firewall. See: [Paradime IP addresses](https://docs.paradime.io/app-help/developers/ip-restrictions).

#### Update Cloudflare Browser Integrity Check (BIC) rules

If you're using Cloudflare, your firewall may block Paradime's requests to the Tableau Metadata API. Create a firewall skip rule for the [Paradime IP address](https://docs.paradime.io/app-help/developers/ip-restrictions).

See [Cloudflare Browser Integrity Check docs](https://developers.cloudflare.com/waf/tools/browser-integrity-check/).

***

### Step 1 — Create a dedicated Tableau user

{% hint style="info" %}
We advise creating a new Tableau user, in order to grant the correct access required to connect using the Tableau Metadata API.
{% endhint %}

Add a user with the **Site Administrator Explorer** role to the site you want to connect.

* 👉 [How to create users in Tableau](https://help.tableau.com/current/server/en-us/sites_addusers.htm)
* 👉 [How to grant the Site Administrator Explorer role](https://help.tableau.com/current/online/en-us/users_site_roles.htm)

***

### Step 2 — Generate API credentials

Paradime connects to Tableau via Personal Access Tokens. You'll need:

* **Host name**
  * Tableau Cloud: `https://xxxx.online.tableau.com/#/site/your_site/`
  * Tableau Server: `https://xxxx.tableau.com/`
* **Token Name**
* **Token Secret**

To generate a Personal Access Token in the Tableau UI:

1. Click your avatar (top right) → **My Account Settings**
2. Go to the **Settings** tab → scroll to **Personal Access Tokens**
3. Enter a token name (e.g. `paradime`) → click **Create new token**
4. Save the **Token Name** and **Token Secret** — you'll need both below

<figure><img src="https://2337193041-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHET0AD04uHMgdeLAjptq%2Fuploads%2FwwJhAasks4tsN9K41bk8%2Fimage.png?alt=media&#x26;token=72456674-8495-4710-878d-a596e54d2622" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
If you delete this token from Tableau, all Paradime integrations using it will stop working.
{% endhint %}

👉 [Tableau docs: Personal Access Tokens](https://help.tableau.com/current/server/en-us/security_personal_access_tokens.htm)

***

### Connect to Lineage & Catalog

This integration powers Tableau asset metadata in Paradime's Lineage and Catalog features.

The integration is configured by the **Admin user**. Go to **Account Settings → Integrations**, find Tableau, and click **Connect**.

1. Enter your **Host Name**, **Token Name**, and **Token Secret**
2. Click **Test Connection** to validate

<div data-with-frame="true"><figure><img src="https://2337193041-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHET0AD04uHMgdeLAjptq%2Fuploads%2F0HrgDLchUla1KPgo5yV0%2Fimage.png?alt=media&#x26;token=b5bfb559-294f-4eed-807a-04a04486109f" alt=""><figcaption></figcaption></figure></div>

#### What metadata does Paradime extract?

Paradime uses the following Tableau Metadata API endpoints:

* [Dashboard](https://help.tableau.com/current/api/metadata_api/en-us/reference/dashboard.doc.html)
* [Flows](https://help.tableau.com/current/api/metadata_api/en-us/reference/flow.doc.html)
* [Sheets](https://help.tableau.com/current/api/metadata_api/en-us/reference/sheet.doc.html)
* [Data sources](https://help.tableau.com/current/api/metadata_api/en-us/reference/datasource.doc.html)
* [Fields](https://help.tableau.com/current/api/metadata_api/en-us/reference/field.doc.html)
* [Calculated fields](https://help.tableau.com/current/api/metadata_api/en-us/reference/calculatedfield.doc.html)
* [Database](https://help.tableau.com/current/api/metadata_api/en-us/reference/database.doc.html)
* [Metric](https://help.tableau.com/current/api/metadata_api/en-us/reference/metric.doc.html)
* [Tables](https://help.tableau.com/current/api/metadata_api/en-us/reference/table.doc.html)
* [Database table](https://help.tableau.com/current/api/metadata_api/en-us/reference/databasetable.doc.html)
* [Workbook](https://help.tableau.com/current/api/metadata_api/en-us/reference/workbook.doc.html)
* [Site](https://help.tableau.com/current/api/metadata_api/en-us/reference/tableausite.doc.html)
* [User](https://help.tableau.com/current/api/metadata_api/en-us/reference/tableauuser.doc.html)
* [View](https://help.tableau.com/current/api/metadata_api/en-us/reference/view.doc.html)
* [Tag](https://help.tableau.com/current/api/metadata_api/en-us/reference/tag.doc.html)

***

### Connect to Bolt (Tableau Refreshes)

Bolt can trigger Tableau data source refreshes at the end of your dbt pipeline runs — so your Tableau extracts are always in sync with your freshest data.

#### 1. Generate API credentials

Use the same credentials generated in Step 2 above. If you haven't done that yet, follow the instructions there first.

#### 2. Configure data source credentials

For Paradime to trigger a data source refresh, credentials must be embedded within the extract in Tableau.

1. Open the data source in Tableau
2. Click **Publish**
3. Select **Embed credentials**

#### 3. Set environment variables

Add the following environment variables to your Bolt schedule:

<div data-with-frame="true"><figure><img src="https://2337193041-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHET0AD04uHMgdeLAjptq%2Fuploads%2FH6vfqBrmH5yJgQp5qvXO%2Fimage.png?alt=media&#x26;token=8650d6a7-1277-4198-b7be-c070d8e2e819" alt=""><figcaption></figcaption></figure></div>

| Variable                               | Required | Description                               |
| -------------------------------------- | -------- | ----------------------------------------- |
| `TABLEAU_PERSONAL_ACCESS_TOKEN_NAME`   | ✅        | Token name from Step 2                    |
| `TABLEAU_PERSONAL_ACCESS_TOKEN_SECRET` | ✅        | Token secret from Step 2                  |
| `TABLEAU_HOST`                         | ✅        | Your Tableau host URL                     |
| `TABLEAU_SITE_NAME`                    | ✅        | The site name you want to connect to      |
| `TABLEAU_TIMEOUT`                      | Optional | Request timeout in seconds (default: 300) |

👉 [How to set environment variables in Bolt](https://docs.paradime.io/app-help/bolt/environment-variables)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.paradime.io/app-help/documentation/integrations/dashboards/tableau.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
