Воздушный поток: выполнение даг выполняется по точному графику - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть DAG с воздушным потоком, который я хочу запускать каждые 15 минут. Эта метка всегда будет обрабатывать данные из предыдущего 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-минутного периода, который совпадает с четверть часа, и время начала которого отстает от даты выполнения на 30 минут?
...