【问题标题】:Apache Airflow: Pass variable in jinja includeApache Airflow:在 jinja 中传递变量包括
【发布时间】:2022-01-16 08:22:32
【问题描述】:

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

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 变量?

【问题讨论】:

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


    【解决方案1】:

    您可以使用 f-string 格式并添加一对额外的花括号,如下所示:

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

    这会以所需的方式呈现:

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-29
    • 2015-09-27
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多