Airflow 如何使用 Jinja 读取 JSON 输入参数,其中在参数中间包含“-”

Airflow how to read JSON Input Params which includes '-' in the middle of param using Jinja

我是 运行 我的 DAG,配置 JSON,其中包含参数 -,例如market-name 当我尝试使用以下 Jinja 模板阅读它时:

path_prefix = f"market={{{{ params.market-name }}}}/configuration"

我收到以下错误:

jinja2.exceptions.UndefinedError: 'dict object' has no attribute 'market'

在我看来,Jinja 没有识别完整的参数名称 market-name 而是获取 - 之前的第一部分,即 market 。

我的问题:

  1. Jinja 是否支持在参数中间使用 -(例如 market-name),还是我应该从一开始就避免它并使用 market_name 代替?
  2. 如果 Jinja 不支持在参数中间有一个 -
  1. 我应该使用 {{ params.market-name }} 而不是 {{{{ params.market-name }}}} 吗?

这不是 Airflow 错误。我在这个 issue 中报告了它,这是一个来自 Jinja/Python 的问题。

我在 Jinja 中找不到任何解释它的官方文档,但一些报告提到 Jinja 使用 python 解释器的标识符(请参阅此 answer and this answer)。最好将此问题报告给 Jinja 添加有关它的文档。

您可以避免使用 -