Skip to main content
Tableau

Tableau

PROD
In this section, we provide guides and references to use the Tableau connector. Configure and schedule Tableau metadata and profiler workflows from the OpenMetadata UI:

How to Run the Connector Externally

To run the Ingestion via the UI you’ll need to use the OpenMetadata Ingestion Container, which comes shipped with custom Airflow plugins to handle the workflow deployment. If, instead, you want to manage your workflows externally on your preferred orchestrator, you can check the following docs to run the Ingestion Framework anywhere.

Requirements

To ingest tableau metadata, minimum Site Role: Viewer is required for the tableau user. To create lineage between tableau dashboard and any database service via the queries provided from Tableau Metadata API, please enable the Tableau Metadata API for your tableau server. For more information on enabling the Tableau Metadata APIs follow the link here
  • If using a default site on Tableau Server, leave the Site Name fields blank in the ingestion configuration.
  • Ensure that the Metadata API is enabled for the user performing the ingestion. If it is not enabled, ingestion may fail. Follow the official Tableau documentation to enable the Metadata API.
  • As of OpenMetadata versions 1.7.4 and 1.7.5, the siteUrl field has been removed from the Tableau connector configuration. This change was intentional, as confirmed in the release commit.
  • To connect to a non-default Tableau site, use the siteName field instead. The Tableau Python SDK does not require siteUrl for authentication.
  • Ensure the siteName field is correctly populated (do not use *) to enable successful metadata ingestion for multi-site Tableau environments.

Python Requirements

We have support for Python versions 3.9-3.11
To run the Tableau ingestion, you will need to install:
pip3 install "openmetadata-ingestion[tableau]"

Metadata Ingestion

All connectors are defined as JSON Schemas. Here you can find the structure to create a connection to Tableau. In order to create and run a Metadata Ingestion workflow, we will follow the steps to create a YAML configuration able to connect to the source, process the Entities if needed, and reach the OpenMetadata server. The workflow is modeled around the following JSON Schema

1. Define the YAML Config

Example Source Configurations for default and non-default tableau sites

1. Sample config for default tableau site

For a default tableau site siteName and siteUrl fields should be kept as empty strings as shown in the below config.
source:
  type: tableau
  serviceName: local_tableau
  serviceConnection:
    config:
      type: Tableau
      # For Tableau, choose one of basic or access token authentication
      # # For basic authentication
      # authType:
      #   username: username
      #   password: password
      # # For access token authentication
      # authType:
      #   personalAccessTokenName: personal_access_token_name
      #   personalAccessTokenSecret: personal_access_token_secret
      hostPort: http://localhost
      siteName: site_name
  sourceConfig:
    config:
      type: DashboardMetadata
      includeOwners: True
      markDeletedDashboards: True
      includeTags: True
      includeDataModels: True
      # lineageInformation:
      #   dbServiceNames:
      #     - service1
      #     - service2
      # dashboardFilterPattern:
      #   includes:
      #     - dashboard1
      #     - dashboard2
      #   excludes:
      #     - dashboard3
      #     - dashboard4
      # chartFilterPattern:
      #   includes:
      #     - chart1
      #     - chart2
      #   excludes:
      #     - chart3
      #     - chart4
      # dataModelFilterPattern:
      #   includes:
      #     - datamodel1
      #     - datamodel2
      #   excludes:
      #     - datamodel3
      #     - datamodel4
sink:
  type: metadata-rest
  config: {}
workflowConfig:
  # loggerLevel: DEBUG  # DEBUG, INFO, WARN or ERROR
  openMetadataServerConfig:
    hostPort: <OpenMetadata host and port>
    authProvider: <OpenMetadata auth provider>

2. Sample config for non-default tableau site

For a non-default tableau site siteName and siteUrl fields are required. Note: If https://xxx.tableau.com/#/site/sitename/home represents the homepage url for your tableau site, the sitename from the url should be entered in the siteName and siteUrl fields in the config below.
source:
  type: tableau
  serviceName: local_tableau
  serviceConnection:
    config:
      type: Tableau
      username: username
      password: password
      hostPort: http://localhost
      siteName: openmetadata
      # If not setting user and password
      # personalAccessTokenName: personal_access_token_name
      # personalAccessTokenSecret: personal_access_token_secret
  sourceConfig:
    config:
      type: DashboardMetadata
      # dbServiceNames:
      #   - service1
      #   - service2
      # dashboardFilterPattern:
      #   includes:
      #     - dashboard1
      #     - dashboard2
      #   excludes:
      #     - dashboard3
      #     - dashboard4
      # chartFilterPattern:
      #   includes:
      #     - chart1
      #     - chart2
      #   excludes:
      #     - chart3
      #     - chart4
sink:
  type: metadata-rest
  config: {}
workflowConfig:
  # loggerLevel: DEBUG  # DEBUG, INFO, WARN or ERROR
  openMetadataServerConfig:
    hostPort: <OpenMetadata host and port>
    authProvider: <OpenMetadata auth provider>

Securing Tableau Connection with SSL in OpenMetadata

To establish secure connections between OpenMetadata and Tableau, in the YAML you can provide the CA certificate used for SSL validation by specifying the caCertificate. Alternatively, if both client and server require mutual authentication, you’ll need to use all three parameters: ssl key, ssl cert, and caCertificate. In this case, ssl_cert is used for the client’s SSL certificate, ssl_key for the private key associated with the SSL certificate, and caCertificate for the CA certificate to validate the server’s certificate.
      sslConfig:
            caCertificate: "/path/to/ca_certificate"
            sslCertificate: "/path/to/your/ssl_cert"
            sslKey: "/path/to/your/ssl_key"

2. Run with the CLI

First, we will need to save the YAML file. Afterward, and with all requirements installed, we can run:
metadata ingest -c <path-to-yaml>
Note that from connector to connector, this recipe will always be the same. By updating the YAML configuration, you will be able to extract metadata from different sources.