非構造化データのロードの概要

非構造化データは、事前定義されたデータモデルまたはスキーマに適合しない情報です。通常、フォームの応答やソーシャルメディアの会話など、テキストが多い非構造化データには、画像、ビデオ、オーディオも含まれます。このカテゴリには、 VCF (ゲノミクス)、 KDF (半導体)、 HDF5 (航空学)などの業界固有のファイル型が含まれます。

Snowflakeは、次のアクションをサポートしています。

  • クラウドストレージにあるデータファイルへの安全なアクセス。

  • 共同編集者およびパートナーとのファイルアクセス URLs の共有。

  • ファイルアクセス URLs およびその他ファイルメタデータのSnowflakeテーブルへのロード。

  • 非構造化データを処理します。

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

このトピックの内容:

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

外部(外部クラウドストレージ)ステージと内部(つまり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 を取得するビューを使用してファイルへのアクセスを提供します。ビューに対する権限を持つロールのみがファイルにアクセスできます。Snowflakeは、誰がいつ、スコープ付き URL を使用してファイルにアクセスしたのか、クエリ履歴に情報を記録します。カスタムアプリケーションでの使用、共有を介した他のアカウントへの非構造化データ提供、または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 に移動します。

Snowflake Secure Data Sharing

データコンシューマーは、データプロバイダーが共有するセキュアビューで、この型の列値を介して非構造化データファイルにアクセスできます。

データコンシューマーは、データプロバイダーが共有するセキュアビューで、この型の列値を介して非構造化データファイルにアクセス できません

データコンシューマーは、データプロバイダーが共有するセキュアビューで、この型の列値を介して非構造化データファイルにアクセスできます。

認証

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

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

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

有効期限

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

永続。

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

非構造化データアクセスのサーバー側の暗号化

内部ステージで非構造化データにアクセスできるようにするために、ステージ作成時にサーバー側の暗号化を使用することを検討できます。そうしない場合は、ステージングされたファイルはデフォルトでよりクライアント側で暗号化されます。暗号化キーはSnowflakeが所有し、クライアント側で暗号化されたファイルは、事前署名付き、ファイル、またはスコープ付き URLs を使用するユーザーや外部ツールによって読み取ることはできません。

内部ステージにサーバー側の暗号化を構成するには、 CREATE STAGE コマンドで SNOWFLAKE_SSE 暗号化タイプを指定します。詳細については、 内部ステージパラメーター(internalStageParams) をご参照ください。

次の例では、 my_int_stage という名前の内部ステージをサーバー側の暗号化とディレクトリテーブル付きで作成します。

CREATE STAGE my_int_stage
  ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE')
  DIRECTORY = ( ENABLE = true );
Copy

重要

セキュリティコンプライアンスのために Tri-Secret Secure が必要な場合は、内部ステージに SNOWFLAKE_FULL 暗号化タイプを使用します。 SNOWFLAKE_SSE はTri-Secret Secureをサポートしていません。

注釈

  • ステージの作成後に内部ステージの暗号化タイプを変更することはできません。

  • 現在、サーバー側の暗号化を使用した内部ステージの作成は、 JDBC ドライバー v3.12.11(またはそれ以上)のSnowflakeクライアントバージョンに限定されています。

ディレクトリテーブル

ディレクトリテーブルは、ステージングされたファイルのカタログをクラウドストレージに保存します。十分な権限を持つロールは、ディレクトリテーブルにクエリを実行して、ファイル 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 をステージングされたファイルに生成します。

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

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

  1. Snowflakeのウェブインターフェイスである Snowsight にログインします。

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

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

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

    Download pre-signed URL in Snowsight results table

非構造化データの処理

Snowflakeは、非構造化データの処理を支援するために、以下の機能をサポートしています。

外部関数

外部関数は、Snowflake外で格納および実行されるユーザー定義関数です。外部関数により、Amazon Textract、Document AI、Azure Computer Visionといった、内部のユーザー定義関数(UDFs)からはアクセスできないライブラリを使用することができます。

詳細については、 外部関数の記述 をご参照ください。

ユーザー定義関数、およびストアドプロシージャ

Snowflakeは、JavaまたはPythonコード内でファイルを読み取る複数の方法をサポートしているため、ユーザー定義関数(UDFs)、ユーザー定義テーブル関数(UDTFs)、またはストアドプロシージャで非構造化データを処理したり、独自の機械学習モデルを使用したりすることができます。

Snowflakeで使用している SQL を拡張 したり、 Snowpark API を使用してアプリケーションを構築したりすることができます。

詳細と例については、次のトピックをご参照ください。