Microsoft Azure로 언로딩하기
Microsoft Azure로 언로딩하기
이미 Microsoft Azure 계정이 있고 Azure 컨테이너를 파일 저장·관리에 사용한다면, Snowflake 테이블에서 데이터를 언로딩할 때 기존 컨테이너와 폴더 경로를 활용할 수 있어요. 이 주제는 COPY 명령으로 테이블에서 Azure 컨테이너로 데이터를 언로딩하는 방법을 설명해요. 그런 다음 언로딩된 데이터 파일을 로컬 파일 시스템으로 다운로드할 수 있어요.
본문
Snowflake는 다음 유형의 블롭 스토리지 계정을 지원해요.
- Blob storage
- Data Lake Storage Gen2
- 범용(General-purpose) v1
- 범용 v2
Snowflake는 Data Lake Storage Gen1은 지원하지 않아요.
Azure 컨테이너로 데이터를 언로딩하는 것은 두 단계로 수행돼요.
1단계: COPY INTO <location> 명령으로 Snowflake 데이터베이스 테이블의 데이터를 Azure 컨테이너 버킷의 파일 하나 이상으로 복사해요. 명령에서 Azure 컨테이너를 참조하는 명명된 외부 스테이지 객체를 지정하거나(권장), URI와 보안 자격 증명(필요한 경우)을 지정해 컨테이너에 직접 언로딩할 수도 있어요. 어떤 방법을 사용하든, 명령을 수동으로 또는 스크립트로 실행한다면 이 단계는 세션에 대해 실행 중인 현재 가상 웨어하우스가 필요해요. 웨어하우스는 테이블의 행을 기록하는 컴퓨팅 리소스를 제공해요.
2단계: Microsoft가 제공하는 인터페이스/도구로 Azure 컨테이너에서 파일을 다운로드해요.
팁: 이 주제 집합의 지침은 파일 형식 문서를 읽고, 원한다면 명명된 파일 형식을 만들었다고 가정해요. 시작하기 전에 데이터 언로딩 고려 사항도 읽어 보는 것이 좋아요.
Azure Virtual Network 서브넷 ID 허용하기
조직의 Azure 관리자가 Snowflake에 Azure 스토리지 계정에 대한 접근을 아직 명시적으로 부여하지 않았다면 지금 할 수 있어요. 데이터 로딩 구성 지침의 VNet 서브넷 ID 허용하기 단계를 따라요.
데이터 언로딩을 위한 Azure 컨테이너 구성하기
Snowflake가 Azure 컨테이너에 기록하려면 스토리지 계정에 대한 접근을 구성해야 해요. 구성 지침은 데이터 로딩을 위한 Azure 컨테이너 구성 문서를 참고해요. 참고로 데이터 로딩·언로딩 연산에 필요한 특정 권한을 명시하는 단일 지침 집합을 제공해요.
외부 스테이지로 데이터 언로딩하기
외부 스테이지는 데이터 언로딩에 가장 큰 유연성을 제공하는 명명된 데이터베이스 객체예요. 데이터베이스 객체이므로 명명된 스테이지에 대한 권한을 어떤 역할에든 부여할 수 있어요. Snowsight 또는 SQL로 외부 명명 스테이지를 만들 수 있어요.
- Snowsight: 탐색 메뉴에서 Catalog » Explorer » <db_name> » Stages » Create를 선택해요.
- SQL:
CREATE STAGE
명명된 스테이지 만들기:
다음 예시는 mycontainer라는 컨테이너와 unload라는 폴더 경로가 있는 my_ext_unload_stage라는 외부 스테이지를 만들어요. 이 스테이지는 파일 형식 문서에서 만든 my_csv_unload_format라는 명명된 파일 형식 객체를 참조해요.
CREATE OR REPLACE STAGE my_ext_unload_stage
URL = 'azure://myaccount.blob.core.windows.net/mycontainer/unload'
CREDENTIALS = (AZURE_SAS_TOKEN = '?sv=2016-05-31&ss=b&srt=sco&sp=rwdl&se=2018-06-27T10:05:50Z&st=2017-06-27T02:05:50Z&spr=https,http&sig=bgqQwoXwxzuD2GJfagRg7VOS8hzNr3QLT7rhS8OFRLQ%3D')
ENCRYPTION = (TYPE = 'AZURE_CSE' MASTER_KEY = 'kPxX0jzYfIamtnJEUTHwq80Au6NbSgPH5r4BDDwOaO8=')
FILE_FORMAT = my_csv_unload_format;
참고: Data Lake Storage Gen2를 포함한 지원되는 모든 유형의 Azure 블롭 스토리지 계정에 대해
blob.core.windows.net엔드포인트를 사용해요. 이 예시에 사용된AZURE_SAS_TOKEN과MASTER_KEY값은 설명용일 뿐이에요.
명명된 스테이지로 데이터 언로딩하기:
COPY INTO <location>명령으로 외부 스테이지를 사용해 테이블에서 Azure 컨테이너로 데이터를 언로딩해요. 다음 예시는my_ext_unload_stage스테이지를 사용해mytable테이블의 모든 행을 Azure 컨테이너의 파일 하나 이상으로 언로딩해요. 파일에는d1파일명 접두사가 적용돼요.COPY INTO @my_ext_unload_stage/d1 from mytable;- Azure가 제공하는 도구로 컨테이너에서 객체(즉 명령이 생성한 파일)를 가져와요.
Azure 컨테이너에 직접 데이터 언로딩하기
COPY INTO <location>명령으로 테이블에서 지정된 Azure 컨테이너로 데이터를 직접 언로딩해요. 이 옵션은 같은 테이블과 컨테이너 파라미터로 정기적으로 데이터를 언로딩할 계획이 없는 임시(ad hoc) 언로딩에 잘 맞아요. COPY 명령에서 Azure 컨테이너의 URI와 컨테이너 접근을 위한 보안 자격 증명을 지정해야 해요. 다음 예시는mytable테이블의 모든 행을 Azure 컨테이너의unload/폴더 경로 접두사가 있는 파일 하나 이상으로 언로딩해요. 이 예시는 계정 관리자(즉ACCOUNTADMIN역할을 가진 사용자) 또는 전역CREATE INTEGRATION권한이 있는 역할이CREATE STORAGE INTEGRATION으로 만든 스토리지 통합을 참조해요. 스토리지 통합을 사용하면 사용자가 프라이빗 스토리지 위치에 접근하기 위해 자격 증명을 제공하지 않아도 돼요.COPY INTO 'azure://myaccount.blob.core.windows.net/mycontainer/unload/' FROM mytable STORAGE_INTEGRATION = myint;- Azure 콘솔(또는 이에 상당하는 클라이언트 애플리케이션)로 컨테이너에서 객체(즉 명령이 생성한 파일)를 가져와요.