digdagとembulkで変数を使ってfor_eachで実行する方法

概要

digdagとembulkで連携している際に、複数のIDのデータをBigQueryにインポートしたいことがある。
今回の場合、GoogleAnalyticsのデータをBigQueryへ連携していて、GAの異なるIDの処理を複数ファイルにするのではなく一つのファイルで行いたかった。
それを実行した際のメモです。
※GAの設定については省略します。
※下記の設定を参考に
Google Analytics input plugin for Embulk

変数の渡し方

書き方は下記の方を参考にさせていただいた。
DigdagとEmbulkの連携で便利なdigdagの変数参照

shオペレータを使っている場合は下記で渡すことが出来る。
※shオペレータではない場合は、指定の仕方が異なるので注意。

digdagファイル

_export:
  test_id: 12345

embulkのliquidファイル

in:
  id: {{ env.test_id }}
out:
  mode: append

digdagのfor_eachの回し方

上記のように、変数化した複数のIDを同じ処理を実行したい場合、for_eachオペレータを使う。
下記公式ページに使い方が記載されている。
https://docs.digdag.io/operators/for_each.html

_export:
  別の変数(ここに共通の値を書いてあげる): hoge 

+repeat:
  for_each>:
     test_id: [123, 456]
  _do:
     sh>: embulkの実行

+repeat:for_each>を使ってあげて、_do:で実行してあげるとそれぞれを呼び出してくれる。
注意点として、上記にもoutで指定しているように、mode: append にしてあげないと、それぞれの変数の結果が追加されない。
replaceにしていると、もちろん2つ目の変数のIDの結果が上書きされてしまうので注意!

ちょいハマったけど、わかってとてもスッキリしました。
digdag便利!