如何在 Kettle 中按长度过滤行

How to filter rows by length in Kettle

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

所以解决方法是使用:

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

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

长度检查是一个很常见的要求。有没有 function/simpler 我缺少的方法?

假设您讨论的是字符串,您可以使用计算器步骤,计算有点难找 "Return the length of a string A"。这将为您提供筛选行步骤的值。

使用数据验证器步骤:

为您要检查的每一列创建一个新验证,并为每个创建的验证设置 "Max string length"。

您可以使用 "Error handling of step" 跃点重定向错误行:

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

或者,您可以在使用计算器步骤进行过滤之前计算字符串长度,但如果您要检查多个列,它可能会创建很多额外的列。

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