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の中にあるか、外にあるか」だと思っておいたら良いかなと考えています。
内部ステージ
こちらのサイトの絵がわかりやすいなと思い引用します。
内部ステージには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