1
0

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側でメタデータとして保持していくもの
外部ステージにあるファイルの最終更新日などを保持しておくことで

そのデータがINSERT対象なのかそうでないかなど判断することができる

デフォルトでは無効になっており、Snowflake側でTRUEにしておく必要性がある

CREATE STAGEコマンドのDIRECTORYオプションで設定を行うことが可能

CREATE STAGE my_external_stage 
URL = 's3://my-bucket/path/' 
STORAGE_INTEGRATION = my_integration
DIRECTORY = (ENABLE = TRUE AUTO_REFRESH = TRUE);

AUTO_REFRESHというオプションが急に出てきましたが、こちらの解説をします。

AUTO_REFRESH

ディレクトリテーブルは前述の通り、外部ステージにあるファイルのメタデータを管理するものです。
しかしながら、こちらは自動的に更新されるものではなく、ユーザー自身が自動更新を設定するか
ALTERコマンドを実行して、手動で更新するかどちらかになります。

おそらくこのようにAUTO_REFRESHは動いている??

Snowflakeのドキュメントにも
「クラウドプロバイダーのストレージイベント通知機能を利用している」
との記載がありました。

おそらく以下のような挙動でAUTO_REFRESHは動いているんだなと仮説してます。

①S3に新しいデータがアップロードされる
②S3イベント通知がトリガーされ、SNSトピックやSQSキューに通知が送られる
③Snowflakeのリスナーがその通知を受け取り、対応する外部テーブルやマテリアライズドビューを更新する
この仕組みにより、Snowflakeはデータの変更を即座に検知し、最新のデータに基づいてクエリを実行できるようになっているのではないかなと思っております。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?