Tableau Server Client (TSC) est la bibliotheque Python officielle pour automatiser l administration de Tableau Server ou Tableau Cloud. En entretien Senior, on evalue la capacite a aller au-dela de l interface manuelle.
Sans TSC, ajouter 50 utilisateurs sur Tableau Server prend une demi-journee. Avec TSC, c est un script de 20 lignes en 30 secondes. En entretien, on cherche les profils qui automatisent ce qui est repetitif — pas ceux qui font tout a la main.
| Action | Sans TSC | Avec TSC |
|---|---|---|
| Ajouter 50 utilisateurs | 50x copier-coller | 1 script, 30 secondes |
| Deployer dashboard STAGE vers PROD | Telechargement + re-upload manuel | Pipeline automatique |
| Declencher un refresh apres ETL | Attendre le scheduler Tableau | 1 appel API apres le job |
| Auditer les acces de tous les dashboards | Cliquer dans chaque workbook | CSV genere en 1 script |
Comment vous connectez-vous a Tableau Cloud de maniere securisee sans exposer vos credentials dans le code ?
import tableauserverclient as TSC
from dotenv import load_dotenv
import os
load_dotenv() # charge les variables depuis .env
tableau_auth = TSC.PersonalAccessTokenAuth(
token_name=os.getenv('TABLEAU_TOKEN_NAME'),
personal_access_token=os.getenv('TABLEAU_TOKEN'),
site_id=os.getenv('TABLEAU_SITE')
)
server = TSC.Server(os.getenv('TABLEAU_URL'), use_server_version=True)
with server.auth.sign_in(tableau_auth) as creds:
# toutes les operations ici
workbooks, pagination = server.workbooks.get()
for wb in workbooks:
print(wb.name, wb.project_name)with server.auth.sign_in() pour gerer la deconnexion automatiqueComment automatisez-vous le deploiement d un dashboard de STAGE vers PROD ?
with server.auth.sign_in(auth):
# 1. Trouver le workbook en STAGE
req = TSC.RequestOptions()
req.filter.add(TSC.Filter('name', TSC.RequestOptions.Operator.Equals, 'Mon Dashboard'))
wbs_stage, _ = server.workbooks.get(req)
wb_stage = wbs_stage[0]
# 2. Telecharger en local
local_path = server.workbooks.download(wb_stage.id, filepath='/tmp')
# 3. Publier en PROD
project_prod = get_project_by_name(server, 'PROD')
wb_item = TSC.WorkbookItem(project_id=project_prod.id)
published = server.workbooks.publish(
wb_item, local_path,
mode=TSC.Server.PublishMode.Overwrite # ecrase si existe
)
print(f'Deploye : {published.name}')import csv
with server.auth.sign_in(auth):
# Creer les users depuis un CSV
with open('nouveaux_users.csv') as f:
for row in csv.DictReader(f):
user = TSC.UserItem(
name=row['email'],
role=TSC.UserItem.Role.Viewer
)
created_user = server.users.add(user)
# Ajouter au bon groupe
group = get_group_by_name(server, row['equipe'])
server.groups.add_user(group, created_user.id)
print(f'OK: {row["email"]} -> {row["equipe"]}')Comment declencheriez-vous automatiquement le refresh d un dashboard Tableau apres la fin d un pipeline Airflow ?
# Dans votre DAG Airflow, apres le dernier job de transformation :
from airflow.operators.python import PythonOperator
import tableauserverclient as TSC
def trigger_tableau_refresh(**kwargs):
with server.auth.sign_in(auth):
ds_item = get_datasource_by_name(server, 'DS_KPIs_Production')
job = server.datasources.refresh(ds_item)
# Attendre la fin du refresh
finished_job = server.jobs.wait_for_job(job)
if finished_job.finish_code != 0:
raise Exception(f'Refresh echoue : {finished_job.status}')
refresh_tableau = PythonOperator(
task_id='refresh_tableau_dashboard',
python_callable=trigger_tableau_refresh
)
dbt_run >> refresh_tableau # apres les transformations dbt# Audit : detecter les dashboards accessibles a Tous
with server.auth.sign_in(auth):
for wb in TSC.Pager(server.workbooks):
perms = server.workbooks.populate_permissions(wb)
for rule in wb.permissions:
if rule.grantee.tag_name == 'group':
group = get_group_by_id(server, rule.grantee.id)
if group.name == 'All Users':
for cap, mode in rule.capabilities.items():
if mode == 'Allow':
print(f'[ALERTE] {wb.name} accessible a tous ({cap})')| Niveau | Maitrise | Signal GO | NO-GO |
|---|---|---|---|
| Confirme | A utilise TSC pour les operations courantes (download, upload, users) | A deploye un workbook via TSC, a ajoute des users en masse | Fait tout a la main dans l interface Tableau |
| Senior | Pipeline deploiement STAGE-PROD automatise, refresh orchestre, audit securite | A integre TSC dans un pipeline Airflow/GitHub Actions, a fait un audit de permissions | Ne sait pas declencher un refresh via API |
Premier entretien gratuit. Rapport GO/NO-GO sous 48h.