カテゴリ:

ファイル関数

BUILD_SCOPED_FILE_URL

ステージ名と相対ファイルパスを入力として使用して、スコープ付きSnowflakeファイル URL をステージングされたファイルに生成します。スコープ URL はエンコードされ、指定されたファイルへのアクセスを限られた期間許可します。

この SQL 関数をクエリ、ビュー、ユーザー定義関数(UDF)、またはストアドプロシージャの中で呼び出します。出力のスコープ URL は、永続化されたクエリ結果期間が終了するまで(つまり、結果キャッシュが期限切れになるまで)、呼び出し元に対してのみ有効です。現在は24時間です。

次のいずれかの方法を使用して、ステージ内のファイルにアクセスします。

  • Snowsightでスコープ URL を取得します。結果テーブルでスコープ URL をクリックします。

  • ファイルサポートのリクエストでスコープ URL を REST API に送信します。ユーザーがスコープ URL を REST API に送信してファイルにアクセスすると、Snowflakeは次のアクションを実行します。

    1. ユーザーを認証します。BUILD_SCOPED_FILE_URL 関数を呼び出し、スコープ URL を生成したのは現在のユーザーであることを確認します。

    2. スコープされた URL の有効期限が切れていないことを確認します。

    3. クラウドストレージサービスのステージングされたファイルにユーザーをリダイレクトします。

構文

BUILD_SCOPED_FILE_URL( @<stage_name> , '<relative_file_path>' )
Copy

引数

stage_name

ファイルが保存される内部ステージまたは外部ステージの名前。

注釈

ステージ名にスペースまたは特殊文字が含まれている場合は、一重引用符で囲む必要があります(例: "my stage" という名前のステージの場合は '@"my stage"')。

relative_file_path

ステージ内の場所を基準にしたファイルのパスとファイル名。

戻り値

この関数は、スコープ URL を次の形式で返します。

https://<account_identifier>/api/files/<query_id>/<encoded_file_path>
Copy

条件:

account_identifier

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

account_locator.snowflakecomputing.com

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

注釈

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

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');
Copy
https://my_account.snowflakecomputing.com/api/files/019260c2-00c0-f2f2-0000-4383001cf046/bXlfZGF0YWJhc2UvbXlfc2NoZW1hL215X3N0YWdlL2ZvbGRlcjEvZm9sZGVyMi9maWxlMQ
Copy

特定のオーディエンスに対する 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) scoped_url
  FROM acct_table
  WHERE acct_name = 'acct1';
Copy