2

我们开始使用来自事件日志的数据加载数据仓库。我们有一个普通的星型模式,其中事实表中的一行代表一个事件。我们的维度表是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)
)

我们自动生成 id 以最终加入事实表。我的问题是:在我们的批量加载过程中识别重复记录的最佳方法是什么?在实际插入持久存储之前,我们将日志文件的所有记录上传到临时表中,但是,id 只是自动递增的,因此两天的两个相同的暗记录将具有不同的 id。创建值列的哈希是否合适,然后尝试对其进行比较?似乎尝试在每个值列上进行比较会很慢。有没有针对这种情况的最佳实践?

4

1 回答 1

6

Auto-increment integer for a surrogate PK is OK, but (according to Mr. Kimball) a dimension table should also have a natural key too. So a hash NaturalKey column would be in order, also a Status column for "current" or "expired" may be useful to allow for SCD type 2.

于 2009-11-13T03:58:54.543 回答