首页 > 解决方案 > 在 json 数据上创建报告/仪表板

问题描述

我在谷歌云上部署了问卷网络应用程序(使用 ReactJS 框架)。问题和答案以 json 格式(键、值对)保存在 Cloud SQL (Postgres) 表列中,如下所示:

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

在 Data Studio 中创建报表时,上述 json 格式不会分解为单独的 key 和 value ,而是将整个 json 格式视为单个。但我想在将键值对提取到各个列之后构建报告。怎么做?。在此处输入图像描述

标签: postgresqlgoogle-data-studio

解决方案


Data Studio 无法为您执行此操作(实际上,也许它可以使用 REGEX,但它并不值得付出努力),但您可以在 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 字段。


推荐阅读