BigQuery — преобразование вложенного столбца в json без имени столбца

# #postgresql #google-bigquery

Вопрос:

у меня есть следующая схема таблицы:

схема таблицы

я хочу преобразовать столбец items в строку json, но вывод TO_JSON_STRING-это не то, что мне нужно. когда я запускаю этот запрос, я получаю:

 SELECT id, store, TO_JSON_STRING(items) AS items_json FROM nested_array_example  

введите описание изображения здесь

но мне нужно, чтобы items_json был:

{«стол»: «3», «лампа»: «7», «шведская вещь»: «729»}

есть ли способ сделать это в bigquery? вот запрос для создания данных таблицы:

 INSERT INTO `project_name.data_seT_name.nested_array_example` (store, items, id) VALUES ("ikea", [("table","3"),("lamp","7"),("swedish_thing",'729'),("swedish_thing_made_in_china",'5723')], '1')  

Ответ №1:

Рассмотрим следующий подход

 select id, store,   ( select '{' || string_agg(format('"%s": "%s"', name, value)) || '}'   from t.items  ) items_json from `project_name.data_seT_name.nested_array_example` t   

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

введите описание изображения здесь

Комментарии:

1. ты-легенда! спасибо тебе огромное!!!