如何将 JSON 字典列表转换为 Snowflake 中的字符串列表?
Posted
技术标签:
【中文标题】如何将 JSON 字典列表转换为 Snowflake 中的字符串列表?【英文标题】:How can I convert a JSON list of dicts to a list of strings in Snowflake? 【发布时间】:2020-06-25 08:36:10 【问题描述】:我有一个 Snowflake 表,其中包含一个 id
列和一个 favorite_books
列。 favorite_books
列包含 JSON 格式的字典列表。每个字典都有一个title
和一个ISBN
属性:
ID | favorite_books
--------------------
42 | ["title": "LotR", "ISBN": "9780261102354", "title": "HP1", "ISBN": "9780545582889"]
13 | ["title": "Faust", "ISBN": "9780192835956"]
我的实际情况更复杂,但缺少的部分是仅选择标题。所以结果应该是:
ID | favorite_books
--------------------
42 | ["LotR", "HP1"]
13 | ["Faust"]
我看到了Querying Semi-Structured Data,但我仍然不知道该怎么做。
【问题讨论】:
这能回答你的问题吗? How can I apply a function to each element of a array column? 【参考方案1】:适配an existing answer for a similar data structure,你可以这样尝试(使用CTE,分解数组,然后根据ID重新组合成一个新数组):
with elements as (
select ID, elements.value:title as title
from table_name, LATERAL FLATTEN(input => favorite_books) elements
)
select elements.ID, ARRAY_AGG(elements.title) as favorite_books from elements
group by ID;
或者通过更直接的 javascript UDF(只是转换数组):
create or replace function extract_titles(A array)
returns array
language javascript
strict
as
$$
return A.map(function(d) return d.title);
$$
;
select ID, EXTRACT_TITLES(favorite_books) as favorite_books from table_name;
【讨论】:
以上是关于如何将 JSON 字典列表转换为 Snowflake 中的字符串列表?的主要内容,如果未能解决你的问题,请参考以下文章
如何将返回的python JSON字典转换为字典中的列表,并将数据转换为SQL插入