Двойные строки измерений в хранилище данных - PullRequest
2 голосов
/ 12 ноября 2009

Мы начинаем загружать хранилище данных с данными из журналов событий. У нас есть нормальная схема типа «звезда», где строка в таблице фактов представляет одно событие. Наши таблицы измерений являются типичной комбинацией user_agent, ip, referal, page и т. Д. Одна таблица измерений выглядит следующим образом:

create table referal_dim(
  id integer,
  domain varchar(255),
  subdomain varchar(255),
  page_name varchar(4096),
  query_string varchar(4096)
  path varchar(4096)
)

Где мы автоматически генерируем идентификатор, чтобы в итоге соединиться с таблицей фактов. Мой вопрос: каков наилучший способ идентифицировать дубликаты записей в процессе массовой загрузки? Мы загружаем все записи для файла журнала во временные таблицы перед фактической вставкой в ​​постоянное хранилище, однако идентификатор просто увеличивается автоматически, поэтому две одинаковые записи dim за два дня будут иметь разные идентификаторы. Будет ли уместным создать хэш столбцов значений и затем попытаться сравнить их? Кажется, что попытка сравнения в каждом столбце значений будет медленной. Есть ли лучшие практики для такой ситуации?

1 Ответ

6 голосов
/ 13 ноября 2009

Целое число с автоматическим приращением для суррогатного ПК в порядке, но (согласно мистеру Кимбаллу) таблица измерений также должна иметь естественный ключ. Таким образом, столбец хеша NaturalKey будет в порядке, также может быть полезен столбец Status для «current» или «expired», чтобы разрешить SCD типа 2.

...