如果我将 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)
您可以在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参数。