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 值并识别差异 -Snowflake SQL

解析 JSON 时出错:输入中有多个文档(Redshift 到 Snowflake SQL)

SQL 编译错误:从 S3 复制到 Snowflake 时,JSON 文件格式只能生成一列类型变量或对象或数组

如何从 Snowflake Stage 加载大型 JSON 文件?

如何使用 Snowflake sql 查询的结果填充 pandas DataFrame?

Snowflake 中的 SQL Server 等效表类型是啥