如果我在表输入步骤中使用连接,这是使用 ETL 的好方法吗?

Posted

技术标签:

【中文标题】如果我在表输入步骤中使用连接,这是使用 ETL 的好方法吗?【英文标题】:Is it a good way of working with ETL, if I use joins in the table input step? 【发布时间】:2015-11-15 10:07:23 【问题描述】:

我想知道在我的转换中的 表输入步骤 中使用联接(在我的情况下,我使用 3 个联接来获取所需值)是否是使用 ETL 的正确方法。或者,还有更好的方法?感谢您的帮助。

【问题讨论】:

【参考方案1】:

通常情况下:答案取决于您的环境。例如,如果您有一个快速变化的源系统和大量持续时间较长的转换,则首先将所需信息复制到暂存数据库中可以帮助您通过所有涉及的转换创建可重现的结果。在这种情况下,从源系统直接连接表可能会为依次运行的两个转换创建不同的结果。

如果您有一个时间框架,您的源系统不会发生太大变化或根本没有变化 - 或者如果您只需要在这个单一的转换中获得该信息 - 加入表可能完全没有问题。

从技术的角度来看,没有什么可反对连接的(实际上存在 for 连接的参数,尤其是性能)。可理解性是另一回事,在这里你的特定环境也很重要。 ETL 流程通常没有很好的文档记录,并且在几年前由其他人创建的转换可能很容易,也可能完全是痛苦的。如果您的联接从技术角度来看是有意义的,并且您从一致的来源获取数据,我不明白您为什么不应该使用它们。它们应该总是比 ETL 转换中的查找步骤快得多。

【讨论】:

感谢您的解释

以上是关于如果我在表输入步骤中使用连接,这是使用 ETL 的好方法吗?的主要内容,如果未能解决你的问题,请参考以下文章

在使用KETTLE工具进行ETL数据时,如果输入文本文档的路径是变化的,该如何处理? 文档路径随系统日期变化

在作业 ETL-Load 中执行步骤 ETL-file-load 时遇到错误

使用 ETL 元数据注入的数据透视

解决Kettle ETL数据乱码

使用 AWS EMR 的 ETL

在 ETL 的转换步骤中使用多少临时/临时表?