首页 > 解决方案 > Airflow Jinja 渲染模板

问题描述

我已经能够使用 BaseOperator 中的函数成功渲染 Jinja 模板,render_template.

我的问题是,有谁知道在RenderedorRendered Template选项卡下将渲染字符串放入 UI 的要求?

在 UI 中引用此选项卡: 在 UI 中引用此选项卡

任何帮助或指导将不胜感激。

标签: airflow

解决方案


如果您在 Operator 中使用模板化字段,则从模板化字段中创建的字符串将在那里显示。例如使用 BashOperator:

example_task = BashOperator(
    task_id='task_example_task',
    bash_command='mycommand --date {{ task_instance.execution_date }}',
    dag=dag,
)

然后 bash 命令将通过模板引擎进行解析(因为包含 Jinja 字段),稍后您可以在 Web UI 中看到此解析的结果,如您所提到的。

但是,这些字段必须模板化。这可以在字段中的代码中看到templated_fields。对于 BashOperator(请参阅此处的代码https://github.com/apache/incubator-airflow/blob/master/airflow/operators/bash_operator.py),这是:

template_fields = ('bash_command', 'env')

BashOperator 中的其他字段将不会被解析。

您可以使用宏命令(参见此处https://airflow.apache.org/code.html#macros)或来自 xcom 的信息(参见此处https://airflow.apache.org/concepts.html?highlight=xcom#xcoms ) 在模板化字段中。


推荐阅读