我们的数据库 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是否有其他替代品?
答案 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