ETL反模式:测试和验证失败

如果编译成功。” –失业的开发商

建立ETL流程非常容易。建立ETL流程以尽可能快地提供准确的结果要困难得多。现代ETL工具(包括我个人最喜欢的SQL Server集成服务)使创建简单的加载过程异常容易。那’这是一件好事,因为易于理解的前端缩短了从零到第一个结果的时间表。

如此低的准入门槛所带来的挑战是,当加载过程成功时,有些人将停止完善该过程。

ETL反模式:测试和验证失败

在构建ETL流程时,您的第一个成功加载是’t部署前的最后一步。最初的成功只是测试和验证结果的先决条件。加载过程完成而没有错误的事实与应用程序成功编译的事实相同:即使未发现错误,也不会’这并不意味着代码正在执行预期的工作。

有很多方法“successful”ETL加载可能出错:

  • 它可以引入重复数据
  • 可能会误删除数据
  • 它可能会跨越环境(例如从开发人员检索但正在加载到生产环境)
  • 它可能根本不接触任何数据(但是, 快速!)

即使结果正确,也可能仍有定时炸弹在爆炸:

  • 数据集你’一直在开发的数据要比生产数据小得多。您’在投入生产时,很可能会在性能方面发现一些惊喜。
  • 开发数据集太干净了。如果生产中的数据异常不包括您的开发数据,则您可能会发现ETL流程中存在一些泄漏。
  • 逻辑中存在硬编码的值,进入生产时需要手动更改

唐’t跳过验证和测试

使用任何企业ETL工具时– or if you’通过脚本重新创建自己的ETL逻辑– don’不要误以为无错误的数据加载是成功的。数据验证和测试不应’不是可选练习。这些也不应该是事后的想法:测试和验证必须是开发过程的正式部分。

在将数据验证和测试形式化为ETL开发的一部分时,请确保包括以下内容:

  • 回归测试。在加载过程之前捕获数据状态,以便更轻松地与加载后的结果进行比较。
  • 超越简单的行计数。比较前后行计数是衡量数据负载的一种方法,但是它并不能完全验证这些结果
  • 自动化一些关键的验证点。唐’只能依靠数据来确认负载是否按设计工作。无论您使用第三方工具还是创建自己的验证逻辑,都可以通过使用自动化来查看不符合要求的指标来加快某些数据验证过程’要求人来解释。
  • 在数量和质量上,请使用与生产数据尽可能接近的测试数据。如果可能,请使用生产数据的副本(但不要使用 实际 请提供生产数据!)进行测试。如果不是’t可能(由于法律或法规限制,或者在生产数据包含不应复制到测试环境的敏感数据的情况下),’将匿名化或以其他方式构建测试数据集需要额外的工作,但是’麻烦是值得的。
  • 一定还要测试代码升级过程。这将帮助您找到将代码推广到生产环境时应参数化的硬编码值。

关于作者

Tim Mitchell
Tim Mitchell is a 数据架构师和顾问 专门研究摆脱数据痛点的人。 在数据仓库,ETL,报告或以下方面需要帮助 训练?如果是这样, 联系蒂姆 进行30分钟的无义务聊天。

发表评论

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.