🛠️

DataSpider(Dr.Sum Connect)をつかった月初・月末の取得方法【ETLならだいたい同じ】

2021/11/10に公開

ETLツールは機能の多さが影響してか、どのように作り出したら良いか悩んでしまうことがよくあります。
ユーザーのそれぞれで自分なりの技を持っているんじゃないかと思います。
今回はETLツールで覚えておくと便利なマッピングの小技について解説をします。

マッピングとはなにか

マッピングはETLツールの代表的な機能である、データの加工の部分のことを指します。
Map、Mapper、Mappingなどツールによっていろいろな呼び方がされますね。

たとえば基幹システムのDBから、Dr.Sumにデータを取り込む過程で、基幹DBでは西暦(2021年)、月(4月)、日(1日)という項目を持っているところを
マッピングをすることで年月日(2021/04/01)として、Dr.Sumに入れることが可能です。
この場合、"年"、"月"、"日"という文字列を抜いて、"/"を入れて、"4"だったら"04"とするような加工をしています。

今回紹介する内容はマッピングを使って、スクリプト変数で加工した日付を持つ方法となります。
image.png

スクリプトをつくるにあたり、SQLのパラメーターにつかったり、ログを出すときにつかったりと、日付を変数で持つことは重要です。

月初・月末をとってみる

今回は、月初を翌月スタート日、月末を当月最終日として取得しています。
本日が2021/06/22であれば、翌月のスタートは2021/07/01、当月の最終日は2021/06/30となります。
月初は簡単ですが、月末は30日だったり、31日だったり、29日だったりと月によって異なるので、注意が必要ですね。

さぁ、見ていきましょう。

月初

実は上で出した画像に答えがのっています。
image.png

赤線のルートで月初(翌月スタート日)を出しています。
何をやっているかというと、
① [現在日時]コンポーネントで、現在日時を取得(ex. 2021/06/22)
② [月を増減]コンポーネントで、1を足して、翌月する(ex. 2021/07/22)
③ [日の設定]コンポーネントで、日の部分を"01"に変換する(ex. 2021/07/01)
④ [日のフォーマッティング]コンポーネントで、フォーマットを整える(ex. 2021/07/01)

この解説だと④がいらないように見えますが、実際は③までは時分秒がついていたりするので、整えが必要なのですね。
加工し終えたものをスクリプト変数の[翌月スタート日]に格納します。

月初の取得はこれでOKです。

月末

さて、当月最終日を取得します。
こちらは月初の加工にもう一手間加える必要があります。

緑の線のところが追加要素ですね。
image.png

① [現在日時]コンポーネントで、現在日時を取得(ex. 2021/06/22)
② [月を増減]コンポーネントで、1を足して、翌月する(ex. 2021/07/22)
③ [日の設定]コンポーネントで、日の部分を"01"に変換する(ex. 2021/07/01)
④ [日の増減]コンポーネントで、1を引いて、先月末にする(ex. 2021/06/30)
⑤ [日のフォーマッティング]コンポーネントで、フォーマットを整える(ex. 2021/06/30)

④のところが追加要素です。
一度、翌月初を出してから、1日引いて、当月末を出しています。

こういった細かな技の積み重ねで、変数を作り込んでいくところが、ETLツールの奥ゆかしいところですね。

最後に

スクリプトの実行時にこんな変数取得ロジックを入れてみると、スクリプト内で呼び出すだけですぐ使えるので、いろいろお得です。
慣れれば慣れるほど、ETLツールの利便性が向上します。

ぜひ様々な変数の取得にチャレンジしてみてください。

Discussion