首页 > 解决方案 > Snowflake SQL:如何使用 JSON 对象循环遍历数组,以查找符合条件的项目

问题描述

打破我的头。在雪花中,我的字段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.

任何帮助表示赞赏!克里斯

标签: sqljsonsnowflake-cloud-data-platformflatten

解决方案


你可以把它写成:

SELECT value:content::string AS city_name
FROM tab,
LATERAL FLATTEN(input => tab.city_info)
WHERE value:name::string = 'city'

推荐阅读