概念词条

KNIME 里的表结构是什么

Table Spec

列名加列类型的清单,和表里的数据是分开的两样东西。搞清楚这一点,一大类「还没执行就报错」的现象立刻讲得通。

一句话定义

表结构是一张表有哪些列、每列叫什么、每列是什么类型的描述。数据是行,表结构是列的说明书。同一个表结构可以配一万行数据,也可以配零行。

关键机制:节点在配置阶段只看得到表结构

你把一个节点拖到画布上连好线,它立刻就知道上游有哪些列、各是什么类型 – 但它还没有看到任何一行数据。数据要到执行时才流过来。

这个机制解释了三个平时觉得奇怪的现象:

  1. 有些错在没执行之前就报出来了。你在某个节点里选了「金额」列,回头把上游的 Column Filter 改成排除这一列 – 下游节点立刻变红,根本不用跑。因为它拿到的新表结构里已经没有这一列了。
  2. 有些错非要执行才炸。比如某一格是「N/A」转不成数字。这属于数据问题,表结构层面看不出来,只有数据真流过去才发现。
  3. 改配置会让下游一串节点退回黄灯。上游的表结构可能变了,下游此前算出来的结果不再可信,所以被清掉等着重跑。这不是数据丢了。

哪些操作会改变表结构

节点表结构怎么变
Column Filter 列筛选器列变少。是下游报「找不到列」最常见的源头
Column Renamer 列重命名列名变。写死列名的下游立刻断
GroupBy 分组汇总列名被改写成带聚合方法的形式,未参与聚合的列直接消失
Pivoting 数据透视列数由数据决定。数据换一批多出一个取值,列数就变
Joiner 表连接两表重名列会被加后缀
Row Filter 行筛选器不变。它只动行
Sorter 排序器不变。它只动顺序
由此得出一条通用准则:下游不要写死列名。凡是列名可能随数据变化的地方(透视、聚合、关联之后),在下游用通配符或按类型选列,或者紧接着用 Column Renamer 把列名固定下来。这是让一条工作流能连着跑十二个月不出事的关键。

怎么看一张表的表结构

右键任意一个已执行的节点看输出表,最上面那一行是列名,每个列名旁边的小图标就是列类型。红叉状态的节点也能看到它的输入表结构 – 这正是排查「找不到列」时最有用的动作。

相关内容

页面相关点
Column Filter 列筛选器新增列保留还是丢弃,决定表结构是否稳定
Pivoting 数据透视列数随数据变化,下游最容易断的地方
GroupBy 分组汇总输出列命名规则
Joiner 表连接重名列加后缀的处理

下游总在报找不到列

倒着往上找第一个改动过列的节点 – 多半是 Column Filter 或 Column Renamer。

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

微信扫码咨询

iModel 微信咨询二维码

使用微信扫描上方二维码