在实际的ETL处理之前和之后,我有几个转换都具有相似的功能:
这些步骤是业务需求,并且基于文件输入,每个ETL流程都是100%相同的(除了要搜索的目录列表和注册文件的不同数据库表)。维持这个几乎相同的过程的X副本(如果必须更改所有全部,则不理想)
因此,我创建了一个“骨架”转换,可以完成所有这些操作,并通过将变量传递到转换位置来“注入”了“运行ETL过程”部分。这样,“注入”转换就不需要知道文件处理步骤,并且文件处理步骤与实际的ETL过程是分离的。
由于我对PDI完全没有经验,所以我想知道通常如何解决此类问题以及我的方法是否有效。
答案 0 :(得分:1)
您的方法符合最佳实践。将处理过的文件移动到存档目录中是一种方法,将状态“正在使用” /“完成”保持在可从外部访问的数据库中非常方便。
传统上,您应该在转换中而不是数据库中的parameters中定义文件名和其他属性。但是,将它们存储在数据库中后,您可以从外部访问它,甚至可以制作一个小的Web应用程序只是为了显示状态。
您还可以在单独的转换中提取预处理和后处理ETL,并协调工作中的整个过程。
我想您没有忘记在其他两个属性中包括文件大小(行数)。并且您有一个命名约定,可以帮助您在失败的情况下重新运行该过程,而不会感到头疼。
最后,我建议您还跟踪数据库中的日志。只需单击任意位置,选择Properties
/ Parameters
/ Transformation
,定义database connection
+ table
,logging interval
为2(秒),然后按SQL
按钮。
您在底部Step metrics
表中看到的所有内容(输入,输出等)都将保存在数据库中。当您上周发现有问题时很有用。
答案 1 :(得分:-1)
您做对了。猜猜您正在使用映射步骤重用转换的常见部分: