Tableau Prepで、ある条件ごとにファイルを分けて出力する、ということをやってみたいと思います。
普通にやるなら、条件でフィルターしファイル出力する、という処理を条件の数分作ることになりますが、
今回はコマンドラインからフロー内のパラメーターをオーバーライドしながら実行する方法で試してみたいと思います!
フローの作成
データはサンプルスーパーストアを使用します。
今回は次のような、サブカテゴリーごとにデータを絞り込んだファイルを生成するフローを作ってみたいと思います。
クリーニングステップでサブカテゴリーでデータをフィルターします。
どのサブカテゴリーでフィルターするかはパラメーターで渡すので、パラメーター「Sub_Category_Param」を作成し指定します。
出力はファイル名にパラメーター「Sub_Category_Param」をつけてファイル出力するよう設定します。
定義ファイルの作成
パラメーターで渡すサブカテゴリーをテキストファイルに定義します。
今回は、コピー機、テーブル、バインダー、ラベルの4つを定義しました。
バッチファイル作成
バッチファイル「loopflow_test.bat」を作成します。
・サンプルソース
※Tableau Prep Builder 2023.2を使用しています
@echo off
chcp 65001
setlocal enabledelayedexpansion
ECHO ★START
REM サブカテゴリーリスト読み込み
for /f %%s in (サブカテゴリーリスト.txt) do (
ECHO { "Sub_Category_Param": "%%s" } > .\parameters.override.sample.json
"C:\Program Files\Tableau\Tableau Prep Builder 2023.2\scripts\tableau-prep-cli.bat" -t C:\Prep_Loop_Test\loopflow.tfl -p C:\Prep_Loop_Test\parameters.override.sample.json
)
ECHO ★END
9行目で、サブカテゴリーリスト.txtに定義したサブカテゴリーを1行ずつ読み込み、パラメーターオーバーライド用のjsonファイル「parameters.override.sample.json」を生成します。
10行目で、生成した「parameters.override.sample.json」を使用して、フロー内に定義したパラメーター値をオーバーライドしながら、コマンドラインからTableau Prepを実行します。
コマンドオプション「-p [パラメーターオーバーライド].json」をつけることで、オーバーライドが可能になります。
バッチを実行する
ここまでに作成したフロー、定義ファイル、バッチファイルを次のように配置します。
フローから生成されるファイルはOutputフォルダに出力されます。
「loopflow_test.bat」をコマンドプロンプトから実行します。
Finished running the flow successfully.と出れば正常終了です。サブカテゴリーリスト.txtに定義した数分ループ実行されます。
出力先フォルダを確認します。
サブカテゴリーリスト.txtで定義したサブカテゴリーのファイルが出力されました。
生成されたファイルの中身をチェックすると、ちゃんと指定したサブカテゴリーのデータのみにフィルターされて抽出されています!
コマンドラインからパラメーターをオーバライドしながらフローを実行する方法のご紹介でした!
「コマンドラインからのワークフロー実行」や「フローでのパラメーター使用」については、Tableau Prepの公式ヘルプでもご紹介されていますので参考になさってください。
【Tableau Prep ヘルプ】フローでパラメーターを作成して使用する
https://help.tableau.com/current/prep/ja-jp/prep_parameters.htm
【Tableau Prep ヘルプ】コマンド ラインからフロー出力ファイルを更新
https://help.tableau.com/current/prep/ja-jp/prep_run_commandline.htm