任务教程 · 表结构转换

KNIME 把宽表转成长表

十二个月各占一列的报表,转成「月份、金额」两列的明细。做透视、做图表、做后续分析之前,多数时候都要先转这一步。

什么是宽表和长表

宽表长表
长什么样每个月一列,一个部门一行月份是一列的取值,一个部门一个月一行
适合给人看,一眼比较给机器算,分组、筛选、画图
加一个月要加一列,下游可能断只是多几行,结构不变
判断标准:列名里带着数据吗?列名叫「1 月」「2 月」,说明月份这个信息被存进了列名而不是数据里。这就是宽表,也是它不好做后续分析的根本原因。

节点串

Excel Reader读宽表
Column Renamer规范列名
GroupBy按需汇总

核心就是 Unpivoting 一个节点。它是 Pivoting 的反向操作 – 一个把长变宽,一个把宽变长。

分步看表怎么变

点上一步下一步。琥珀色的格子是这一步改动的地方。

月份藏在列名里

两行三个月的数据。想按月筛选、按月画图、或者算环比,在这个形态下都很别扭 – 因为「月份」根本不是一列数据。

部门1 月2 月3 月
信息部86000120007800
行政部4200672003100

列名变成了数据

配置只有两项:要转的列选「1 月、2 月、3 月」,要保留的列选「部门」。两行变六行 – 原来的列名进了一列,原来的值进了另一列。

部门ColumnNamesColumnValues
信息部1 月86000
信息部2 月12000
信息部3 月7800
行政部1 月4200
行政部2 月67200
行政部3 月3100

把自动生成的列名改成业务说法

Unpivoting 产出的列名是固定的英文。改成「月份」和「金额」,下游和报表都好读。这一步顺带给下游立了稳定接口。

部门月份金额
信息部1 月86000
信息部2 月12000
信息部3 月7800
行政部1 月4200
行政部2 月67200
行政部3 月3100

按月筛选、按月汇总都成了一步操作

比如筛出金额大于五万的记录 – 在宽表形态下这要对三列各写一遍条件,长表形态下就是一个 Row Filter。多一个月份也不用改任何配置。

部门月份金额
信息部1 月86000
行政部2 月67200

关键配置

Unpivoting 配置对话框
要转换的列Value columns
1 月、2 月、3 月 这些列的列名会变成数据。列很多且命名有规律时用通配符选,比逐个勾快 – 而且以后新增月份会自动被覆盖。
要保留的列Retained columns
部门 维度列放这里,它们会在每一行重复出现。漏选的话那一列的信息就丢了。
输出列名
自动生成,通常是 ColumnNames 和 ColumnValues 后面接 Column Renamer 改成业务说法。

三个会绊住人的地方

  1. 要转的列类型必须一致。选中的这些列会被合并成一列,类型不同就并不到一起。十二个月里有一列被读成了文本,转之前要先统一类型。
  2. 用通配符选列,别逐个勾。列名如果是「1 月」到「12 月」这种规律形式,用模式匹配选。逐个勾的话,明年多一列你还得回来改配置。
  3. 月份变成文本后排序会乱。「10 月」会排在「2 月」前面 – 按字符比大小。要正确排序,要么把月份转成数字,要么在源头就用「2026-01」这种补零的写法。

换成你的数据要改哪里

要改的地方怎么改
要转的列把月份列换成你的那批列,尽量用通配符匹配
要保留的列所有维度列都要选上,漏一个就丢一份信息
输出列名在 Column Renamer 里改成你的业务说法
要反过来转长转宽用 Pivoting,配置思路正好相反

转完之后想再转回去

长表转宽表用 Pivoting – 行分组选维度列,列分组选月份列,聚合选求和。

iModel 专属客服
在线留言或电话联系
在线留言

留下您的问题和联系方式,我们会在一个工作日内回复。

手机与邮箱至少填一项

4008568196 拨打此号码联系我们

微信扫码咨询

iModel 微信咨询二维码

使用微信扫描上方二维码