外部表的雪花外部阶段文件推荐

Posted

技术标签:

【中文标题】外部表的雪花外部阶段文件推荐【英文标题】:Snowflake External Stage File Recommendation for External table 【发布时间】:2020-07-03 15:03:52 【问题描述】:

专家,

需要针对以下场景的建议:

我们通过使用存储过程(使用横向扁平查询的逻辑集)读取外部表来动态解析存储在 S3 中的 JSON 文件中的 JSON 记录。我需要以下方面的建议。

    在 S3 中单独存储来自 Source 的多个 JSON 文件,无需通过外部表进行合并和访问。

    将 Source 中的多个 JSON 文件合并为单个 JSON(每个 500 个 JSON 为单个 JSON)并通过外部表访问。

    与第 2 步相同 - 但压缩并存储在 S3 中,并通过外部表访问。

同样的老问题 External Stage Vs Internal Stage - 推荐用于上述场景。

谢谢

【问题讨论】:

【参考方案1】:

外部表不是物化表,因此在查询时从阶段获取数据。

在内部和外部阶段之间进行选择: 这完全取决于您的要求。如果您已经有一个保存文件的 S3 阶段,那么最好在其之上创建一个外部阶段。 如果您不需要保留历史文件以供审计,那么内部阶段是一个不错的选择,可通过使用 PUT 命令将文件放置在阶段中来获得更好的性能。

由于只有在查询外部表时才会从文件中获取数据,因此拥有多个文件或合并所有文件不会产生影响。但是,压缩会减少您的存储成本。

【讨论】:

以上是关于外部表的雪花外部阶段文件推荐的主要内容,如果未能解决你的问题,请参考以下文章

外部表的用例?

从雪花外部阶段选择行时如何使用正则表达式?

雪花数据库:在 COPY INTO 语句中使用 VALIDATION_MODE 从外部阶段加载 JSON 文件

雪花外部表:添加新列

Oracle外部表详解

HTML中CSS外部样式表