はじめに:データを「いったん置く場所」が必要な理由
Snowflakeにデータを取り込むとき、いきなりテーブルに流し込めるわけではありません。CSVやJSONなどのファイルを一度どこかに置いて、そこからテーブルにロードするという流れになります。この「いったん置く場所」がステージ (Stage) です。
引っ越しに例えると、引越し先の部屋(テーブル)にダンボール(ファイル)を運び込む前に、いったん玄関先や荷捌き場に荷物を置きますよね。ステージはまさにその荷捌き場のような存在です。この記事では、Snowflakeの内部ステージと外部ステージの違い、作り方、使い方を初心者向けにやさしく解説します。

ステージの2つの種類
Snowflakeのステージは、大きく分けて内部ステージと外部ステージの2種類があります。
内部ステージ (Internal Stage)
Snowflakeが管理するクラウドストレージにファイルを置く方式です。ユーザーは保存場所を意識せずに使えます。さらに3つのタイプに分かれます。
- ユーザーステージ: 各ユーザー専用 (
@~で参照)。個人用の作業領域。 - テーブルステージ: 各テーブルに紐づく (
@%テーブル名で参照)。1テーブルに対するロードに便利。 - 名前付きステージ: 自分で名前を付けて作るステージ (
@ステージ名)。複数テーブルや複数人で共有可能で、最も柔軟。
外部ステージ (External Stage)
Amazon S3、Google Cloud Storage、Azure Blob Storageなど、外部のクラウドストレージを指す参照を作る方式です。データの実体はSnowflakeの外にあり、Snowflakeはその場所への「ショートカット」を持つイメージです。すでに自社でS3にデータを蓄積している場合、外部ステージを使うとそのまま取り込めます。

実際にステージを使ってみよう
名前付き内部ステージを作成する
-- 名前付き内部ステージを作成
CREATE STAGE my_internal_stage
FILE_FORMAT = (TYPE = 'CSV' FIELD_OPTIONALLY_ENCLOSED_BY = '"');
ローカルファイルを内部ステージにアップロード (PUT)
SnowSQLなどのCLIからPUTコマンドでファイルを送ります。SnowsightのWeb UIだけではPUTは使えないので、SnowSQLのインストールと基本的な使い方も合わせて確認しておくと安心です。
PUT file:///Users/me/data/sales.csv @my_internal_stage;
LIST @my_internal_stage;
外部ステージを作成する
-- S3を参照する外部ステージ
CREATE STAGE my_external_stage
URL = 's3://my-bucket/sales/'
STORAGE_INTEGRATION = my_s3_integration
FILE_FORMAT = (TYPE = 'CSV');
ステージからテーブルへロード (COPY INTO)
COPY INTO sales
FROM @my_internal_stage/sales.csv
ON_ERROR = 'CONTINUE';
よくあるユースケースと注意点
- 小規模な手動ロード: ユーザーステージやテーブルステージが手軽。
- 定期的なバルクロード: 名前付きステージ +
COPY INTOで運用する。 - 既存のS3データを活用: 外部ステージで参照すれば二重コピー不要。
- Snowpipeとの組み合わせ: 外部ステージにファイルが届くと自動でロードする使い方が定番です。詳しくはSnowflakeデータロードの全体像を参照してください。
- 注意: 内部ステージのファイルもストレージ料金がかかります。ロード後は
REMOVEで削除するのがおすすめです。
まとめ
ステージは、ファイルとテーブルをつなぐデータロードの中継場所です。Snowflake内部に置く「内部ステージ」と、S3などを参照する「外部ステージ」の2種類があり、用途に応じて使い分けます。PUTでアップロード、COPY INTOでロード、という流れを覚えておけば、Snowflakeのデータ取り込みの基本はバッチリです。
参考リンク
関連記事
- Snowflakeデータロードの全体像|バルク・ストリーミング・サードパーティをやさしく解説 – ステージを使ったロード方式の全体像を整理しています。
- SnowSQLのインストールと基本的な使い方を初心者向けに解説 – PUTコマンドでステージにファイルを送るために必須のCLIです。
- Snowflakeのデータベース・スキーマ・テーブル階層を初心者向けに解説 – 名前付きステージもスキーマの中に作られます。
- Snowsightの画面構成と基本操作を初心者向けにやさしく解説 – ステージの中身もSnowsightから確認できます。
- Snowflakeの料金体系をやさしく解説 – 内部ステージのストレージ料金もここで把握できます。
