Выбор ответа Senior SQL дата-инженера обновлено

Опоздавшие события и инкрементальный пересчёт

Вопрос

События приходят с опозданием до 3 суток. Ежедневная агрегация пересчитывает только вчерашний день. Что произойдёт и как исправить?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Опоздавшие события не попадут в агрегаты своих дней; пересчитывать окно последних 3-4 дней. Если считать по времени события, опоздавшее событие относится к своему дню, а этот день уже посчитан.

Варианты ответа

  1. Опоздавшие события не попадут в агрегаты своих дней; пересчитывать окно последних 3-4 днейправильный ответ
  2. Ничего страшного: опоздавшие события попадут во вчерашний день, и сумма за период сойдётся
  3. Нужно отбрасывать опоздавшие события на входе, чтобы не менять уже опубликованные цифры
  4. Нужно каждую ночь пересчитывать всю историю агрегатов, это единственный надёжный способ

Разбор

Если считать по времени события, опоздавшее событие относится к своему дню, а этот день уже посчитан. Окно пересчёта с запасом на максимальное опоздание исправляет это при умеренной цене. Относить опоздания к вчерашнему дню значит искажать метрику. Удалять данные нельзя. Полный пересчёт решает, но дорог на больших объёмах.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.