使用包含匹配查找

Lookup using contains match

我必须设计 ETL 以将数据加载到 table。但是,我不应该在查找 table 中加载与键匹配的值。例如

*Input Table*
Cab Ride
Ride in Cab
Booked Cab
Self drive
Car pooling

*Lookup Table*
Cab
Taxi


*Destination Table*
Self drive
Car pooling

正如我们在目标 table 中看到的那样,我们没有加载包含 Cab

的数据

如果这在 Pentaho 或 SQL

中可行,请告诉我

最简单的方法是构建正则表达式

  • 您的查找 table 提供了您要过滤的各种字符串 出(或进);
  • 逐步使用分组将所有这些字符串连接起来 用|分隔;结果是 "Cab|Taxi".
  • 前置 .( 并追加 ). 使用计算器步骤,以 .(Cab|Taxi). 结束;调用此字段 "regex_filter"
  • 将这一行与主数据流交叉连接;
  • 现在您可以使用条件为 "NOT input_field REGEXP regex_filter" 的筛选行。 (您可能想在正则表达式前添加 (?i) 以使其大小写 不敏感)。

见附件示例:Regex filter in PDI 5.4