python - Apache Airflow : Pass variable in jinja include

标签 python google-bigquery jinja2 airflow google-cloud-composer

我目前在 Apache Airflow 中使用以下语句

s10_test_load = bigquery.BigQueryInsertJobOperator(
    task_id="10_test_load",
    configuration={
            "query": {
                        "query": "{% include './scripts/10_test_load.sql' %}",                           
                        "useLegacySql": False,
            },                  
    },
)   

该语句工作正常,正在从脚本文件执行 sql。

我想动态使用变量中的文件名,如下所示

file_name='./scripts/10_test_load.sql'

s10_test_load = bigquery.BigQueryInsertJobOperator(
    task_id="10_test_load",
    configuration={
            "query": {
                        "query": "{% include file_name %}",                          
                        "useLegacySql": False,
            },                  
    },
)       

如何在 jinja include 中传递 python 变量?

最佳答案

您可以使用 f 字符串格式并添加一对额外的大括号,如下所示:

file_name='bq/queries/10_test_load.sql'

t2 = BigQueryInsertJobOperator(
   task_id="10_test_load",
    configuration={
        "query": {
            "query": f"{{% include '{file_name}' %}}",                          
            "useLegacySql": False,
        },                  
    },             
)

这会以所需的方式呈现: enter image description here

关于python - Apache Airflow : Pass variable in jinja include,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70324891/

相关文章:

python - Python中的二进制缓冲区

python - 使用 PIL 或 Opencv 校正图像亮度的方法是什么?

sql - 从某个 subreddit 获取多个用户的所有评论 - Reddit 数据集

sql - 如何在 SQL 中获取 GROUP BY 之后的不同计数?

python - webapp2 + jinja2 : How can i get uri_for() working in jinja2-views

python - 在 Jinja2 中迭代同一个列表两次?

jquery - python:将嵌套字典转换为类似 JSON 的格式

python - 我的 Python 3 模块应该放在哪里?

python - 获取带有条件的数据框的下一行

google-bigquery - BigQuery 中的 CHAR() 或 ASCII() 函数?