我有20个雪花外部表,假设它们是table1、table2 ... table20,它们都具有相同的结构。他们每个人都通过外部阶段指向 S3 上自己的位置(镶木地板文件,相同的存储桶不同的文件夹)。 现在我需要将它们组合成一个视图。我写的SQL很简单
select * from table1
union
select * from table2
....
select * from table20
但是,性能很慢。据我所知雪花不支持多个外部阶段,外部阶段不支持多个外部位置
我的问题是:有没有办法提高性能?使视图表现得至少像单个外部表?
谢谢
答案 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'