Microsoft Azure로 언로드하기

이미 Microsoft Azure 계정이 있고 Azure 컨테이너를 사용하여 파일을 저장 및 관리하는 경우, Snowflake 테이블에서 데이터를 언로드할 때 기존 컨테이너 및 폴더 경로를 사용할 수 있습니다. 이 항목에서는 COPY 명령을 사용하여 테이블에서 Azure 컨테이너로 데이터를 언로드하는 방법을 설명합니다. 그러면 언로드된 데이터 파일을 로컬 파일 시스템으로 다운로드할 수 있습니다.

Snowflake가 지원하는 Blob 저장소 계정 타입은 다음과 같습니다.

  • Blob 저장소

  • Data Lake Storage Gen2

  • 범용 v1

  • 범용 v2

Snowflake는 Data Lake Storage Gen1을 지원하지 않습니다.

아래 다이어그램과 같이, Azure 컨테이너로 데이터를 언로드하는 작업은 두 단계로 수행됩니다.

1단계:

COPY INTO <위치> 명령을 사용하여 Snowflake 데이터베이스 테이블에서 Azure 컨테이너 버킷의 1개 이상 파일로 데이터를 복사합니다. 이 명령에서는 Azure 컨테이너를 참조하는 명명된 외부 스테이지 오브젝트를 지정(권장)하거나 컨테이너에 대한 URI 및 보안 자격 증명(필요한 경우)을 지정하여 컨테이너에 직접 언로드하도록 선택할 수 있습니다.

사용하는 방법에 관계없이, 이 명령을 수동으로 실행하거나 스크립트 내에서 실행할 경우 이 단계에서는 세션에 대해 실행 중인 현재 가상 웨어하우스가 필요합니다. 웨어하우스는 테이블의 행을 쓰기 위한 컴퓨팅 리소스를 제공합니다.

2단계:

Microsoft에서 제공하는 인터페이스/도구를 사용하여 Azure 컨테이너의 파일을 다운로드합니다.

Azure로 데이터 언로드하기

이 항목 세트의 지침에서는 데이터 언로드 준비하기 를 읽고 원하는 경우 명명된 파일 형식을 생성한 것으로 가정합니다.

시작하기 전에 데이터 언로드 고려 사항 에서 모범 사례, 팁 및 기타 지침을 확인할 수도 있습니다.

이 항목의 내용:

Azure 가상 네트워크 서브넷 ID 허용하기

조직의 Azure 관리자가 Azure 저장소 계정에 대한 Snowflake 액세스 권한을 명시적으로 부여하지 않은 경우, 지금 허용할 수 있습니다. 데이터 로딩 구성 지침의 VNet 서브넷 ID 허용하기 에 나와 있는 단계를 따릅니다.

데이터를 언로드하기 위해 Azure 컨테이너 구성하기

Snowflake가 Azure 컨테이너에 쓰려면 저장소 계정에 대한 액세스를 구성해야 합니다. 자세한 지침은 데이터를 로드하기 위해 Azure 컨테이너 구성하기 섹션을 참조하십시오. 데이터 로딩 또는 언로딩 작업에 필요한 특정 권한을 호출하는 단일 지침 세트가 제공됩니다.

데이터를 외부 스테이지로 언로드하기

외부 스테이지는 데이터를 언로드하기 위한 최상의 유연성을 제공하는 명명된 데이터베이스 오브젝트입니다. 그리고 데이터베이스 오브젝트이므로 명명된 스테이지에 대한 권한을 모든 역할에 부여할 수 있습니다.

명명된 외부 스테이지는 다음과 같이 웹 인터페이스 또는 SQL을 사용하여 생성할 수 있습니다.

Classic Console:

Databases 데이터베이스 탭 » <db_이름> » Stages 을 클릭합니다.

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;
Copy

참고

Data Lake Storage Gen2를 포함하여, 지원되는 모든 타입의 Azure blob 저장소 계정에 대해 blob.core.windows.net 엔드포인트를 사용합니다.

이 예에서 사용하는 AZURE_SAS_TOKEN 및 MASTER_KEY 값은 설명 목적으로만 제공됩니다.

명명된 스테이지에 데이터 언로드하기

  1. 외부 스테이지를 사용하여 테이블에서 Azure 컨테이너로 데이터를 언로드하려면 COPY INTO <위치> 명령을 사용합니다.

    다음 예에서는 my_ext_unload_stage 스테이지를 사용하여 mytable 테이블의 모든 행을 Azure 컨테이너에 있는 1개 이상의 파일로 언로드합니다. d1 파일 이름 접두사가 파일에 적용됩니다.

    COPY INTO @my_ext_unload_stage/d1 from mytable;
    
    Copy
  2. Azure에서 제공하는 도구를 사용하여 컨테이너에서 오브젝트(즉, 명령을 통해 생성된 파일)를 검색합니다.

Azure 컨테이너로 데이터를 직접 언로드하기

  1. COPY INTO <위치> 명령을 사용하여 테이블의 데이터를 지정된 Azure 컨테이너로 직접 언로드합니다. 이 옵션은 동일한 테이블 및 컨테이너 매개 변수를 사용하여 정기적으로 데이터를 언로드하지 않는 임시 언로드의 경우에 적합합니다.

    COPY 명령에서 컨테이너에 액세스하기 위한 Azure 컨테이너 및 보안 자격 증명에 대한 URI를 지정해야 합니다.

    다음 예에서는 mytable 테이블의 모든 행을 Azure 컨테이너의 폴더 경로 접두사가 unload/ 인 1개 이상의 파일로 언로드합니다.

    이 예는 계정 관리자(즉, ACCOUNTADMIN 역할의 사용자) 또는 전역 CREATE INTEGRATION 권한이 있는 역할이 CREATE STORAGE INTEGRATION 을 사용하여 생성한 저장소 통합을 참조합니다. 저장소 통합을 사용하면 사용자는 개인 저장소 위치에 액세스하기 위한 자격 증명을 입력하지 않아도 됩니다.

    COPY INTO 'azure://myaccount.blob.core.windows.net/mycontainer/unload/' FROM mytable STORAGE_INTEGRATION = myint;
    
    Copy
  2. Azure 콘솔(또는 유사 클라이언트 애플리케이션)을 사용하여 컨테이너에서 오브젝트(즉, 명령을 통해 생성된 파일)를 검색합니다.