Snowflake cloud data platform 超出了数组_agg的最大LOB大小(16777216)

Snowflake cloud data platform 超出了数组_agg的最大LOB大小(16777216),snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我有一个大约3万行的表,每一行都放在{} 最后,我希望它是这样的: [ {Objekt1}, {Objekt2} ] 这个解决方案效果很好,因为我们没有那么多行。但现在我们得到了这个极限 COPY INTO FROM ( SELECT array_agg(*) FROM ( SELECT OBJECT_CONSTRUCT( ...... OBJECT_CONSTRUCT(.....) ) from (select * from (select REPLACE

我有一个大约3万行的表,每一行都放在{}

最后,我希望它是这样的:

[
{Objekt1},
{Objekt2}
]
这个解决方案效果很好,因为我们没有那么多行。但现在我们得到了这个极限

COPY INTO   FROM ( 
SELECT array_agg(*)  FROM  ( 
SELECT   OBJECT_CONSTRUCT( ......   
OBJECT_CONSTRUCT(.....)  )  
from 
(select * from (select  
 REPLACE(parse_json(OFFER):"spec":"im:offerID",'"')::varchar AS ID, 
...,
... )))) )    
FILE_FORMAT = (TYPE = JSON    COMPRESSION = None )   
credentials = 
(aws_key_id=''aws_secret_key='')   
OVERWRITE = TRUE   single = true   
HEADER = FALSE   
max_file_size=267772160
我们提供给一些外部机构,这种风格是唯一的方式,他们可以阅读它

还有别的解决办法吗?还是解决这个问题的方法


感谢您所发现的,array_agg上有16Mb的硬限制(在Snowflake中的许多其他地方,例如,它是变体列的最大大小)

如果可以创建多个文件,那么您可能可以在存储过程中实现这一点—找到一些列值的组合,以确保每个分区中的数据将导致数组_agg size<16Mb—然后在这些分区中循环,为每个分区运行一个副本,并输出到不同的文件时间


如果您必须生成一个文件,那么我想不出在Snowflake中实现这一点的方法(尽管其他人可能可以)。如果您可以在文件写入S3后处理该文件,那么将数据作为JSON复制到文件中,然后对其进行编辑以在其周围添加“[”和“]”将非常简单。您好,请解释您实际在做什么。是否将结果写入文件、表或其他内容?请提供您的流程的最小可复制示例,因此我将使用过的代码添加到上半部分。Wer正在压缩数据,并使用copy命令将其推送到s3存储桶。在那里,代理机构记录日期并使用它。当然,我看到有一个尺寸限制。可能唯一的方法就是分割数据。我希望有其他的解决办法,因为我的知识在这个话题上不是最高的。谢谢你帮助我