April 15, 2017

Digdagのbuilt-in variableについて

最近は、digdagのことばかり考えているのですが忘れないように色々とまとめておきます。(せっかくブログ作ったのに放置している…)

built-inされている変数のお話です。

2017-04-14にリリースされたv0.9.9から task_name が取得できるようになりました(๑•̀ㅂ•́)و✧

v0.9.9のリリースノートはこちら

これは嬉しい…!色々と使えそうですね。

どんな風に使えそうかというとdigdag PR#537でのやりとりが参考になりそうです。

例として、タスク名を取得→値を置換してQueryのファイル名にして→実行など。

全体的な見通しもよくなりそうですよね。

built-inされている変数をのぞいてみる

せっかくなので、v0.9.9時点での built-in variableを見てみましょう。

  1. sample.dig を以下のように定義

なんとなく jq で整形して出力しておくw

  +check:
    sh>: echo '${this}' | jq .
  1. ワークフロー(sample.dig)実行
  $ digdag r -a sample.dig
  2017-04-16 14:15:09 +0900: Digdag v0.9.9
  2017-04-16 14:15:20 +0900 [WARN] (main): Reusing the last session time 2017-04-16T00:00:00+00:00.
  2017-04-16 14:15:20 +0900 [INFO] (main): Using session /Users/shota/Workspace/digdag-sample/.digdag/status/20170416T000000+0000.
  2017-04-16 14:15:20 +0900 [INFO] (main): Starting a new session project id=1 workflow name=sample session_time=2017-04-16T00:00:00+00:00
  2017-04-16 14:15:21 +0900 [INFO] ([email protected]+sample+check): sh>: echo '{"timezone":"UTC","session_uuid":"10437647-6818-4d13-af1f-6ddb56309502","session_time":"2017-04-16T00:00:00+00:00","session_id":1,"session_date":"2017-04-16","session_date_compact":"20170416","session_local_time":"2017-04-16 00:00:00","session_tz_offset":"+0000","session_unixtime":1492300800,"last_executed_session_time":"","last_executed_session_date":"","last_executed_session_date_compact":"","last_executed_session_local_time":"","last_executed_session_tz_offset":"+0000","last_executed_session_unixtime":"","project_id":1,"task_name":"+sample+check"}' | jq .
  {
    "timezone": "UTC",
    "session_uuid": "10437647-6818-4d13-af1f-6ddb56309502",
    "session_time": "2017-04-16T00:00:00+00:00",
    "session_id": 1,
    "session_date": "2017-04-16",
    "session_date_compact": "20170416",
    "session_local_time": "2017-04-16 00:00:00",
    "session_tz_offset": "+0000",
    "session_unixtime": 1492300800,
    "last_executed_session_time": "",
    "last_executed_session_date": "",
    "last_executed_session_date_compact": "",
    "last_executed_session_local_time": "",
    "last_executed_session_tz_offset": "+0000",
    "last_executed_session_unixtime": "",
    "project_id": 1,
    "task_name": "+sample+check"
  }
  Success. Task state is saved at /Users/shota/Workspace/digdag-sample/.digdag/status/20170416T000000+0000 directory.
    * Use --session <daily | hourly | "yyyy-MM-dd[ HH:mm:ss]"> to not reuse the last session time.
    * Use --rerun, --start +NAME, or --goal +NAME argument to rerun skipped tasks.

v0.9.9時点で以下の値がとれることがわかります。

{
  "timezone": "UTC",
  "session_uuid": "10437647-6818-4d13-af1f-6ddb56309502",
  "session_time": "2017-04-16T00:00:00+00:00",
  "session_id": 1,
  "session_date": "2017-04-16",
  "session_date_compact": "20170416",
  "session_local_time": "2017-04-16 00:00:00",
  "session_tz_offset": "+0000",
  "session_unixtime": 1492300800,
  "last_executed_session_time": "",
  "last_executed_session_date": "",
  "last_executed_session_date_compact": "",
  "last_executed_session_local_time": "",
  "last_executed_session_tz_offset": "+0000",
  "last_executed_session_unixtime": "",
  "project_id": 1,
  "task_name": "+sample+check"
}

いやー、task_nameがとれるのは本当に嬉しいですな(๑•̀ㅂ•́)و✧

© szyn 2017