#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.