Выбор ответа Senior Моделирование: Кимбалл, звезда, SCD обновлено
Лишние версии в SCD 2
Вопрос
Ежедневная загрузка SCD 2 создаёт новую версию почти для каждого клиента, хотя атрибуты почти не меняются. Что вероятнее всего не так?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Сравниваются технические поля вроде updatedat или loadedat; сравнивать нужно бизнес-атрибуты. Изменение технической колонки выглядит как изменение записи, и каждая загрузка плодит версии.
Варианты ответа
- SCD 2 по определению создаёт версию на каждую загрузку, так задумано, чтобы хранить снимки
- Сравниваются технические поля вроде
updated_atилиloaded_at; сравнивать нужно бизнес-атрибутыправильный ответ - Нужно перейти на SCD 3: он хранит только предыдущее значение и не плодит версии
- Суррогатный ключ генерируется заново при каждой загрузке, и это сравнение считает изменением записи
Разбор
Изменение технической колонки выглядит как изменение записи, и каждая загрузка плодит версии. Правильно сравнивать список бизнес-атрибутов, удобно через хеш (md5 от конкатенации с разделителем и обработкой NULL). SCD 2 создаёт версию только при изменении. SCD 3 не решает проблему лишних изменений. Генерация нового ключа без изменения данных это как раз ошибка.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Моделирование: Кимбалл, звезда, SCD»
- Аддитивность мер
- Типы таблиц фактов
- Типы SCD
- Data Vault: хабы, линки, сателлиты
- Факт или измерение
- Гранулярность факта
- Порядок загрузки SCD 2
- Point-in-time JOIN