Matillion

Matillionでジョブ実行当日/前日の日付を変数として指定する方法〜その2〜

こちらの記事の別解です

Matillionでジョブ実行当日/前日の日付を変数として指定する方法どうも、最近「自分、まだいけます!やらせてください!」と健気に奮闘する液晶バキバキの愛機(iPhone7)から、新たな愛機(iPhone...

やりたいことをおさらいしておくと、本日の日付をフロー上の変数として取り扱いたい、ということでした。例えば、日付ごとに分割されたテーブルのうち、本日分までのテーブルを読み込みたい、といった時に有用なのではないでしょうか。

やり方としては、知ってしまえば簡単なものでして、pythonコンポーネントを使って日付情報をセットする。これだけです。
具体的には以下のようなフローがあったとき、daily jobが日次で処理したいフローとするとその前にdate setなるpythonコンポーネントを差し込むことで日付をセットしております。


このdate setの中身はどうなっているかというと、
datetimeパッケージを使って本日の日付を取得、そしてそれをcontext.updateVariable()によってMatillionのjob variablesにセットしています。

import datetime as dt 
target_date = dt.datetime.now().strftime('%Y%m%d') 
context.updateVariable('TARGET_DATE', target_date)

 

この際、TARGET_DATEの中身は空でいいので、自分が欲しいような型でセットしておいてください。今回のケースではGAの日次テーブル(ga_sessions_{yyyymmdd})を処理することを念頭に置いているため、Text型でセットしています。

そしてそれをdaily jobのSet Scalar Variavlesで読み込ませましょう。
以上で、めでたくdaily jobに本日の日付情報が送れたことになります。

 

最後に

知ってしまえばこれだけではあるのですが、なかなかに盲点でした。
実はこのやり方、スーパーな後輩さんが組んだフローを見ているときにこの方法で日付セットしているのを発見しまして、こんなやり方もあるのかと心底感心したという経緯があります。
python上で細かい日付操作が可能なので、以前紹介したやり方よりもこちらの方がやりやすいなというのが個人的な感想です。

Taizo
脳筋系データサイエンティスト。筋肉は裏切らない。筋肉。