Snowflake cloud data platform 雪花查询作为数组存储的嵌套JSON
我已经运行了以下代码来生成表中的数组Snowflake cloud data platform 雪花查询作为数组存储的嵌套JSON,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我已经运行了以下代码来生成表中的数组 CREATE OR REPLACE TABLE PROVIDER_TABLE_V8 AS SELECT "rmpostcode", array_agg(object_delete(object_construct(f.*),'rmpostcode') ) within group (order by "name") AS "providers" FROM FASTEST_DOWN_STR_V8
CREATE OR REPLACE TABLE PROVIDER_TABLE_V8 AS
SELECT "rmpostcode",
array_agg(object_delete(object_construct(f.*),'rmpostcode') ) within group (order by "name") AS "providers"
FROM FASTEST_DOWN_STR_V8 f
GROUP BY "rmpostcode";
我现在试图检查生成的表是否完成了我认为它已经完成的操作。。。但我不确定如何查询结果对象。尝试横向展平等都失败了,因为它不再是JSON了,是吗
编辑:谢谢@Rob Silva,我已将数据类型更改为VARIANT,这对创建此表有所帮助
我的目标是
[{最快下降:0.00,名称:B4RN,当前值:0},{最快下降:0.00,名称:Gigaclear,当前值:0},{最快下降:0.00,名称:OFNL IFNL,当前值:0},{最快下降:0.00,名称:airband_fibre,当前值:0},{最快下降:0.00,名称:balquhidder,当前:0},{最快下降:0.00,名称:BlackFiber,当前:0},]
那是一排
我要做的是查找指定名称中present=1的所有行,但我很难查询嵌套的JSON对象。Chris-尝试使用parse_jsonproviders,看看结果对象是否可以按预期的方式展平 尝试横向展平等失败,因为它不再是JSON, 是吗 是的。你可以把它转到jsonlint.com,它会进行验证 下面是如何一步一步地使其工作的分解:
create table foo (v variant);
-- Insert your data
insert into foo select parse_json('<your json>');
-- See how it looks raw.
select * from foo;
-- Now flatten the array with a lateral join.
-- Note the addition of metadata columns from the
-- output of the flatten table function
select * from foo, lateral flatten(v);
-- Filter rows to where present = 1
-- Parse using the pattern COLUMN_NAME:json_property::cast_type
select * from foo, lateral flatten(v) where VALUE:present::int = 1;
-- Clean up and alias the names, etc.
select VALUE:fastest_down::float as FASTEST_DOWN
,VALUE:name::string as "NAME"
,VALUE:present::int as PRESENT
from foo, lateral flatten(v)
-- Optionally add your where clause on PRESENT
;
不幸的是,它没有-我从UPC.DEV.PROVIDER_TABLE_V8 LIMIT 10运行SELECT parse_JSON providers;但是我得到了错误SQL编译错误:错误行1位于函数“parse_JSON”的位置7无效参数类型:在您添加的示例中,您在同一行中有多个present。您的意思是至少一个present=1,或者名称是输入的一部分吗?是的,对不起,我应该放原始表,但它是rmpostcode,name,faster down,presentThank@Greg,这是一个棘手的函数来让你的头脑一开始,但设法得到这个工作我个人认为OP案例的问题是数组_agg创建数组类型,雪花期望对象或variant或parse_json的文本。::变量应该是解决问题的好方法