人
我在大查询中的数据有问题。我有一个像pic#1这样的数据集,我需要对我的用户进行排名并将他们的排名笔记分组到一个唯一的行中(例如pic#2)。需要明确的是,我的ranking
列类型是int
,而不是array
。
是否可以处理此w / bigquery还是我需要将此数据集传输到python并在那里进行转换?
PIC#1原始数据集
PIC#2分组和格式化的数据集
答案 0 :(得分:1)
以下BigQuery标准SQL示例
#standardSQL
WITH `project.dataset.table` AS (
SELECT 'a' user, 10 ranking UNION ALL
SELECT 'b', 2 UNION ALL
SELECT 'a', 12 UNION ALL
SELECT 'a', 14 UNION ALL
SELECT 'c', 22 UNION ALL
SELECT 'd', 21
)
SELECT
user,
MAX(ranking) AS ranking_max,
STRING_AGG(CAST(ranking AS STRING)) ranking_list
FROM `project.dataset.table`
GROUP BY user
有结果
Row user ranking_max ranking_list
1 a 14 10,12,14
2 b 2 2
3 c 22 22
4 d 21 21
注意:如果需要订购ranking_list
-您可以在ORDER BY
中使用STRING_AGG
,如下所示
STRING_AGG(CAST(ranking AS STRING) ORDER BY ranking) ranking_list