Airflow 气流-xcom_拉入bigquery运算符

Airflow 气流-xcom_拉入bigquery运算符,airflow,Airflow,我尝试使用xcomm\u pull插入由python\u操作符计算的数据\u key\u参数,并将其传递给bigquery\u操作符。python运算符以字符串形式返回输出,例如“2020-05-31” 运行BigqueryOperator时出错:“依赖项阻止任务计划”-无法强制转换文字“{xcom\u pull(Task\u id[\'set\u date\u key\u param\'))[0]}” 任务执行后从GUI返回的sql属性值: 选择日期键,计数(*)作为计数 从my projec

我尝试使用
xcomm\u pull
插入由
python\u操作符计算的数据\u key\u参数
,并将其传递给
bigquery\u操作符
。python运算符以字符串形式返回输出,例如“2020-05-31”

运行BigqueryOperator时出错:“依赖项阻止任务计划”-无法强制转换文字“{xcom\u pull(Task\u id[\'set\u date\u key\u param\'))[0]}”

任务执行后从GUI返回的sql属性值:
选择日期键,计数(*)作为计数
my project.my_datasets.source_table

其中DATE_KEY={{task_instance.xcom_pull(task_id='set_DATE_KEY_param')}
按日期分组\u键

下面的代码(我已经用{{和}}}来封装任务\u instance.xcom…):

)


set_date_key_param>>将_data_加载到_bq_表中

您将Python命名为可调用,并将用于保存第一个Python运算符的变量设置为相同:
set_date_key_param
。重命名Python可调用(例如,
set_date
),并相应地更改Python运算符的参数。

我认为字符串格式和jinja模板相互冲突

在利用xcom的用例中,我认为使用jinja模板是有意义的

load_data_to_bq_table = BigQueryOperator(
    task_id='load_data_to_bq_table',
    sql="""SELECT DATE_KEY, count(*) as COUNT
        FROM `{{ params.project }}.{{ params.dataset }}.source_table` 
        WHERE DATE_KEY = \"{{ task_instance.xcom_pull(task_ids='set_date_key_param') }}\"
        GROUP BY DATE_KEY""",
    params={
        'project': PROJECT_ID,
        'env': ENV   # env or dataset??, match this name to the params key in sql
    }
)

你能试试“{code>\{task\u instance.xcom\u pull(task\u id='set\u date\u key\u param')}}”和@SergiyKolesnikov说的话吗?\{{task\u instance.xcom\u pull(task\u id='set\u date\u key\u param')}\”-不,不起作用:(上面的代码?为任务保留名称并更改函数/调用名称以设置_日期?不起作用。@TomaszKubat-供将来参考:A建议添加“示例代码”;此编辑旨在针对文章作者,作为编辑毫无意义。它应该作为注释或答案编写。参数是否应作为Python字典传递,并带有“:“分隔键值?如'project':project_ID?我有一个语法错误,“=”或者你的意思是“query\u params”不是“params”?但你是对的!当我排除了字符串格式而只保留jinja模板时,参数替换工作了!
params
没有工作?
params
应该是jinja模板化afaik的关键。似乎在将sql\u参数传递给t时存在1.10.2已知错误he bigquery_操作符:我已经将bigquery_操作符更改为python_操作符。
load_data_to_bq_table = BigQueryOperator(
    task_id='load_data_to_bq_table',
    sql="""SELECT DATE_KEY, count(*) as COUNT
        FROM `{{ params.project }}.{{ params.dataset }}.source_table` 
        WHERE DATE_KEY = \"{{ task_instance.xcom_pull(task_ids='set_date_key_param') }}\"
        GROUP BY DATE_KEY""",
    params={
        'project': PROJECT_ID,
        'env': ENV   # env or dataset??, match this name to the params key in sql
    }
)