hive之行转列与列转行的实现

作者: 愤怒的谜团 | 来源:发表于2019-10-10 17:28 被阅读0次

一:前言

在某些场景下比如报表的产出,为了更加易于理解,往往会行列互置这样显示,又或者我们需要将某个相同键的值,所属的属性进行合并显示,这样都会用到行转列或者列转行。

二:行转列如何实现

使用lateral view结合explode这样的UDTF进行实现,由于explode的参数要求是list()或者array()类型,所以往往还需要用到spilt函数进行分割。
以下是一个演示:

select 
split(detail,',')[0] as uname
,split(detail,',')[1] as create_time
,split(detail,',')[2] as pv
from
(
    select
    concat('测试用户,2019-10-02,7
    #测试用户,2019-10-05,4
    #测试用户,2019-10-07,5
    #测试用户,2019-10-03,6
    #测试用户,2019-10-04,3
    #测试用户,2019-10-01,3
    #测试用户,2019-10-06,4') as ct_str
) t
lateral view explode(split(ct_str,'#')) t2 as detail;

以上()当中为了演示只有select语句,正常来讲是一条正常的sql,目的是将需要分割成多行的数据进行整合到一行当中去,然后使用explode处理,split(ct_str,'#')的目的是将ct_str按照#分割成多行,explode这个UDTF可以返回0行或者大于1行的记录,所以说explode和split往往结合起来使用,然后使用lateral view将多行结果组合成一个支持别名的虚拟表t2和列detail。然后在外层继续使用split函数将返回行进一步分割,这样就实现了行转列了。

三:列转行如何实现

一般使用group by column..+concat_ws+collect_list/collect_set来实现

-- 准备数据
select * from dw_tmp.window_function_temp;
image.png
select 
uname
,concat_ws(',',collect_list(cast(pv as string)))
from dw_tmp.window_function_temp 
GROUP BY uname;
image.png
select 
uname
,concat_ws(',',collect_set(cast(pv as string)))
from dw_tmp.window_function_temp 
GROUP BY uname;
image.png

相关文章

  • hive之行转列与列转行的实现

    一:前言 在某些场景下比如报表的产出,为了更加易于理解,往往会行列互置这样显示,又或者我们需要将某个相同键的值,所...

  • Hive之行转列/列转行

    1、行转列 场景:在hive表中,一个用户会有多个人群标签,List格式(逗号分隔如要转成List),有时我们需要...

  • sql中列转行unpivot、行转列pivot详细讲解||Mys

    目录:一、sqlserver列转行、行转列详解二、Oracle列转行、行转列详解三、DB2列转行、行转列详解四、M...

  • Hive行转列与列转行

    行转列 定义:多行转多列或者多行转一列 原始数据如下: 姓名科目分数小明语文90小明数学98小明英语95小红语文9...

  • hive 行转列 列转行

    列转行 数据分析时需要行中的数据拆成多列,则需要用到:1,lateral view2,explode原始表tabl...

  • hive行转列,列转行

    难点,加强

  • Hive "行转列"和"列转行"

    在HIVE实际开发过程中,我们会遇到“行转列”和“列转行”的场景。比如: 1、需要取“订单号”对应的所有商品“SK...

  • mysql开发技巧笔记

    行转列 结果 使用 SUM 进行 行转列 列转行 应用场景 属性拆分 etl数据处理 1. 利用序列表处理列转行的...

  • SQL行列转换

    行转列1.1、case when1.2、内置函数pivot 列转行2.1、unpivot2.2、union实现

  • 2018-06-27

    1. hive行转列的实现

网友评论

    本文标题:hive之行转列与列转行的实现

    本文链接:https://www.haomeiwen.com/subject/cisapctx.html