TREASURE DATAさわってみた、まとめ


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コマンドで別のデータベース>テーブルにコピーする)

sample.dig

#タイムゾーン
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コマンド使っていることがわかる。