Hive 数仓工具(5) 行转列 列转行 字符串拼接 窗口函数 数字编号函数 案例

行转列函数实现字符串拼接 concat() concat_ws(参数1(分隔符), str1, str2) 可指定分隔符select concat(“haha”, “–”, “ll”, “–”, “tom”);select concat(ename) from tb_emp; (函数是每行执行一次)select concat(ename, “:”, job) from tb_emp;select concat_ws ("_", “tom”, “cate”, “jim”)cast(变量 AS
摘要由CSDN通过智能技术生成

行转列函数
实现字符串拼接 concat() concat_ws(参数1(分隔符), str1, str2) 可指定分隔符
select concat(“haha”, “–”, “ll”, “–”, “tom”);
select concat(ename) from tb_emp; (函数是每行执行一次)
select concat(ename, “:”, job) from tb_emp;
select concat_ws ("_", “tom”, “cate”, “jim”)
cast(变量 AS 数据类型) 强制类型转换
select concat_ws(":" , ename ,job , cast(sal as string)) from tb_emp ;
collect_set()将内容收集成set集合
collect_list()将内容收集成list集合
select collect_set(deptno) from tb_emp ; --去重重复元素的数组
select collect_list(deptno) as deptno_list from tb_emp ; --不会去重数据
案例
孙悟空 白羊座 A
娜娜 射手座 A
宋宋 白羊座 B
猪八戒 白羊座 A
凤姐 射手座 A
create table if not exists tb_star(
name string,
star string,
dname string
)
row format delimited fields terminated by “\t”;
load data local inpath “/hive/data/tb_star.txt” into table tb_star;
行转列
select
concat(star,dname),
concat_ws("|",collect_list(name))
from
tb_star
group by star,dname;

列转行
关键函数
split(str, 分隔符) 返回一个数组
select split(“hello,jim,yongge,tom”, “,”)
explode()炸裂函数 将数组中的每个元素显示在每行中
explode(split(“hello,jim,yongge,tom”, “,”))

movie category
《疑犯追踪》 悬疑,动作,科幻,剧情
《Lie to me》 悬疑,警匪,动作,心理,剧情
《战狼2》 战争,动作,灾难
create table if not exists tb_movie (
movie string,
category string
)
row format delimited fields terminated by “\t”;
load data local inpath “/hive/data/movie.txt” into table tb_movie;

切割
select
split(category, “,”)
from tb_movie;
炸裂
select
explode(split(category, “,”)) as cate_name
from
tb_movie;

lateral view 侧窗口函数
select
movie,
cate_name
from
tb_movie
lateral view
explode(split(category,",")) t as cate_name;

案例

create table if not exists tb_business(
name string,
orderdate

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值