©️

SnowPro Coreの道 ~Part 15 内部ステージの種類~

に公開

はじめに

9月のSnowflake World Tour TokyoまでにSnowPro Coreをとります!

試験を8月28日(木)に受けようと思います。あと19日。
ですが諸事情により、もう少し早める可能性が出てきました。おそらく8月21日に前倒しする予定です。
8月21日まではいよいよ12日になりました。

8月4日に横澤さんのSnowPro Core勉強会に参加しました。
その時分かったのが、クローンとしてまとめた、過去ブログの内容が全く自分の頭に入っていなかったこと。

あぁ・・・嘆くばかりです。
ということで、ブログが重複するかもしれませんが、もう1度復習です。

ステージの種類

ステージには「内部ステージ」と「外部ステージ」があります。
これらの違いは、「ファイルがSnowflakeの中にあるか、外にあるか」だと思っておいたら良いかなと考えています。

内部ステージ

https://dev.classmethod.jp/articles/about-snowflake-internal-stages/

こちらのサイトの絵がわかりやすいなと思い引用します。
内部ステージには3種類あるそうです。
模擬問題に「名前付き内部ステージって何度も出るやん?内部ステージと違うの?」って混乱していた私。
横澤さんの丁寧なレクチャーとこちらのサイトを読むと解像度が上がりました。

内部ステージは3種類ある

内部ステージは実は3種類存在します。

  • 名前付き内部ステージ
  • テーブルステージ
  • ユーザーステージ

よく言う「内部ステージ」というのは正式には「名前付き内部ステージ」のことのようです。


🗂 1. 名前付き内部ステージ(Named Internal Stage)

特徴

  • ユーザーが明示的に作成するステージ
  • データベースとスキーマ配下に作成される
  • 複数ユーザーやジョブ間で共有可能

作成例

CREATE STAGE my_stage;

###利用例

PUT file://path/to/data.csv @my_stage;
COPY INTO my_table FROM @my_stage;

📦 2. テーブルステージ(Table Stage)

特徴

  • 各テーブル専用に自動作成されるステージ
  • 主にCOPY INTOやUNLOAD時に利用
  • 他テーブルやユーザーと共有不可

利用例

PUT file://path/to/data.csv @%my_table;
COPY INTO my_table FROM @%my_table;

👤 3. ユーザーステージ(User Stage)

特徴

  • 各ユーザー専用に自動割り当て
  • 他ユーザーからアクセス不可
  • 一時的なデータ確認や作業用に便利

利用例

PUT file://path/to/data.csv @~;
COPY INTO my_table FROM @~;

📊 比較表

ステージ種類 主な用途 共有範囲
名前付き内部ステージ チーム・ジョブ間で共有するデータ 複数ユーザー
テーブルステージ 特定テーブルのロード・エクスポート そのテーブルのみ
ユーザーステージ 個人作業・一時データ置き場 自分のみ

💡 選び方の目安

名前付き内部ステージ → 複数人で共有する長期保管データ
テーブルステージ → そのテーブル専用のデータロード/アンロード
ユーザーステージ → 個人作業や検証用の一時保管

✍️ まとめ

Snowflakeの内部ステージは、用途と共有範囲で使い分けるのがポイントです。
名前付き内部ステージ → 共有用・長期利用
テーブルステージ → 特定テーブル専用
ユーザーステージ → 個人専用・短期利用

外部ステージ(S3, GCS, Azure Blob)もありますが、まずは内部ステージを使いこなすことで、Snowflakeでのデータ処理がより効率的になります。

さいごに

横澤さんにお時間をいただいて、何度か勉強会を開いていただいているからには、実力で合格できるようにあと10日で復習頑張ります!

Discussion