【发布时间】:2016-11-19 20:15:13
【问题描述】:
我目前有一个问题,我需要在组中查找组数。但是,我想在线创建包含组并将较小的组连接到一个字符串中。
下表显示了我目前面临的情况:
----------------------------------------
Timestamp ID Member
----------------------------------------
1 1 A
1 1 B
1 2 A
1 2 B
1 2 C
2 1 A
2 2 A
2 2 A
2 2 C
----------------------------------------
现在我想查找每个时间戳,每个 ID 有多少(不同)成员在表中,即结果应如下所示:
Timestamp MemberIDCount
----------------------------------------
1 1:2,2:3
2 1:1,2:2
----------------------------------------
即字符串的格式为:
[ID]:[count(distinct(member)],...
我知道,您可以通过两个连续的分组来解决这个问题(即,首先在时间戳和 ID 上计算成员,然后在时间戳上进行字符串连接)。但是,我希望有一个更智能的解决方案,因为我必须将其应用于大型数据集并且不想执行 2 group bys。我使用 Cloudera Impala,但其他 SQL 语言的解决方案也很受欢迎。
感谢您的帮助。
【问题讨论】: