Выбор ответа Senior dbt спрашивают часто обновлено
Опоздавшие строки в инкрементальной модели
Вопрос
Инкрементальная модель фильтрует updated_at > max(updated_at) из своей таблицы. Источник иногда загружает строки с задержкой, и их updated_at меньше уже обработанного максимума. Что произойдёт и как исправить?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Такие строки не попадут в модель никогда; нужно окно с запасом (= max - интервал) и uniquekey. Фильтр по максимуму предполагает, что данные приходят строго по порядку меток.
Варианты ответа
- Они попадут в следующий запуск автоматически, потому что dbt отслеживает необработанные строки источника
- dbt выдаст ошибку о нарушении порядка меток, и запуск упадёт, пока не сделать full-refresh
- Такие строки не попадут в модель никогда; нужно окно с запасом (
>= max - интервал) иunique_keyправильный ответ - Нужно убрать
unique_key: тогда dbt вставляет строки без сравнения, и опоздавшие появятся
Разбор
Фильтр по максимуму предполагает, что данные приходят строго по порядку меток. Опоздавшие строки оказываются ниже границы и пропускаются навсегда. Окно пересчёта с запасом снова захватывает последние дни, а unique_key превращает повтор в обновление. Ошибки dbt не выдаст. Удаление ключа приведёт к дублям, а не к появлению пропущенных строк.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.