Airflow Jinja 渲染模板

Posted

技术标签:

【中文标题】Airflow Jinja 渲染模板【英文标题】:Airflow Jinja Rendered Template 【发布时间】:2018-05-05 01:58:55 【问题描述】:

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

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

在 UI 中引用此选项卡:

如有任何帮助或指导,我们将不胜感激。

【问题讨论】:

您使用的是 BashOperator、PythonOperator、您自己的自定义运算符还是其他什么? 【参考方案1】:

如果您在运算符中使用模板化字段,则从模板化字段中创建的字符串将显示在那里。例如。使用 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)。

【讨论】:

非常感谢。这给了我一个例子。

以上是关于Airflow Jinja 渲染模板的主要内容,如果未能解决你的问题,请参考以下文章

使用 jinja 模板中的 Airflow 连接

在 Airflow 中将 Jinja 模板变量与 BigQueryOperator 结合使用

Airflow Jinja模板无法与自定义操作员一起使用

airflow任务运行抛出jinja2.exceptions.TemplateNotFound

Airflow 中文文档:使用操作器

无法在带有气流的 jinja 模板中使用 python 变量