こんにちは、テックラボの岸部です。
普段の業務では、データエンジニアやデータサイエンティストとして、Azure Databricksでデータ処理を実装して、作成したデータを各DBやDWHに転送する、みたいなパイプラインを構築することが多いです。 複数のAzure Databricksのノートブックの実行を含むパイプラインを構築したり、それを自動化(スケジュール実行)する時に、Azure Data Factoryを活用してきました。
Azure Data Factoryでは、GUIで手軽にパイプラインを構築できるのはいいのですが、自動化にあたって、よく使うはずの日付パラメータの自動計算が結構大変だったので、備忘録も兼ねてまとめたいと思います。
はじめに
改めてですが、Azure Data Factoryは、多種多様なデータソースに対して、データの抽出や変換などのETL処理が簡単に組めるデータ統合サービスです。 Azureの各種サービス(Azure DatabricksやAzure Storageなど)との連携も容易です。
結構昔からあるサービスだと思いますので、利用したことがある方も多いのではないでしょうか。
自動化にあたっての課題
GUIでポチポチとパイプラインを構築して、いざ自動化(スケジュール実行)するときに困るのが、パラメータの設定です。 よくあるユースケースとして、日付に関連するパラメータを自動で設定したいときがあります。
もちろん、Azure Data Factoryにはパラメータを計算できる機能が用意されていますが、罠が2つあります・・・。
罠① 使える関数が意外と少ない問題
Azure Data Factoryの日付パラメータを計算するときに使用できる関数は以下の公式ドキュメントにまとまっています。 learn.microsoft.com
一通り揃っているように感じますが、よく見ると、月末は取れるlastDayOfMonthという関数はあるけど、月初をとるfirstDayOfMonthという関数はない(月初は1日で確定なので当然かもしれませんが)など、ほしい日付を直接取得できる場合もあれば、関数を組み合わせて計算しなくてはいけない場合もあり注意が必要です。
罠② そもそも公式ドキュメントにある関数がAzure Data Factoryで使えない問題
公式ドキュメントを確認した後に、実際にAzure Data Factoryの画面を操作してみると・・・

lastDayOfMonthという関数はあるけど、firstDayOfMonthという関数はない、と確認したところなのに、実際はlastDayOfMonth関数もなく、関数から推測するに、月初を取得できそうなstartOfMonthという関数のみあります。
公式ドキュメントとは一体・・・
日付パラメータ計算の実践
ということで、公式ドキュメントは参考程度にしておき、実際にAzure Data Factoryで使うことができる関数から、私がよく使う日付パラメータの計算を簡単な解説込で紹介していきたいと思います。
現在日付を任意のフォーマットに加工する
@formatDateTime(utcNow(),'yyyyMM') (出力例) 実行日が2026/02/20なら202602
毎月運用するようなテーブル名を動的に作成するときに使います。
Nか月前の月初日を取得したい
@startOfMonth(getPastTime(N,'MONTH'),'yyyyMMdd') (出力例) N=12で実行日が2026/02/20なら20250201
getPastTimeでN月前の日付を取得し、startOfMonthでその日付を月初に変換します。
実行日の前月末を取得したい
@adddays(startOfMonth(utcNow()),-1,'yyyyMMdd') (出力例) 実行日が2026/02/20なら20260131
startOfMonthで現在月の最初の日を取得し、adddaysで-1日加算(1日減算)することで、前月末日を取得します。
さいごに
Azure Data Factoryで日付パラメータを自動計算する例を紹介させて頂きました。 Azure Data Factoryのシステム時間はUTCのため、日本時間の実行日付を計算するときはご注意ください。