Hive中collect相关的函数有collect_list和collect_set. 它们都是将分组中的某列转为一个数组返回,不同的是collect_list不去重而collect_set去重. 做简单的实验加深理解,创建一张实验用表,存放用户每天点播视频的记录: create table t_visit_video ( username string, video_name string ) partitioned by (day string) row format delimited f…
实例一:来源: https://www.cnblogs.com/kimbo/p/6208973.html 行转列 (对某列拆分,一列拆多行) 使用函数:lateral view explode(split(column, ',')) num eg: 如表:t_row_to_column_tmp 数据如下,对tag列进行拆分 结果: 列转行 (根据主键,进行多行合并一列) 使用函数:concat_ws(',',collect_set(column))   说明:collect_list 不去重,c…
目录 一.行转列 相关函数 concat concat_ws collect_set collect_list 需求 需求分析 数据准备 写SQL 二.列转行 相关函数 split explode lateral view 需求 需求分析 数据准备 写SQL 一.行转列 相关函数 concat CONCAT(string A/col, string B/col-):对字符串按次序进行拼接 返回类 concat_ws concat_ws(string SEP, string A, string B…
1. null值处理,子串,拼接,类型转换 (1) 空字段赋值(null值处理) 当表中的某个字段为null时,比如奖金,当你要统计一个人的总工资时,字段为null的值就无法处理,这个时候就可以使用NVL函数 NVL:给值为NULL的数据赋值,它的格式是NVL( string1, replace_with).它的功能是如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL. 例: 创建dept表,并导入数…
一.行转列的使用 1.问题 hive如何将 a       b       1a       b       2a       b       3c       d       4c       d       5c       d       6 变为: a       b       1,2,3c       d       4,5,6 2.数据 test.txt a       b       1 a       b       2 a       b       3 c       d …
行转列 原始数据: 需求: 把星座和血型一样的人归类到一起.结果如下: 射手座,A 大海|凤姐 白羊座,A 孙悟空|猪八戒 白羊座,B 宋宋 实现: vi person_info.txt 孙悟空 白羊座 A 大海 射手座 A 宋宋 白羊座 B 猪八戒 白羊座 A 凤姐 射手座 A create table person_info ( name string, constellation string, blood_type string ) row format delimited fields…
1.列转行 1.1 相关函数的说明: concat(string1,string,...) //连接括号内字符串,数量不限. concat_ws(separator,string1,string2,...) //连接括号内字符串,数量不限,连接符为separator. collect_set(col) //此函数只接受基本类型,主要是将字段的值进行去重汇总,产生array类型字段. 1.2 例子: 创建表:create table person_info( name string, conste…
行转列: concat_ws 列转行: explode…
本文分享在Azure Databricks中如何实现行转列和列转行. 一,行转列 在分组中,把每个分组中的某一列的数据连接在一起: collect_list:把一个分组中的列合成为数组,数据不去重,格式是['a','a','b'] collect_set:把一个分组中的列合成为集合,数据去重,格式是['a','b'] 用于连接文本数组的函数,通过sep把数组中的item分割开,连接成一个字符串: concat_ws(sep, [str | array(str)]+) 举个例子,把每个用户的gam…
行列之间的互相转换是ETL中的常见需求,在Spark SQL中,行转列有内建的PIVOT函数可用,没什么特别之处.而列转行要稍微麻烦点.本文整理了2种可行的列转行方法,供参考. 本文链接:https://www.cnblogs.com/hhelibeb/p/10310369.html 测试数据准备 本文的环境是Windows 10, Spark 2.4,开发语言是Python.首先构建一点初始测试数据, from pyspark.sql import SparkSession spark = S…