3

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

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

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

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

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

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

  3. 选择单个记录是不可能的,因为我们不知道正确的值是什么。

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

有什么想法吗?

4

1 回答 1

1

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

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

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

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

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

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

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

于 2015-10-15T02:58:52.617 回答