3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Snowflake 一括ロードに使用するステージまとめ

Last updated at Posted at 2024-10-17

はじめに

Snowflakeの一括ロード(バルクロードとも言う)に必要なステージについて調査した際のまとめです。
ステージを選ぶ際の検討材料に。

内部ステージ

 内部ステージは、ユーザーステージ、テーブルステージ、名前付きステージの3種類。ローカルにあるファイルにも対応(putコマンドでファイルを置く)。

ユーザーステージ

・ユーザーにデフォルトで割り当てられるステージ(ユーザー1人に対して1つ)
・デフォルトのためDROPしたりCREATEできない
・ファイルが1人のユーザーのみによってアクセスされ、複数のテーブルにロードしたいとき
 → ユーザー1:テーブル多
LIST @~ で参照する
・必要な権限:テーブルのINSERT権限
image.png

 

テーブルステージ

・テーブルにデフォルトで割り当てられるステージ(テーブル1つに対して1つ)
・デフォルトのためDROPしたりCREATEできない
・複数のユーザーがファイルにアクセスでき、一つのテーブルのみにロードしたいとき
 → ユーザー多:テーブル1
LIST @%xxxxx で参照する
・必要な権限:ステージのREAD権限とテーブルの所有権(OWNERSHIP権限)
image.png

名前付きステージ

・CREATE/DROP可能、最も柔軟
・適切な権限を持つユーザーは任意のテーブルにデータをロードする
 → ユーザー多:テーブル多
LIST @xxxxx で参照する
・必要な権限:ステージのREAD権限とテーブルのINSERT権限
image.png

外部ステージ

外部ステージの種類は1つ。クラウドストレージをステージとして利用する。外部ステージのデータはsnowflake上で保持しておらず、窓を通して見ているイメージ。
・クラウドストレージに対応(AWS, Azure, Google Cloud)
・適切な権限を持つユーザーは任意のテーブルにデータをロード可能
 → ユーザー多:テーブル多 (前述の名前付きステージが外部ストレージになったver.と個人的に思っている)
LIST @xxxxx で参照する
・必要な権限:ステージのUSAGE権限&テーブルのINSERT権限
・snowpipeによる自動取込が可能
 →snowpipeについてはこちら

image.png

まとめ

・内部ステージは3種類、外部ステージは1種類
・ファイルの置き場所がクラウドストレージorローカルか、
 ファイルを触るのは複数ユーザーor単一ユーザーか、
 ロードするテーブルは1ファイルに対して複数テーブルor単一テーブルか、
 で適切なステージが見えてくる

調べていて思ったのは、
テーブルステージにおいて、必要な権限に「テーブルの所有権」があるのは注意かなと感じました(私は見落としていました)。
他のステージはテーブルのINSERT権限でOKなのに対し、テーブルステージだけ所有権(あらゆる操作権限を包括してるので結構強め)が必要になるので、他の部分の設計にも影響がないか見直すことがおすすめです。

参考

内部ステージ
https://docs.snowflake.com/ja/user-guide/data-load-local-file-system-create-stage#user-stages
外部ステージ
https://docs.snowflake.com/ja/user-guide/data-load-s3-create-stage

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?