ETL反attern:未能测试和验证

如果它编译,它可以工作。” –失业开发商

建立ETL流程非常容易。建立尽快提供准确结果的ETL进程基本上更加困难。现代ETL工具(包括我的个人收藏,SQL Server Integration Services)使其易于创建简单的负载过程。那’是一件好事,因为易于理解的前端缩短了从零到第一个结果的时间表。

这种低级进入的挑战是,当负载过程成功时,一些人将停止改进过程。

Etl.反attern:未能测试和验证

在构建ETL进程时,您的第一个成功的负载是’在部署之前的最后一步。第一个成功只是测试和验证结果的先决条件。没有错误完成的负载过程的事实类似于成功的应用程序编译:即使没有找到错误,那就不会发现错误’t意味着代码正在做出意图。

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

  • 它可以引入重复数据
  • 它可能错误地删除数据
  • 它可能会在环境中交叉(例如从DEV检索,但加载到生产)
  • 它可能无法触摸任何数据(但嘿,它跑了 真的 fast!)

即使在结果是正确的情况下,也可能有时间炸弹等待引爆:

  • 数据设置了’一直在开发的基本上比生产数据小。你’在搬到生产时,重新发现在表现方面会发现一些惊喜。
  • 开发数据集太干净。如果在生产中有数据异常,您的开发数据不包括,您可能会发现ETL流程中的一些泄漏。
  • 逻辑中存在硬编码值,在移动到生产时需要手动更改

大学教师’T跳过验证和测试

使用任何企业ETL工具时– or if you’通过手工通过脚本创建自己的ETL逻辑– don’被愚弄思考无错误的数据负载是成功的。数据验证和测试应该’t是可选的练习。这些人也不应该是追求事故:测试和验证需要成为发展过程的正式部分。

将数据验证和测试正式地作为ETL开发的一部分时,请务必包含以下内容:

  • 回归测试。在负载过程之前捕获数据的状态,以便更容易地与负载后结果进行比较。
  • 超越简单的行计数。比较行阶段的比较是数据负载的一个度量,但它几乎没有完全验证这些结果
  • 自动化一些关键验证点。大学教师’T仅依赖于眼睛,确认负载是设计的。无论您是使用第三方工具还是创建自己的验证逻辑,您就可以使用自动化查看Don的指标加快一些数据验证过程’需要人类解释。
  • 在体积和质量方面使用尽可能接近的测试数据。如果可能,请使用生产数据的副本(但不是 实际的 生产数据,请!)进行测试。如果这是一个’可能(由于法律或监管限制,或者在生产数据包含不应复制到测试环境的敏感数据的情况下)’LL需要额外的工作来匿名或以其他方式构建测试数据集,但它’ll值得麻烦。
  • 务必测试代码促销过程。这将有助于您找到在将代码推广到生产时应参数化的硬编码值。

关于作者

Tim Mitchell
Tim Mitchell is a 数据架构师和顾问 谁专注于摆脱数据疼痛点。 需要帮助数据仓库,ETL,报告或 训练?如果是这样的话, 联系Tim. 没有义务30分钟聊天。

发表评论

本网站使用AkisMet减少垃圾邮件。 了解如何处理评论数据.