阶段的常见做法

问题描述

SNowflake 允许使用不同路径将不同结构的文件放在一个阶段。 另一方面,我们可以将相同结构的文件放在不同的阶段。

stage 是存储一个模式的几个表还是 stage 是存储分区表的数据? 通常的做法是什么?

解决方法

Snowflake 有几种不同类型的阶段:

内部阶段NamedUserTable):通过这些类型的阶段,您可以将文件直接上传到 Snowflake。如果您想从单个阶段将数据加载到多个表中,您可以使用“命名”或“用户”阶段。创建表时会自动创建“表”阶段,它仅用于将数据加载到单个表中。对于所有内部阶段,您通常使用 SnowSQL 从本地计算机或服务器将数据上传到 Snowflake,然后将复制命令运行到表中。

外部阶段 (External Stages):根据我的经验,外部阶段是最常见的。您在 Snowflake 中创建一个阶段,指向云提供商的 blob 存储服务(s3、gcs、azure blob)。这些文件不像内部阶段那样存储在 Snowflake 中,它们存储在 s3(或其他)中,您可以运行复制命令以加载到任何表中。

没有正确答案,您可以使用内部(命名或用户)或外部阶段加载到多个表中。我的偏好是使用外部阶段,这样数据就驻留在 Snowflake 之外,必要时也可以加载到其他工具中。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...