如何在Google Big Query中连续取整值

时间:2018-11-14 20:09:27

标签: google-bigquery flatten

我在大查询中的数据有问题。我有一个像pic#1这样的数据集,我需要对我的用户进行排名并将他们的排名笔记分组到一个唯一的行中(例如pic#2)。需要明确的是,我的ranking列类型是int,而不是array

是否可以处理此w / bigquery还是我需要将此数据集传输到python并在那里进行转换?

PIC#1原始数据集

PIC #1 - ORIGINAL DATASET

PIC#2分组和格式化的数据集

PIC #2 - GROUPED AND FORMATED DATASET

1 个答案:

答案 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