节点手册 · 行列操作

KNIME Column Filter 列筛选器用法

Manipulation → Column → Filter

留下需要的列、去掉用不上的列。配置很简单,但「以后来了新列怎么办」这一项决定了这条工作流明年还能不能跑。

它解决什么问题

输入一张表,输出一张行数完全相同、列变少的表。它只动列,不动行。和 Row Filter 是一对,前者管列后者管行,实际流程里经常一前一后连着用。

不只是为了好看。几十列的表在后面接 Joiner 时会带出一堆重名列,接 GroupBy 时要在长长的列表里翻找。早一步把列砍干净,后面每一步都省事,运行也快。

它在流程里的位置

Excel Reader读进来
Column Filter砍掉多余的列
Row Filter筛出需要的行
GroupBy汇总

典型位置是紧跟在读取节点后面。越早砍列,后面每一步的配置列表越短、运行也越快。

基本信息

英文原名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
以包含为准以排除为准 整个节点最关键的一项。以包含为准则新列一律丢弃,输出格式稳定;以排除为准则新列自动保留。选错时不报错,只是结果里莫名少了或多了列。

三个常见坑

  1. 下游报「找不到列」,八成是这里删过。后面某个节点配置时选中了某列,你回头在这里把它排除了,那个节点就会变红。排查时倒着往上找第一个改动过的 Column Filter。
  2. 删了列以为省了内存,其实要看放在哪。放在读取节点之后立刻删,效果最好;放在一堆计算之后再删,那些计算已经跑完了。删列的位置尽量往前提。
  3. 用手工选择配好后,源表加了新字段却没进来。这就是上面那一项的问题。人工填报的表格最容易出现这种情况 – 别人加了一列,你的流程无声地忽略了它。

什么时候该换别的节点

情况换成
要去掉的是行不是列Row Filter
不只删列,还要改名、改顺序、改类型Table Manipulator,一个节点做完
只是改列名Column Renamer
要按列的取值决定留不留那是筛行,用 Row Filter

换一批数据后列对不上了

先看「以包含为准 / 以排除为准」这一项选的是哪个,多数情况问题就在这里。

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

微信扫码咨询

iModel 微信咨询二维码

使用微信扫描上方二维码