Как сгладить значения подряд в Google Big Query - PullRequest
0 голосов
/ 14 ноября 2018

1001 * ребята *

У меня проблема с моими данными в большом запросе. У меня есть набор данных, такой как рис. 1, и мне нужно ранжировать своих пользователей и группировать их рейтинговые заметки в уникальную строку (например, рис. 2). Чтобы быть понятным, мой ranking тип столбца int, а не array.

Можно ли обработать этот большой запрос или мне нужно перенести этот набор данных в python и выполнить там преобразование?

ОРИГИНАЛЬНЫЙ ДАННЫЙ PIC # 1

PIC #1 - ORIGINAL DATASET

PIC # 2 Сгруппированные и отформатированные данные

PIC #2 - GROUPED AND FORMATED DATASET

1 Ответ

0 голосов
/ 14 ноября 2018

Ниже приведен пример для BigQuery Standard 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   
...