【BIツール連携】PythonからTableauにデータを渡して自動でグラフ化する方法

「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ファイルを開く

  1. Tableau Desktopを起動
  2. 「データ」→「ファイルから」→ sales.hyper を選択
  3. シートでグラフを作成(棒グラフや折れ線など)

ここで作ったダッシュボードをテンプレート化しておけば、以降は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の強力な可視化機能を組み合わせれば、手動作業から解放され、より本質的な分析に時間を使えるようになります。


関連記事

タイトルとURLをコピーしました