こんにちは。truestar工房の三村です。
今回は 「refreshextract」 という Tableau Desktop に付属のコマンドラインユーティリティを使って、パブリッシュされた抽出データソースを更新するバッチファイルを作成しました。
このバッチファイルをWindows10のタスクスケジューラーに登録すれば、抽出データソースの元データ(csvとかxlsとか)が更新されたときだけ 自動的に Publish!なんてことができます。
1.前提
Tableau DeskTopが入っているマシンでのみ動作します。
tableau refreshextract コマンドを使用しますので、注意点等は以下のページを参照してください。
https://help.tableau.com/current/pro/desktop/ja-jp/extracting_TDE.htm
2.バッチファイルの作成
このブログの最後にバッチファイル全文を記載いたしましたので、テキストファイルにコピーして、PublishDataSource.cmd とでも名前を付けて保存してください。(拡張子はcmdかbatでお願いします)
3.Publish情報の設定
バッチファイルを開き、publishに必要な情報(ハイライト部分 -以下を適宜置き換えてください の箇所)を置き換えて保存してください。
4.動作確認
バッチファイルをダブルクリックして動作確認をお願いします。
5.Windows10のタスクスケジューラーに登録
必要に応じてWindows10のタスクスケジューラーに登録していただければ、抽出データソースの元データ(csvとかxlsとか)が更新されたときだけPublishします。
6.まとめ
毎日のちょっとした手間を軽くしていきたいと思っています。作業の自動化に力を入れていますので、
ご興味のある方は、以下から是非お問い合わせ下さい!
以下にバッチファイルの全文を記載いたします。
記載したプログラムのソースコードは、一通りのテストをしましたが全て無保証です。
使用にあたっては利用者の自己責任でお願いいたします。
直接的、あるいは間接的な損害に関して、弊社は一切の責任を負いかねます。
@echo off
setlocal
pushd "%~dp0"
rem **********************************************
rem *
rem * Tableau Desktop に付属のコマンド ライン ユーティリティを使って
rem * パブリッシュされた抽出データ ソースを更新する
rem *
rem * データソースの元データが更新されたときのみ
rem *
rem * OAuth を使用しない抽出データソースに使用
rem * 単一接続データソースの更新にのみ使用
rem * 詳しくは https://help.tableau.com/current/pro/desktop/ja-jp/extracting_TDE.htm
rem *
rem **********************************************
rem ---------------------------------------------------
rem - publishに必要な情報を設定する 以下を適宜置き換えてください
rem ---------------------------------------------------
::Tableau Desktopが 2020.1 の場合
set tableau_bin=C:\Program Files\Tableau\Tableau 2020.1\bin
::datasourceの元データファイル(.tdeではなく、.csvとか.xlsとかのファイル名)
set original_file=C:\Users\xxx\Documents\Tableau\Cmd\datatest.csv
set server=http://xxxx
set datasource="xxx"
set project="xxx"
set user=xxx
set password="xxx"
::siteが規定の場合は指定なしでOK.指定する場合はPublishコマンドのパラメータにも追加してください
::詳しくは https://help.tableau.com/current/pro/desktop/ja-jp/extracting_TDE.htm
::set site=
rem ---------------------------------------------------
rem - メイン
rem ---------------------------------------------------
::元データファイルがなければ終了
if not exist %original_file% (
echo ファイルが見つかりません %original_file%
goto PROC_END
)
::bakファイル名を獲得
for %%a in (%original_file%) do set before_file=%%~na.bak
::bakファイルがなければ(初回起動時) Pablish
if not exist %before_file% (
call :PUBLISH
goto PROC_END
)
:: 更新日時取得
for %%b in (%original_file%) do set timestamp_original=%%~tb
for %%c in (%before_file%) do set timestamp_before=%%~tc
::元データの更新日付がbakより新しければ Publish
if "%timestamp_original%" gtr "%timestamp_before%" call :PUBLISH
goto PROC_END
rem ---------------------------------------------------
rem - Publishコマンド
rem ---------------------------------------------------
:PUBLISH
cd %tableau_bin%
tableau refreshextract --original-file "%original_file%" --force-full-refresh -s %server% --datasource %datasource% --project %project% -u %user% -p %password%
::bakファイルにコピー
cd "%~dp0"
copy /Y %original_file% %before_file%
exit /b
:PROC_END
popd
::pause
::