我在单元格中有一个名为标记的列,它的数据如下:
tags-column
c#
C#,unix
c++,templates,metaprogramming,debugging,
c#,delegates,design,events
unix,templates,events如何计算每个标签的数量?
对于上面列的结果,我应该
c# 3
unix 2
templates 2
metaprogramming 1
debugging 1
delegates 1
design 1
events 2发布于 2016-10-05 11:59:38
你在蜂巢中看到的LATERAL VIEW功能。
此特性拆分给定的列,并使用每个令牌创建多行。您需要应用GROUP BY子句来获取计数。
示例HQL (以下是区分大小写的,即c#与C#不相同):
SELECT
single_tag,
count(1) as cnt
FROM
tags_table LATERAL VIEW explode(split(tags_column, ',')) tag_table AS single_tag
GROUP BY
single_tag
ORDER BY
cnt;要使其不区分大小写,可以使用lower或upper函数。例如:
SELECT
lower(single_tag),
count(1) as cnt
FROM
tags_table LATERAL VIEW explode(split(tags_column, ',')) tag_table AS single_tag
GROUP BY
lower(single_tag)
ORDER BY
cnt;使用split将String字段转换为Array<String>字段。
https://stackoverflow.com/questions/39871332
复制相似问题