SQL 行转列, 列转行, Rank()
行转列
concat( string A/col, string B/col … )
返回输入字符串连接后结果
concat_ws( separator, str1, str2, … )
separator:分隔符
concat_set( col )
将某字段的值进行去重 汇总,产生 Array 类型字段。
eg:
CONCAT_WS(“|”,collect_set(t1.name))
列转行
expload( col )
将 hive 一列中复杂的 Array 或者 Map 结构拆分成多行。
用于和 split, explode 等 UDTF 一起使用,它能够将一列数据拆成多行数据,在此 基础上可以对拆分后的数据进行聚合。
eg:
lateral VIEW explode(split(category,“,”)) movie_info_tmp AS category_name;
Rank
RANK() 排序相同时会重复,总数不会变
eg:
1
1
3
DENSE_RANK() 排序相同时会重复,总数会减少
eg:
1
2
2
ROW_NUMBER() 会根据顺序计算