DataWarehouse Duplicate Dimension Row
-
19-09-2019 - |
Вопрос
Мы начинаем загружать DataWarehouse с данными из журналов событий. У нас есть нормальная звездная схема, где ряд в таблице фактов представляет одно событие. Наши таблицы измерений представляют собой типичную комбинацию пользовательского_агента, IP, Ссылки, Страницы и т. Д. Один измерений выглядит следующим образом:
create table referal_dim(
id integer,
domain varchar(255),
subdomain varchar(255),
page_name varchar(4096),
query_string varchar(4096)
path varchar(4096)
)
Где мы автогенерируем удостоверение личности, чтобы в конечном итоге присоединиться к таблице фактов. Мой вопрос: какой способ лучше всего определить дублирующие записи в нашем процессе массовой нагрузки? Мы загружаем все записи для файла журнала в Temp Tables, прежде чем выполнять фактическую вставку в постоянный магазин, однако идентификатор просто автоматически включен, поэтому две идентичные DIM-записи с двух дней будут иметь разные идентификаторы. Будет ли создать хэш столбцов значения подходящим, а затем пытаться сравнить это? Похоже, что попытка сравнить в каждом столбце значения была бы медленной. Есть ли лучшие практики для такой ситуации?
Решение
Целое число автоматического приема для суррогатного PK в порядке, но (по мнению г-на Кимбалла) таблица измерений также должна иметь естественный ключ. Итак, хэш NaturalKey
столбец будет в порядке, а также Status
Столбец для «текущего» или «истек» может быть полезен для обеспечения SCD типа 2.