我正在尝试创建转换读取csv文件并检查该csv中每个字段的数据类型。
像这样:标准字段A应该是字符串(1)字符,字段B是整数/数字。
而……
你也可以这样做 这个问题 。一旦阅读使用 Group by 每个文件有一个标志。但是,这次你不能在一次转换中做到这一点,你应该使用一份工作。
Group by
您的用例位于PDI发行版附带的示例中。样本位于文件夹中 your-PDI/samples/jobs/run_all 。打开 Run all sample transformations.kjb 并取代 Filter 2 的 Get Files - Get all transformations.ktr 通过你的逻辑,包括一个 Group by 每个文件有一个状态,而不是每行一个状态。
your-PDI/samples/jobs/run_all
Run all sample transformations.kjb
Filter 2
Get Files - Get all transformations.ktr
如果您想知道为什么需要这样一个复杂的逻辑来完成这样的任务,请记住PDI同时启动转换的所有步骤。这是它的强大功能,但您不知道是否必须在处理每一行之前移动文件。
或者,您有快速而肮脏的解决方案 你的类似问题 。通过类型检查和最终更改过滤器行 Synchronize after merge 通过a Process File / Move
Synchronize after merge
Process File
Move
最后的建议是:而不是用a来检查类型 Data validator ,这本身就是一个很好的解决方案,你可以使用一个 Javascript 喜欢 那里 。如果从长远来看需要维护,它会更灵活。
Data validator
Javascript
你可以循环读取文件,和
添加步骤如下,
在数据验证之后,您可以使用否定结果(不匹配)过滤行 - >添加常量值步骤,错误= 1 - >为错误字段添加集变量步骤,默认值为0。
转换完成后,可以在父作业中添加简单的评估步骤来检查ERROR变量的值。
如果它的值为1则移动其他文件....
我希望这可以提供帮助。