Area: Ingestion Issues
Sub-Area: Tableau Source Configuration
Issue
When configuring Tableau ingestion in DataHub, users may expect the ingest_hidden_assets: false setting to filter out draft or unpublished workbooks, dashboards, and sheets. However, draft and unpublished assets continue to appear in DataHub even after setting this flag to false. This is because ingest_hidden_assets does not filter by published/draft status — it serves an entirely different purpose. Understanding this distinction is necessary to configure Tableau ingestion correctly and exclude unwanted draft content.
You Might Be Asking
- Why does
ingest_hidden_assets: falsestill ingest draft workbooks? - Is there a way to ingest only published Tableau workbooks, dashboards, and charts?
- How do I exclude content from Tableau Personal Spaces or draft projects during ingestion?
- What does
ingest_hidden_assetsactually filter in Tableau ingestion?
Solution
There are two complementary approaches to address this, depending on your Tableau environment and goals.
Step 1: Understand What ingest_hidden_assets Actually Does
The ingest_hidden_assets flag only controls whether DataHub ingests assets that Tableau marks as hidden — specifically, dashboards and worksheets whose LUID (Logical Unique ID) is blank. Tableau assigns a blank LUID to views that have been explicitly hidden inside a published workbook (for example, a worksheet hidden from tabs via Tableau Desktop's "Hide" option). This flag has no effect on workbooks at all — workbooks are always ingested regardless of this setting. It also has no relationship to whether a workbook or asset is in a draft or published state.
In summary:
-
ingest_hidden_assets: false— skips dashboards/worksheets with a blank LUID (hidden views inside a workbook). - It does not filter draft workbooks, unpublished content, or Personal Space content.
- Any asset with a non-blank LUID will always be ingested, even if it is considered a draft.
Step 2: Use project_path_pattern to Exclude Draft/Personal Space Projects
Draft workbooks in Tableau Server or Tableau Cloud typically reside in a user's Personal Space (a personal project). Tableau's Metadata API returns content from Personal Spaces, which is why these drafts are ingested regardless of the ingest_hidden_assets setting. The recommended approach is to use project_path_pattern with a deny rule to exclude projects that contain draft content.
Option A — Deny specific projects (e.g., Personal Spaces):
source:
type: tableau
config:
connect_uri: https://<your-tableau-server>
site: "<your-site-name>"
username: "<your-username>"
password: "<your-password>"
project_path_pattern:
deny:
- "^Personal Space.*"
- "^Draft.*"
Option B — Allowlist approach (only ingest known published project paths):
source:
type: tableau
config:
connect_uri: https://<your-tableau-server>
site: "<your-site-name>"
username: "<your-username>"
password: "<your-password>"
project_path_pattern:
allow:
- "^Published Projects.*"
- "^Finance/.*"
- "^Marketing/.*"
Deny rules take precedence over allow rules in AllowDenyPattern matching. Adjust the regex patterns to match the actual project paths in your Tableau environment.
Step 3 (Optional): Mark Assets as Hidden in Tableau
If the draft assets in question are worksheets or dashboards that genuinely should never be exposed, you can mark them as hidden directly in Tableau Desktop or Tableau Server. Once hidden, Tableau will assign them a blank LUID, and setting ingest_hidden_assets: false will then correctly exclude them from ingestion.
Additional Notes
- True "published only" ingestion as a first-class filter (keying off Tableau's native publication state, e.g.,
publishedSheetsCountor workbook publication status via the Tableau REST API) is not currently supported in the DataHub Tableau connector. Implementing this would require a code-level change to the connector. - The
project_path_patternfield replaces the deprecatedprojectsfield. Ensure you are not using the deprecatedprojectsconfig key, as it may cause unexpected behavior. - Project path patterns use regex syntax. Use
^to anchor patterns to the start of the project path and.*to match subprojects recursively. - This behavior has been consistent across DataHub versions —
ingest_hidden_assetshas always been scoped to LUID-blank assets and has never provided published/draft filtering.
Related Documentation
- Tableau Ingestion Source — Config Details
- Tableau Ingestion Source Overview
- DataHub Ingestion Recipe Overview
Tags: tableau, ingestion, ingest_hidden_assets, project_path_pattern, draft-assets, unpublished-workbooks, personal-space, tableau-filtering, recipe-configuration, allow-deny-pattern