Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon redshift 红移中的json_agg和json_build_对象_Amazon Redshift_Aggregate Functions - Fatal编程技术网

Amazon redshift 红移中的json_agg和json_build_对象

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的,没有这些功能。我可以

我更喜欢在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的,没有这些功能。我可以想出两种方法让你继续。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 ...