BUILD_STAGE_FILE_URL

BUILD_STAGE_FILE_URL

BUILD_STAGE_FILE_URL은 스테이지 이름과 상대 파일 경로를 입력으로 사용해 스테이징된 파일에 대한 Snowflake 파일 URL을 생성하는 파일 함수예요. 파일 URL은 지정한 파일에 장기간 접근을 허용해요. 즉 파일 URL은 만료되지 않아요.

출처: Snowflake SQL Reference

본문

카테고리: 파일 함수

이 SQL 함수를 쿼리, 사용자 정의 함수(UDF), 또는 저장 프로시저에서 호출해요.

파일 지원용 REST API에 대한 요청으로 파일 URL을 보내 스테이지의 파일에 접근해요. 사용자가 REST API에 파일 URL을 보내 파일에 접근하면 Snowflake는 다음 작업을 수행해요:

  1. 사용자를 인증해요.
  2. 파일을 포함하는 스테이지에 역할이 충분한 권한을 가졌는지 확인해요.
  3. 사용자를 클라우드 스토리지 서비스의 스테이징된 파일로 리다이렉트해요.

구문 (Syntax)

BUILD_STAGE_FILE_URL( @<stage_name> , '<relative_file_path>' )

인자 (Arguments)

<stage_name> — 파일이 저장된 내부 또는 외부 스테이지의 이름이에요. 참고: 스테이지 이름에 공백이나 특수 문자가 있으면 작은따옴표로 감싸야 해요(예: "my stage"라는 스테이지는 '@"my stage"').

<relative_file_path> — 스테이지 안의 위치에 대한 상대 경로와 파일 이름이에요.

반환값 (Returns)

파일 URL을 다음 형식으로 반환해요:

https://<account_identifier>/api/files/<db_name>/<schema_name>/<stage_name>/<relative_path>

여기서:

<account_identifier> — 스테이지의 Snowflake 계정 호스트 이름이에요. 호스트 이름은 계정 로케이터(Snowflake 제공)로 시작하고 Snowflake 도메인(snowflakecomputing.com)으로 끝나요:

*account_locator*.snowflakecomputing.com

자세한 내용은 계정 식별자를 참고해요. 참고: Business Critical 계정의 경우, 계정에 Snowflake 서비스에 대한 프라이빗 연결이 활성화되어 있지 않더라도 snowflakecomputing.com 바로 앞에 privatelink 세그먼트(privatelink.snowflakecomputing.com)가 URL 앞에 추가돼요.

중요: 현재 이 함수는 *organization_name*-*account_name* 형식으로 계정 식별자를 반환해요. 파일 URL이 GET 요청의 입력으로 사용되면 API 엔드포인트가 오류를 반환해요. 오류를 해결하려면 계정 식별자를 계정에 해당하는 형식으로 수동으로 변환해야 해요:

*account_locator*.*region_id* 또는 *account_locator*.*region_id*.*cloud*

이 형식들에 대한 자세한 내용은 형식 2: 리전의 계정 로케이터를 참고해요. 예정된 릴리스에서 이 함수는 올바른 형식의 파일 URL을 반환할 거예요.

<db_name> — 파일이 있는 스테이지를 포함하는 데이터베이스의 이름이에요.

<schema_name> — 파일이 있는 스테이지를 포함하는 스키마의 이름이에요.

<stage_name> — 파일이 있는 스테이지의 이름이에요.

<relative_path> — 파일 URL로 접근할 파일의 경로예요.

사용 시 유의사항 (Usage notes)

  • 이 SQL 함수를 호출하는 데 필요한 권한은 호출 방식에 따라 달라요:
SQL 작업 필요한 권한
쿼리 USAGE(외부 스테이지) 또는 READ(내부 스테이지)
저장 프로시저 저장 프로시저 소유자(즉 저장 프로시저에 OWNERSHIP 권한이 있는 역할)가 스테이지 권한을 가져야 함: USAGE(외부 스테이지) 또는 READ(내부 스테이지). 저장 프로시저를 쿼리하는 역할은 저장 프로시저에 대한 USAGE 권한만 필요.
UDF UDF 소유자(즉 UDF에 OWNERSHIP 권한이 있는 역할)가 스테이지 권한을 가져야 함: USAGE(외부 스테이지) 또는 READ(내부 스테이지). UDF를 쿼리하는 역할은 UDF에 대한 USAGE 권한만 필요.
  • REST API에 파일 URL을 보내는 HTTP 클라이언트는 리다이렉트를 허용하도록 구성되어야 해요.
  • 파일 URL이 접근되면 쿼리 히스토리는 내부 GET_STAGE_FILE 함수가 호출되었음을 보여줘요.
  • 내부 스테이지에서 다운로드한 파일이 손상되었다면, 스테이지 생성자에게 스테이지에 ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE')가 설정되어 있는지 확인해요.

예시 (Examples)

외부 스테이지의 비트맵 형식 이미지 파일에 대한 파일 URL을 가져와요:

SELECT BUILD_STAGE_FILE_URL(@images_stage,'us/yosemite/half_dome.jpg');
https://my_account.snowflakecomputing.com/api/files/MY_DB/PUBLIC/IMAGES_STAGE/us/yosemite/half_dome.jpg

더 알아보기