2
2

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の内部ステージ、完全に理解した

Posted at

Snowflakeのステージは外部ステージしか使ったことがありません。

そんな状況でSnowPro Coreのための勉強で内部ステージについて調べていたら、内部ステージは以下3種類があると。
公式ドキュメント:ローカルファイルに対する内部ステージの選択

  • user stage(ユーザーステージ)
  • table stage(テーブルステージ)
  • named stage(名前付きステージ)

ドキュメントを読んで触りながらまとめました。

user stage(ユーザーステージ)

各ユーザーには、デフォルトでファイルを保存するためのSnowflakeステージが割り当てられています。このステージは、ファイルが1人のユーザーのみによってアクセスされるが、複数のテーブルにコピーする必要がある場合に便利なオプションです。
ユーザーステージには、次の特性と制限があります。
・ユーザーステージは @~ を使用して参照されます。たとえば、 LIST @~ を使用して、ユーザーステージのファイルを一覧表示します。
・名前付きステージとは異なり、ユーザーステージは変更またはドロップできません。
・ユーザーステージは、ファイル形式オプションの設定をサポートしていません。代わりに、 COPY INTO <テーブル> コマンドの一部としてファイル形式とコピーオプションを指定する必要があります。

なるほど。やってみます。

list @~;	--listの部分はlsでも可
name size md5 last_modified
worksheet_data/2ff67368-5339-46b3-9b9b-cf29f2650263 240 bbfcac20153975136b379d304f686ec0 Wed, 9 Nov 2022 09:23:59 GMT
worksheet_data/metadata 432 262df0fc198efaa3fb2413e253d23311 Wed, 9 Nov 2022 09:24:03 GMT

ワークシートのデータが入っているみたい。
でもワークシートの数だけあるわけではない。(実際ワークシートはいっぱいあるので。)

table stage(テーブルステージ)

各テーブルには、デフォルトでファイルを保存するためのSnowflakeステージが割り当てられています。このステージは、複数のユーザーがファイルにアクセスでき、単一のテーブルにコピーするだけでよい場合に便利なオプションです。
テーブルステージには、次の特性と制限があります。
・テーブルステージの名前はテーブルと同じです。たとえば、 mytable という名前のテーブルには、 @%mytable として参照されるステージがあります。
・名前付きステージとは異なり、テーブルステージは変更またはドロップできません。
・テーブルステージは、ロード中のデータの変換をサポートしません(つまり、クエリを COPY コマンドのソースとして使用)。

なるほど。やってみます。

list @%TEST_TABLE;	--listの部分はlsでも可
name size md5 last_modified

 クエリで結果が生成されませんでした

このテーブルステージにファイルをアップロードしたことがないので結果0件でOK。

named stage(名前付きステージ)

名前付きステージは、データのロードに最大限の柔軟性を提供するデータベースオブジェクトです。
・ステージで適切な権限を持つユーザーは、任意のテーブルにデータをロードできます。
・ステージはデータベースオブジェクトであるため、すべてのオブジェクトに適用されるセキュリティ/アクセスルールが適用されます。ステージを使用する権限は、ロールから付与または取り消すことができます。さらに、ステージの所有権は、別のロールに移譲することができます。

なるほど。やってみます。
Snowsightでステージを開くと「TEST_INTERNAL_STAGE」という内部ステージがありました。
多分1年くらい前に自分で作ったやつです。

list @TEST_INTERNAL_STAGE;	--listの部分はlsでも可
name size md5 last_modified
test_internal_stage/test.csv 32 65af850f5d11e29af7cece20dad1afba Wed, 2 Aug 2023 01:31:38 GMT

1年くらい前にアップロードしたcsvが出てきました。

感想

ドキュメントを読むだけじゃなくて自分で触ってみると完全に理解できます。

補足

SnowPro Core試験対策メモ。
ステージ参照の正解を選ばせる問題が来たら「show」じゃなくて「list」「ls」を選ぶべし。

show  @TEST_INTERNAL_STAGE;

SQLコンパイルエラー:
位置 6 の構文エラー行 1 、予期しない「@TEST_INTERNAL_STAGE」。

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?