Hive----行转列

简介: 行转列

行转列

将分散在多行的数据,拼接成一个新的列

concat(str1, str2, ... strN):将传入的任意个字符串拼接后返回

concat_ws(separator, [string | array(string)]+) 只能连接 string 列表或 array<string> 数组

用法1——连接 string 或 array

select concat_ws('&','uuu','kkk','abc');

select concat_ws('$$',array('12','11','66','44','99'));

用法2——连接一个字段的多个值,需要配合 collect_set 使用!

select concat_ws('|',collect_set(name))

用法3——连接多个字段的值,可直接使用!

select concat_ws(',',name,age)

collect_set:输入连接符,传入一个字段,将字段中所有的值,去重后返回一个array

collect_list:输入连接符,和collect_set类似,但是不去重,返回一个array

 

经典案例:

将血型和星座都相同的人拼接到一起:

tb1:

name

constellation

blood_type

孙悟空

白羊座

A

大海

射手座

A

宋宋

白羊座

B

猪八戒

白羊座

A

凤姐

 射手座

A

 

 

 

 

  ===》

tb2:

 

 

射手座,A

大海|凤姐

白羊座,A 

孙悟空|猪八戒

白羊座,B

宋宋

代码实现:

select info,concat_ws('|',collect_set(name))

from (

select name,concat_ws(',',constellation,blood_type) info

from tb1

)t1

group by info;

 

 

列转行 (lateral view explode)

 

将一个数据类型为array的列中的元素拆分为多行

 

select movie,cate from movie_info lateral view explode(category) t1 as cate;

经典案例:

tb1:

city

loc

北京

长城

北京

故宫

北京

颐和园

上海

外滩

上海

陆家嘴

上海

南京路

上海

崇明岛

 

 

 

 

 

《===》

 

tb2:

 

 

city

locs

北京

长城,故宫,颐和园

上海

外滩,陆家嘴,南京路,崇明岛

 

tb1--->tb2:

selelct

city,

concat_ws(',',colect_set(loc)) locs

from tb1

group by city;

----------------------------------------------------------------

tb2--->tb1:

select

city,

loc

from tb2 lateral view explode(split(locs,',')) tmp as loc;

目录
相关文章
|
SQL HIVE
HIVE 查询显示列名 及 行转列显示
HIVE 查询显示列名 及 行转列显示
225 0
|
SQL HIVE
【Hive】(十)Hive 行转列、列转行详解
【Hive】(十)Hive 行转列、列转行详解
1443 0
【Hive】(十)Hive 行转列、列转行详解
|
SQL HIVE
|
SQL HIVE
Hive之行转列/列转行
1、行转列 场景:在hive表中,一个用户会有多个人群标签,List格式(逗号分隔如要转成List),有时我们需要统计一个人群标签下有少用户,这是就需要使用行转列了 例如,user_crowd_info有如下数据 visit_id crowds ...
3264 0
|
7月前
|
SQL 数据采集 数据挖掘
大数据行业应用之Hive数据分析航班线路相关的各项指标
大数据行业应用之Hive数据分析航班线路相关的各项指标
198 1
|
7月前
|
SQL 存储 大数据
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
263 0
|
7月前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
278 0
|
7月前
|
SQL 存储 分布式计算
【大数据技术Hadoop+Spark】Hive数据仓库架构、优缺点、数据模型介绍(图文解释 超详细)
【大数据技术Hadoop+Spark】Hive数据仓库架构、优缺点、数据模型介绍(图文解释 超详细)
1113 0
|
2月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
47 0
|
5月前
|
SQL 分布式计算 大数据
大数据处理平台Hive详解
【7月更文挑战第15天】Hive作为基于Hadoop的数据仓库工具,在大数据处理和分析领域发挥着重要作用。通过提供类SQL的查询语言,Hive降低了数据处理的门槛,使得具有SQL背景的开发者可以轻松地处理大规模数据。然而,Hive也存在查询延迟高、表达能力有限等缺点,需要在实际应用中根据具体场景和需求进行选择和优化。