3

何らかの理由で、Airflow は、毎週のスケジュール間隔で日付の最新の実行をトリガーしていないようです。

現在の日付:

$ date
$ Tue Aug  9 17:09:55 UTC 2016

DAG:

from datetime import datetime
from datetime import timedelta

from airflow import DAG
from airflow.operators.bash_operator import BashOperator

dag = DAG(
    dag_id='superdag',
    start_date=datetime(2016, 7, 18),
    schedule_interval=timedelta(days=7),
    default_args={
        'owner': 'Jon Doe',
        'depends_on_past': False
    }
)

BashOperator(
    task_id='print_date',
    bash_command='date',
    dag=dag
)

スケジューラーを実行

$ airflow scheduler -d superdag

スケジューラは 7/18、7/25、8/1、および 8/8 にバックフィルする必要があるため、合計 4 つの DAG 実行が予想されます。ただし、最後の実行はスケジュールされていません。

Airflow DAG の実行

ここに画像の説明を入力

編集1:

私の問題を説明しているようには見えませんが、Vineet のことは理解しています。

上記の例では、DAG の開始日は 7 月 18 日です。

  • 最初の DAG 実行: 7 月 18 日
  • 2 回目の DAG 実行: 7 月 25 日
  • 3 回目の DAG 実行: 8 月 1 日
  • 4 回目の DAG 実行: 8 月 8 日 (実行されません)

各 DAG 実行が前週のデータを処理する場所。

今日は 8 月 9 日なので、4 回目の DAG 実行が 8 月 8 日の実行日で実行され、先週 (8 月 1 日から 8 月 8 日まで) のデータが処理されると思いますが、そうではありません。

4

3 に答える 3

5

Airflow は常に前の期間に対してスケジュールされます。したがって、毎日 8 月 9 日に実行するようにスケジュールされている日付がある場合、実行日が 8 月 8 日にスケジュールされます。同様に、スケジュール間隔が毎週の場合、8 月 9 日に 1 週​​間前、つまり 8 月 2 日にスケジュールされますが、これは 8 月 9 日に実行されます。これは単なる気流簿記です。これは、エアフロー wiki ( https://cwiki.apache.org/confluence/display/AIRFLOW/Common+Pitfalls )で見つけることができます。

実行日を理解する Airflow は ETL ニーズのソリューションとして開発されました。ETL の世界では、通常、データを要約します。したがって、2016 年 2 月 19 日のデータを要約したい場合は、2016 年 2 月 20 日午前 0 時 GMT に行います。これは、2016 年 2 月 19 日のすべてのデータが利用可能になった直後です。この日付は、Jinja と Python 呼び出し可能オブジェクトのコンテキストの両方で、ここに記載されているさまざまな形式で利用できます。注意として、ds は date_string を参照し、日付の開始ではなく、混乱を招く可能性があります。

于 2016-08-09T18:27:59.123 に答える