如何计算 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= 读取的文件的校验和].
谢谢
我们如何计算 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= 读取的文件的校验和].
谢谢