「Pythonで処理したデータをTableauで可視化できたら…」
そんなニーズ、実は簡単に実現できます。本記事では、Pythonで加工・分析したデータをTableauと連携し、自動でグラフ化する方法をわかりやすく解説します。
この記事でわかること
- PythonとTableauを連携する基本手順
- Tableau Hyper APIの使い方(データ書き出し)
- Tableau Desktop/Serverへの自動アップロード方法
- 自動化の一例(バッチスクリプト・スケジューリング)
なぜPythonとTableauを連携するのか?
Pythonはデータ加工や集計に強く、Tableauはグラフィカルな可視化が得意。この2つを組み合わせることで、
- データ抽出 → Pythonで整形
- 整形済みデータ → Tableauに渡して即グラフ化
- しかも、定期バッチとして自動化も可能
と、分析業務の自動化が一気に進みます。
ステップ1:Hyper APIをインストールする
Tableauが読み込める「.hyper」形式のファイルをPythonで出力するには、Tableau Hyper APIを使用します。
▼ インストールコマンド
pip install tableauhyperapi
※ pip環境でPython3.7〜3.11が推奨
ステップ2:PythonでHyperファイルを作成
以下のように、PandasのDataFrameを.hyper
ファイルに変換できます。
from tableauhyperapi import HyperProcess, Connection, TableDefinition, SqlType, Inserter, Telemetry, TableName
import pandas as pd
# 1. データ作成(Pandas)
df = pd.DataFrame({
'日付': ['2025-07-01', '2025-07-02'],
'売上': [10000, 15000]
})
# 2. Hyperファイル書き出し
with HyperProcess(telemetry=Telemetry.SEND_USAGE_DATA_TO_TABLEAU) as hyper:
with Connection(endpoint=hyper.endpoint, database='sales.hyper', create_mode=True) as connection:
table = TableDefinition(table_name=TableName('Extract', 'SalesData'),
columns=[('日付', SqlType.text()), ('売上', SqlType.double())])
connection.catalog.create_schema('Extract')
connection.catalog.create_table(table)
with Inserter(connection, table) as inserter:
inserter.add_rows(rows=df.itertuples(index=False))
inserter.execute()
ステップ3:TableauでHyperファイルを開く
- Tableau Desktopを起動
- 「データ」→「ファイルから」→
sales.hyper
を選択 - シートでグラフを作成(棒グラフや折れ線など)
ここで作ったダッシュボードをテンプレート化しておけば、以降はHyperファイルだけ差し替えるだけでグラフが更新されます。
ステップ4:Tableau Serverへ自動アップロード(オプション)
もしTableau ServerやTableau Cloudを使っているなら、Tableau Server Client(TSC)ライブラリで自動アップロードが可能です。
▼ ライブラリのインストール
pip install tableauserverclient
▼ サンプルコード(Hyperファイルのパブリッシュ)
import tableauserverclient as TSC
# サインイン情報
tableau_auth = TSC.TableauAuth('ユーザー名', 'パスワード', site_id='')
with TSC.Server('https://your-server-url', use_server_version=True) as server:
server.auth.sign_in(tableau_auth)
# パブリッシュ対象プロジェクトを取得
all_projects, pagination_item = server.projects.get()
project = next(p for p in all_projects if p.name == 'Default')
# データソースのパブリッシュ
new_datasource = TSC.DatasourceItem(project.id)
new_file = 'sales.hyper'
server.datasources.publish(new_datasource, new_file, mode=TSC.Server.PublishMode.CreateNew)
ステップ5:自動化(バッチ化・スケジューリング)
Windowsならタスクスケジューラ、Linuxならcronを使って、以下の処理を定期実行可能です。
- データ取得 → 加工(Python)
- Hyperファイル出力
- Tableau Serverへアップロード(任意)
これで、定時で最新グラフを自動更新する仕組みが完成します。
まとめ:Python×Tableauで業務をもっと自動化!
Pythonの柔軟性とTableauの強力な可視化機能を組み合わせれば、手動作業から解放され、より本質的な分析に時間を使えるようになります。