如何计算 Pentaho 中整个文件的校验和?

How to compute checksum of entire file in Pentaho?

我们如何计算 Pentaho 中 "entire" 文件数据的校验和?

我知道我们可以使用 "Add a checksum" 函数(但它 returns 校验和值 "per row" 用于我的 CSV 文件输入)和 "Calculator" 函数(但它 returns 空值或零值作为校验和 "per row" 我的 CSV 文件输入)...

相反我想要整个文件数据的校验和,而不是每个行。我们怎样才能做到这一点?

谢谢

您可以像这样通过 "Modified JavaScript Value" 步骤使用 Java 函数("filename" 是包含文件路径的列)

var md5_hash = '';
file = new Packages.java.io.File(filename);  
fileInputStream = new Packages.java.io.FileInputStream(file);
md5_hash = Packages.org.apache.commons.codec.digest.DigestUtils.md5Hex(fileInputStream);
fileInputStream.close();

或者,使用 'load file data in memory' 将整个文件加载到一行中,对其应用校验和,然后使用常规数据流根据文件名执行笛卡尔或流查找。

最后,我能够计算出整个文件的校验和。

我在 Java 中使用了“User Defined Class”步骤和 java.security.MessageDigest class 来计算和 return 使用 [=12= 读取的文件的校验和].

谢谢