- カテゴリ:
BUILD_SCOPED_FILE_URL¶
ステージ名と相対ファイルパスを入力として使用して、スコープ付きSnowflakeファイル URL をステージングされたファイルに生成します。
スコープ URL はエンコードされ、指定されたファイルへのアクセスを限られた期間許可します。出力のスコープ URL は、永続化されたクエリ結果期間が終了するまで(結果キャッシュが期限切れになるまで)、呼び出し元に対して有効です。その期間は現在24時間です。
この SQL 関数をクエリまたはビューで呼び出します。この SQL 関数を使用して、スコープ URL をユーザー定義関数(UDF)やストアドプロシージャに渡すこともできます。
構文¶
BUILD_SCOPED_FILE_URL(
  @<stage_name> ,
  '<relative_file_path>' ,
  <use_privatelink_host_for_business_critical>)
引数¶
- stage_name
- ファイルが保存される内部ステージまたは外部ステージの名前。 - 注釈 - ステージ名にスペースまたは特殊文字が含まれている場合は、一重引用符で囲む必要があります(例: - "my stage"という名前のステージの場合は- '@"my stage"')。
- relative_file_path
- ファイルのパスとファイル名。ステージ上の場所と関係。 
- use_privatelink_host_for_business_critical
- Business Critical アカウントの URL の前に - privatelinkを追加するかどうかを指定します。- TRUEは URL のホスト名の直前に- privatelinkを追加します。例えば、- privatelink.snowflakecomputing.comです。- 注釈 - Snowflakeは、プライベート接続を有効にしているかどうかにかかわらず、 URL の先頭に - privatelinkを追加します。
- FALSEはデフォルトの動作を上書きし、 URL に- privatelinkを追加しません。
 - デフォルト: TRUE 
戻り値¶
この関数は、スコープ URL を次の形式で返します。
https://<account_identifier>/api/files/<query_id>/<encoded_file_path>
条件:
- account_identifier
- 使用するステージのSnowflakeアカウントのホスト名。ホスト名は、Snowflakeが提供するアカウントロケータで始まり、Snowflakeドメイン( - snowflakecomputing.com)で終わります。- account_locator.snowflakecomputing.com- 詳細については、 アカウント識別子 をご参照ください。 
- query_id
- スコープ URL を生成した BUILD_SCOPED_FILE_URL 呼び出しの ID をクエリします。 
- encoded_file_path
- スコープ URL を使用してアクセスするファイルへのエンコードされたパス。 
使用上の注意¶
- この SQL 関数を呼び出すために必要な権限は、呼び出される方法によって異なります。 - SQL 操作 - 必要な権限 - クエリ - USAGE (外部ステージ)または READ (内部ステージ) - ビュー内の列定義 - ビューの所有者(つまり、ビューに対して OWNERSHIP 権限を持つロール)には、ステージ権限 USAGE (外部ステージ)または READ (内部ステージ)が必要です。 - ビューをクエリするロールには、ビューに対する SELECT 権限のみが必要です。 - ストアドプロシージャ - ストアドプロシージャの所有者(つまり、ストアドプロシージャに対して OWNERSHIP 権限を持つロール)には、ステージ権限 USAGE (外部ステージ)または READ (内部ステージ)が必要です。 - ストアドプロシージャをクエリするロールには、ストアドプロシージャに対する USAGE 権限のみが必要です。 - UDF - UDF 所有者(つまり、 UDF に対して OWNERSHIP 権限を持つロール)には、ステージ権限 USAGE (外部ステージ)または READ (内部ステージ)が必要です。 - UDF をクエリするロールには、 UDF に対する USAGE 権限のみが必要です。 
- スコープ URL を REST API に送信する HTTP クライアントは、リダイレクトを許可するように構成する必要があります。 
- スコープ URL にアクセスすると、クエリ履歴に内部 GET_SCOPED_FILE 関数が呼び出されたことが示されます。 
- 内部ステージからダウンロードしたファイルが破損している場合は、ステージに - ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE')が設定されていることをステージの作成者で確認してください。
例¶
外部ステージでビットマップ形式の画像ファイルのスコープ URL を取得します。
SELECT BUILD_SCOPED_FILE_URL(@images_stage,'/us/yosemite/half_dome.jpg', TRUE);
https://my_account.snowflakecomputing.com/api/files/019260c2-00c0-f2f2-0000-4383001cf046/bXlfZGF0YWJhc2UvbXlfc2NoZW1hL215X3N0YWdlL2ZvbGRlcjEvZm9sZGVyMi9maWxlMQ
特定のオーディエンスに対する BUILD_SCOPED_FILE_URL 関数呼び出しの結果をフィルターするセキュアビューを作成します。この例では、セキュアビューをクエリすると、文字列 acct1 を含むステージファイルパス内のファイルのみが返されます。
-- Create a table that stores the relative file path for each staged file along with any other related data.
CREATE TABLE acct_table (
  acct_name string,
  relative_file_path string
);
-- Create a secure view on the table you created.
-- A role that has the SELECT privilege on the secure view has scoped access to the filtered set of files that include the acct1 text string.
CREATE SECURE VIEW acct1_files
AS
  SELECT BUILD_SCOPED_FILE_URL(@acct_files, relative_file_path, FALSE) scoped_url
  FROM acct_table
  WHERE acct_name = 'acct1';