如何在Kettle中按长度过滤行

时间:2017-06-02 12:04:40

标签: pentaho kettle

我正在使用行过滤器来过滤超过给定长度的列。在过滤条件下,没有条件来检查行长度。

所以解决方法是使用:

Field1 REGEXP [^.{0,80}$]
OR
Field1 IS NULL

Field2 REGEXP [^.{0,120}$]
OR
Field2 IS NULL

长度检查是一个非常常见的要求。有没有一种功能/更简单的方法可以做到这一点,我错过了?

2 个答案:

答案 0 :(得分:2)

使用数据验证器步骤:

为要检查的每个列创建一个新验证并设置"最大字符串长度"对于每次创建的验证。

您可以使用"错误处理步骤"重定向错误的行。跳: enter image description here

默认情况下,这些行具有与输入行相同的结构和值,但您还可以包含其他信息,例如错误列的名称或错误说明。

或者,您可以在使用计算器步骤进行过滤之前计算字符串长度,但如果您要检查多列,则可能会创建大量其他列。

当然,您始终可以在用户定义的Java类或修改的Java脚本值中执行此类检查。

答案 1 :(得分:1)

假设您正在谈论字符串,您可以使用计算器步骤,稍微难以找到计算“返回字符串A的长度”。这将为您提供Filter Rows步骤的值。