它解决什么问题
输入一张表,输出一张行数完全相同、列变少的表。它只动列,不动行。和 Row Filter 是一对,前者管列后者管行,实际流程里经常一前一后连着用。
它在流程里的位置
典型位置是紧跟在读取节点后面。越早砍列,后面每一步的配置列表越短、运行也越快。
基本信息
| 英文原名 | Column Filter |
|---|---|
| 中文名称 | 列筛选器(iModel 中文界面) |
| 节点库位置 | Manipulation → Column → Filter |
| 输入端口 | 1 个数据表 |
| 输出端口 | 1 个,行数不变、列减少的表 |
| 是否改变行数 | 否。一行都不会少 |
配置项逐条
-
Manual selection手工选择
左右两个框,把列在「包含」和「排除」之间搬。列少的时候最直观。
-
Wildcard / Regex selection通配符 / 正则选择
按列名模式批量选,比如所有以「金额_」开头的列。列名有规律且数量多时比手搬快得多,数据换一批后新增的同类列也会自动被覆盖。
-
Type selection按类型选择
按列的数据类型选,比如只留数值列。做统计前批量剔除文本列时好用。
-
Enforce inclusion / Enforce exclusion以包含为准 / 以排除为准
整个节点最关键的一项,决定下次数据里出现了配置时不存在的新列该怎么办。以包含为准:只有名单里的列会留下,新列一律丢弃。以排除为准:只把名单里的列丢掉,新列自动保留。
没有哪个更对,取决于你要什么。固定输出格式的报表选「以包含为准」,列的顺序和数量才稳;需要把源表所有信息带下去、只是删掉几列垃圾字段的,选「以排除为准」。选错的表现是数据换一批后结果莫名少了列或多了列,而且不报错。
Column Filter 配置对话框
选择方式Selection mode
手工通配符 / 正则按类型
列少用手工,列名有规律且数量多用通配符。
包含 / 排除Include / Exclude
左右两个框互相搬列右框里的列会从输出中消失,行数不受影响。
新列如何处理Enforce inclusion / exclusion
以包含为准以排除为准
整个节点最关键的一项。以包含为准则新列一律丢弃,输出格式稳定;以排除为准则新列自动保留。选错时不报错,只是结果里莫名少了或多了列。
三个常见坑
- 下游报「找不到列」,八成是这里删过。后面某个节点配置时选中了某列,你回头在这里把它排除了,那个节点就会变红。排查时倒着往上找第一个改动过的 Column Filter。
- 删了列以为省了内存,其实要看放在哪。放在读取节点之后立刻删,效果最好;放在一堆计算之后再删,那些计算已经跑完了。删列的位置尽量往前提。
- 用手工选择配好后,源表加了新字段却没进来。这就是上面那一项的问题。人工填报的表格最容易出现这种情况 – 别人加了一列,你的流程无声地忽略了它。
什么时候该换别的节点
| 情况 | 换成 |
|---|---|
| 要去掉的是行不是列 | Row Filter |
| 不只删列,还要改名、改顺序、改类型 | Table Manipulator,一个节点做完 |
| 只是改列名 | Column Renamer |
| 要按列的取值决定留不留 | 那是筛行,用 Row Filter |

