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.ktr
的 Filter 2
,其中包括 Group by
每个文件一个状态,而不是每行一个状态。
如果您想知道为什么需要如此复杂的逻辑来完成这样的任务,请记住 PDI 同时启动转换的所有步骤。这是它的强大功能,但您不知道是否必须在处理每一行之前移动文件。
或者,您有 的快速但肮脏的解决方案。通过类型检查更改过滤器行,并通过 Process File
/Move
更改最终的 Synchronize after merge
最后的建议:不要使用 Data validator
检查类型,这本身就是一个很好的解决方案,您可以使用 Javascript
之类的
there。如果需要在长运行.
上进行维护,则更加灵活
可以循环读取文件,
添加如下步骤,
数据验证后,您可以过滤具有负结果(不匹配)的行 -> 添加常量值步骤和错误 = 1 -> 为默认值为 0 的错误字段添加设置变量步骤。
转换完成后,您可以在父作业中添加简单的评估步骤来检查 ERROR 变量的值。
如果它的值为 1,则将文件移至其他位置....
希望对您有所帮助。
我正在尝试创建一个转换读取 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.ktr
的 Filter 2
,其中包括 Group by
每个文件一个状态,而不是每行一个状态。
如果您想知道为什么需要如此复杂的逻辑来完成这样的任务,请记住 PDI 同时启动转换的所有步骤。这是它的强大功能,但您不知道是否必须在处理每一行之前移动文件。
或者,您有 Process File
/Move
Synchronize after merge
最后的建议:不要使用 Data validator
检查类型,这本身就是一个很好的解决方案,您可以使用 Javascript
之类的
there。如果需要在长运行.
可以循环读取文件,
添加如下步骤,
数据验证后,您可以过滤具有负结果(不匹配)的行 -> 添加常量值步骤和错误 = 1 -> 为默认值为 0 的错误字段添加设置变量步骤。
转换完成后,您可以在父作业中添加简单的评估步骤来检查 ERROR 变量的值。
如果它的值为 1,则将文件移至其他位置....
希望对您有所帮助。