雪花 SQL 中的 JSON 解析

时间:2021-06-21 21:13:33

标签: sql json snowflake-cloud-data-platform

我正在尝试使用 Snowflake 中的 SQL 将原始 json 转换为以下所需的结果。我怎样才能做到这一点?

我试过 parse_json(newFutureAllocations[0]:fundId) 但这只会带回第一个 fundId 元素。

原件 “新未来分配”:[ { “基金编号”:1, “百分比分配”:2500 }, { "fundId": 5, “百分比分配”:7500 } ]

希望 “新未来分配”:{ “1”:2500, “5”:7500 }

2 个答案:

答案 0 :(得分:0)

您需要使用 flatten 将数组元素转换为行,然后使用 object_agg() 将它们再次聚合,作为对象而不是数组。确切的语法取决于您的查询、数据等的其余部分,而您没有提供足够的详细信息。

答案 1 :(得分:0)

这里的挑战是重新构造对象,我使用了字符串连接:

with data as (
select parse_json(
    '[ { "fundId": 1, "percentAllocation": 2500 }
    , { "fundId": 5, "percentAllocation": 7500 } ]') j
)

select parse_json('{'||
  listagg('"'||x.value:fundId ||'"'||':'|| x.value:percentAllocation, ',')
  ||'}')
from data, table(flatten(j)) x
group by seq

enter image description here