本文介绍了如何使用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,'[^,]+