使用 pentaho 排除具有特定值 [字符串中的子字符串] 的数据

exclude data having specific value [substring within a string] using pentaho

我有一列 "Number field" (Excel sheet)。它的值如下所示。

Test_Number Number_field
1            0011 10 00A34 PS
2            0011 10 00A34 PS
3            0010 01 00A30 PS
4            0010 01 00A30 PS
5            0010 01 00A35 PS
6            0010 01 00A35 PS

现在,我需要从中删除包含 "0A34""0A35" 的那些。我怎样才能做到这一点?我尝试了 "filter" 选项,但我无法使用它在字符串中搜索子字符串。请帮忙

如果您想在 excel 中执行此操作,则可以使用以下公式并对其进行过滤以从 excel 中删除记录。 添加以下公式并将其拖到您的所有记录中。在此新公式列上创建过滤器,然后删除记录。

=IF(OR(IFERROR( SEARCH("A34",B2), 0),IFERROR( SEARCH("A35",B2), 0)), "REMOVE", "KEEP")

检查下面的快照。

希望对您有所帮助。

如果有帮助,请标记为答案。

结合使用 User Defined Java Expression 步骤和以下参数:

  • Java表达式:(Number_field.indexOf("0A34") != -1 || Number_field.indexOf("0A35") != -1) ? "Remove" : "Ok"
  • 值类型:字符串
  • 新字段: is_row_to_remove

Filter rows 使用此参数的步骤:

  • 条件:`is_row_to_remove=移除(String)
  • 发送 'true' 数据到步骤: 你的下一步
  • 发送'false'数据到步骤:Dummy (do nothing)步骤

流程说明:

  1. User Defined Java Expression: Java 代码找到 0A340A35 并用 [= 标记这样的行16=] 新字段中的值 is_row_to_remove
  2. 过滤行: 该步骤根据is_row_to_remove中的值过滤记录流。如果值设置为 Remove,则继续 Dummy 步骤。否则继续你的下一步

您可以简单地分两步完成,如下所示。

Filter rows 步骤中添加以下条件。