阶段的常见做法

Common practice for stages

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

stage 是用于多个 table 模式的存储还是 stage 是为分区 table 存储数据的手段? 通常的做法是什么?

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

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

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

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