Создание отчета / информационной панели для данных json

#postgresql #google-data-studio

# #postgresql #google-data-studio

Вопрос:

У меня есть веб-приложение для опроса (использует платформу ReactJS), развернутое в Google cloud run. вопросы и ответы сохраняются в столбце таблицы Cloud SQL (Postgres) в формате json (ключ, пара значений), как показано ниже:

 {"Email Address":"xyz123@gmail.com","Name":"Shubman","How did you find us":"Web search","Capital":200000,"Instruments":["Convertible","SAFE"]}
 

При создании отчета в Data Studio вышеуказанный формат json не разносится как отдельный ключ и значение, вместо этого он обрабатывает весь формат json как единый. но я хочу создать отчет после извлечения пары значений ключа в отдельные столбцы. Как это сделать?.введите описание изображения здесь

Ответ №1:

Data Studio не может сделать это за вас (на самом деле, возможно, это возможно с помощью регулярных выражений, но на самом деле это не стоит усилий), но вы можете сделать запрос в Cloud SQL / PostgreSQL, чтобы разделить этот JSON на отдельные столбцы.

Предположим, что ваша таблица выглядит следующим образом (обратите внимание на вызываемое поле json my_json ):

 create table dumb_table (id integer, firstname varchar(100), lastname varchar(100), my_json json);
insert into dumb_table (id, firstname, lastname, my_json) values (1, 'albert', 'einstein', '{"customer": "Lily", "items": {"product": "Beer","qty": 46}}');
insert into dumb_table (id, firstname, lastname, my_json) values (2, 'isaac', 'newton', '{"customer": "Josh", "items": {"product": "Milk","qty": 77}}');
insert into dumb_table (id, firstname, lastname, my_json) values (3, 'marie', 'curie', '{"customer": "Mary", "items": {"product": "Soda","qty": 88}}');
 

Вы можете разделить их на отдельные поля следующим образом:

 select
   /* get all fields */
   dumb_table.*

   /* explode the remaining JSON fields */
   , dumb_table.my_json ->> 'customer'           as customer_name
   , dumb_table.my_json -> 'items' ->> 'product' as product_name
   , dumb_table.my_json -> 'items' ->> 'qty'     as quantity
from dumb_table;
 

Таким образом, Data Studio не нужно анализировать ваше поле JSON.