Airflowの表示時間はおかしいと思います
どうしてNext Run が過去の時間なんですか?おかしいと思います
Next Runは次の実行ということですよね、どうして過去の時間ばかりなのでしょう?
この後ちゃんと実行されるのかな...
なんだかおかしい気がします
↓6/11 11:20時点でNext Runは全て過去の時刻になっている
Treeビューの順番がおかしいと思います
毎日20時に実行するDAGが、諸事情でやり直したくなってお昼にマニュアル実行しました。
翌日Treeビューで眺めていると...アレ?
マニュアル実行が一番右に表示 (最新?)にされてる! 昨日の夜は実行してないの!?
おや、右から2番めに昨日の夜のスケジュール実行がありました...
順番がおかしいのではないでしょうか?
↓スケジュール実行とマニュアル実行が混ざった場合に実行順に並ばないことがある
start_dateをきっちり設定したのに実行されないんです、おかしいと思います
新しいDAGを作りました、毎日夜23時に動くDAGです!
今日の夜23時から実行させたいから、start_dateを今日の23時に設定して、と...
(翌日)
きっちり設定したのに!! なんで動いてないの!? おかしいと思います!!
↓start_dateを6/10昼に設定したのに6/10の夜23時に実行されなかった悲しいDAG
おかしくなかった
Airflowは実行時間ではなくてData Intervalの最初の日時を表示している箇所が多いようです。
Data Intervalというのは、実行と実行の間の期間のことです。
例えばschedule_interval="0 0 10 * *"
と定義したDAGは毎月10日に実行しますが、以下のようになります。
Data Interval | 実行時間 | Airflowが利用する時間 |
---|---|---|
5月10日〜6月10日 | 6月10日 | 5月10日 |
6月10日〜7月10日 | 7月10日 | 6月10日 |
7月10日〜8月10日 | 8月10日 | 7月10日 |
8月10日〜9月10日 | 9月10日 | 8月10日 |
9月10日〜10月10日 | 10月10日 | 9月10日 |
直感的には実行時間の方を意識すると思うんですが、Airflowは違うんですね。
6月10日〜7月10日のData Intervalで、実行するのはその終わりの7月10日ですが、Airflowはその最初の6月10日を表示します。
Next Runがなぜ過去なのか
現在が6月11日だとします。毎月10日に実行されるDAGでは、次に実行されるのは7月10日です。
Data Interval的には、今は6月10日〜7月10日の期間にいるのでNext Runはその最初の6月10日を表示しています。
直感とは異なりますが、こういう理由だったのです。
Next Runが表示しているのは、次に実行される時間ではなく、次に実行するData Intervalの最初の時間ということになります。
Treeビューの順番がなぜ実行順に並ばないのか
Treeビューでも同様です。
Run:
, Run Id:
の日時に採用されるのは、実行時刻ではなくData Intervalの最初の時刻です。
ところが、スケジュール実行ではなくマニュアル実行の場合は実際の実行時間がRun:
, Run Id:
の日時になります。
そのため手動で実行したタイミングによっては、実行時間が入れ替わることがあります。
start_dateの設定について
Data Intervalの最初の日時より前にstart_dateを設定している必要があります。
今日の夜23時に実行させたいなら、Data Intervalは昨日の23時〜今日の23時なので昨日の23時に以前にすればいいですね。
まとめ
Airflowの直感と違った日時表示、慣れれば特に不自由しないんですが、この表示にして何か嬉しいことがあるんでしょうか? 知っている方がいらしたら、ぜひ教えてください