繁体   English   中英

雪花 Json 数组/方括号围绕所有对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM