在Airflow RedshiftSQLOperator中,可能会出现渲染SQL代码与实际执行SQL代码不一致的问题。这可能是因为在渲染SQL时会出现变量的使用,而这些变量并不会被正确的转义和检查。
解决此问题的方法是使用不同的变量引用方式。比如在渲染SQL时使用{{ ti.xcom_pull(key='some_var') }}而不是{{ some_var }}。这将确保变量在SQL语句中正确转义和检查,从而实现代码一致性。
示例:
from airflow import DAG from datetime import datetime from airflow.operators.redshift_operator import RedshiftSQLOperator
dag = DAG('my_dag', start_date=datetime.now())
select_sql = """ SELECT * FROM my_table WHERE date >= '{{ ti.xcom_pull(key='my_var') }}' """
sql_operator = RedshiftSQLOperator( task_id='my_task', sql=select_sql, dag=dag )
sql_operator.set_upstream([task1, task2])
上一篇:AirflowRedshiftSQLOperator执行渲染SQL时产生不同代码的问题。
下一篇:Airflowrender_template_as_native_obj仍会针对动态任务返回一个字符串,而非字典。