需要扁平化json数据,来自雪花中的varchar/string数据类型列
create table testjson1 (name varchar(200))
select name:batchNumber from testjson1, lateral flatten( input => name )
insert into testjson1 select parse_json('{"batchNumber" : "B12345", "productCode" : "P1234"}')
insert into testjson1 select ('2020-09-13T14:00:00.0000000')
select name:batchNumber from testjson1
答案 0 :(得分:0)
这里的关键是转换/解析 varchar 列,这里使用 TRY_PARSE_JSON:
选项 1:
select t.*, f.PATH, f.VALUE
from testjson1 t, lateral flatten(input => TRY_PARSE_JSON(name), OUTER=>true) f;
/*
NAME PATH VALUE
{"batchNumber":"G35H9","productCode":"AHF7124"} batchNumber "G35H9"
{"batchNumber":"G35H9","productCode":"AHF7124"} productCode "AHF7124"
2020-09-13T14:00:00.0000000 NULL NULL
*/
选项 2:
select *, TRY_PARSE_JSON(name):batchNumber::string AS result from testjson1
/*
NAME RESULT
{"batchNumber":"G35H9","productCode":"AHF7124"} G35H9
2020-09-13T14:00:00.0000000 NULL
*/