#python #airflow
Вопрос:
Допустим A_T
, означает Задачу А на сегодня, а A_T-1
означает Задачу А на вчера. Можно ли указать A_T-1
в качестве оператора, чтобы у меня был такой график зависимостей:
A_T >> B_T
A_T-1 >> B_T
Ответ №1:
Проверьте официальную документацию о зависимостях между DAG. Вот хорошая практика, которой следует следовать:
Когда два DAG имеют отношения зависимости, стоит рассмотреть возможность их объединения в один DAG, который обычно проще для понимания. Воздушный поток также обеспечивает лучшее визуальное представление зависимостей для задач в одном и том же DAG. Однако иногда нецелесообразно помещать все связанные задачи в один и тот же DAG.
Одним из примеров того, что все они не находятся в одном и том же DAG, является следующее (из приведенной выше документации)::
Задача может зависеть от другой задачи в том же DAG, но для другого
execution_date
.
Я думаю, что это может быть ваш случай, поэтому, если вам это все еще нужно, вы можете использовать аргумент ExternalTaskSensor
с аргументом execution_delta
. Проверьте здесь все подробности о параметрах этого датчика.
Комментарии:
1. Спасибо за ответ. Я знал о внешнем датчике задач, однако я не хочу, чтобы dep выполнял задачу из другого DAG. Я хочу, чтобы dep выполнял задачу из той же DAG, но с предыдущим запуском DAG. Возможно ли это также с помощью внешнего датчика задач?
2. Да, насколько я понимаю из документов, вы просто используете то же
dag_id
самое иtask_id
, и вы ДОЛЖНЫ добавитьexecution_delta
аргумент.3. потрясающе, спасибо тебе. Сейчас я пойду, почитаю документы повнимательнее. Незнание того, содержится ли решение в документах, затрудняет его усвоение.
4. Не за что! Обычно документы трудно усваиваются 🙂