2017年2月21日火曜日

【トレジャーデータ:Treasure Workflow】今注目のTreasure Workflowとは?その導入手順と活用例(SQL文ループ処理)の紹介


 Treasure Workflowとは?

Treasure Workflowは最近導入されたばかりのTreasure Data(TD)の最新サービス。このサービスを活用することで、TDだけでなく、GoogleのBigQueryやG Suite、Amazon Redshift、Microsoft Azureなど複数クラウドやWebサービス上のデータを統合して管理することができるとされる。TDはこのサービスを軸にして、LDM(Live Data Management)というDMP(Data Management Platform)を超えた概念、すなわち、ベンダーを超えたデータの相互アクセスを可能にする世界観を目指しているとのこと(確かに、今様々な企業で構築・運用されているDMPをそのまま統合・管理できればすごい便利そう)。


取り急ぎ、Treasure Workflowを試してみる

Treasure Workflowでは、クエリをメタなレベルで処理することができる。例えば、複数のクエリを任意の順序で実行したいときやクエリのループ処理をしたいとき等に使える。特に、ループ処理は通常のSQLでは記述できないため、Treasure Workflowが大いに活躍すること間違いなし。そこで今回は、Treasure Workflowを使ったクエリのループ処理について試してみる(ちなみに、ループ処理のためのdigファイルの書き方は、TDの中の人から頂いたサンプルを参考にしました)。


導入手順

  1. コンソールを起動(windowsだとコマンドプロンプト)
  2. 自分のTDアカウントにログインする
  3. TDをアップデートする(td update)
  4. Treasure Workflowをインストール(td workflow)

ループ処理方法


1.クエリ操作するファイル(dig)とクエリを格納するフォルダを作成(必要に応じて)



td_testというフォルダ下に、クエリを保管するフォルダとdigファイルを作成している

2.クエリを作成

sample.sql
SELECT 
  TD_TIME_FORMAT(time,
    'yyyy-MM-dd',
    'jst') AS time_date,
  AVG(CLOSE) AS daily_avg_close
FROM
  #TDにサンプルで入っているナスダックのデータ
  sample_datasets.nasdaq
WHERE
  #datetime_fromとdatetime_toはdigファイルで定義
  TD_TIME_RANGE(time,
    '${datetime_from}',
    '${datetime_to}',
    'JST')
GROUP BY
  TD_TIME_FORMAT(time,
    'yyyy-MM-dd',
    'jst')

3.digファイルを作成

sample.dig
_export:
  basetime: "2011-03-01 00:00:00"
  loopcount: 5
  td:
    database: workflow_temp

+loop:
  loop>: ${loopcount}
  _do:
    +step:
      _export:
        datetime_from: ${moment(basetime, "YYYY-MM-DD HH:mm:ss").
         add(i, "days").format("YYYY-MM-DD HH:mm:ss")}
        datetime_to: ${moment(basetime, "YYYY-MM-DD HH:mm:ss").
         add(1 + i, "days").format("YYYY-MM-DD HH:mm:ss")}
      td>: queries/sample.sql
      insert_into: roop_test

4.コンソールで実行(事前にdigファイルがあるディレクトリに移動しておく)

 td wf run sample
で実行


実行中の画面

5.結果

 しっかりデータが入っている


1ループ1日分の処理が5回されるため5日分のデータがテーブルに入る



◇参考サイト(一部、TDのアカウントが無いと見れないかも)





0 件のコメント :

コメントを投稿