气流:按正确的时间表执行dag运行

时间:2019-04-16 15:01:51

标签: airflow

我有一个气流DAG,我想每15分钟运行一次。该dag始终会处理前15分钟(从半小时前开始)的数据。我希望处理时间的边界与四分之一小时完全一致。

因此,在我的一个SQL查询中,我想要一个模板化的WHERE子句,例如

  WHERE
    event_timestamp >= TIMESTAMP('{{ (execution_date - macros.timedelta(minutes=30)).strftime("%Y-%m-%d %H:%M:%S") }}') AND
    event_timestamp <  TIMESTAMP('{{ (execution_date - macros.timedelta(minutes=15)).strftime("%Y-%m-%d %H:%M:%S") }}')

问题在于execution_date对象与每个季度的时间都不完全对齐。我期望如此,因为这是我安排DAG的方式:

default_dag_args = {
    'start_date': dt.datetime(2019, 4, 8),
    ...
}

 models.DAG(
        'my_dag',
        schedule_interval=dt.timedelta(minutes=15),
        default_args=default_dag_args) as dag:

我有两个问题

  1. 为什么execution_date与每个季度的时间不完全一致?
  2. 我如何实现编写SQL查询的期望行为,该查询从15分钟的时间中选择与四分之一小时对齐的时间,并且其开始时间比execute_date落后30分钟?

0 个答案:

没有答案