/ Docs

Tableau

Last updated October 13, 2025 · View as Markdown

TableauLogo_RGB.png Tableau is a web-based software company that offers collaborative data visualization and business intelligence software for organizations working with business information analytics. It helps build visual dashboards that make it easier for non-technical analysts and end users to convert data into understandable, interactive graphics.

Only Tableau Cloud is currently supported. In order to integrate Tableau with Relyance AI you will need a Tableau Personal Access Token Name, Personal Access Token, Subdomain, and a Content URL.

Relyance uses Personal Access Tokens to Authenticate with Tableau Online or Tableau Server. This Access Token grants Relyance automation access to Tableau’s API based on the user’s “Site Role” that created the Access Token. For that reason we recommend creating the Token from a User with at least Explorer or ideally Site Admin Explorer permissions to ensure all data sources are properly accounted for.

For more information about Personal Access Tokens you can review Tableau’s documentation on the subject here:

Tableau Server: Security - Personal Access Tokens Tableau Online: Security - Personal Access Tokens

You may need to ask your administrator to enable personal access tokens before following the steps in this guide.

In Tableau:

  1. Login to Tableau Online or Tableau Server as a User with sufficient permissions (Explorer+).
  2. Navigate to Account Settings by clicking your user icon in the upper right corner of the screen followed by My Account Settings.
  3. Scroll down until you find Personal Access Tokens in the Security section.

Tableau-1.png

Tableau-2.png

  1. Create a new token by entering a token name in the text box and clicking the Create new token button. We recommend a descriptive name like “relyance-api” for clarity when managing integrations in the future.
  2. Copy the Token Name and Token Secret to be used as your Personal Access Token Name and Personal Access Token in Relyance AI.

Tableau-4.png

  1. To find the Content URL, navigate back to your Tableau dashboard and in the address bar, copy the name in the URL after “site/” and before “/user” for example:

Tableau-3.png

  1. Copy the Subdomain from the url found before 'online' keyword. In the example below, this would be "10ax".

Tableau-8.png

In the Relyance AI application:

  1. Login to your Relyance account.
  2. Navigate to the Settings Menu in the bottom left-hand side.
  3. Select Integrations.
  4. Click on the Vendor Integration tab.
  5. Find the Tableau integration card and click it to open its connections.
  6. Under Authentication Method, choose Custom.
  7. Paste the Personal Access Token Name, Personal Access Token, Subdomain, and Content URL into their respective fields.

Tableau-5.png

  1. Click Authenticate.
  2. If you wish to include more than one Tableau Site, click the create new integration button near the top of the configuration page and repeat the steps above.
  3. At this point, you should see the following result on the Vendor Integrations page:

Tableau-7.png

Tableau-6.png

  1. Congratulations, you are now connected to Tableau.

If the connection reports Connected but returns nothing

These are the ways this integration comes back empty without reporting an error. Generated from the integration catalog, so it tracks what the connection actually asks for.

  1. A credential rotated at the vendor is not picked up here. Personal Access Token is stored when you save the connection, so regenerating the value at the vendor breaks the next scan until it is re-pasted here. Recording the expiry on the connection means Relyance warns you before it lapses.
  2. Check the address fields before suspecting the credentials. Content URL and Subdomain identify which tenant, region or host to talk to. A wrong value there fails authentication and looks exactly like a bad secret.
  3. Throughput is limited on purpose. Maximum Concurrent API Calls defaults to 20. Raising it past what the vendor allows produces rate-limit errors that surface as a partial scan; it does not change how much data is collected.

Manage this integration with Terraform

Connections for this integration can be managed as code with the Relyance Terraform provider. Non-secret fields go in auth.params; secret fields go in auth.secrets_wo, which is write-only — never stored in Terraform state. Rotate secrets by bumping auth.secrets_wo_version.

resource "relyance_integration_connection" "tableau" {
  vendor = "tableau"
  name   = "<your connection name>"

  auth = {
    method = "access-token"
    params = {
      personal_access_token_name = "<personal_access_token_name>"
      content_url = "<content_url>"
      subdomain = "10ax"
      data_storage_location = "us"
    }
    # Secret fields are write-only: sent to Relyance, never stored in state.
    secrets_wo = {
      personal_access_token = var.tableau_personal_access_token
    }
    secrets_wo_version = 1
  }

  scans = { "data-inspection" = { enabled = true } }
}