Snowflake cloud data platform 超出了数组_agg的最大LOB大小(16777216)
我有一个大约3万行的表,每一行都放在{} 最后,我希望它是这样的: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
[
{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存储桶。在那里,代理机构记录日期并使用它。当然,我看到有一个尺寸限制。可能唯一的方法就是分割数据。我希望有其他的解决办法,因为我的知识在这个话题上不是最高的。谢谢你帮助我