博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hive中同列多行数据组合的方法以及array to string要点(行转列)
阅读量:5870 次
发布时间:2019-06-19

本文共 2572 字,大约阅读时间需要 8 分钟。

1. 同列多行数据组合成一个字段cell的方法, top N 问题的hive方案 如下:

hive 列转行 to json与to array  list set等复杂结构,hive topN的提取的窗口统计方法       select                ll,            collect_list(n) ,  -- 将topN 转换成 List or Json with the help of collect_set(xx) collect_list(xx)            collect_list(nn),            collect_list(ll),            collect_list(dd)    from            (                    select                            concat('\'', n, '\'') as nn,                            n                          ,                            ll                         ,                            concat_ws(":", concat('\\\'', n, '\\\''), ll) as dd ,                                  row_number() over (partition by ll order by n desc ) as num1     -- 某用户的所有文章点击率排序                    from                            (                                   select 1 as n, '4' as ll                                    UNION all                                    SELECT 2 as n, '4' as ll                                    UNION all                                    select 3 as n, '5' as ll                                    UNION all                                    SELECT 4 as n, '5' as ll                                UNION all                                    SELECT 5 as n, '4' as ll                                    UNION all                                    select 6 as n, '5' as ll                                    UNION all                                    SELECT 7 as n, '5' as ll                                UNION all                                    SELECT 8 as n, '4' as ll                                    UNION all                                    select 9 as n, '5' as ll                                    UNION all                                    SELECT 10 as n, '5' as ll                            )                            a            )            c            where num1 <= 3      -- 筛选top 3    group by            ll

 

 

2. 建表存储list类型数据的方法以及注意点

CREATE TABLE if not exists celebrity_basic_info (    author_id bigint COMMENT 'id',    area array
COMMENT '复杂类型的数据' ) COMMENT '-----'PARTITIONED BY( dt string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS TERMINATED BY ',' STORED AS textfile ; --这里要注意存储时的序列化转换 collection item 的分隔符。

 

3. 将array<string>类型数据转成string显示的方法

select  author_id       ,concat( case when size(area)=-1 then '[' else '["' end,concat_ws('","'  , area )            , case when size(area)=-1 then ']' else '"]' end)  --组装拼接成json list from  celebrity_basic_info

 

本文转自博客园博客,原文链接:    ,如需转载请自行联系原作者

你可能感兴趣的文章
SPOJ 839 OPTM - Optimal Marks (最小割)(权值扩大,灵活应用除和取模)
查看>>
【cl】eclipse基本设置(字体、配置JDK)
查看>>
Python学习笔记(1)-Python介绍、解释器、第一个python程序、注释
查看>>
在Linux里设置环境变量的方法(export PATH)
查看>>
《zw版·Halcon-delphi系列原创教程》 2d照片-3d逆向建模脚本
查看>>
[NOIP2003] 普及组
查看>>
[NOIP2005] 提高组 洛谷P1053 篝火晚会
查看>>
WPF绑定错误
查看>>
LeetCode 167. Two Sum II - Input array is sorted
查看>>
反射:获取枚举类型的Name,Value,Description
查看>>
Python中read()、readline()和readlines()三者间的区别和用法
查看>>
构造函数 、析构函数 、拷贝构造函数 ~~~~~~~~~~构造函数
查看>>
openssl内核升级
查看>>
获取公网IP地址
查看>>
C#Listview添加数据,选中最后一行,滚屏
查看>>
Linux基础之-正则表达式(grep,sed,awk)
查看>>
向有序的环形单链表中插入新节点
查看>>
处女面总结
查看>>
GCC编译器编译链接
查看>>
java调用Oracle分页存储过程
查看>>