在什么情况下我必须在informatica powercenter中使用转换而不是sql查询?

问题描述 投票:0回答:2

如果我可以通过写SQL来实现,是不是就不需要使用转换组件了?我想知道在什么情况下使用转换比 sql 查询更好?我听说将转换逻辑转换为sql查询更有效,是吗?谢谢你的回答!

etl informatica informatica-powercenter
2个回答
0
投票

是的,你说得对。在数据库中运行的 SQL 通常比 Informatica 转换更快。

以下是上述陈述的理由 -

  1. 数据库经过优化,可以有效地处理/转换大数据 - 因此它们是执行任何数据库操作的最佳选择。
  2. 一些 informatica 转换(agg、lkp、rank、srt)从源获取数据,将其存储在内存/空间中,然后进行转换/查找并加载到目标中。所有这些步骤都需要时间和 CPU/IO。当然,Infa 转换需要更多时间来处理数据。
  3. 减少 SQL DB 中的记录数或列数比使用 informatica 全部转换要有效得多。

但在某些情况下你不能真正使用数据库转换/SQL -

  1. 当您必须加入多个不同的数据库时,当您想要从文件中读取、从平面文件中查找、进行持久查找等时。
  2. 当您进行一些棘手的转换(例如 SQL 转换来执行某种循环、XML、cobol、规范化器等)时。
  3. 当您有非常复杂的、多个表相关的逻辑时,需要复杂的 SQL,有时无法在 SQL 中实现。在这种情况下,SQL 变得低效且不可维护。
  4. Informatica 是一种 ETL 工具,可以从各种源(例如来自许多数据库的文件、cobol、xml、xls、表/视图)读取、转换并加载到不同类型的目标中。它旨在用于 ETL 目的,当您尝试实现和维护复杂的业务逻辑时,这会让您的生活变得更轻松。大型 SQL 通常很难维护...

总而言之,是的,在 80% 的情况下你的陈述是正确的,但总有 20% 的例外,我们需要在决定之前做一些分析...


0
投票

确实,运行 SQL 通常更快。但这需要资源。考虑重负载的交易系统。它通常需要在几毫秒内处理大量交易。

现在,如果您运行一些复杂的计算来获取跨多个类别(区域、产品等)的多个 KPI(YtY、MtM 等),这会非常消耗资源,并且会影响系统性能。如果有可能的话。

现在,Informatica(以及任何其他 ETL 工具)将让您能够从源读取数据并处理所有计算,而不会影响源服务器。只是读取,这对于数据库服务器来说通常不是什么问题。

这是您需要组合多个不同源而不仅仅是单个数据库的其他情况。

© www.soinside.com 2019 - 2024. All rights reserved.