首页 > 解决方案 > 从转换中提取行为

问题描述

在实际 ETL 处理之前和之后,我有几个转换都执行类似的功能:

这些步骤是业务需求,并且对于基于文件输入的每个 ETL 过程都是 100% 相同的(除了用于搜索的目录列表和已注册文件的不同数据库表)。维护这个几乎相同过程的 X 个副本(如果必须更改,则更新所有副本似乎不理想)

因此,我创建了一个“骨架”转换来完成所有这些工作,并通过将变量传递到转换位置来“注入”“运行 ETL 过程”部分。这样,“注入”转换不需要知道文件处理步骤,并且文件处理步骤与实际的 ETL 过程分离。

由于我对 PDI 相当缺乏经验,我想知道这些问题通常是如何解决的,以及我的方法是否有用。

标签: etlkettlepentaho-data-integration

解决方案


您的方法符合最佳实践。将已处理的文件移动到存档目录中是可行的方法,并且将状态“使用中”/“已完成”保持在可从外部访问的数据库中非常方便。

传统上,您会在转换参数中而不是在数据库中定义文件名和其他属性。但是,将它们存储在数据库中可以让您从外部访问它,甚至可以制作一个小型 Web 应用程序来显示状态。

您还可以在单​​独的转换中提取预处理和后处理 ETL,并在一个作业中编排整个过程。

我想您没有忘记在其他几个属性中包含文件大小(行数)。并且您有一个命名约定来帮助您在失败的情况下重新运行该过程而不会头疼。

最后,我建议您还跟踪数据库中的日志。只需单击任意位置,选择Properties/ Parameters/ Transformation,定义一个database connection+ table,一个logging interval2 (秒),然后按下SQL按钮。您在底部表格中看到的所有内容Step metrics(输入、输出...)都将保存在数据库中。当您发现上周出现问题时很有用。


推荐阅读