展平雪花中嵌套的 JSON blob

问题描述 投票:0回答:1

我正在尝试将 MyTable 中的以下 JSON Blob 展平,即 varchar:

我的桌子

A B JSONBlob
x 1 {“a”:“12345”,“b”:“城市”,“c”:“州”,“d”:{“e”:“567”,“f”:“llc”}}
y 2 {"a": "6789", "b": "国家", "c": "县", "d": {"e":"999", "f":"col"} }

到目前为止我已经尝试过但没有返回任何结果:

select
f. value as a
, f1.value:f as f
from MyTable
, lateral flatten(input => PARSE_JSON(MyTable.JSONBlob)) f
, lateral flatten(input => f.value:d) f1

我想查询得到以下格式的结果:

a f
12345 LLC
6789 col
json snowflake-cloud-data-platform blob
1个回答
0
投票

如果所有数据看起来都像示例,则不需要展平。

f
中的值仅嵌套在
d
中,即上面的示例。

这个 SQL 会给你你正在寻找的结果

select jb:a::text a, jb:d:f::text f
  from (select PARSE_JSON(JSONBlob) jb
          from myTable)

使用以下内容进行测试,结果如下

with myTable(A,B,JSONBlob) as (
select * from (values
('x',1,'{"a": "12345", "b": "city", "c": "state", "d": {"e":"567", "f":"llc"} }'),
('y',2,'{"a": "6789", "b": "country", "c": "county", "d": {"e":"999", "f":"col"} }'))
)
select jb:a::text a, jb:d:f::text f
  from (select PARSE_JSON(JSONBlob) jb
          from myTable)

© www.soinside.com 2019 - 2024. All rights reserved.