它解决什么问题
输入一张表,输出一张列结构完全相同、行数变少的表。它只动行,不动列。
与之对应的是 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 Reader 或 Excel 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 保持原来的编号,不会重新排序 – 这一点在后面接 Joiner 或 Concatenate 时有影响。
三个常见坑
- 数值列被读成了文本,比较结果全乱。「86000」如果是文本,比较时按字符逐位比,「9」会大于「86000」。判断办法:看列名旁边的类型图标,或者看运算符里有没有「大于」。修法在上游读取节点里指定列类型,别在这里绕。
- 缺失值不会被普通条件匹配上。状态列为空的行,用「状态 等于 在用」筛,它不匹配,于是被丢掉了。如果这些行你其实想留下来单独看,加一条「状态 为空值」并把组合切成「满足任一」。
- 文本比较是精确匹配,前后空格算数。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 |

