本文介绍了如何使用Knime将Oracle数据库中的一行数据转换为多行,以便进行进一步的分析。关键步骤包括读取数据、单元格切分、Ungroup by操作以及通过Group By节点进行数据汇总。通过对数据进行转换,可以更好地进行统计分析和特长维度的统计。 摘要由CSDN通过智能技术生成

有时候你拿到的数据,不一定是你希望得到的格式,这是你需要做转换,比如以下的数据,原始数据是对人维度的统计,如果,你希望对【特长】维度的统计,那你首先需要解决的是将数据变换为2中的形式,这时再做统计就方便了。

长表有利于做统计分析,宽表有利于数据展现和建模。数据形式变换很常见

一行转多好

Knime实现过程

Knime实现过程非常简单,四个步骤完成分析即可

数据转换过程

1、读入数据表

(可使用其他读入数据节点替换),可手动录入数据,我更喜欢将Excel中的数据粘贴过来。作为测试其他节点功能,推荐此节点。

2、单元格切分【关键点】

【列表】为group by汇总的一种格式,如果不转换,Knime默认是字符串

根据分隔符切分,转换为列表格式

我之前说过,学习Knime,要学会逆操作,即要学汇总【Group by】,也要学会如何还原操作【Ungroup by】

执行后的结果

3、使用Ungroup by分拆,变换为多行

由于上述结果已经转换为【列表】,这个是 一对多的形式,是汇总后的结果 ,现在是做还原操作,由 原始的一对多,如A-->[A1,A2,A3] ,变换为一对一的形式 。此步骤无需配置,界面如下

分拆为 多行

4、一行转多行的最终目的,一般是做另外的分析

Group By 配置参数

选择分组对象

选择分组计算的方法【Concatenate】将各个字符串值用逗号拼接起来

该节点最终结果

Group by 节点内置几十种汇总方法,远比Excel多, 如果有前十大常用节点,该节点必定入选。强烈建议学习Knime的,必须花时间研究下该节点。

SELECT 'TEST1' GROUPNAME , 'A,B,C,D,E' VALUENAME FROM DUAL UNION ALL SELECT 'TEST2' GROUPNAME , 'A,B,C,D' VALUENAME FROM DUAL SELECT GROUPNAME, SUBSTR( A.VALUENAME, INST...
SELECT substr(PBTYPE, instr(PBTYPE, ',', 1, levels.lvl) + 1, instr(PBTYPE, ',', 1, levels.lvl + 1) -(instr(PBTYPE, ',', 1, levels.lvl) + 1)) as PBTYPE (SELECT ',' || PBTYPE || ',' AS PBTY...
select DISTINCT regexp_substr(you_col,'[^,]+',1,level)a,t.* from you_table t connect by level<=length(you_col)-length(regexp_replace(you_col,',',''))+1 order by sort 二.进阶(1) 使用如下语句拆分: select DISTINCT regexp_substr(you_col,'[^,]+