Redshift 解析动态 Json 字符串

问题描述 投票:0回答:2

我希望能够在 Redshift 中解析从存储过程传递的动态 json 字符串。我可以使用如下代码使用 postgres 来完成此操作。

SELECT * FROM jsonb_each_text('{"name": "Bob", "age": "21", "section": "printing"}')

返回的

key value
---    ------
age 21
name    Bob
section printing

Redshift 对 json 对象的支持有限,我无法让函数正常工作

sql plsql dynamic amazon-redshift
2个回答
0
投票

这是对象的取消旋转。

首先,您需要将 json 转换为超级类型(如果尚未转换)。然后,您可以在此处按照 AWS 文档的 OBJECT UNPIVOTING 部分进行操作 - https://docs.aws.amazon.com/redshift/latest/dg/query-super.html


0
投票

感谢上述 unpivot 可能有效

我在下面创建了一个解决方法。它按 , 然后按 : 分割键值对。我有一些额外的代码来删除 {} 和 " 以及回车符(如果有)

选择trim(SPLIT_PART(value,':',1))作为键, 修剪(SPLIT_PART(值,':',2))作为值 从 ( 选择 SPLIT_PART(array_values, ',',numval) AS 值 从 ( 选择替换(替换(替换(替换(替换('{"name": "Alice","age": 25, "city": "Los Angeles"}','{',''),'}', ''),chr(13),''),chr(10),''),'"',''):: 文本作为 array_values ) 数组数据 交叉连接 ( 选择generate_series(1, 10) AS numval ) 其中 SPLIT_PART(array_values, ',',numval) <> '' )一个

© www.soinside.com 2019 - 2024. All rights reserved.