С помощью Airflow я хочу выполнить запрос, который возвращает все данные за указанный период на основе ds. DS всегда моя дата окончания, но дата начала может меняться. Это может быть, например, неделя или целый месяц. Чтобы справиться с этим, я хочу создавать различные даг с графиком, который выполняется ежемесячно или еженедельно. Все идет нормально. Тем не менее, я сталкиваюсь с проблемами, когда хочу передать start_dt
в моем шаблоне sql У меня есть это:
where report_dt between '{{ params.report_start_dt }}' AND '{{ds}}'
В ежемесячном отчете я хочу передать отчет start_dt как например:
monthly_profile = HiveOperator(
hql= mycode.sql
params={**args,
'report_start_dt': '{{ (execution_date.replace(day=1)).strftime("%Y-%m-%d") }}',
},
task_id='monthly_profile',
)
Однако это не удается, так как шаблон, я думаю, не обрабатывает вложенные переменные.
Предоставленный шаблон:
where event_dt between {{ (execution_date.replace(day=1)).strftime("%Y-%m-%d") }} AND '2019-07-31'
Я видел этот пост: Воздушный поток: передать {{ds}} в качестве параметра для PostgresOperator , но, по моему мнению, я делаю То же самое, но для гивеоператора.
Что я делаю неправильно и как я могу добиться того, что мне нужно, помня, что я также хочу сделать это с простым смещением ds с 7 днями для моего еженедельного бежать?