如何在PieCloudDB中提取JSON数组并展开为行数据
解决方案
你的需求是将JSON对象中每个键对应的数组元素单独拆分为一行,PieCloudDB兼容PostgreSQL的JSON处理函数,通过两层展开即可实现:
正确SQL语句
SELECT obj.key AS my_key, arr.value AS my_value FROM my_table, json_each(attributes) AS obj, json_array_elements_text(obj.value) AS arr;
逻辑说明
json_each(attributes):将JSON对象拆分为键值对行,每一行对应原JSON中的一组key:数组组合,例如得到(A001, ["123","124","125"])和(A002, ["234","235","236"])两行数据。json_array_elements_text(obj.value):将上一步得到的数组值进一步拆分为单个文本元素,每个元素单独占一行,最终得到你需要的扁平化结果。
原SQL不符合预期的原因
你之前使用的json_object_keys仅提取了JSON对象的键,attributes ->> json_object_keys(attributes)是直接取出键对应的完整数组值,没有对数组进行拆分,因此返回的是整个数组而非单个元素。
内容的提问来源于stack exchange,提问作者Meliodas Dragon
相关产品推荐
相关产品推荐

