DAGのスケジュール設定

Python で学ぶ Apache Airflow 入門

Mike Metzger

Data Engineer

DAG実行

  • ある時点におけるワークフローの実行インスタンス
  • 手動または schedule で実行可能
  • ワークフローとタスクの状態を管理
    • running
    • failed
    • success
1 https://airflow.apache.org/docs/stable/scheduler.html
Python で学ぶ Apache Airflow 入門

DAG実行ビュー

全DAGの最近の実行を一覧表示するAirflow DAG実行ページ

Python で学ぶ Apache Airflow 入門

DAG実行の状態

各実行の状態列を表示するAirflow DAG実行ページ

Python で学ぶ Apache Airflow 入門

スケジュールの詳細

DAG をスケジュールする際の主な属性:

  • start_date - DAG実行を最初にスケジュールする日時
  • end_date - 新しいDAGインスタンスの実行を停止する日時(任意)
    • start_dateend_date はともに datetime(year, month, day) オブジェクトを使用:
       from pendulum import datetime
       start_date=datetime(2026, 4, 10, tz="UTC")
      
Python で学ぶ Apache Airflow 入門

スケジュール

schedule の役割:

  • DAGのスケジュール頻度を指定
  • start_dateend_date の間で実行
  • cron 形式、プリセット、またはtimedelta で定義可能
Python で学ぶ Apache Airflow 入門

cron構文

5つのフィールドで構成されるcron構文の図

  • Unix cron 形式に基づく
  • スペース区切りの5フィールド
  • * はすべてのインターバルを意味する(例:毎分、毎日)
  • フィールドにカンマ区切りで複数値を指定可能
Python で学ぶ Apache Airflow 入門

cronの例

5つのフィールドで構成されるcron構文の図

0 12 * * *              # Run daily at noon
* * 25 2 *              # Run once per minute on February 25
0,15,30,45 * * * *      # Run every 15 minutes
Python で学ぶ Apache Airflow 入門

Airflow スケジューラープリセット

プリセット:

  • @hourly
  • @daily
  • @weekly
  • @monthly
  • @yearly

cron相当:

  • 0 * * * *
  • 0 0 * * *
  • 0 0 * * 0
  • 0 0 1 * *
  • 0 0 1 1 *
1 https://airflow.apache.org/docs/stable/scheduler.html
Python で学ぶ Apache Airflow 入門

特殊プリセット

Airflow には3つの特殊な schedule プリセットがあります:

  • None - スケジュールなし(手動トリガー専用)
  • @once - 1回のみ実行
  • @continuous - 前回の実行完了後すぐに再実行
Python で学ぶ Apache Airflow 入門

timedelta

  • pendulum.duration も使用可能
  • duration(hours=6)
  • duration(minutes=30)
from pendulum import duration

@dag(
  dag_id="example_dag"
  schedule=duration(days=2)
)
Python で学ぶ Apache Airflow 入門

スケジュールの適用

  • DAG にスケジュールを定義
  • schedule パラメーターを使用:
@dag(
  dag_id="example_dag",
  schedule="0 12 * * *"
)
@dag(
  dag_id="example_dag",
  schedule="@daily"     
)
Python で学ぶ Apache Airflow 入門

スケジュールの注意点

DAG をスケジュールする際、Airflow は以下の動作をします:

  • 開始日を過ぎてから1インターバル経過後に実行
  • start_date + schedule のタイミングでタスクをスケジュール
'start_date': datetime(2026, 2, 25, tz="UTC")
'schedule': @daily

DAGが最初に実行される最短日時は2026年2月26日

Python で学ぶ Apache Airflow 入門

では、練習しましょう!

Python で学ぶ Apache Airflow 入門

Preparing Video For Download...