Snowflake

[Snowflake] Stage

비번변경 2024. 7. 31. 11:52

개요

Snowflake는 여러 클라우드에 저장되어 있는 데이터를 Snowflake 시스템에 로드하여 데이터 작업을 수행할 수 있게 한다. 이번 글에서는 클라우드에 저장된 데이터에 접근할 수 있게 하는 Stage에 대해 적어둔다.

 

 

Stage

파일 데이터를 테이블에 로드할 수 있도록 데이터 파일이 저장되는 위치를 지정하는 Snowflake 객체로, 내부 스테이지와 외부 스테이지로 구분된다.

  • 내부 스테이지 : Snowflake 내에서 데이터 파일을 내부적으로 저장한다.
  • 외부 스테이지 : AWS S3, GCP 버킷, Azure 컨테이너와 같이 Snowflake 외부에 저장된 데이터 파일을 참조한다

Stage는 데이터가 저장되어 있는 공간이 아니라, Sowflake가 데이터에 저장되어 있는 공간에 접근할 수 있는 인터페이스라고 할 수 있다.

또한 Stage를 생성할 때 사용할 file format을 지정하여 특정 형식의 데이터 파일을 로드할 수 있도록 구성할 수 있다.

 

 

생성

예시로 AWS S3에 접근하는 Stage를 생성해 보자.

 

1. Stage로 데이터에 접근할 데이터베이스 스키마로 이동

이 글에서는 Garden_plants 데이터베이스 Flowers 스키마에 생성해 보겠다.

 

2. Create > Stage > Amazon S3 클릭

 

3. Stage 설정 지정

일반적으로 Stage의 이름과 S3 위치를 지정해야 한다.

필요에 따라 접근 권한(Authentication), 암호화(Encryption) 등을 추가로 구성하도록 한다.

Stage는 Web UI 뿐만 아니라 SQL로도 생성할 수 있다. 사진의 Stage는 아래 SQL로 생성하는 것과 동일하다.

CREATE STAGE LIKE_A_WINDOW_INTO_AN_S3_BUCKET 
	URL = 's3://uni-lab-files' 
	DIRECTORY = ( ENABLE = true );

 

구성이 완료되었다면 Create 버튼을 눌러 생성을 진행한다.

 

3. 생성된 Stage 확인

이상이 없으면 아래와 같이 생성된 Stage에서 데이터 파일의 목록 등을 확인할 수 있다. 

이 데이터들을 Snowflake에서 다루기 위해서는 데이터베이스  테이블로 로드해와야 한다.

 

 

Stage 파일 목록 확인

list 명령으로 Stage 내의 파일 목록을 확인할 수 있다. Stage를 지정할 때는 @를 앞에 붙여준다.

list @<STAGE_PATH>;

-- 예시
list @garden_plants.flowers.LIKE_A_WINDOW_INTO_AN_S3_BUCKET;

 

 

 

참고 문서

https://docs.snowflake.com/ko/user-guide/data-load-internal-tutorial-create-stage

https://docs.snowflake.com/ko/sql-reference/sql/create-stage

https://docs.snowflake.com/ko/user-guide/data-load-s3-create-stage