我们开始使用事件日志中的数据加载数据仓库。我们有一个普通的星型模式,其中事实表中的一行代表一个事件。我们的维度表是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。创建值列的哈希是否合适,然后尝试比较?似乎尝试在每个值列上进行比较会很慢。对于这种情况,有没有最佳做法?
答案 0 :(得分:6)
代理PK的自动递增整数是可以的,但是(根据Kimball先生的说法)维度表也应该有一个自然键。因此,散列NaturalKey
列将按顺序排列,“当前”或“过期”的Status
列也可用于允许SCD类型2。