在Snowflake SQL中提取JSON值

v09wglhw  于 2023-10-21  发布在  其他
关注(0)|答案(3)|浏览(150)

我想使用SQL从Snowflake中包含JSON的一列值创建两列。
假设此表名为keywords_bids,则有一个名为keywords的列,其中包含JSON
在keywords列中的单元格中的示例json:
row1:**{“apple”:0.1,“peach”:0.2,“banana”:0.1}**row2:类似的JSON等等。
input image我想创建一个名为keyword的列,它是从JSON输出的出价价格将是:
关键字|Bid
'苹果'| 0.1
‘桃子’|0.2
'banana'| 0.3

3pvhb19x

3pvhb19x1#

首先,对于JSON,您需要将单引号更改为双引号。
然后你只需要将json扁平化来获得键和值:

with data as (
select parse_json('{"apple":0.1, "peach":0.2, "banana":0.1}') j
)

select k.key, k.value
from data, table(flatten(j)) k
;

zsohkypk

zsohkypk2#

https://community.snowflake.com/s/article/Dynamically-extracting-JSON-using-LATERAL-FLATTEN
本文将演示使用LATERAL FLATTEN从JSON文档中提取信息的各种示例。提供了与GET_PATH、UNPIVOT和SEQ函数一起使用的示例。

6jygbczu

6jygbczu3#

在snowflake中从JSON中获取值的简单方法是例如:表:ABC列:Json_column包含JSON内容,如“carriers”:[ {“代号”:“AAAA”,“flightNumber”:“类型”,“类型”:“操作”},{“代码”:“BBBB”,“flightNumber”:“YYYY”,“type”:“市场营销”} ]
SELECT Json_column:carriers[0].code::varchar AS first_child,Json_column:carriers[1].code::varchar AS first_childFROM ABC;

SQL结果为AAAA、BBBB

因为数据在数组中,我们使用[0]和[1]来获取JSON的值。我希望它能帮助你

相关问题