节点手册 · 行列操作

KNIME Row Filter 行筛选器用法

Manipulation → Row → Filter

按条件保留或剔除数据表中的行。数据清洗阶段使用频率最高的节点,也是最容易在缺失值和列类型上翻车的节点。

它解决什么问题

输入一张表,输出一张列结构完全相同、行数变少的表。它只动行,不动列。

与之对应的是 Column Filter,那个只动列。两者经常连在一起用:先去掉用不上的列,再筛出需要的行。

需要两份输出就别用它。如果你既要留下的行、又要被筛掉的行,用 Row Splitter。配置界面和 Row Filter 一样,但有两个输出端口,省得同一套条件配两遍还要记得把第二遍取反。

基本信息

英文原名Row Filter
中文名称行筛选器(iModel 中文界面)
节点库位置Manipulation → Row → Filter
输入端口1 个,任意数据表
输出端口1 个,列结构与输入相同、行数减少的表
是否改变表结构否。列名、列顺序、列类型都原样保留
KNIME 5.x 换过一次这个节点的界面。新版是多条件列表式的,老版是单条件三选一(按属性值 / 按行号 / 按 RowID)的对话框。老工作流里那种旧界面的节点现在叫 Row Filter (legacy),仍然能跑,但新建时拿到的是新版。本页讲的是新版。

配置项逐条

界面上只有四组东西。前两组决定筛什么,后两组是你以为不重要、结果最常出事的那两组。

  • Filter criteria筛选条件

    一条条加,每条是「列 + 运算符 + 值」三段。点加号增加条件。列选错、或者上游改过列名,这里会标红并让节点退回红灯。

  • Operator运算符

    可选项随列类型变。数值列有等于、不等于、大于、小于、大于等于、小于等于;文本列有等于、包含、以…开头、以…结尾、正则匹配、通配符匹配;所有类型都有「为空值」和「非空值」。如果某列本该是数字却只给你文本类的运算符,问题不在这个节点 – 是上游把它读成文本了,回 CSV ReaderExcel Reader 改列类型。

  • Match all criteria / Match any criteria满足全部条件 / 满足任一条件

    多条件时的组合方式,相当于 AND 和 OR,默认是「满足全部」。想筛出「行政部或质检部」这种,必须切成「满足任一」 – 不切的话要求两个条件同时成立,结果一行不剩。

  • Include matches / Exclude matches保留匹配行 / 排除匹配行

    决定条件命中的行是留下还是丢掉。输出为空、或者输出等于全表,十次有八次是这一项反了。先查这一项,比重写条件快。

最小示例

一张固定资产台账,要筛出「原值超过 5 万且仍在用」的资产。

输入

资产编号资产名称所属部门原值状态
FA-001机架服务器信息部86000在用
FA-002激光打印机行政部4200在用
FA-003三坐标检测仪质检部128000闲置
FA-004中央空调机组行政部63000在用
FA-005笔记本电脑信息部7800报废

配置

条件 1: 原值 大于 50000 条件 2: 状态 等于 在用 条件组合:满足全部条件 输出方式:保留匹配行

输出

资产编号资产名称所属部门原值状态
FA-001机架服务器信息部86000在用
FA-004中央空调机组行政部63000在用

列一列没少,行从 5 行变成 2 行。行 ID 保持原来的编号,不会重新排序 – 这一点在后面接 JoinerConcatenate 时有影响。

三个常见坑

  1. 数值列被读成了文本,比较结果全乱。「86000」如果是文本,比较时按字符逐位比,「9」会大于「86000」。判断办法:看列名旁边的类型图标,或者看运算符里有没有「大于」。修法在上游读取节点里指定列类型,别在这里绕。
  2. 缺失值不会被普通条件匹配上。状态列为空的行,用「状态 等于 在用」筛,它不匹配,于是被丢掉了。如果这些行你其实想留下来单独看,加一条「状态 为空值」并把组合切成「满足任一」。
  3. 文本比较是精确匹配,前后空格算数。Excel 里看着一样的「在用」和「在用 」,在这里是两个不同的值。数据来自人工填报时尤其常见。先用 String Manipulation 去掉首尾空格,再筛。

什么时候该换别的节点

情况换成
既要匹配的行,也要不匹配的行Row Splitter,两个输出端口
条件多到要分优先级,或者要写 if-else 那种逻辑Rule-based Row Filter,规则按顺序命中
按一个取值清单筛,比如只留这 12 个部门Nominal Value Row Filter,勾选取值,不用写一堆 OR
筛选依据在另一张表里,比如一份白名单Reference Row Filter,拿另一张表当参照
要去掉的是列不是行Column Filter
只要前 N 行,或者随机抽样Top k Selector 或 Row Sampling

配了半天输出还是空的

先看「保留匹配行 / 排除匹配行」有没有反,再看多条件是不是被默认的「满足全部」卡住了。这两条排除掉还不对,把配置截图发过来。

iModel 专属客服
网页直接对话,无需微信
4008568196 拨打此号码联系我们

微信扫码咨询

iModel 微信咨询二维码

使用微信扫描上方二维码