从气流运算符向SQL模板传递参数

时间:2018-08-30 18:57:26

标签: python airflow

如果我将BigQueryOperator与SQL模板一起使用,如何将参数传递给SQL?

文件:.sql / query.sql

SELECT * FROM `dataset.{{ task_instance.variable_for_execution }}

文件:dag.py

BigQueryOperator(
    task_id='compare_tables',
    sql='./sql/query.sql',
    use_legacy_sql=False,
    dag=dag,
)

1 个答案:

答案 0 :(得分:2)

您可以在params参数中传递参数,该参数可以在模板字段中使用,如下所示:

BigQueryOperator(
    task_id='',
    sql='SELECT * FROM `dataset.{{ params.param1 }}',
    params={
        'param1': 'value1',
        'param2': 'value2'
    },
    use_legacy_sql=False,
    dag=dag
)

或者您可以在文件中单独添加SQL:

文件:./sql/query.sql

SELECT * FROM `dataset.{{ params.param1 }}

params参数的输入应为字典。通常,可以向{flow}中的任何操作员传递此params参数。