hive中行转列

select concat('a','b','c') ;

'abc'
select concat('a',null,'c');

null

多列合并成一列

select trade_id,concat(opt_type,'#',gmt_created) as opt_info  from ods_all_o2o_order;

trade_id  opt_info
13345     'seller_accepted#2022-01-01 20:57:33'
12378     'order_created#2022-01-23 10:23:01'

collect_set()把同一分组不同行的数据合并成一列

select trade_id,collect_set(opt_info) as info_set from test2 group by trade_id;

trade_id  info_set

13345     ['seller_accepted#2022-01-01 20:57:33','order_created#2021-12-27 20:32:34']
12378     ['order_created#2022-01-23 10:23:01']

concat_ws(separator, str1, str2, …)

separator为参数指定分隔符,分隔符不能为null,如果设置为null,则返回结果为null

concat_ws() 函数 1、一次性指定分隔符,多列(多个字段)合并成一列(合并成一个字段)

2、将列表转换为由指定分隔符分隔的字符串

select concat_ws('*','aili','123','youyou');

'aili*123*youyou'
select concat_ws(',',['seller1','seller2','seller3','seller4','seller5']);

'seller1,seller2,seller3,seller4,seller5'

str_to_map 将字符串拆分成键值对

分隔符1将文本分成K-V对,分隔符2分割每个K-V对。对于分隔符1默认分隔符是 ‘,’,对于分隔符2默认分隔符是 ‘=’

select str_to_map('seller_accepted#2022-01-01,order_created#2021-12-31',',','#');

{"seller_acceped":"2022-01-01","order_created":"2021-12-31"}

nvl() 函数

空值转换函数

nvl格式的函数如下:

nvl(expr1, expr2)

备注:
1、如果expr1为NULL,返回值为 expr2,否则返回expr1。
2、适用于数字型、字符型和日期型,但是 expr1和expr2的数据类型必须为同类型。

Original: https://blog.csdn.net/yuanyuan___/article/details/125396133
Author: 熊猫姐姐90
Title: hive中行转列

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/818423/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球