Tableau API Lib

0.1.50 · active · verified Sat Apr 11

Tableau API Lib is a Python library that allows developers to interact with Tableau Server's REST API. It mirrors the methods available in Tableau's official REST API documentation, providing an easy way to automate administrative tasks, manage content, and retrieve data from Tableau Server and Tableau Cloud. The library is currently at version 0.1.50 and typically updates to reflect changes and additions in the Tableau REST API.

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to establish a connection to Tableau Server or Tableau Cloud using either username/password or a Personal Access Token (PAT), query available sites, and properly sign out. It uses environment variables for sensitive credentials for better security practices.

import os
from tableau_api_lib import TableauServerConnection
from tableau_api_lib import sample_config

# Define your configuration using environment variables or a direct dictionary
tableau_config = {
    'tableau_prod': {
        'server': os.environ.get('TABLEAU_SERVER', 'https://your.tableau.server.com'),
        'api_version': os.environ.get('TABLEAU_API_VERSION', '3.22'), # Use appropriate API version
        'username': os.environ.get('TABLEAU_USERNAME', 'your_user'),
        'password': os.environ.get('TABLEAU_PASSWORD', 'your_password'),
        'site_name': os.environ.get('TABLEAU_SITE_NAME', 'YourSiteName'),
        'site_url': os.environ.get('TABLEAU_SITE_URL', 'YourSiteUrl'), # Often matches site_name or is an empty string for default site
        'token_name': os.environ.get('TABLEAU_TOKEN_NAME', ''), # For Personal Access Tokens
        'token_value': os.environ.get('TABLEAU_TOKEN_VALUE', ''), # For Personal Access Tokens
    }
}

# If using Personal Access Token, ensure username/password are not set in config
# The library prioritizes PATs if token_name and token_value are present

conn = TableauServerConnection(tableaud_config, env='tableau_prod')

# Sign in using username/password or Personal Access Token
try:
    if tableau_config['tableau_prod'].get('token_name') and tableau_config['tableau_prod'].get('token_value'):
        conn.sign_in_with_personal_access_token()
    else:
        conn.sign_in()
    
    print(f"Successfully signed in to Tableau Server/Cloud (site: {conn.site_id})")

    # Example: Query sites
    response = conn.query_sites()
    if response.status_code == 200:
        sites_json = response.json()
        print("Available Sites:")
        for site in sites_json['sites']['site']:
            print(f"- {site['name']} (ID: {site['id']})")
    else:
        print(f"Failed to query sites: {response.status_code} - {response.text}")

finally:
    # Always sign out to release the connection
    if conn.is_signed_in():
        conn.sign_out()
        print("Signed out from Tableau Server/Cloud.")

view raw JSON →