Airflow 对于没有时间触发的气流操作员,是否有任何触发规则(需要
我有一个用例来创建BigqueryOperator的两个任务,它们具有相同的目标表,但我需要每天运行一个任务,并且在需要时手动运行第二个任务 下面是树状视图的图示Airflow 对于没有时间触发的气流操作员,是否有任何触发规则(需要,airflow,airflow-operator,Airflow,Airflow Operator,我有一个用例来创建BigqueryOperator的两个任务,它们具有相同的目标表,但我需要每天运行一个任务,并且在需要时手动运行第二个任务 下面是树状视图的图示 | task_3rd_adhoc | task_3rd |---- task_2nd |---- task_1st_a |---- task_1st_b 从上面的例子来看,DAG每天都在运行。我的目标是: task_1st_a和task_1st_b首先运行。目标表为: project.data
| task_3rd_adhoc
| task_3rd
|---- task_2nd
|---- task_1st_a
|---- task_1st_b
从上面的例子来看,DAG每天都在运行。我的目标是:
- project.dataset.table_1st_a,其中_PARTITIONTIME=执行日期,以及
- project.dataset.table_1st_b,其中_PARTITIONTIME=执行日期
- project.dataset.table_2nd,其中_PARTITIONTIME=执行日期
- project.DATASE.table_3rd,从执行日期算起,分区时间=D-2
- project.dataset.table第3页,其中_PARTITIONTIME=执行日期
(基于依赖关系只是为了显示,随意触发)首先,您误解了
TriggerRule.DUMMY
- 通常,当您将任务连接到一起时,b将仅在a完成后运行(根据b的
触发规则,成功/失败)
意味着即使像以前一样将任务A和B连接在一起,B也会独立于A运行(随意运行)。这并不意味着按照你的意愿运行,而是按照气流的意愿运行(它会随时触发)因此,显然,具有虚拟触发器规则的任务几乎总是在不可预测的时间运行TriggerRule.DUMMY
在这里,您需要(始终在DAG中有一个特定的任务,但仅在手动指定时运行它)是
应包含此任务的命令(无论是否应运行)。当然,您可以随时从UI编辑此变量(从而控制该任务是否在下一次运行中运行)变量
- 在操作符的代码中(
methodforcustomoperator,或者在execute()
的情况下只需PythonOperator
),您将检查变量的值(无论任务是否应该运行)python\u callable
- 根据变量值,如果任务不应该运行,则必须抛出一个
,这样任务才会运行。否则,它将照常运行AirflowskipeException