TREASURE DATAとは
データやログを収集・分析し、ビジネスへ生かす、カスタマーデータプラットフォームである。(=CDP)
データの収集 >>> 統合・分析・セグメンテーション >>> 施策への連携(レポート・広告配信・マーケティング)
TREASURE DATAは、Arm社に買収されたので、ソフトバンクグループの投資先の1つになっているのですね。
参考
CDPとは
こちらを。。
参考
TreasureDataのWorkflowという機能について
SQL実行をスケジュール起動するサービスです。
タスクという単位でSQL等に依存関係を持たせることができます。(SQL①が動いてから、②が動くなど)
例えば、データのインポートやエクスポートのSQLを日次08:00で実行するなど。
Workflowというサービスは、内部的には、OSSで公開されているdigdagというソフトを使用しています。
そのため、digdagで調べたことは、だいていWorkflowに適用可能です。
参考
ワークフロー定義 ★digdagの公式サイトがわかりやすい!
https://docs.digdag.io/workflow_definition.html
treasuredata スタートガイド
https://support.treasuredata.com/hc/ja
Digdagのワークフロー定義について理解する
https://dev.classmethod.jp/articles/understanding-digdag-workflow-definition/
Treasure Workflow for ビギナー 環境構築編
https://blog.torut.tokyo/entry/2017/08/01/233655
Treasure Workflow for ビギナー ~digファイル書き方編~
https://blog.torut.tokyo/entry/2017/08/01/070000
digdagでエラーを無視して後続タスクを進める
https://qiita.com/fk8_jp/items/ef6871549d737ada7da2
Workflowのサンプル(selectで取得したデータをcopyコマンドで別のデータベース>テーブルにコピーする)
# タイムゾーン
timezone: Asia/Tokyo
# スケジュール
schedule:
cron>: 0 12 * * *
# タスク(+XXX 好きな名前を付けたらいい)
+task1
#オペレータ(XXX> ココ参考→https://docs.digdag.io/operators.html)
td>
query: select * from [テーブル名]
result_connection: [treasureに設定した、接続DBの名前]
#すいません、ここから下自信なし。忘れ気味。。
result_settings:
database:[データベース名]
schema:[スキーマ名]
type:[truncate or replace or append or update]
unique:[※update時のみ必須 何が重複したら更新するか。カンマ区切り]
methodo:copy [copy or XXX ※copyはcopyコマンド]
参考
・tdオペレータの説明
https://docs.digdag.io/operators/td.html
実体験メモ
- workflowのscheduleは、cron以外(daily)だと、workflow>run historyのsessionタイムが正しく表示されない。常に12時になるとか。
- workflow>run historyのsession timeはスケジュールの時間(スケジュール起動以外だと現在日時)、attempt timeは実際実行された時間
- sqlには使用しているDBの関数以外に、Treasureの独自定義関数が使用できる。
https://support.treasuredata.com/hc/ja/articles/115011438008-%E5%88%9D%E7%B4%9A%E3%83%8F%E3%83%B3%E3%82%BA%E3%82%AA%E3%83%B3-TD%E9%96%A2%E6%95%B0-%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%AD%E3%82%B0%E7%B7%A8-
独自定義関数は、パフォーマンスもよく、SQLが簡潔になるらしい。
関数TD_SCHEDULED_TIMEには、workflow>run historyのsession timeと同じ時間が設定される。
Time Indexを設定しているデータベースの場合は、以下にTime Indexをきかせるかが大事らしい。 - workflow>run history>outputlog には、実行時のログが記録されている。どういう動きをしているかを確認しやすい。
例えば、workflowでデータを登録するときに、"method:copy"を使用すると内部的にどう動くのだろうとoutputlogをみると、普通にcopyコマンド使っていることがわかる。