Объединить повторную запись в Google Big Query - PullRequest
2 голосов
/ 27 марта 2020

У меня есть данные, которые существуют в следующей JSON структуре

{"person": "John", "children": [{"name":"Tim", "age":9},{"name":"Suszan", "age":12},{"name":"Karl", "age":14}]}

, а в Big Query он имеет schmea

children        RECORD  REPEATED    
children. age   INTEGER NULLABLE    
children. name  STRING  NULLABLE    
person          STRING  NULLABLE    

Когда мы смотрим на фактическую таблицу, у нас есть это

enter image description here

, но я действительно хотел бы иметь данные в следующем формате

enter image description here

Я застрял, потому что знаю, что могу использовать unnest(children) as children для доступа к записи, но он полностью создает новую строку, но я не могу использовать ARRAY_TO_STRING(children.name), потому что это не просто массив. Я как бы застрял между ними.

Спасибо.

Ответы [ 2 ]

1 голос
/ 27 марта 2020

Вы должны иметь доступ к элементам и совокупности, которые:

select t.person, string_agg(child, ',')
from t cross join
     unnest(children) child
group by t.person;
0 голосов
/ 27 марта 2020

Я бы лучше предложил версию ниже

#standardSQL
SELECT person, 
  (SELECT STRING_AGG(name) FROM t.children) AS children
FROM `project.dataset.table` t 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...