我最近搬到了Snowflake,并尝试扩展类似于Postgres中的jsonb_array_elements函数的JSON字符串。下面是我进行任何操作之前所拥有的示例,我们可以将此表称为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中有等效的方法吗?
谢谢!
答案 0 :(得分:0)
可以重现r = randi(80,N,1);
在做什么。
您需要使用FLATTEN,请查看this文档以供参考。
在您的特定情况下,您将执行以下操作
>> r = randi(80,N,1)
r =
65
35
73
15
22
答案 1 :(得分:0)
是的,有一种获取输出的方法。在 LATERAL 联接中使用 FLATTEN 表功能。
SELECT
t.id,
t.date,
t.cost as total_cost,
f.*
from mytable t
, lateral flatten (input => t.details:items) f
这是您所需要的最基本的语法。探索该功能,因为它非常强大。