#sql #json #snowflake-cloud-data-platform #flatten
#sql #json #snowflake-cloud-data-platform #сгладить
Вопрос:
Ломаю голову над этим. В 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'