hive中实现行转列_Kettle(PDI)转换中转换之行转列详解

本文介绍了如何使用Rownormaliser步骤将数据库中栏目的每月访问量数据从行格式转换为列格式,通过MySQL示例展示配置过程和步骤。涉及的关键步骤包括设置字段映射和使用COUNT函数计算每个栏目每月的访问次数。
摘要由CSDN通过智能技术生成

概述

Row normaliser(行转列)此步骤将输入流的行转换为列。可以使用此步骤对列的重复组进行规范化。

选项

3ad181cfd465f919c651059dd06fa25c.png

行转列

Row normaliser(行转列))步骤有以下选项:

Step name(步骤名称):在画布上指定Row normaliser(行转列)步骤的唯一名称。您可以自定义名称或将其保留为默认名称。

Type field(Type字段):指定输出数据中的新列的名称。

字段

Fieldname(字段名称):要规范化的字段的名称。

Type(Key值):指定用于对字段进行分类的字符串。

new field(Value字段):指定要在其中传输新值的字段。

Get Fields(获取字段):检索流中传入的所有字段的列表。

示例

示例采用一个栏目的每月访问量统计数据为基础演示数据,把栏目每月访问量一行数据转换以月为列的多行数据。

/*栏目每月访问量统计表*/DROP TABLE IF EXISTS `catalog_traffic`;CREATE TABLE `catalog_traffic` (  `catalogid` VARCHAR(10) NOT NULL COMMENT '栏目编号',  `catalogname` VARCHAR(20) DEFAULT NULL COMMENT '栏目名称',  `month1` BIGINT DEFAULT 0 NOT NULL COMMENT '1月访问量',  `month2` BIGINT DEFAULT 0 NOT NULL COMMENT '2月访问量',  `month3` BIGINT DEFAULT 0 NOT NULL COMMENT '3月访问量',  `month4` BIGINT DEFAULT 0 NOT NULL COMMENT '4月访问量',  `month5` BIGINT DEFAULT 0 NOT NULL COMMENT '5月访问量',  `month6` BIGINT DEFAULT 0 NOT NULL COMMENT '6月访问量',  `month7` BIGINT DEFAULT 0 NOT NULL COMMENT '7月访问量',  `month8` BIGINT DEFAULT 0 NOT NULL COMMENT '8月访问量',  `month9` BIGINT DEFAULT 0 NOT NULL COMMENT '9月访问量',  `month10` BIGINT DEFAULT 0 NOT NULL COMMENT '10月访问量',  `month11` BIGINT DEFAULT 0 NOT NULL COMMENT '11月访问量',  `month12` BIGINT DEFAULT 0 NOT NULL COMMENT '12月访问量',  PRIMARY KEY (`catalogid`)) ENGINE=INNODB DEFAULT CHARSET=utf8;insert  into `catalog_traffic`(`catalogid`,`catalogname`,`month1`,`month2`,`month3`,`month4`,`month5`,`month6`,`month7`,`month8`,`month9`,`month10`,`month11`,`month12`) values ('1','栏目1',166,676,8009,445,9900,909,909,345687,78734,7676,34434,3434);insert  into `catalog_traffic`(`catalogid`,`catalogname`,`month1`,`month2`,`month3`,`month4`,`month5`,`month6`,`month7`,`month8`,`month9`,`month10`,`month11`,`month12`) values ('2','栏目2',767,676,545,454,9009,334,557,9033,343,56565,2323,34443);

1.建立数据库连接对象

示例采用mysql数据库作为示例,首先下载mysql驱动https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.47,然后放在在文件夹data-integrationlib下。然后重启Spoon。如果已经添加过mysql驱动,则可由忽略此步骤。

切换至主对象树,双击DB连接。

caf8af007d2c96742ea5522944b3dee6.png

添加DB连接

然后选项连接类型为mysql,并维护相关的链接信息。

c16877759959c868142021283e73eba9.png

维护数据库连接

连接信息维护完之后,点击测试,测试连接是否成功。

2.获取栏目每个月访问量统计表catalog_traffic数据作为数据输入源。

添加一个表输入步骤,数据库连接上面创建的DB连接名称demo,然后从获取SQL查询语句中选择表catalog_traffic,即可。

a283f01e7d66152e158c08964d4125b1.png

最后点击预览,预览结果数据。

6e9da314e436bc076eda85230267c0ec.png

预览数据

3.添加转换中的行转列步骤,并配置行转列选项

添加一个转换中的行转列。并建立从表输入到行转列的一个节点连接。

4bfa0cfd3bec0d7b83c18fa639956e76.png

建立节点连接

在行转列配置key字段为month,然后获取点击获取字段,保留month1...month12,作为行专列字段,然后对应的key值为1...12,为对应月份的值。Value的值设置为:count。

f01ed6d25da6c136b39b2a5ef238d89e.png

最后保存并点击运行。

9b9f252e69ae270c300d0dec7a29b2fe.png
5882c80383f11a26cf3670a1a6b4fbeb.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值