Airflow 气流:如何将模板/宏传递到配置单元脚本?

Airflow 气流:如何将模板/宏传递到配置单元脚本?,airflow,Airflow,我需要参数化要从Airflow调用的配置单元脚本2次: 当前日期为{ds} 前一个日期{昨天{ds}或{{macros.ds_add(ds,-1)} 我试过: my_task = HiveOperator( ..., params = { 'date': "{{ ds }}" } 在my hive.hql中: SELECT {{ params.date }} 当前可执行代码为: SELECT {{ ds }} 它是my param的文字替换,模板未展

我需要参数化要从Airflow调用的配置单元脚本2次:

  • 当前日期为{ds}
  • 前一个日期{昨天{ds}或{{macros.ds_add(ds,-1)}
  • 我试过:

    my_task = HiveOperator( ...,
        params = {  'date': "{{ ds }}"      }
    
    在my hive.hql中:

    SELECT {{ params.date }}
    
    当前可执行代码为:

    SELECT {{ ds }}
    
    它是my param的文字替换,模板未展开。 我需要:

    SELECT '2020-11-11'
    

    如何修复它?

    由于
    hql
    参数在中,您可以直接在
    .hql
    文件中使用
    {{ds}

    因此,您的操作员将:

    my_task = HiveOperator( hql='query.hql', ...)
    
    query.hql
    将是:

    SELECT *
    FROM table
    WHERE date < {{ ds }} 
    
    选择*
    从桌子上
    其中日期<{ds}
    
    您也可以直接在运算符中写入查询,如下所示:

    my_task = HiveOperator( hql='SELECT * FROM table WHERE date < {{ ds }} ', ...)
    
    my_task=HiveOperator(hql='SELECT*FROM date<{{ds}}',…)