Выбор ответа Middle Моделирование: Кимбалл, звезда, SCD спрашивают часто обновлено
Point-in-time JOIN
Вопрос
Факт продаж нужно соединить с измерением клиента в SCD 2 (valid_from, valid_to, где valid_to исключительная граница). Какое условие верно?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: f.customerid = d.customerid AND f.saledate = d.validfrom AND f.saledate < d.validto. Нужна версия, действовавшая на дату продажи, а полуинтервал [validfrom, validto) не даёт двойных попаданий на границе.
Варианты ответа
f.customer_id = d.customer_id AND d.is_currentf.customer_id = d.customer_id AND f.sale_date >= d.valid_from AND f.sale_date < d.valid_toправильный ответf.customer_id = d.customer_id AND f.sale_date >= d.valid_fromf.customer_id = d.customer_id AND f.sale_date BETWEEN d.valid_from AND d.valid_to
Разбор
Нужна версия, действовавшая на дату продажи, а полуинтервал [valid_from, valid_to) не даёт двойных попаданий на границе. Условие с is_current даст текущие атрибуты, а не исторические. Условие только по valid_from сматчит продажу со всеми версиями, начавшимися до неё, и продажа размножится. BETWEEN включает обе границы, и продажа в день смены версии сматчится с двумя версиями.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Моделирование: Кимбалл, звезда, SCD»
- Аддитивность мер
- Типы таблиц фактов
- Типы SCD
- Data Vault: хабы, линки, сателлиты
- Факт или измерение
- Гранулярность факта
- Лишние версии в SCD 2
- Полуаддитивные меры