【问题标题】:Handling Duplicates in Data Warehouse处理数据仓库中的重复项
【发布时间】:2016-01-12 18:31:36
【问题描述】:

我正在通过以下链接处理数据仓库中的数据质量问题。

http://www.kimballgroup.com/2007/10/an-architecture-for-data-quality/

" 响应质量事件 我已经说过,每个质量屏幕都必须决定抛出错误时会发生什么。选择是:1) 停止进程,2) 将违规记录发送到暂挂文件以供以后处理,以及 3) 仅标记数据并将其传递到管道中的下一步。 第三个选择是迄今为止最佳的选择。 "

在某些维度提要(如客户列表)中,有时我们会两次获得同一个客户(两条记录在某些属性上存在差异)。在这种情况下,最好的解决方案是什么?

  1. 我不想拒绝这两条记录(因为这意味着不完整的客户数据)。

  2. 源系统修复问题的速度非常慢,所以我们每天都会遇到同样的问题。这意味着手动修复问题也很困难,因为它必须每天都进行(我们每天都会收到客户名单)。

  3. 无法选择单个记录,因为我们不知道正确的值是多少。

  4. 在我们的仓库中同时拥有这两个记录意味着我们的连接被中断。由于同一 ID 的两行,事实表行加倍(在连接中)。

有什么想法吗?

【问题讨论】:

  • 将违规记录发送到挂起文件以供以后处理,并使用 GUI 修复违规记录似乎是您的最佳选择。

标签: etl data-warehouse dimensional-modeling data-quality


【解决方案1】:

在这种情况下最好的解决方案是什么?

您的场景有很多排列和组合。最大的问题是“不同的细节是有效还是无效?因为这会改变你处理它们的方式。

有效数据示例: 记录 1 的 John Smith 住在 Main St 12,记录 2 的 John Smith 住在 Main St 45。这是有效的,因为 John Smith 在第一条记录和第二条记录之间移动了地址.这是有效数据的示例。如果数据有效,您可以选择创建渐变维度并跟踪更改(结束日期旧记录、开始日期新记录)。

无效数据示例: 但是,如果数据无效(例如,您的系统以某种方式错误地创建了重复键),那么您的选项会有所不同。我怀疑您是否想公开这些数据,因为它目前无效,而且正如您所指出的,您无法确定哪个重复记录是“正确的”。但您不希望整个负载失败/停止。

在这种情况下,您通常会:

  1. 将这些重复的行推送到“隔离”区域
  2. 向有能力解决此问题的人员发出警报
  3. 可以选择随机选择其中一条记录作为“黄金详细信息”记录(这样您的系统仍会与总数相匹配),并在记录上标记一个属性,说明它是“无效的”并且正在调查中。

Kimball 试图说明的观点是,选项 1 是不可取的,因为它会暂停整个系统以应对可能发生的错误,选项 2 并不理想,因为这意味着您的聚合将与源系统不同步,因此选项 3 是最理想的,因为它仍然会导致数据修复,但不会停止过程或数据的使用(但它会提醒用户此数据是可疑的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多