非構造化データサポートの概要¶
非構造化データは、事前定義されたデータモデルまたはスキーマに適合しない情報です。通常、フォームの応答やソーシャルメディアの会話など、テキストが多い非構造化データには、画像、ビデオ、オーディオも含まれます。このカテゴリには、 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 関数をクエリします。 |
使用状況 |
次のオプションを使用できます。
|
次のオプションを使用できます。
|
次のオプションを使用できます。
|
データコンシューマーは、データプロバイダーが共有するセキュアビューで、この型の列値を介して非構造化データファイルにアクセスできます。 |
データコンシューマーは、データプロバイダーが共有するセキュアビューで、この型の列値を介して非構造化データファイルにアクセス できません。 |
データコンシューマーは、データプロバイダーが共有するセキュアビューで、この型の列値を介して非構造化データファイルにアクセスできます。 |
|
認証 |
スコープ付き URL を生成するユーザーのみが、 URL を使用して参照ファイルにアクセスできます。 |
GET REST API 呼び出しで指定されたロールには、ステージに対する十分な権限が必要です。 USAGE (外部ステージ)または READ (内部ステージ)。 |
事前署名付き URL を持っている人は誰でも、トークンの存続期間中、参照されたファイルにアクセスできます。 |
有効期限 |
クエリ結果キャッシュの有効期限(現在は24時間)。 |
永続。 |
|
ステージのみに対するサーバー側の暗号化¶
事前署名付き URLs を使用したファイルアクセスをサポートするには、クライアント側の暗号化ではなくサーバー側の暗号化を使用して、名前付きの内部ステージまたは外部ステージを作成します。ステージ内のファイルがクライアント側で暗号化されている場合、ユーザーは暗号化キーにアクセスせずにステージングされたファイルを読み取ることはできません。
注釈
現在、サーバー側の暗号化を使用した内部ステージの作成は、次のSnowflakeクライアントバージョンに限定されています。
JDBC ドライバーv3.12.11(またはそれ以上)
ディレクトリテーブル¶
ディレクトリテーブルは、ステージングされたファイルのカタログをクラウドストレージに保存します。十分な権限を持つロールは、ディレクトリテーブルにクエリを実行して、ファイル URLs を取得し、ステージングされたファイルにアクセスできます。
詳細については、 ディレクトリテーブル をご参照ください。
SQL 関数¶
データファイルにアクセスするために、次の ファイル関数 が用意されています。
SQL 関数 |
説明 |
---|---|
ステージ名を入力として使用して、外部または内部の名前付きステージ URL を返します。 |
|
クラウドストレージ内のステージ名と絶対ファイルパスを入力として使用して、ステージ内の場所を基準にしたステージングされたファイルのパスを抽出します。 |
|
ステージ名と、ステージ内の位置を基準にしたファイルのパスを入力として使用して、ステージングされたファイルの絶対パスを返します。 |
|
ステージ名と相対ファイルパスを入力として使用して、ステージングされたファイルに事前署名付き URL を生成します。この関数を使用して、外部ステージのファイルにアクセスします。 |
|
ステージ名と相対ファイルパスを入力として使用して、Snowflakeでホストされるスコープ URL をステージングされたファイルに生成します。 |
|
ステージ名と相対ファイルパスを入力として使用して、Snowflakeがホストするファイル URL をステージングされたファイルに生成します。 |
Snowsightでステージングされたファイルのダウンロード¶
ユーザーは、 Snowsight ワークシートの結果テーブルで生成されたスコープ、事前署名、またはファイル URL をクリックして、参照ファイルをダウンロードできます。
Snowflakeのウェブインターフェイスである Snowsight にログインします。
Worksheets » My Worksheets (または、 Recent の下、または Folders でローカルワークシートを開く) » <ワークシート名> をクリックします。
サポートされているメソッドのいずれかを使用して、スコープ、事前署名、またはファイル URL をクエリで返します。
結果テーブルにある URL をクリックします。Snowsightは、 URL によって参照されるファイルをダウンロードします。
非構造化データの処理¶
Snowflakeは、非構造化データの処理を支援するために、以下の機能をサポートしています。
- 外部関数
外部関数は、Snowflake外で格納および実行されるユーザー定義関数です。外部関数により、Amazon Textract、Document AI、Azure Computer Visionといった、内部のユーザー定義関数(UDFs)からはアクセスできないライブラリを使用することができます。
詳細については、 外部関数の記述 をご参照ください。
- ユーザー定義関数、およびストアドプロシージャ
Snowflakeは、JavaまたはPythonコード内でファイルを読み取る複数の方法をサポートしているため、ユーザー定義関数(UDFs)、ユーザー定義テーブル関数(UDTFs)、またはストアドプロシージャで非構造化データを処理したり、独自の機械学習モデルを使用したりすることができます。
Snowflakeで使用している SQL を拡張 したり、 Snowpark API を使用してアプリケーションを構築したりすることができます。
詳細と例については、次のトピックをご参照ください。