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.
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.
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.
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")
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")
Tableau Server Client (Python)
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!👋