[英]Snowflake Json array/square brackets around all objects
我正在使用该代码转换 JSON 中的数据并获得结果,这很好。 但我需要另一种格式,以便我们的机构能够使用这些数据。
这是我使用的代码:
SELECT *
from(
SELECT ARRAY_CONSTRUCT(
OBJECT_CONSTRUCT(
'sku',ID,
'price',price,
'bigImageLink', bigImageLink,
'attributes',
OBJECT_CONSTRUCT(
'make',make,
'model',model,
'submodel',submodel,
'classification',classification,
'year',"year",
'mileage',mileage,
'colour',colour,
'fuel',fuel,
'gearbox',gearbox,
'ps',ps,
'emission-class', emissionclass,
'enginedisplacement',enginedisplacement,
'offertype',offertype)
)) from
--
(select * from (select
REPLACE(parse_json(OFFER):"spec":"im:offerID",'"')::varchar AS ID,
.,
.,
.,
'USED' offertype,
REPLACE(parse_json(OFFER):"spec":"price":"consumerPriceGross",'"')::integer AS price,
Split_part(substring(REPLACE(parse_json(OFFER):"spec":"images",'"')::varchar,11),',',0) AS bigimagelink
FROM "DL_Datatap"."PUBLIC"."DT_Garage_garage_vehicle_inventory_raw"
WHERE status='published'
)))
我得到的结果是每一行都是带有方括号的 JSON ,这绝对有意义:
[{...}]
[{...}]
[{...}]
[{...}]
但我/我们的代理机构需要的是 {} 中的每一行,由逗号限制,所有行都用 [] 括起来:
[
{...},
{...},
{...},
]
认为这很容易......但我找不到将所有行放在另一个数组中的方法。
我很确定您只是想使用 ARRAY_AGG( ) function 来获得您正在寻找的东西,例如如下。 但是请注意,如果您要提取大量数据,则可能会达到大小限制,并且必须考虑替代方案:
create table demo_table_1 (province varchar, created_date date);
insert into demo_table_1 (province, created_date) values
('Manitoba', '2020-01-18'::date),
('Alberta', '2020-01-19'::date);
select object_construct(*) as record from demo_table_1;
RECORD
{ "CREATED_DATE": "2020-01-18", "PROVINCE": "Manitoba" }
{ "CREATED_DATE": "2020-01-19", "PROVINCE": "Alberta" }
select array_agg(record) one_record FROM (
select object_construct(*) as record
from demo_table_1);
ONE_RECORD
[{"CREATED_DATE": "2020-01-18", "PROVINCE": "Manitoba"},{"CREATED_DATE": "2020-01-19", "PROVINCE": "Alberta"}]
有用的网址:
https://docs.snowflake.com/en/sql-reference/functions/object_construct.html
https://docs.snowflake.com/en/sql-reference/functions/array_agg.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.