ディレクトリテーブルのクエリ

このトピックでは、ディレクトリテーブルをクエリして、各ファイルのためにSnowflakeファイル URL などのメタデータとともに、ステージ上にあるすべてのファイルのリストを取得する方法について説明します。

ディレクトリテーブルをクエリするための構文。

SELECT * FROM DIRECTORY( @<stage_name> )
Copy

条件:

stage_name

有効化されたディレクトリテーブルを持つステージの名前。

ステートメントとしての SELECT およびステートメント内にある他の句の詳細については、Snowflake SQL コマンドリファレンスにある クエリ構文 をご参照ください。

出力

ディレクトリテーブルのクエリからの出力には、次の列が含まれる場合があります。

データ型

説明

RELATIVE_PATH

TEXT

ファイル URL を使用してアクセスするファイルへのパス。

SIZE

NUMBER

ファイルのサイズ(バイト単位)

LAST_MODIFIED

TIMESTAMP_LTZ

ステージでファイルが最後に更新されたときのタイムスタンプ。

MD5

HEX

ファイル用 MD5 チェックサム。

ETAG

HEX

ファイル用 ETag ヘッダー。

FILE_URL

TEXT

ファイルに対するSnowflakeファイル URL。

ファイル URL の形式は次のとおりです。

https://<account_identifier>/api/files/<db_name>.<schema_name>.<stage_name>/<relative_path>
Copy

条件:

account_identifier

使用するステージのSnowflakeアカウントのホスト名。ホスト名は、アカウントロケーター(Snowflakeが提供)で始まり、Snowflakeドメイン(snowflakecomputing.com)で終わります。

account_locator.snowflakecomputing.com

詳細については、 アカウント識別子 をご参照ください。

注釈

Business Critical アカウントの場合は、アカウントでSnowflakeサービスへのプライベート接続が有効になっていなくても、 snowflakecomputing.comprivatelink.snowflakecomputing.com)の直前の URL に privatelink セグメントが追加されます。

db_name

ファイルが配置されているステージを含むデータベースの名前。

schema_name

ファイルが配置されているステージを含むスキーマの名前。

stage_name

ファイルが配置されているステージの名前。

relative_path

ファイル URL を使用してアクセスするファイルへのパス。

使用上の注意

  • 内部ステージからダウンロードしたファイルが破損している場合は、ステージに ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE') が設定されていることをステージの作成者で確認してください。

この例では、 mystage という名前のステージのディレクトリテーブル内にあるすべてのメタデータ列を取得します。

SELECT * FROM DIRECTORY(@mystage);
Copy

この例では、100Kバイトより大きいサイズのファイルのために、ディレクトリテーブルから FILE_URL 列値を取得します。

SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE SIZE > 100000;
Copy

この例では、コンマ区切り値ファイルのために、ディレクトリテーブルから FILE_URL 列値を取得します。

SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE RELATIVE_PATH LIKE '%.csv';
Copy

ディレクトリテーブルを使用した非構造化データのビューの作成

ディレクトリテーブルを他のSnowflakeテーブルと結合して、ファイル URLs とファイルに関するメタデータを組み合わせた非構造化データのビューを作成できます。

以下の図は、ディレクトリテーブルを有効にしたステージを、別のデータテーブルと合わせて使用して、ステージ上に非構造化ファイルの包括的なビューを作成する方法を示しています。

ディレクトリテーブルを別のSnowflakeテーブルと結合して、非構造化データの包括的なビューを作成する

例: PDF ファイルおよびそのデータのビューの作成

次の例では、 my_pdf_stage という名前のステージ上のディレクトリテーブルと report_metadata という名前のテーブルを file_url キーを使用して結合し、 reports_information というビューを作成します。ステージには PDF レポートが含まれ、 report_metadata テーブルには authorpublish_date などの各 PDF レポートに関する構造化された情報が含まれます。結果として得られるビューは、非構造化 PDFs と、それに関連する構造化されたメタデータに関する情報を取得する方法を提供します。

CREATE VIEW reports_information AS
  SELECT
    file_url as report_link,
    author,
    publish_date,
    approved_date,
    geography,
    num_of_pages
  FROM directory(@my_pdf_stage) s
  JOIN report_metadata m
  ON s.file_url = m.file_url
Copy