Tableau
Tableau
Scan Tableau workbooks and datasources.
- Category
- Analytics & BI
- Source type
- TABLEAU
- Produces
- item
Tableau is where the warehouse becomes a decision — and where a published data source quietly extracts a copy of a table that had access controls on it.
What you need to connect
The server URL and site, plus either a username and password or a personal access token (token name and value). A token is the better choice: it’s revocable on its own and doesn’t break when a password policy changes.
Tableau Cloud and Tableau Server connect the same way. A read-only site role is enough; the Metadata API needs to be enabled on the server for lineage.
What Classifyre reads
Workbooks and published data sources, scoped by project, workbook or data source name. Owner metadata, tags, and usage statistics can be captured alongside.
Metadata on every asset
Asset kind · item
| Field | Type | Always present | What it is |
|---|---|---|---|
| site | string | Yes | Tableau site |
| report_type | string | Yes | Asset kind (workbook/view/datasource) |
| workbook_id | string | Yes | Asset/object id |
| project_name | string | No | Project name |
| tags | string[] | No | Tags |
| author | string | No | Owner display name or email |
Lineage
Lineage
With lineage enabled, the Metadata API is asked what each published data source actually reads — and those warehouse tables are recorded as upstream lineage, named the way their own platform names them. A data source over a Snowflake table links to the real table once Snowflake is scanned, whichever order the two scans happen in.
Projects holding workbooks, and workbooks using data sources, are recorded as containment: structural relationships used to collapse the graph, not extra hops in a lineage path.
Worth knowing
- Lineage requires the Metadata API. If it’s disabled on the server, the scan still produces assets — it just produces no upstream tables.
- Extracts are copies. A published data source with an extract holds real data, which is why it’s worth scanning rather than only cataloguing.
Configuration
Beyond the fields below, every source also has the settings shared by all of them: the sampling strategy, the detectors to run, the scan schedule, and the compute limits for its scan jobs.
Required
Without these, the source will not save.
This section depends on which authentication method you pick — one of the following applies.
Tableau Username Password
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| auth_mode | "USERNAME_PASSWORD" | Yes | — | — |
| connect_uri | string | Yes | Tableau host URL (for example, https://dub01.online.tableau.com) | — |
| site | string | Yes | Tableau site content URL. Use empty string for the Default site on Tableau Server. | "" |
Tableau Personal Access Token
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| auth_mode | "PERSONAL_ACCESS_TOKEN" | Yes | — | — |
| connect_uri | string | Yes | Tableau host URL (for example, https://dub01.online.tableau.com) | — |
| site | string | Yes | Tableau site content URL. Use empty string for the Default site on Tableau Server. | "" |
| token_name | string | Yes | Tableau personal access token name | — |
Secrets
Stored encrypted and never shown again after you save them. See Configuration & Fields.
This section depends on which authentication method you pick — one of the following applies.
Tableau Username Password
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| username | string | Yes | Tableau login username | — |
| password | string | Yes | Tableau login password | — |
Tableau Personal Access Token
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| token_value | string | Yes | Tableau personal access token value | — |
Optional
Everything you can tune. Sensible defaults apply when you leave them alone.
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| optional | object | No | —no extra properties | — |
| connection | object | No | Tableau API connection and retry settings.no extra properties | — |
| connection.max_retries | integer | No | Maximum retries for transient Tableau API request failuresmin 0, max 10 | 3 |
| connection.session_trust_env | boolean | No | When true, allow requests session proxy/environment settings | false |
| connection.ssl_verify | boolean | string | No | Verify SSL certificates. Provide a PEM bundle path string for custom certs. | true |
| connection.timeout_seconds | integer | No | HTTP timeout in seconds for Tableau requestsmin 5, max 300 | 30 |
| extraction | object | No | Tableau metadata extraction feature flags.no extra properties | — |
| extraction.extract_usage_stats | boolean | No | Extract Tableau usage statistics when accessible | false |
| extraction.include_lineage | boolean | No | Resolve the database tables behind each published data source via the Tableau Metadata API, so lineage reaches the warehouse those tables live in. Needs the Metadata API enabled on the server. | true |
| extraction.ingest_owner | boolean | No | Extract Tableau owner metadata into assets | false |
| extraction.ingest_tags | boolean | No | Extract Tableau tags into asset metadata | false |
| scope | object | No | Optional Tableau project/workbook/datasource scope filters.no extra properties | — |
| scope.datasource_names | array | No | Optional Tableau datasource allowlist (exact names) | — |
| scope.datasource_names[] | string | No | — | — |
| scope.include_datasources | boolean | No | Include datasource assets in extraction | true |
| scope.include_workbooks | boolean | No | Include workbook assets in extraction | true |
| scope.project_names | array | No | Optional Tableau project allowlist (exact names) | — |
| scope.project_names[] | string | No | — | — |
| scope.workbook_names | array | No | Optional Tableau workbook allowlist (exact names) | — |
| scope.workbook_names[] | string | No | — | — |