Выбор ответа Senior Моделирование: Кимбалл, звезда, SCD обновлено

Лишние версии в SCD 2

Вопрос

Ежедневная загрузка SCD 2 создаёт новую версию почти для каждого клиента, хотя атрибуты почти не меняются. Что вероятнее всего не так?

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

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

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

Коротко

Правильный ответ: Сравниваются технические поля вроде updatedat или loadedat; сравнивать нужно бизнес-атрибуты. Изменение технической колонки выглядит как изменение записи, и каждая загрузка плодит версии.

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

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

Разбор

Изменение технической колонки выглядит как изменение записи, и каждая загрузка плодит версии. Правильно сравнивать список бизнес-атрибутов, удобно через хеш (md5 от конкатенации с разделителем и обработкой NULL). SCD 2 создаёт версию только при изменении. SCD 3 не решает проблему лишних изменений. Генерация нового ключа без изменения данных это как раз ошибка.

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

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