雪花 - 将外部表合并为一张表

时间:2021-05-13 04:37:01

标签: snowflake-cloud-data-platform

我有20个雪花外部表,假设它们是table1、table2 ... table20,它们都具有相同的结构。他们每个人都通过外部阶段指向 S3 上自己的位置(镶木地板文件,相同的存储桶不同的文件夹)。 现在我需要将它们组合成一个视图。我写的SQL很简单

select * from table1
union
select * from table2
....
select * from table20

但是,性能很慢。据我所知雪花不支持多个外部阶段,外部阶段不支持多个外部位置

我的问题是:有没有办法提高性能?使视图表现得至少像单个外部表?

谢谢

2 个答案:

答案 0 :(得分:0)

物化视图可以作为您方案中的解决方案,通过在引用外部阶段的外部表上创建它们可以帮助提高查询性能。 这是指向文档的链接,该文档涉及何时创建物化视图、物化视图的优缺点。 https://docs.snowflake.com/en/user-guide/views-materialized.html

答案 1 :(得分:0)

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

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'