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 。
我的问题:
- Jinja 是否支持在参数中间使用
-
(例如 market-name
),还是我应该从一开始就避免它并使用 market_name
代替?
- 如果 Jinja 不支持在参数中间有一个
-
- 我应该转义
market-name
吗?
- 我该如何逃脱?
- 我应该使用
{{ params.market-name }}
而不是 {{{{ params.market-name }}}}
吗?
这不是 Airflow 错误。我在这个 issue 中报告了它,这是一个来自 Jinja/Python 的问题。
我在 Jinja 中找不到任何解释它的官方文档,但一些报告提到 Jinja 使用 python 解释器的标识符(请参阅此 answer and this answer)。最好将此问题报告给 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 。
我的问题:
- Jinja 是否支持在参数中间使用
-
(例如market-name
),还是我应该从一开始就避免它并使用market_name
代替? - 如果 Jinja 不支持在参数中间有一个
-
- 我应该转义
market-name
吗? - 我该如何逃脱?
- 我应该使用
{{ params.market-name }}
而不是{{{{ params.market-name }}}}
吗?
这不是 Airflow 错误。我在这个 issue 中报告了它,这是一个来自 Jinja/Python 的问题。
我在 Jinja 中找不到任何解释它的官方文档,但一些报告提到 Jinja 使用 python 解释器的标识符(请参阅此 answer and this answer)。最好将此问题报告给 Jinja 添加有关它的文档。
您可以避免使用 -
。