Публикация витрины отработала, несмотря на падение трансформации
В DAG три задачи, publish объявлена так:
publish = PythonOperator(
task_id="publish",
python_callable=swap_mart_to_bi,
trigger_rule="all_done",
)
extract >> transform >> publish
trigger_rule поставили, чтобы «пайплайн всегда доводился до конца». Однажды transform упал на середине, и в BI уехала витрина с половиной данных.
Что здесь произошло?
- all_done означает «после успешного завершения всех предшественников»; причина в другом — transform завершился с ошибкой, но пометил себя успешным.
- all_done запускает задачу после завершения предшественников в любом статусе, включая падение, поэтому неполная витрина была опубликована; здесь нужен all_success.
- trigger_rule на публикации не влияет: задача выполнилась потому, что у transform были заданы retries и после последней попытки он передал управление дальше.
- При падении upstream Airflow всегда помечает downstream как skipped, поэтому publish выполниться не мог — витрину подменил какой-то другой процесс.
