我最近转向 Snowflake,并尝试扩展我的 JSON 字符串,类似于 Postgres 中的 jsonb_array_elements 函数。下面是我在进行任何操作之前所拥有的示例,我们可以将此表称为 mytable
id date cost details
123 2020-02-01 30 {"currency": "USD", "name":"John Smith", "items":[{"type":"hat", "value":"20"}, {"type":"tshirt", "value" : "10"}]}
通常我会在 postgres 中运行以下代码
SELECT
id,
date,
cost as total_cost,
jsonb_array_elements(details->'items') as details
from mytable
获得以下输出:
id date total_cost details
123 2020-02-01 30 {"type":"hat" , "value":"20"}
123 2020-02-01 30 {"type":"tshirt" , "value":"10"}
然后我可以将类型和值解析到它们自己的列中。
在 Snowflake 中是否有等效的方法可以做到这一点?
提前致谢!
最佳答案
是的,有一种方法可以获得该输出。在LATERAL连接中使用FLATTEN表函数。
SELECT
t.id,
t.date,
t.cost as total_cost,
f.*
from mytable t
, lateral flatten (input => t.details:items) f
这是您需要的最基本的语法。探索更多这个功能,因为它非常强大。
关于sql - Snowflake 中有等效的 jsonb_array_elements 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60201120/