我们的组织目前正在构建一个新的数据仓库。我们实际上可以使用从 DW 社区借来的一些技术,例如 ETL 处理来整合数据、“kimbal”风格的非规范化维度等。总体而言,数据仓库对我们的组织来说仍然是相当新的,但我们我们正在学习这些概念。
问题:我们有多种数据来源,而事实来源往往相互矛盾。例如,我们有一个 Master Person Index,我们在 ETL 期间使用基于分数的匹配算法将入站人员与现有人员进行匹配,因此即使入站记录不完全匹配,我们也可以根据其他事物进行评分比如邮政编码半径。
问题来了:处理来自两个或多个来源的多个版本的事实的标准方法是什么?
我了解数据仓库的主要思想之一是保留我们正在做的任何事实的运行历史。当记录由一个入站来源维护时,这一切都很好,我们会随着时间的推移保留该事实的历史。当两个不同的来源可能每天更新有两个不同的事实时,就会出现问题,例如来源 A 说名字是 Mary Smith,来源 B 说名字是 Mary Jane 每天都在改变这个值!基于匹配算法,我们确信它是同一个人,但由于我们的历史样式表,它基本上每天都在两个名字之间来回切换,因为它从每个数据源读取名字作为“变化”。
一个示例表:
first_name last_name source last_updated
Mary Smith A 5/2/12 1:00am
Mary Jane B 5/2/12 2:00am
Mary Smith A 5/3/12 1:00am
Mary Jane B 5/3/12 2:00am
Mary Smith A 5/4/12 1:00am
Mary Jane B 5/4/12 2:00am
...