如何在 Redshift 中合并 JSON 对象?

Posted

技术标签:

【中文标题】如何在 Redshift 中合并 JSON 对象?【英文标题】:How to merge JSON objects in Redhift? 【发布时间】:2018-07-01 12:53:34 【问题描述】:

假设我有两行

Account | usage | usage by user      | usage month
1       | 20    |   "a":10, "b":10 | Jan
1       | 25    |   "a": 15, "c":10| Feb

我想写一个查询来获取总使用量

1       | 45    |  "a" : 25, "b" :10, "c":10 

我可以通过使用 SUM 和按帐户分组来获取使用情况。但我不确定如何合并 Redshift 中的 json 对象。有关如何执行此操作的任何指示?

【问题讨论】:

【参考方案1】:

在 Amazon Redshift 中没有本地方法可以做到这一点。另外,我建议您在 Redshift 中这样做。

JSON 字段在 Redshift 中难以解释。您需要使用JSON_EXTRACT_PATH_TEXT 之类的函数从 JSON 中检索元素。它的效率非常低,并且没有利用 Redshift 的功能来优化查询。

如果您要保留这样一个字段来保存 一对多的值关系,最好创建一个单独的 usage 保存每个帐户和用户的使用信息。然后,在您的查询中加入该表。这是正常的 SQL — 与 Redshift 没有任何关系。

例如,请参阅:Creating multiple tables and table relationships

【讨论】:

以上是关于如何在 Redshift 中合并 JSON 对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何在redshift中合并行

在 Redshift 中解析一个 json 数组对象并转换为表格

删除 JSON 数组中对象之间的逗号

如何在 Redshift 中替换 JSON 中的值?

如何使用node.js将多个json的对象合并到一个json文件中

JSON Redshift SQL - 遍历 json 数组