카테고리:

파일 함수

BUILD_SCOPED_FILE_URL

스테이지 이름과 상대 파일 경로를 입력으로 사용하여 스테이징된 파일에 대한 범위가 지정된 Snowflake 파일 URL을 생성합니다. 범위 지정 URL이 인코딩되며 제한된 시간 동안 지정된 파일에 대한 액세스를 허용합니다.

쿼리, 뷰, 사용자 정의 함수(UDF) 또는 저장 프로시저에서 이 SQL 함수를 호출합니다. 출력의 범위 지정 URL은 지속 쿼리 결과 기간이 종료될 때(즉, 결과 캐시가 만료됨)까지만 호출자에게 유효하며, 이 기간은 현재로서는 24시간입니다.

다음 방법 중 하나를 사용하여 스테이지의 파일에 액세스합니다.

  • Snowsight에서 범위 지정 URL을 검색합니다. 결과 테이블에서 범위 지정 URL을 클릭합니다.

  • 파일 지원을 위해 REST API에 대한 요청의 범위 지정 URL을 보냅니다. 파일에 액세스하기 위해 사용자가 범위 지정 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 서비스에 비공개 연결이 활성화되지 않은 경우에도 privatelink 세그먼트가 snowflakecomputing.com (privatelink.snowflakecomputing.com) 직전의 URL 앞에 추가됩니다.

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