从列中添加变量计数列

时间:2016-03-21 10:22:23

标签: sql apache-spark pivot

在apache spark中,我的数据框是' category'专栏总是' a'或者' b'。

user_id | category
====================
1       | a
1       | a
1       | b
2       | a
2       | b
2       | b

我想制作专栏' a'和列' b'为了他们的数量。 我想要的结果如下。

user_id | a | b
===============
1       | 2 | 1
2       | 1 | 2

3 个答案:

答案 0 :(得分:2)

您可以使用条件聚合:

SELECT user_id, 
       COUNT(CASE WHEN category = 'a' THEN 1 END) AS a
       COUNT(CASE WHEN category = 'b' THEN 1 END) AS b
FROM mytable
GROUP BY user_id

答案 1 :(得分:1)

这样做无需事先知道ab

df.groupBy($"id").pivot("category").count().show

答案 2 :(得分:0)

全部谢谢。 为了完整性,我使用了带有列表[' a',' b']的数据透视方法。

df.groupBy($"id").pivot("category", ['a', 'b']).count().show