Tableau Prepのフローを定期実行する方法・データ更新を自動化する方法を紹介します。

ここではWindowsのタスクスケジューラを利用した方法を紹介します。
私自身が躓いたポイントである認証ファイルの書き方(Tableau Server用、Amazon Aurora用の併用)とタスクスケジューラ設定について特に詳しく解説しています。
こちらの記事(株式会社プリンシプル 日次更新も怖くない!Tableau Prepで作成したフローを自動実行する方法)を参考にさせていただきました。
自動更新設定に必要な準備
まずは自動更新設定に必要なファイルとそれらのファイルパスを準備します。
- 実行するTableau Prepフロー(.tfl)
- tableau-prep-cli.bat
- 認証用ファイル(.json)
自動実行するTableau Prepフロー(tfl)
まずは自動実行したいTableau Prepフローを作成します。 タスクスケジューラの設定でファイルパスを利用しますので、わかりやすい場所に保存してください。
例として、私はDesktopにTableauPrepというフォルダ作成してそこに自動実行するフロー「flow1.tfl」を保存しています。このファイルパスを使って設定手順を説明してきます。


tableau-prep-cli.bat
tableau-prep-cli.batとはコマンドラインからフローを実行するためのファイルです。
ファイル場所を変更していない場合は下記のファイルパスに格納されています。****.*の部分にはTableau Prepのバージョンが入ります。
C:\Program Files\Tableau\Tableau Prep Builder ****.*\scripts
私の場合はVer2024.1を使用していますので下記のファイルパスとなっていました。このファイルパスを使って設定手順を説明してきます。


認証用ファイル(.json)
Tableau Prepのフローでデータの入出力にTableau ServerやAmazon Auroraなどの認証が必要なサーバーを用いている場合は認証用ファイルを作成しておく必要があります。
作り方は簡単です。
- テキストエディタ(メモ帳など)を開く
- 下記の認証用コードを記載する
- ファイル拡張子を「json」にして保存する(あとからjsonに変えてもOKです)
認証用ファイルの書き方はTableauServerとその他のサーバーで若干違います。後述で詳しく説明していますので参照してみてください。
Tableau Server
{
"tableauServerConnections":[
{
"serverUrl":"https://****.****.com",
"contentUrl": "****",
"username": "username",
"password": "password"
}
]
}
その他のサーバー(DB)
{
"databaseConnections":[
{
"hostname":"****.com",
"port": "****",
"username": "username",
"password": "password"
}
]
}
作成したファイルはTableau Prepフローと同じようにわかりやすい場所に保存しておいてください。
例として、私はDesktopにTableauPrepというフォルダ作成してそこに「TableauPrepAuth.json」として保存しています。このファイルパスを使って設定手順を説明してきます。


Sponsored link
タスクスケジューラでの自動実行設定
タスクスケジューラによる定期実行の設定方法について紹介します。
説明例として下記の環境で 毎日AM7:00にフローを定期実行する設定方法を紹介します。
- Tableau Prepフローのパス:C\User\Desktop\TableauPrep\flow1.tfl
- tableau-prep-cli.batのバス:C:\Program Files\Tableau\Tableau Prep Builder 2024.1\scripts\tableau-prep-cli.bat
- 認証用ファイルのパス:C\User\Desktop\TableauPrep\TableauPrepAuth.json
タスクスケジューラ設定手順
タスクスケジューラを用いて毎日AM7:00にフローを定期実行する設定方法を紹介します。
Windowsの検索窓で「タスクスケジューラ」を入力して、表示される「タスクスケジューラ」を起動します。


「タスクスケジューラライブラリ」を選択して操作にある「タスクの作成」をクリックする。


新規タスクにおいてタスク名とセキュリティオプションを設定します。
セキュリティオプションにおいては下記にチェックを入れてください。
- ユーザがログオンしているかどうかにかかわらず実行する
- 最上位の特権で実行する


次にフロー実行の日時を設定します。
トリガータブの「新規」をクリックする。


設定で実行したい日時を設定してください。また、必ず「有効」にチェックが入ってることを確認してください。設定が完了したら「OK」をクリックします。
下図では2024年12月1日から毎日7時に更新が実行されるように設定しています。


次に実行するファイルの選択と設定をします。
操作タブの「新規」をクリックする。


新しい操作の設定で下記の項目を入力します。プログラム/スクリプトのみ" "
で囲みます。
- プログラム/スクリプト:”tableau-prep-cli.batのファイルバス“
- 引数の追加: -t 実行フローのファイルパス -c 認証ファイルのファイルパス
- 開始(オプション):tableau-prep-cli.batが格納されているフォルダパス
今回の環境での具体例は下記です。
- プログラム/スクリプト:”C:\Program Files\Tableau\Tableau Prep Builder 2024.1\scripts\tableau-prep-cli.bat“
- 引数の追加:-t C\User\Desktop\TableauPrep\flow1.tfl -c C\User\Desktop\TableauPrep\TableauPrepAuth.json
- 開始(オプション):C:\Program Files\Tableau\Tableau Prep Builder 2024.1\scripts\


実行結果の確認
作成したタスクが正しく動作するか手動で確認します。
対象のタスクを右クリックして「実行する」を選択してください。


下記のように「前回の実行結果」が「この操作を正しく終了しました。(0x0)」となっていればOKです。
次の実行時間まで待って問題なく更新できているか確認してみてください。


実行結果が(0x1)の場合はタスクが完了できていません。上記の設定方法でのファイルパスや認証ファイル内のURLやパスワードなどが誤っている可能性があります。再確認して検証してみてください。
Sponsored link
認証用ファイルの書き方
前述でも認証ファイルの書き方は紹介していますが、状況に応じてもう少し詳しく紹介します。
接続するサーバー(DB)がひとつ
認証用ファイルの書き方はTableauServerとその他のサーバーで若干違います。
Tableau Server
下記の項目を設定してください。
- serverUrl:TableauServerのURL
- serverUrlの例: ”https://****.com”
- contentUrl:サイトID (URLの/site/より後ろの部分. サイトIDが存在がない場合は
””
を入力する)- contentUrlの例:”https://****.com/site/myspace”の場合は”myspace”
- username:ログイン用のユーザ名
- password:ログイン用のパスワード
{
"tableauServerConnections":[
{
"serverUrl":"https://****.****.com",
"contentUrl": "****",
"username": "username",
"password": "password"
}
]
}
その他のサーバー(DB)
下記の項目を設定してください。
- hostname:サーバー名(例: “****.com”)
- port:ポートID (例: 3306)
- username:ログイン用のユーザ名
- password:ログイン用のパスワード
{
"databaseConnections":[
{
"hostname":"****.com",
"port": "****",
"username": "username",
"password": "password"
}
]
}
接続するサーバー(DB)が複数
フロー内で複数のサーバーに接続する場合もあると思います。
その場合は下記のようにカンマ区切りで複数のサーバーの認証情報を入力すればOKです。
こちらはTablearuサーバーとその他の2つのサーバー(DB)の計3つの認証情報を設定している例です。
{
"tableauServerConnections":[
{
"serverUrl":"https://****.****.com",
"contentUrl": "****",
"username": "username",
"password": "password"
}
],
"databaseConnections":[
{
"hostname":"****.com",
"port":"****",
"username": "username",
"password": "password"
},
{
"hostname":"****.com",
"port":"****",
"username": "username",
"password": "password"
}
]
}
Sponsored link
コメント