Snowflake SQL:如何使用 JSON 对象循环遍历数组,以查找符合条件的项目
Posted
技术标签:
【中文标题】Snowflake SQL:如何使用 JSON 对象循环遍历数组,以查找符合条件的项目【英文标题】:Snowflake SQL: How to loop through array with JSON objects, to find item that meets condition 【发布时间】:2021-03-09 16:49:50 【问题描述】:在这件事上让我很头疼。在 Snowflake 中,我的字段 city_info
看起来像(3 个样本记录)
["name": "age", "content": 35, "name": "city", "content": "Chicago"]
["name": "age", "content": 20, "name": "city", "content": "Boston"]
["name": "city", "content": "New York", "name": "age", "content": 42]
我尝试从中提取一列city
Chicago
Boston
New York
我试图把它弄平
select *
from lateral flatten(input =>
select city_info::VARIANT as event
from data
)
从那里我可以得出该值,但这仅允许我为 1 行执行此操作(因此我必须添加 limit 1
,这没有意义,因为我的所有行都需要此)。
如果我尝试对 3 行执行此操作,它会告诉我 subquery returns more than one row.
感谢任何帮助!克里斯
【问题讨论】:
【参考方案1】:你可以这样写:
SELECT value:content::string AS city_name
FROM tab,
LATERAL FLATTEN(input => tab.city_info)
WHERE value:name::string = 'city'
【讨论】:
以上是关于Snowflake SQL:如何使用 JSON 对象循环遍历数组,以查找符合条件的项目的主要内容,如果未能解决你的问题,请参考以下文章
解析 JSON 时出错:输入中有多个文档(Redshift 到 Snowflake SQL)
SQL 编译错误:从 S3 复制到 Snowflake 时,JSON 文件格式只能生成一列类型变量或对象或数组
如何从 Snowflake Stage 加载大型 JSON 文件?