Airflow 2.0.2 - Jinja2 顶级模板错误

Airflow 2.0.2 - Jinja2 top-level template error

我发现发生了以下错误:

Traceback (most recent call last): File "/usr/local/lib/python3.8/site-packages/airflow/models/taskinstance.py", line 1138, in _run_raw_task self._prepare_and_execute_task_with_callbacks(context, task) File "/usr/local/lib/python3.8/site-packages/airflow/models/taskinstance.py", line 1275, in _prepare_and_execute_task_with_callbacks self.render_templates(context=context) File "/usr/local/lib/python3.8/site-packages/airflow/models/taskinstance.py", line 1779, in render_templates self.task.render_template_fields(context) File "/usr/local/lib/python3.8/site-packages/airflow/models/baseoperator.py", line 892, in render_template_fields self._do_render_template_fields(self, self.template_fields, context, jinja_env, set()) File "/usr/local/lib/python3.8/site-packages/airflow/models/baseoperator.py", line 905, in _do_render_template_fields rendered_content = self.render_template(content, context, jinja_env, seen_oids) File "/usr/local/lib/python3.8/site-packages/airflow/models/baseoperator.py", line 942, in render_template return jinja_env.from_string(content).render(**context) File "/usr/local/lib/python3.8/site-packages/jinja2/environment.py", line 1090, in render self.environment.handle_exception() File "/usr/local/lib/python3.8/site-packages/jinja2/environment.py", line 832, in handle_exception reraise(*rewrite_traceback_stack(source=source)) File "/usr/local/lib/python3.8/site-packages/jinja2/_compat.py", line 28, in reraise raise value.with_traceback(tb)

File "", line 1, in top-level template code jinja2.exceptions.UndefinedError: 'target_table' is undefined

在 Airflow 中尝试 运行 此任务时:

TABLE_NAME = 'sales.il_sales'

t4 = SnowflakeOperator(
    task_id='my_test_query.sql',
    sql='sql/my_test_query.sql',
    params={
        'target_table': TABLE_NAME,
    },
    retries=0,
    pool='airflow')

这很奇怪,因为 target_table 是 'sales.il_sales'

在您的 sql/my_test_query.sql 文件中,如果您使用的是 {{ target_table }},它将不起作用。您需要使用 {{ params.target_table }}.

示例:

SELECT * from {{ params.target_table }}

在此处查看文档中的示例:https://airflow.apache.org/docs/apache-airflow/stable/tutorial.html#templating-with-jinja