非構造化データサポートの概要

このトピックでは、主要な概念を紹介し、非構造化データファイルにアクセスして共有するための手順を示します。

このトピックの内容:

クラウドストレージサービスのサポート

外部(外部クラウドストレージ)ステージと内部(つまりSnowflake)ステージの両方で非構造化データをサポートします。

外部ステージ

外部クラウドストレージへのファイルの保存: Amazon S3、Google Cloud Storage、またはサポートされているMicrosoft Azureクラウドストレージサービスの1つ:

  • BLOBストレージ

  • Data Lake Storage Gen2

  • 汎用v1

  • 汎用v2

ファイルにアクセスできる URLs の型

クラウドストレージ内のファイルにアクセスするには、次の型の URLs を使用できます。

スコープ URL

ステージに権限を付与せずにステージングされたファイルへの一時的なアクセスを許可するエンコードされた URL。

URL は、 永続クエリ結果期間 が終了すると(つまり、結果キャッシュが期限切れになると)期限切れになります。これは現在24時間です。

ファイル URL

データベース、スキーマ、ステージ、およびファイルのセットへのファイルパスを識別する URL。ステージに対する十分な権限を持つロールがファイルにアクセスできます。

事前署名済み URL

ウェブブラウザーを介してファイルにアクセスするために使用される単純なHTTPS URL。ユーザーは、事前署名済みのアクセストークンを使用し、この URL 経由でファイルに一時的にアクセスできます。アクセストークンの有効期限は構成可能です。

次のテーブルに、これらの URL の型の主な特性を示します。

スコープ URL

ファイル URL

事前署名済み URL

ユースケース

ファイル管理者が同じアカウントの特定のロールにデータファイルへのスコープアクセスを許可することをお勧めします。スコープ URLs を取得するビューを介してファイルへのアクセスを提供します。ビューに対する権限を持つロールのみがファイルにアクセスできます。カスタムアプリケーションでの使用、共有を介した他のアカウントへの非構造化データの提供、またはSnowsightを介した非構造化データのダウンロードとアドホック分析に最適です。

ステージ上のファイルに対する永続的 URL。ファイルをダウンロードまたはアクセスするには、ユーザーは GET リクエストでファイル URL を認証トークンとともに REST API エンドポイントに送信します。非構造化データファイルへのアクセスを必要とするカスタムアプリケーションに最適です。

Snowflakeへの認証や認証トークンの受け渡しなしで、ファイルをダウンロードまたはアクセスするために使用されます。事前署名済み URLs は開いています。すべてのユーザーまたはアプリケーションは、ファイルに直接アクセスまたはダウンロードできます。非構造化ファイルの内容を表示する必要がある、ビジネスインテリジェンスアプリケーションまたはレポートツールに最適です。

生成する方法

BUILD_SCOPED_FILE_URL 関数をクエリします。

ステージングされたファイルを参照するステージのディレクトリテーブルをクエリする、 または BUILD_STAGE_FILE_URL 関数を呼び出します。

GET_PRESIGNED_URL 関数をクエリします。

使用法

次のオプションを使用できます。

  • Snowsightで、クエリ結果テーブルにあるスコープ URL をクリックします。Snowsightは、スコープ URL を生成したユーザーに対してのみファイルを取得します。

  • GET リクエストのスコープ URL をファイルサポート REST API エンドポイントに送信します。詳細については、 非構造化データサポート用の REST API をご参照ください。

次のオプションを使用できます。

  • Snowsightで、クエリ結果テーブルのファイル URL をクリックします。Snowsightは、アクティブなロールに十分な権限がある場合にのみファイルを取得します。

  • GET リクエストでファイル URL をファイルサポート REST API エンドポイントに送信します。詳細については、 非構造化データサポート用の REST API をご参照ください。

次のオプションを使用できます。

  • Snowsightで、クエリ結果テーブルの事前署名済み URL をクリックします。

  • ウェブブラウザーで直接、事前署名済み URL に移動します。

データ共有

データプロバイダーは、スコープ URLs を安全なビューの列値として、データコンシューマーと共有できます。

サポート対象外です。

データプロバイダーは、事前署名済み URLs を安全なビューの列値として、データコンシューマーと共有できます。

認証

スコープ URL を生成するユーザーのみが、 URL を使用して参照ファイルにアクセスできます。

GET REST API 呼び出しで指定されたロールには、ステージに対する十分な権限が必要です。 USAGE (外部ステージ)または READ (内部ステージ)。

事前署名済み URL を持っている人は誰でも、トークンの存続期間中、参照されたファイルにアクセスできます。

有効期限

クエリ結果キャッシュの有効期限(現在は24時間)。

永続。

expiration_time 引数で指定された時間の長さ。

