在LISTAAG中分组

时间:2019-05-23 12:47:53

标签: amazon-redshift

我们的数据库 postgresql ,并在一个sql查询中使用array_agg函数来获得类似于以下的输出

{"Basic:1","Basic:1","Basic:1","Basic:1","Basic:1","Basic:1","Paying:1","Paying:1","Paying:1"} 

我们已迁移到 redshift ,并使用了LISTAGG功能。如果数据较少并且数据存储为

Basic:1,Basic:1,Basic:1,Basic:1,Basic:1,Basic:1,Paying:1,Paying:1,Paying:1

但是,如果数据集很大,则会出现以下错误。 -

Invalid operation: Result size exceeds LISTAGG limit

事情是,我们需要以Basic:6,Paying:3的形式取得最终结果。 LISTAGG是否有其他替代品?

1 个答案:

答案 0 :(得分:0)

您在LISTAGG中使用的专栏有多大? LISTAGG最多只能处理64K个字符。

文档包含以下内容:

  

VARCHAR(MAX)。如果结果集大于最大VARCHAR   大小(64K – 1或65535),则LISTAGG返回以下错误:

a = 737.28 # arcsec
z = 0.3 # redshift
d = ? # Mpc

I am using flat lambdaCDM using parameters
H0 = 67.8
omega_m = 0.308

https://docs.amazonaws.cn/en_us/redshift/latest/dg/r_WF_LISTAGG.html