恥ずかしながら最近になって知ったワークフローエンジン Apache Airflow。日本語の紹介記事もちらほら出てきていますが、公式ドキュメントをちょっとずつ抄訳しながら読んでいこうと思います。
8回目の今回はデータ区間(Data Interval)。
バージョン2.3.3時点のものです。
データ区間(Data Interval)
各DAG Runはそれが処理する範囲を表す「データ区間」を充てがわれています。例えばschedule_interval
引数で@daily
(0 0 * * *
と同義)というスケジュールを指定されたDAGの場合、そのデータ区間は各日の同日00時に始まり翌日の00時に終わるといった具合です。
DAG Runはふつう紐づけられたデータ区間が終わった後にスケジュール実行されます。これは当該の実行中にデータ区間の範囲のデータを漏れなく処理対象にするためです。別の言い方をすれば、2020-01-01 のデータ期間を処理対象とするDAG Runは2020-01-01が終わり2020-01-02 00:00:00以降となるまでは起動しないということです。
Airflowで使用する各種の日時情報はすべて何らかのかたちでこのデータ区間の概念に結び付けられています。例えばDAG Runの「論理日付」(logical date。Airflow バージョン2.2以前はexecution_date
と呼ばれていました)は、DAGが実際に実行された日時ではなくデータ区間のスタートの日時を示します。
これと同様に、DAGとそのタスク群のstart_date
は皆同じ論理日付を指します。この値はDAGのタスクが実行され始めた日時ではなく、DAGの一連のデータ区間の中でも最初のものの開始日時を示します。別の言い方をすれば、DAG Runはstart_date
のあと1データ区間分の時間が経過したあとにスケジュール実行されるわけです。
Tip
schedule_interval
引数がDAGのスケジュール、論理日付、あるいはデータ区間の定義に役不足な場合は、Timetablesをご覧ください。logical date
についてより詳しくは「DAGを実行する」や 「execution_dateが意味するもの」をご覧ください。
1つ前の記事「DAGを実行する(Running DAGs)」に続いてDAG実行の理解に欠かせない日付概念について見てきました。
データ区間(Data Interval)は日時を示す概念の中で中核に位置するもので、ドキュメントの中でもそこら中に登場するので、ここをきちんと理解しておかないといけません。。