PDI - 检查字段的数据类型

PDI - Check data types of field

我正在尝试创建一个转换读取 csv 文件并检查该 csv 中每个字段的数据类型。

像这样:标准字段 A 应该是 string(1) 字符,字段 B 是 integer/number.

而我想要的是 check/validate:如果 A 不是 string(1),则如果 B 不是 integer/number,则也设置 Status = Not Valid。然后所有状态为 Not Valid 的文件将被移动到错误文件夹。

我知道我可以使用 Data Validator 来做到这一点,但如何移动具有该状态的文件?我找不到任何步骤。

您可以像 中那样做。读取后使用 Group by 为每个文件设置一个标志。但是,这次你不能在一次转换中完成,你应该使用一个作业。

您的用例在您的 PDI 发行版随附的示例中。示例位于文件夹 your-PDI/samples/jobs/run_all 中。打开 Run all sample transformations.kjb 并用您的逻辑替换 Get Files - Get all transformations.ktrFilter 2,其中包括 Group by 每个文件一个状态,而不是每行一个状态。

如果您想知道为什么需要如此复杂的逻辑来完成这样的任务,请记住 PDI 同时启动转换的所有步骤。这是它的强大功能,但您不知道是否必须在处理每一行之前移动文件。

或者,您有 的快速但肮脏的解决方案。通过类型检查更改过滤器行,并通过 Process File/Move

更改最终的 Synchronize after merge

最后的建议:不要使用 Data validator 检查类型,这本身就是一个很好的解决方案,您可以使用 Javascript 之类的 there。如果需要在长运行.

上进行维护,则更加灵活

可以循环读取文件,

添加如下步骤,

数据验证后,您可以过滤具有负结果(不匹配)的行 -> 添加常量值步骤和错误 = 1 -> 为默认值为 0 的错误字段添加设置变量步骤。

转换完成后,您可以在父作业中添加简单的评估步骤来检查 ERROR 变量的值。

如果它的值为 1,则将文件移至其他位置....

希望对您有所帮助。