Как получить вывод большого запроса в заданном формате c json - PullRequest
0 голосов
/ 19 марта 2020

У меня есть таблица больших запросов в этом формате:

DataProvider, Id, Name, Time

AB C, f8453e99-516f-4f15-a3bd-8749089b6934, "xyz", 43200

AB C, f8453e99-516f-4f15-a3bd-8749089b6934, "123", 43200

AB C, 00453e99-516f-4f15-a3bd-8749089b6934, "XYZ ", 43200

Я хочу сгенерировать вывод в следующем формате (json):

{" dataProviderId ":" AB C "," items ": [{" Id ":" f8453e99-516f-4f15-a3bd-8749089b6934" , "данные": [{ "Имя": "XYZ", "Время": 43200}, { "Имя": "XYZ", "Время": 43200} ], {"Id": "00453e99-516f-4f15-a3bd-8749089b6934", "data": [{"Name": "xyz", "Time": 43200}]}

Ответы [ 2 ]

0 голосов
/ 19 марта 2020

Ниже для BigQuery Standard SQL

#standardSQL
SELECT TO_JSON_STRING(t) json 
FROM (
  SELECT dataProvider, ARRAY_AGG(STRUCT(id, data)) items
  FROM (
    SELECT dataProvider, id, ARRAY_AGG(STRUCT(name, time)) data
    FROM `project.dataset.table` t
    GROUP BY dataProvider, id
  )
  GROUP BY dataProvider
) t   

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

Row json     
1   {"dataProvider":"ABC","items":[{"id":"f8453e99-516f-4f15-a3bd-8749089b6934","data":[{"name":"xyz","time":43200},{"name":"123","time":43200}]},{"id":"00453e99-516f-4f15-a3bd-8749089b6934","data":[{"name":"xyz","time":43200}]}]}  
0 голосов
/ 19 марта 2020

В вашем CLI вы можете использовать команду bq с флагом --format, где вы можете передать формат prettyjson (легко читаемый JSON формат).

bq query --format=prettyjson --use_legacy_sql=false 'SELECT * FROM `project_id`:dataset.table' > output.json

Используя > в конце команды, можно сохранить выходные данные команды в новый файл. Вы сможете увидеть результаты запроса в файле. json.

Надеюсь, это поможет.

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