首页 > 解决方案 > 雪花外部表分区 - 粒度路径

问题描述

专家们,

我们将 JSON 文件存储在 S3 的以下文件夹结构中,即 /appname/lob/2020/07/24/12,/appname/lob/2020/07/24/13,/appname/lob/2020/07/24 /14

stage @SFSTG = /appname/lob/

我们需要根据小时创建一个带有分区的外部表。我们可以从元数据$文件名中导出分区部分。但是这里的问题是应该将分区列创建为时间戳还是 varchar?

使用外部表从雪花访问文件时,哪种分区数据类型可以帮助我们提高性能。

标签: snowflake-cloud-data-platformexternal-tables

解决方案


雪花的建议如下:

date_part date as to_date(substr(metadata$filename, 14, 10), 'YYYY/MM/DD'),

*仔细检查 14 是您的阶段 url 中分区的正确开始我可能在这里不正确。

完整示例:

CREATE OR REPLACE EXTERNAL TABLE Database.Schema.ExternalTableName(
  date_part date as to_date(substr(metadata$filename, 14, 10), 'YYYY/MM/DD'),
  col1 varchar AS (value:col1::varchar)),
  col2 varchar AS (value:col2::varchar))
  PARTITION BY (date_part)
  INTEGRATION = 'YourIntegration'
  LOCATION=@SFSTG/appname/lob/
  AUTO_REFRESH = true
  FILE_FORMAT = (TYPE = JSON);

推荐阅读