Pentaho 是否允许“筛选行”步骤加载值列表?

问题描述 投票:0回答:2

我需要根据列表

DOM_LABEL
过滤表的行,该列表包含应与列
label
中存在的值相匹配的正确值。

DOM_LABEL = ['Microsoft', 'Apple', 'Lenovo']
此列表包含在 csv 文件内。

问题是某些行的值不正确,例如

'Samsung', 'HP', etc
。我不知道存在不正确的值,因此通过按
label
中未包含的
DOM_LABEL
值过滤行可以帮助我更好地分析问题。

但是,

Filter rows
步骤不允许我加载值列表。手动将它们添加到步骤中是非常可怕的,因为
DOM_LABEL
包含超过 100 个值。有没有办法将这些值加载到
Filter rows
步骤中?

pentaho pentaho-spoon pentaho-data-integration pentaho-cde
2个回答
1
投票

我认为在这种情况下最好的解决方案,如果我正确理解了问题,就是预先设置一个字段,检查该值是否在列表中,然后过滤该字段上的行。

如何做到这一点?

在单独的步骤中从 csv 加载数据(csv 输入)。然后,在过滤器行步骤之前的主流中,使用“流查找”步骤从 csv 中的主流列中查找值。检索您查找值的列 i。然后在过滤行中,只需检查查找的值是否为空。


0
投票

根据此文档,您可以将Filter步骤与值列表一起使用。

您需要在函数中选择“IN LIST”,然后将值作为字符串输入,并以分号(;)分隔。这也适用于整数等数值。如果值在列表中,则该步骤返回True

例如:

Microsoft;Apple;Lenovo

Screenshot of step

考虑到您使用的是 CSV 文件输入,您必须在使用过滤器之前使用 Group by 步骤连接字段,并确保使用分号 (;) 分隔。

您可以添加常量并按常量字段进行分组以连接标签。

© www.soinside.com 2019 - 2024. All rights reserved.