Snowflake cloud data platform 雪花-将外部表格合并为一个表格

Snowflake cloud data platform 雪花-将外部表格合并为一个表格,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我有20个雪花外部表,假设它们是表1、表2。。。表20,它们都具有相同的结构。他们中的每一个人都通过外部舞台指向自己在S3上的位置(拼花文件、相同的木桶和不同的文件夹)。 现在我需要将它们合并到一个视图中。我编写的SQL非常简单 select * from table1 union select * from table2 .... select * from table20 但是,性能非常慢。据我所知,snowflake不支持多个外部阶段,并且外部阶段不支持多个外部位置 我的问题是:有没有办

我有20个雪花外部表,假设它们是表1、表2。。。表20,它们都具有相同的结构。他们中的每一个人都通过外部舞台指向自己在S3上的位置(拼花文件、相同的木桶和不同的文件夹)。 现在我需要将它们合并到一个视图中。我编写的SQL非常简单

select * from table1
union
select * from table2
....
select * from table20
但是,性能非常慢。据我所知,snowflake不支持多个外部阶段,并且外部阶段不支持多个外部位置

我的问题是:有没有办法提高性能?要使视图的执行至少像一个外部表一样


感谢

在您的场景中,物化视图可以成为解决方案,通过在引用到外部阶段的外部表上创建它们,可以帮助提高查询的性能。 这里是指向文档的链接,涉及何时创建物化视图,物化视图的优缺点。

为什么不对所有文件使用文件模式,而将其设置为多个表呢。您可以为每个文件位置创建一个表,也可以创建一个带有正则表达式的表,以便在结构相同的情况下加载所有数据

CREATE TABLE IF NOT EXISTS my_db.my_schema.my_ext_table (
    col1 STRING COMMENT 'col-1-comment',
    ....
)
WITH LOCATION = @/path/to/file/in/s3
FILE_FORMAT = 'parquet_file_format'
AUTO_REFRESH = true
PATTERN = '.*/.*/.*[.]parrquet' 

主要是因为物化视图的缺点,我需要小心我的客户的成本。我们的AWS基础设施非常复杂,它不仅涉及s3,还涉及glue、athena等。。2.SF建议避免应用过滤大量文件的模式;仅当手动刷新外部表元数据时,才支持此参数。更多信息:无法在多个表上创建物化视图…因此您必须使用模式方法创建外部表,然后在其顶部使用物化视图,并且在定义外部表时,将自动刷新设置为true。或者,您也可以设置临时表,并通过流/任务将数据加载到临时表