我希望能够在 Redshift 中解析从存储过程传递的动态 json 字符串。我可以使用如下代码使用 postgres 来完成此操作。
SELECT * FROM jsonb_each_text('{"name": "Bob", "age": "21", "section": "printing"}')
返回的
key value
--- ------
age 21
name Bob
section printing
Redshift 对 json 对象的支持有限,我无法让函数正常工作
这是对象的取消旋转。
首先,您需要将 json 转换为超级类型(如果尚未转换)。然后,您可以在此处按照 AWS 文档的 OBJECT UNPIVOTING 部分进行操作 - https://docs.aws.amazon.com/redshift/latest/dg/query-super.html
感谢上述 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) <> '' )一个