3

我正在研究一个数据仓库,我试图弄清楚如何最好地验证来自我们的数据清理(规范化)数据库的数据是否正确地进入我们的数据集市。我已经进行了一些搜索,但到目前为止的结果更多地涉及确保诸如约束之类的事情以及您需要在 ETL 过程中进行数据验证(例如日期有效等)。维度非常简单,因为我可以轻松地利用主键或编写一个非常简单且可验证的查询来获取数据。事实表更复杂。

有什么想法吗?我们试图让主题导出变得非常容易,以运行几个查询,查看来自数据清理数据库和数据集市的一些数据,并直观地比较两者以确保它们是正确的。

4

2 回答 2

4

您可以通过在别处实施相同数据操作的简化、精简子集并比较结果来测试事实表负载。

您至少计算两次相同的总数、计数或其他数字。一次来自事实表本身,在它完成加载之后,一次来自其他来源:

  • 直接获取源数据,控制源和事实之间的所有清理步骤
  • 已知正确的源系统报告
  • 等等

如果您在数据库中执行此操作,则可以将每个测试编写为一个查询,如果一切正确,则不返回任何记录。返回的任何记录都是例外: (y,z) 的 x 计数不匹配。

有关更多建议,请参阅 ConcernedOfTunbridgeWells 的这篇出色的帖子

于 2010-03-11T05:55:48.120 回答
0

尽管如果您进行大量清理或转换,它有一些缺点和潜在问题,但我发现您可以通过从星型模式重新生成输入文件来往返输入文件。然后简单地将输入文件与输出文件进行比较。可能需要一些按摩才能使它们匹配(一个是左衬垫,另一个是右衬垫)。

通常,我有一个程序使用与 ETL 相同的布局并进行比较,忽略字段内的对齐。此外,可能必须对文件进行排序 - 我使用了命令行排序。

如果您的 ETL 进行了错误的转换并且您的转换不正确,那么这种方法仍然可能无法显示 DW 中的所有问题,而且我不会声称它具有完整的覆盖范围,但它是一个很好的回归对每个负载进行单元测试。

于 2010-03-22T03:21:54.863 回答