在极大的数据量(且很多重复值)时,可以先group by去重,再count()计数,效率高于直接count(distinct **) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. ...
我们观察到上面的结果中,sail看的电影已经重复了;所以应该增加去重,使用collect_set,它与collect_list的区别就是增加了去重功能: select username, collect_set(video_name) from t_visit_video group by username; 1. 2. 输出结果: fox ["IPZ-218","IPX-030","KAWD-445"] john ["PGD-585","PGD-876"]...
1.collect_set 分组组合数组(数组内去重) collect_set select code ,collect_set(tenant_id) from dim_mkt_event group by code; 2.array_contains 数组中是否包含 ,返回布尔类型 select code ,array_contains(set_tenant,1211809272448907264) ,!array_contains(set_tenant,1211809272448907264) from ( select code ...
step2,每个order一行,”去重“拼接 category字段 collect_set,去重concat_ws,拼接 下面这个例子简单易懂,可以参考~~ hive中的concat,concat_ws,collect_set用法_waiwai3的博客-CSDN博客blog.csdn.net/waiwai3/article/details/79071544 今天就学习到这里~~~希望对你有^^ ...
concat_ws(',',collect_list(name)) 等价于 OushuDB 中的 select id,string_agg(name,',') from id group by id; --行转列 concat_ws(',',collect_set(name)) 等价于 OushuDB 中的 select id,array_to_string(array_agg(distinct name),',') from id group by id; --行转列去重...
concat_set 功能:用于将一列中的多行合并为一行,并进行去重 语法 collect_set(colName) 测试 select collect_set(col1) from row2col1; +---+ | ["b","a"] | +---+ 实现 创建原始数据表,加载数据 --建表 create table row2col2( col1 string, col2 string, col3 int )row format delimited ...
只是去重的话可以用collect_set,,,如果还需要保持有序可能就需要用collect_list了
COLLECT_SET(col):将指定列转换为去重的数组。 12.列举下你所知道的行专列函数? EXPLODE(col):将Hive中类型为复杂类型Array或者HashMap的列转换为多行。 LATERAL VIEW():常与UDTF函数配合使用,将指定列拆分为多行数据。 LATERALVIEW()EXPLODE(SPLIT(a))tableAliasAScolumnAlias ...
# collect_set(组函数) 作用:对分组后的,每个组的某个列的值进行收集汇总,并去掉重复值。语法:select collect_set(列) from 表 group by 分组列; select username,collect_set(video_name) from t_visit_video group by username; # concat_ws(单行函数) 作用:如果某个字段是数组,对该值得多个元素使用指定...