Выбор ответа Junior CDC и инкрементальная загрузка спрашивают часто обновлено

Удаления при инкременте по updated_at

Вопрос

Почему инкрементальная загрузка по updated_at не видит удалённые в источнике строки?

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

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

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

Коротко

Правильный ответ: Удалённой строки в источнике нет, запрос её не вернёт; нужны мягкое удаление, сверка или log-based CDC. Запрос к таблице видит только существующие строки.

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

  1. У удалённых строк updated_at становится NULL, а сравнение с NULL всегда даёт ложь
  2. Удаление в источнике выполняется через TRUNCATE, который не меняет updated_at строк
  3. Удалённой строки в источнике нет, запрос её не вернёт; нужны мягкое удаление, сверка или log-based CDCправильный ответ
  4. Видит, если использовать >= вместо >: строка удаления получает служебную метку, равную текущему водяному знаку

Разбор

Запрос к таблице видит только существующие строки. Решения: источник помечает удаление (deleted_at), периодическая сверка множества ключей между источником и хранилищем, или чтение журнала транзакций, где удаления есть явно. Значение колонки у удалённой строки не прочитать вовсе. >= не помогает.

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

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