ディレクトリテーブル

このトピックでは、主要な概念、補助的な情報、ディレクトリテーブルを使用するための手順へのリンクを提供します。

このトピックの内容:

ディレクトリテーブルとは

ディレクトリテーブルは、ステージで複数層になった暗黙のオブジェクトで(独立したデータベースオブジェクトではない)、ステージ内のデータファイルに関するファイルレベルのメタデータを格納するため、概念的には外部テーブルに似ています。ディレクトリテーブルには、独自の付与可能な権限はありません。

外部(外部クラウドストレージ)ステージと内部(Snowflake)ステージの両方でディレクトリテーブルをサポートします。ディレクトリテーブルは、ステージの作成時(CREATE STAGE を使用)またはそれ以降(ALTER STAGE を使用)にステージに追加できます。

特に、ディレクトリテーブルを使用すると、以下のような非構造化データのタスクを達成できます。

ディレクトリテーブルのメタデータ自動更新

ディレクトリテーブルのメタデータは、クラウドストレージサービスのイベント通知サービスを使用して自動的に更新できます。更新操作は、メタデータを外部ステージと外部パスの関連ファイルの最新セットと同期します。つまり、

  • パス内の新しいファイルがテーブルメタデータに追加されます。

  • パス内のファイルへの変更は、テーブルメタデータで更新されます。

  • パス内になくなったファイルは、テーブルのメタデータから削除されます。

詳細については、 ディレクトリテーブルのメタデータ自動更新 をご参照ください。

ディレクトリテーブルの請求

ディレクトリテーブルのメタデータの自動更新に関するイベント通知を管理するためのオーバーヘッドは料金に含まれています。このオーバーヘッドは、ディレクトリテーブルを含むステージのために、クラウドストレージに追加されるファイルの数に関連して増加します。Snowpipeはディレクトリテーブルの自動更新のイベント通知に使用されるため、このオーバーヘッド料金は請求明細書にSnowpipe料金として表示されます。この料金は、 PIPE_USAGE_HISTORY 関数をクエリするか、Account Usage PIPE_USAGE_HISTORY ビュー を調べると見積もることができます。

さらに、ディレクトリテーブルのメタデータを手動で更新する場合(ALTER STAGE ... REFRESH を使用)は、メンテナンスオーバーヘッドが若干請求されます。このオーバーヘッドは、Snowflakeにおける他の類似のアクティビティすべてと同様に、標準の クラウドサービス課金モデル に従って課金されます。

ACCOUNTADMIN ロールを持つユーザー、または MONITOR USAGE グローバル権限を持つロールは、 AUTO_REFRESH_REGISTRATION_HISTORY テーブル関数にクエリを実行して、指定されたオブジェクトのメタデータに登録されているデータファイルの履歴と、これらの操作に対して請求されるクレジットを取得できます。

ディレクトリテーブルのアクセス制御要件

次の表は、ディレクトリテーブルを操作するときに一般的な SQL コマンドの実行に必要となる、ステージの 権限 をまとめたものです。

操作

オブジェクト型

必要な権限

SELECT FROM DIRECTORY ステートメントを使用して、ディレクトリテーブルからファイル URLs を取得します。

ステージ

ステージの型に応じて、次のいずれか。

  • 内部ステージ: ステージに対する READ 権限を持つアカウントロールまたはデータベースロール。

  • 外部ステージ: ステージに対する USAGE 権限を持つアカウントロールまたはデータベースロール。

PUT コマンドを使用してデータをアップロードします。

ステージ(内部のみ)

ステージに対する WRITE 権限を持つアカウントロールまたはデータベースロール。

REMOVE コマンドを使用してファイルを削除します。

ステージ

ステージの型に応じて、次のいずれか。

  • 内部ステージ: ステージに対する WRITE 権限を持つアカウントロールまたはデータベースロール。

  • 外部ステージ: ステージに対する USAGE 権限を持つアカウントロールまたはデータベースロール。

ALTER STAGE コマンドを使用してメタデータを更新します。

ステージ

ステージの型に応じて、次のいずれか。

  • 内部ステージ: ステージに対する WRITE 権限を持つアカウントロールまたはデータベースロール。

  • 外部ステージ: ステージに対する USAGE 権限を持つアカウントロールまたはデータベースロール。

情報スキーマ

Snowflake Snowflake Information Schema には、ディレクトリテーブルに関する情報を取得するためにクエリできるテーブル関数が含まれています。

テーブル関数

AUTO_REFRESH_REGISTRATION_HISTORY

指定されたオブジェクトのメタデータに登録されているデータファイルの履歴と、これらの操作に対して請求されるクレジットを取得します。

STAGE_DIRECTORY_FILE_REGISTRATION_HISTORY

メタデータの更新時に見つかったエラーを含む、ディレクトリテーブルのメタデータ履歴に関する情報を取得します。

次のトピック: