hive - 当元素可以分配到多个组时,如何计算组中的元素
问题描述
给定以下数据:(id:int,group: string)
+---------+-----------+
| id | group |
+---------+-----------+
| 1 | 'a,b,c' |
| 2 | 'a' |
| 3 | 'a,c' |
+---------+-----------+
我想获得每个组的参与者数量。结果应该是:
+---------+--------+
| group | count |
+---------+--------+
| a | 3 |
| b | 1 |
| c | 2 |
+---------+--------+
我怎样才能实现它?查询应该是什么样子?我试过使用 split() 函数但没有任何结果:/
解决方案
这应该可以解决问题:
select
main.group,
count(1)
from
(
select
explode(split(group, ",")) as group
from
main
) main
group by
main.group
如果您的查询比您提供的示例更复杂,您可能还想阅读lateral view
.
参考。https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
推荐阅读
- python - 在 Python 中使用 while 循环在游戏中检查点
- firebase - 在 Flutter 测试中添加实时监听器
- java - Java:如何以排序方式迭代 LinkedList?
- python - 连续查找第一次出现的负值
- python - 从 Python 中的数据流中提取携带信息的 12 位
- excel - 循环以确保输入框条目为八个字符长且为数字
- python - 对列表中的数据框列进行分组
- browser - 如何在电子浏览器中打开网站
- google-sheets - Google 表格 – 使用新的时间戳保存而不进行更改
- r - 如何将函数应用于数据框,然后应用于数据框列表?