paint-brush
Using Python to Refresh Tableau Dashboardby@luca1iu
1,000 reads
1,000 reads

Using Python to Refresh Tableau Dashboard

by Luca LiuFebruary 2nd, 2024
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

In most cases, Tableau tasks are scheduled to run at designated times, however, there may be occasions where the flexibility is not sufficient.
featured image - Using Python to Refresh Tableau Dashboard
Luca Liu HackerNoon profile picture

In most cases, Tableau tasks are scheduled to run at designated times, however, there may be occasions where the flexibility is not sufficient. If you're looking for a more flexible way to work with Tableau, you might want to check out the Tableau Server Client. It’s a Python library for the Tableau Server REST API. Using the TSC library, you can manage and change many of the Tableau Server and Tableau Cloud resources programmatically.

Step 1: Authentication

The provided Python code establishes a connection to Tableau Server using the Tableau Server Client (TSC) library. It authenticates using the provided account credentials and establishes a connection to the specified Tableau Server site. Once authenticated, the code allows access to Tableau Server resources for tasks such as querying data, publishing workbooks, and managing server content.

import pandas as pd
import tableauserverclient as TSC

tableau_auth = TSC.TableauAuth('account', 'password', site_id='site_id')
server = TSC.Server('http://localhost', use_server_version=True)
server.auth.sign_in(tableau_auth)

Make sure to replace 'account', 'password', and 'site_id' with actual credentials before running the code.

Step 2: List All Tasks and Find Task ID

This code signs in to Tableau Server using provided authentication credentials, then retrieves all tasks from the server and creates a dataframe to store the Taskid, schedule_item, and task_type for each task.

# get all tasks and find the Taskid
with server.auth.sign_in(tableau_auth):
    all_tasks, pagination_item = server.tasks.get()
    df_tasks = pd.DataFrame()
    df_tasks['Taskid'] = [task.id for task in all_tasks]
    df_tasks['schedule_item'] = [task.schedule_item for task in all_tasks]
    df_tasks['task_type'] = [task.task_type for task in all_tasks]
print(df_tasks)

You can easily navigate through the dataframe to locate the specific task you wish to work with and then proceed to copy its corresponding Taskid in preparation for the next step.

Step 3: Run or Delete a Task

run a task

You could use the following code to runs the specified extract refresh task, make sure to replace the id with the actual id that you want to work with.

# replace the id 
with server.auth.sign_in(tableau_auth):
    task = server.tasks.get_by_id('9f9e9d9c-8b8a-8f8e-7d7c-7b7a6f6d6e6d')
    server.tasks.run(task)
    print("successfully refreshed")

delete a task

Deleting a task may not be as frequently utilized as running one, but it is just as straightforward. With the following code, you can smoothly delete a task.

# delete a task
with server.auth.sign_in(tableau_auth):
    server.tasks.delete('9f9e9d9c-8b8a-8f8e-7d7c-7b7a6f6d6e6d')
    print("successfully deleted")

References

Tableau Server Client (Python)

Tableau REST API Help


Thank you for taking the time to explore data-related insights with me. I appreciate your engagement. If you find this information helpful, I invite you to follow me or connect with me on LinkedIn. Happy exploring!👋