hive collect_set结果转化为字符串 文心快码BaiduComate 在Hive中,collect_set 函数用于聚合操作,它会将一组值聚合成一个集合,同时去除重复值。输出的结果是一个集合类型的数据结构。要将 collect_set 的结果转化为字符串,可以使用 concat_ws 函数。concat_ws 函数可以根据指定的分隔符将多个字符串连接成一个字符串...
select * from (select a,collect_set(b) as bb from t where b<='xxxxxx' group by a)where size(tmp.bb)=1 andtmp.bb[0]='xxxxxxxx'; 表示某bb所对应的数组长度为1 并且第一个bb为xxxxxxxx的a 示例:字段去重,并拼接成字符串 concat_ws(',' , collect_set(cast( pay_channel as string)) )...
2)Hive行转列用到的函数: concat(str1,str2,...) --字段或字符串拼接 concat_ws(sep, str1,str2) --以分隔符拼接每个字符串 collect_set(col) --将某字段的值进行去重汇总,产生array类型字段 2、测试数据 字段: deptno ename 代码语言:javascript 复制 20SMITH30ALLEN30WARD20JONES30MARTIN30BLAKE10CLARK...
select collect_set(ename) from emp;--将ename的所有数据转换为数组的一个元素 select deptno, collect_set(ename) from emp group by deptno; select deptno, concat_ws('|', collect_set(ename)) from emp group by deptno; 1. 2. 3. 4. 5. 6. 7. 8. 9. 爆炸函数:select explode(列) from e...
1、行转列 Hive : collect_set转为数组并去重,concat_ws将数组用逗号间隔连接成字符串 Presto:array_agg转为数组,array_distinct去重,array_join将数组用逗号间隔连接成字符串 2、列转行 Hive:split将order_ids拆分成数组,lateral view explode将数组炸裂开 Presto:split将order_ids拆分成数组,cross join unnest将...
上述用的到的 collect_set 函数,有两个作用,第一个是去重,去除group by后的重复元素, 第二个是形成一个集合,将group by后属于同一组的第三列集合起来成为一个集合。与contact_ws 结合使用就是将这些元素以逗号分隔形成字符串 五,行转列的函数。
hive里通常通过collect_set和collect_list来进行列转行,其中collect_list为不去重转换,collect_set为去重转换。 创建一个测试表 CREATE table stu_score( stu_idstringcomment'学号', stu_namestringcomment'姓名', coursestringcomment'科目', scorestringcomment'分数') comment'学生成绩表'; ...
3)步骤3:将聚合的数据转成字符串 selectid,concat_ws(',',sort_array(collect_set(kv)))ggfrom(selectid,concat(concat('\"',sex,'\"'),':',concat('\"',count,'\"'))kvfromresult_sex limit9)xgroupby id; show4.png 4)步骤4:添加json的花括号 ...
使用 selectclassno,collect_list(name)fromtmp_youdb.student_testgroupby classno image.png selectclassno,collect_set(name)fromtmp_youdb.student_testgroupby classno image.png 总结 从上面可以看出collect_list和collect_set其实就是行转列,需要注意的就是行转列的时候是无序的,如需按照某个字段排序整合,可...
注:xxx代表虚表名称,不能缺少。 进一步深化上述代码解决统计一段时间的去重值,可写为: select no,collect_set(score) from tablaa lateral view explode(score_set) xxx as score group by no; 这样,将两个函数结合实现了行转列或列转行的妙用。