日々地道に成長

思いついたことを書いていきます。

【BigQuery,digdag】BQとdigdagを使用した平日判定処理の作成方法

お疲れ様です。コーヒーです。

 

今回はDigdagのでの平日判定処理の作成方法をまとめてみました。

祝日も除外しての平日のみの処理を作成する必要があったため、この処理を作成してみました。

今まで本ブログで紹介した方法を複合して作成したもになっています!

今までの記事を参考にするとより理解が深まるかと思います。

digdagによる平日判定処理の作成方法

今回使用したdigdagのコードは以下になります。

timezone: 'Asia/Tokyo'
_export:
date: ${moment(session_date).format('YYYY-MM-DD')}

#平日判定処理
+weekday_check:
  +check_query:
  sh_result>: bq query --format=json --use_legacy_sql=false --parameter=date:DATE:${date} < check_weekday.sql
    destination_variable: resultset
    stdout_format: json-list-map

  +weekday_if:
    for_each>:
      rs: ${resultset}
    _do:
      if>: ${rs.flag}
      _do:
      echo>: ${target_date}

処理の流れとしては、以下になります。

  1. 平日判定処理クエリを実行
  2. 平日判定処理クエリ結果をsh_resultプラグインを使用して、変数に代入
  3. for文を使用して変数の値を取り出す
  4. if文にて平日かそうでないかを判別(true or false)
  5. trueの場合処理を実行(今回は実行日を標準出力)

平日判定処理クエリに関しては以下のようになってます。

SELECT
  if(EXTRACT(DAYOFWEEK FROM  DATE (@date)) in (1,7) or
   date(@date) in (select holiday_date from test.holiday),false,true) as flag

test.holidayテーブルには祝日をあらかじめ登録しています。

自分はこちらの内閣府がだしているcsvファイルをもとに作成しました。

www8.cao.go.jp

 

以上で平日判定処理の作成方法は終了となります!

最後まで読んでいただきありがとうございました!!