【发布时间】:2012-10-08 11:54:29
【问题描述】:
我们的组织目前正在构建一个新的数据仓库。我们实际上可以使用从 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
...
【问题讨论】:
-
您认为这两种来源中哪一种更可靠,为什么?当您找到这两个问题的答案时,您应该能够实现您在数据仓库应用程序中遵循的相同推理。当您确信 Mary Jane 和 Mary Smith 是同一个人,但不同的数据库可能以任一姓名引用她时,您可以将一个姓名存储为另一个姓名的别名,这样您就可以在两个姓名下找到同一个人.当 Jane Smith 成为 James Smith 然后与 Jones 女士结婚并使用她的姓氏时,此别名功能也可能会变得很方便。
标签: sql data-warehouse business-intelligence