雪花 json 从 varchar 数据类型变平

时间:2021-06-25 14:32:54

标签: snowflake-cloud-data-platform

需要扁平化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

1 个答案:

答案 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
*/