繁体   English   中英

Redshift 中的 json_agg 和 json_build_object

[英]json_agg and json_build_object in Redshift

我更喜欢将子查询结果聚合为PostgreSQL 中JSON 数组

这是一个例子。

SELECT
  a.name,
  (
    SELECT json_agg(json_build_object('col1', b.col1)) AS data
    FROM table_b AS b WHERE b.year = a.year
  ) AS data
FROM
  table_a AS a

我如何在Redshift 中做同样的事情?

正如我所料,您知道 redshift 基于 Postgres 8 并且没有这些功能。 我可以想到两种您可能想要继续的方式。 1) 编写一个 python 应用程序来本地连接到 Redshift,并使用 python 库来构建你想要的 JSON 输出。 如果 JSON 很复杂和/或 JSON 的读取器是某种自动化,这可能是正确的方法。 您应该能够从这个 python 中创建一个存储过程。 或者 2) 使用 list_agg() 生成您要查找的 JSON 字符串。 这条路线相当简单,对于简单的 JSON 结构应该可以正常工作。 如果您愿意,也可以在存储过程中对此进行编码。

#2 看起来像(未经测试):

SELECT '[' || list_agg('{"col1": "' || col1 || '"}', ', ') || ']' FROM ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM