首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ETL框架处理数据之前,是否应该对数据进行预处理?

在ETL框架处理数据之前,是否应该对数据进行预处理?
EN

Software Engineering用户
提问于 2019-02-03 22:04:02
回答 2查看 75关注 0票数 1

因此,我在工作中与我的一位同事讨论了编码问题,并提到了我是如何处理一个项目的,在这个项目中,我需要在处理之前将提供的数据转换成标准化的格式(应用业务规则、验证等)。他建议,数据标准化应该是一个完全独立的步骤,甚至是一个单独的程序,在这个程序中,信息被处理成标准化的格式,然后保存或流到下一个步骤。

当我把它看作是一种不必要的分离时,如果我遵循一个微服务体系结构,那么分离可能是有意义的。想知道什么是最佳实践

EN

回答 2

Software Engineering用户

发布于 2019-02-03 23:03:20

您合并了两个问题:在ETL和steps步骤之前执行的标准化是否分别执行?以下是一些帮助你的想法:

  • 为了以已知格式处理数据,数据标准化是ETL (提取、转换、加载)过程的一部分。因此,不需要在处理ETL框架之前执行此操作,除非其他目的也需要标准化。
  • 如果标准化可以在一次传递中与转换的其余部分一起执行,那么在两个步骤中分离转换可能是不可取的(以便在转换操作完全可以在内存中完成时避免额外的写入开销)。
  • 然而,如果标准化和处理不能在一个步骤中实现(例如,如果一个是聚合,另一个是聚合的转换,而不是同一个记录上的两个进程),那么将两者作为ETL链中的一个单独步骤来实现可能是有用的:这将促进并行处理的分发(例如,一个节点正在进行标准化处理,并且一旦准备就绪,就将中间数据传递到下一个节点)。其结果是更快的吞吐量(即使所需的处理能力相同)。例如,不按顺序处理批处理(第一步的2小时+第二步的1小时=整个3小时),然后您可能有一个数据管道(第一步的2小时,第一步的第一次记录在2分钟=2小时+2分钟的总开销后可用)。
票数 2
EN

Software Engineering用户

发布于 2019-02-04 12:25:49

我可以想到两个潜在的原因,为什么让“转换成标准化格式”这一单独的步骤是有意义的:

  • 这第一步可能会失败,因为输入数据的质量不够好。因此,ETL进程的用户可能希望首先运行转换,检查结果,然后更正输入数据并重复前一步,直到输入数据能够完美地转换为止。
  • 第一步的输出可以用于“标准业务处理”以外的其他流程,用户可以“动态地”决定他们将对结果做什么。

注意:这是用户的观点。如果您在一个或两个程序中实现这两个步骤,则完全取决于您。使用一个程序可能更简单,以防您希望始终一个接一个地执行这两个步骤,以防第一步没有失败。使用两个程序可能更简单,如果您希望它们独立地扩展为并行处理。

然而,这是一个灰色地带,有时只是品味的问题。您可以设计一个具有选项的程序,只处理第一步或第二步,也可以设计带有附加控制逻辑的两个程序,这样它们就可以“一体”运行。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/386566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档