将参数从气流运算符传递给 sql 模板

Rob*_*Rob 4 python airflow

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

文件:.sql/query.sql

SELECT * FROM `dataset.{{ task_instance.variable_for_execution }}
Run Code Online (Sandbox Code Playgroud)

文件:dag.py

BigQueryOperator(
    task_id='compare_tables',
    sql='./sql/query.sql',
    use_legacy_sql=False,
    dag=dag,
)
Run Code Online (Sandbox Code Playgroud)

kax*_*xil 7

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

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

或者您可以在文件中将 SQL 分开:

文件:./sql/query.sql

SELECT * FROM `dataset.{{ params.param1 }}
Run Code Online (Sandbox Code Playgroud)

params参数的输入应该是一个字典。一般来说,Airflow 中的任何算子都可以传递这个params参数。