Amazon redshift 红移中的json_agg和json_build_对象
我更喜欢在PostgreSQL中将子查询结果聚合为JSON数组 这是一个例子Amazon redshift 红移中的json_agg和json_build_对象,amazon-redshift,aggregate-functions,Amazon Redshift,Aggregate Functions,我更喜欢在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 我怎样才能在红移中做同样的事情呢?我希望你知道红移是基于Postgres 8的,没有这些功能。我可以
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
我怎样才能在红移中做同样的事情呢?我希望你知道红移是基于Postgres 8的,没有这些功能。我可以想出两种方法让你继续。1) 编写一个python应用程序以本地连接到Redshift,并使用python库构建所需的JSON输出。如果JSON是复杂的,或者JSON的读取器是自动化的,那么这可能是正确的方法。您应该能够用这个python生成一个存储过程。或者2)使用list_agg()生成您要查找的JSON字符串。这条路线相当直截了当,对于简单的JSON构造应该可以正常工作。如果愿意,还可以在存储过程中对其进行编码 #2看起来像(未经测试):
正如我所料,你们知道红移是基于Postgres 8的,并没有这些功能。我可以想出两种方法让你继续。1) 编写一个python应用程序以本地连接到Redshift,并使用python库构建所需的JSON输出。如果JSON是复杂的,或者JSON的读取器是自动化的,那么这可能是正确的方法。您应该能够用这个python生成一个存储过程。或者2)使用list_agg()生成您要查找的JSON字符串。这条路线相当直截了当,对于简单的JSON构造应该可以正常工作。如果愿意,还可以在存储过程中对其进行编码 #2看起来像(未经测试):
SELECT '[' || list_agg('{"col1": "' || col1 || '"}', ', ') || ']' FROM ...