Как объединить строки на основе идентификатора, - PullRequest
0 голосов
/ 30 мая 2019

Использование стандартного SQL в больших запросах:

Учитывая таблицу, такую ​​как: где значения были подсчитаны, поэтому появляются только один раз

| id | key | value |
--------------------
| 1 | read |  aa   |
| 1 | read |  bb   |
| 1 | name |  abc  |
| 2 | read |  bb   |
| 2 | read |  cc   |
| 2 | name |  def  |
| 2 | value|  some |
| 3 | read |  aa   | 

Как сделать так, чтобы в каждой строке был один пользователь и соответствующие ему значения? например NEST

Таким образом, таблица будет выглядеть так:

| id | key | value |
--------------------
| 1 | read |  aa   |
|   | read |  bb   |
|   | name |  abc  |
| 2 | read |  bb   |
|   | read |  cc   |
|   | name |  def  |
|   | value|  some |
| 3 | read |  aa   | 

Я попытался использовать ARRAY_AGG для столбца, который в итоге перечисляет все значения этого столбца.

Мне просто нужно, чтобы каждая строка была как один пользователь с несколькими значениями, как показано выше.

Как BigQuery делает здесь, я хочу, чтобы это выглядело так:

1 Ответ

2 голосов
/ 30 мая 2019

Ниже для BigQuery Standard SQL

#standardSQL
SELECT id, ARRAY_AGG(STRUCT(key AS key, value AS value)) params
FROM `project.dataset.table`
GROUP BY id  

, если применить к вашим образцам данных - результат

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...