Google bigquery 使用jinja2使用附加标签扩展BigQueryExecuteQueryOperator

Google bigquery 使用jinja2使用附加标签扩展BigQueryExecuteQueryOperator,google-bigquery,airflow,Google Bigquery,Airflow,为了实现这一点,我们希望使用一些附加标签进行扩展,以便每个任务实例在其构造函数中自动设置这些标签 类扩展的BigQueryExecuteQueryOperator或BigQueryExecuteQueryOperator: @应用默认值 定义初始自我, *args, **kwargs->无: 任务\u标签={ 'dag_id':'{dag.dag_id}}', 'task_id':kwargs.get'task_id', 'ds':'{{ds}}', 丑八怪,三个情人都有不同的遭遇 } 超级.\

为了实现这一点,我们希望使用一些附加标签进行扩展,以便每个任务实例在其构造函数中自动设置这些标签

类扩展的BigQueryExecuteQueryOperator或BigQueryExecuteQueryOperator: @应用默认值 定义初始自我, *args, **kwargs->无: 任务\u标签={ 'dag_id':'{dag.dag_id}}', 'task_id':kwargs.get'task_id', 'ds':'{{ds}}', 丑八怪,三个情人都有不同的遭遇 } 超级.\uuuuu初始参数,**kwargs 如果self.labels为无: self.labels=任务标签 其他: self.labels.updatetask_标签 如果DAG_id=。。。, 开始日期=。。。, 计划时间间隔=。。。, 默认参数=。。。作为dag: t1=ExtendedBigQueryExecuteQueryOperator 任务id=f't1', sql=f“选择1;”, 标签={'some_additional_label2':'some_additional_label2'} 所有标签应为:dag\U id、任务\U id、ds、一些附加\U标签2 t2=扩展的BigQueryExecuteQueryOperator 任务id=f't2', sql=f“选择2;”, 标签={'some_additional_label3':'some_additional_label3'} 所有标签应为:dag\U id、任务\U id、ds、一些附加\U标签3 t1>>t2
但随后我丢失了任务级别标签一些附加标签2或一些附加标签3。

您可以在airflow\u local\u settings.py中创建以下内容:

def策略任务: 如果任务 task.labels.update{'dag_id':task.dag_id,'task_id':task.task_id} 从文档:

本地气流设置文件可以定义一个策略函数,该函数能够基于其他任务或DAG属性更改任务属性。它接收单个参数作为对任务对象的引用,并希望更改其属性

有关应用策略的更多详细信息:

在这种情况下,您不需要扩展BigQueryExecuteQueryOperator。唯一缺少的部分是可以在任务本身中设置的执行日期

例如:

如果DAG_id=。。。, 开始日期=。。。, 计划时间间隔=。。。, 默认参数=。。。作为dag: t1=BigQueryExecuteQueryOperator 任务id=f't1', sql=f“选择1;”, 标签={'some_additional_label2':'some_additional_label2','ds':{{{ds}}}
气流\u本地\u设置文件需要位于PYTHONPATH上。您可以将其放在$HOME/config下或dags目录中。

我发现从1.10.4开始就支持此功能。谢谢,我会试试的!低版本有什么问题吗?我在你的DAG中看到一个输入错误:标签而不是t1和t2中的标签