ステージのみに対するサーバー側の暗号化

事前署名済み URLs を使用したファイルアクセスをサポートするには、クライアント側の暗号化ではなくサーバー側の暗号化を使用して、名前付きの内部ステージまたは外部ステージを作成します。ステージ内のファイルがクライアント側で暗号化されている場合、ユーザーは暗号化キーにアクセスせずにステージングされたファイルを読み取ることはできません。

注釈

現在、サーバー側の暗号化を使用した内部ステージの作成は、次のSnowflakeクライアントバージョンに限定されています。

  • JDBC ドライバーv3.12.11(またはそれ以上)

ディレクトリテーブル

ディレクトリテーブルは、ステージングされたファイルのカタログをクラウドストレージに保存します。十分な権限を持つロールは、ディレクトリテーブルにクエリを実行して、ファイル URLs を取得し、ステージングされたファイルにアクセスできます。

詳細については、 ディレクトリテーブル をご参照ください。

SQL 関数

データファイルにアクセスするために、次の ファイル関数 が用意されています。

SQL 関数

説明

GET_STAGE_LOCATION

ステージ名を入力として使用して、外部または内部の名前付きステージ URL を返します。

GET_RELATIVE_PATH

クラウドストレージ内のステージ名と絶対ファイルパスを入力として使用して、ステージ内の場所を基準にしたステージングされたファイルのパスを抽出します。

GET_ABSOLUTE_PATH

ステージ名と、ステージ内の位置を基準にしたファイルのパスを入力として使用して、ステージングされたファイルの絶対パスを返します。

GET_PRESIGNED_URL

ステージ名と相対ファイルパスを入力として使用して、ステージングされたファイルに事前署名済み URL を生成します。この関数を使用して、外部ステージのファイルにアクセスします。

BUILD_SCOPED_FILE_URL

ステージ名と相対ファイルパスを入力として使用して、Snowflakeでホストされるスコープ URL をステージングされたファイルに生成します。

BUILD_STAGE_FILE_URL

ステージ名と相対ファイルパスを入力として使用して、Snowflakeがホストするファイル URL をステージングされたファイルに生成します。

メタデータ列

ステージに対する次のメタデータ列のセットには、 SQL 関数 で説明されている関数によって返されるものと類似の情報が保存されます。

METADATA$RELATIVE_PATH

GET_RELATIVE_PATH 関数の出力と類似の値を保存します。ステージ内の場所を基準にしたステージングされたファイルのパスを表示します。

METADATA$ABSOLUTE_PATH

GET_ABSOLUTE_PATH 関数の出力と類似の値を保存します。ステージ名と、ステージ内の位置を基準にしたファイルのパスを入力として使用して、ステージングされたファイルの絶対パスを表示します。

METADATA$PRESIGNED_URL

GET_PRESIGNED_URL 関数の出力と類似の値を保存します。デフォルトのパラメーターセットを使用して、事前署名済み URL をステージングされたファイルに表示します。

METADATA$ABSOLUTE_PATH 列値のクエリ

クラウドストレージサービスの API を使用して、画像から抽出されたメタデータを含む JSON ドキュメントのリストを生成します。

たとえば、1つのビットマップイメージファイルの JSON ドキュメントが次のようになっているとします。

{
  "file_url": "s3://photos/national_parks/us/yosemite/half_dome.jpg",
  "image_format": "jpeg",
  "dimensions": {"x" : 1024, "y" : 768},
  "tags":[
    "rock",
    "cliff",
    "valley"
  ],
  "dominant_color": "gray"
}

次の SQL ステートメントは、ステージングされたイメージファイルと JSON ドキュメントの METADATA$ABSOLUTE_PATH 列の値を返します。

SELECT METADATA$ABSOLUTE_PATH FROM @images_stage;

+---------------------------------------------------------------+
| METADATA$ABSOLUTE_PATH                                        |
|---------------------------------------------------------------|
| s3://photos/national_parks/us/yosemite/half_dome.jpg          |
...
| s3://photosimage_metadata.json                                |
+---------------------------------------------------------------+

Snowsightでステージングされたファイルのダウンロード

ユーザーは、 Snowsight ワークシートの結果テーブルで生成されたスコープ、事前署名、またはファイル URL をクリックして、参照ファイルをダウンロードできます。

  1. 新しいウェブインターフェイスにログインします。

  2. Worksheets » My Worksheets (または、 Recent の下、または Folders でローカルワークシートを開く) » <ワークシート名> をクリックします。

  3. サポートされているメソッドのいずれかを使用して、スコープ、事前署名、またはファイル URL をクエリで返します。

  4. 結果テーブルにある URL をクリックします。Snowsightは、 URL によって参照されるファイルをダウンロードします。

    Download pre-signed URL in Snowsight results table