클라우드 저장소에서 데이터 로드하기: Amazon S3

소개

이 자습서에서는 SQL을 사용하여 클라우드 저장소의 데이터를 Snowflake로 로드하는 방법을 보여줍니다. Snowsight 의 템플릿 워크시트를 사용하여 이러한 작업을 완료합니다. Amazon S3, Microsoft Azure 또는 Google Cloud Storage(GCS) 중에서 사용하려는 클라우드 공급자를 선택할 수 있습니다. 워크시트에는 각 저장소 유형과의 호환성을 위해 사용자 지정된 SQL 명령이 포함됩니다.

주의

이 자습서에 제공된 예는 Amazon S3에만 적용되며 S3 버킷에서 데이터를 로드하는 데 효과적인 SQL 명령을 보여줍니다.

참고

Snowflake는 이 자습서의 샘플 데이터에 사용되는 디스크상의 저장소에 대해 최소 금액을 청구합니다. 이 자습서에서는 데이터베이스를 삭제하고 저장소 비용을 최소화하는 절차를 제공합니다.

Snowflake에서는 데이터를 로드하고 쿼리를 실행하기 위해 가상 웨어하우스 가 필요합니다. 실행 중인 가상 웨어하우스는 Snowflake 크레딧을 사용합니다. 이 자습서에서는 무료 크레딧을 제공하는 30일 평가판 계정 을 사용하므로 비용이 발생하지 않습니다.

알아볼 내용

이 자습서에서는 다음에 대해 설명합니다.

  • 이 자습서에 필요한 Snowflake 오브젝트를 생성하고 사용할 수 있는 권한이 있는 역할을 사용합니다.

  • 웨어하우스를 사용하여 리소스에 액세스합니다.

  • 데이터베이스와 스키마를 만듭니다.

  • 테이블을 만듭니다.

  • 클라우드 플랫폼을 위한 저장소 통합을 만듭니다.

  • 저장소 통합을 위한 스테이지를 만듭니다.

  • 스테이지에서 테이블로 데이터를 로드합니다.

  • 테이블에서 데이터를 쿼리합니다.

전제 조건

이 자습서에서는 다음과 같이 가정합니다.

참고

이 자습서는 평가판 계정이 있는 사용자에게만 제공됩니다. 다른 유형의 계정에는 샘플 워크시트를 사용할 수 없습니다.

1단계. Snowsight 를 사용하여 로그인

공용 인터넷을 통해 Snowsight 에 액세스하려면 다음을 수행하십시오.

  1. 지원되는 웹 브라우저에서 https://app.snowflake.com으로 이동합니다.

  2. 계정 식별자 또는 계정 URL을 입력합니다. 이전에 Snowsight 에 로그인한 경우 선택할 수 있는 계정 이름이 표시될 수 있습니다.

  3. Snowflake 계정 자격 증명을 사용하여 로그인합니다.

2단계. 클라우드 저장소 워크시트에서 데이터 로드를 엽니다.

워크시트를 사용하여 데이터베이스에서 SQL 명령을 작성하고 실행할 수 있습니다. 평가판 계정으로 이 자습서의 템플릿 워크시트에 액세스할 수 있습니다. 워크시트에는 데이터베이스 오브젝트를 생성하고 데이터를 로드하고 데이터를 쿼리하기 위해 실행할 SQL 명령이 있습니다. 템플릿 워크시트이므로 특정 SQL 매개 변수의 고유한 값을 입력하라는 메시지가 표시됩니다. 워크시트에 대한 자세한 내용은 워크시트 시작하기 섹션을 참조하십시오.

이 자습서의 워크시트는 평가판 계정용으로 미리 로드되지 않습니다. 이 자습서의 워크시트를 열려면 다음 단계를 따르십시오.

  1. Snowsight 평가판 계정에 처음으로 로그인하는 경우 Where do you want to start? 화면의 Load data into Snowflake 에서 Start 를 선택하십시오.

    Where do you want to start? 화면에서 나간 경우 Worksheets 탭으로 이동하여 배너에서 Continue 를 선택하십시오.

  2. Load data from cloud storage 라는 중간 패널의 아무 곳이나 클릭합니다.

    [Template] Load data from cloud storage worksheet 가 열리고 브라우저는 다음 이미지와 비슷해 보입니다.

설명 주석과 함께 이 자습서에 대한 SQL 명령이 포함된 클라우드 템플릿 워크시트의 SQL 로드.

3단계. 사용할 역할 및 웨어하우스 설정

사용하는 역할에 따라 보유하는 권한이 결정됩니다. 이 자습서에서는 계정의 오브젝트를 보고 관리할 수 있도록 ACCOUNTADMIN 시스템 역할을 사용합니다. 자세한 내용은 ACCOUNTADMIN 역할 사용하기 섹션을 참조하십시오.

웨어하우스는 DML 작업을 실행하고, 데이터를 로드하고, 쿼리를 실행하는 데 필요한 컴퓨팅 리소스를 제공합니다. 이러한 리소스에는 CPU, 메모리, 임시 저장소가 포함됩니다. 평가판 계정에는 이 자습서에 사용할 수 있는 가상 웨어하우스(compute_wh)가 있습니다. 자세한 내용은 가상 웨어하우스 섹션을 참조하십시오.

사용할 역할과 웨어하우스를 설정하려면 다음을 수행하십시오.

  1. 열린 워크시트에서 커서를 USE ROLE 줄에 놓습니다.

    USE ROLE accountadmin;
    
    Copy
  2. 워크시트의 오른쪽 위 모서리에서 Run 를 선택합니다.

    참고

    이 자습서에서는 한 번에 하나씩 SQL 문을 실행합니다. Run All 을 선택하지 마십시오.

  3. USE WAREHOUSE 줄에 커서를 놓고 Run 을 선택합니다.

    USE WAREHOUSE compute_wh;
    
    Copy

4단계. 로드할 수 있는 테이블 설정

데이터베이스는 데이터의 저장소입니다. 데이터는 관리하고 쿼리할 수 있는 테이블에 저장됩니다. 스키마는 데이터베이스 오브젝트(예: 테이블, 뷰 등)를 논리적으로 그룹화한 것입니다. 예를 들어 스키마에는 특정 애플리케이션에 필요한 데이터베이스 오브젝트가 포함될 수 있습니다. 자세한 내용은 데이터베이스, 테이블, 뷰 - 개요 섹션을 참조하십시오.

로드할 수 있는 데이터베이스, 스키마, 테이블을 생성하려면 다음을 수행하십시오.

  1. 열려 있는 워크시트에서 커서를 CREATE OR REPLACE DATABASE 줄에 놓고 데이터베이스 이름과 선택적으로 설명을 입력한 다음 Run 을 선택합니다. 예:

    CREATE OR REPLACE DATABASE cloud_data_db
      COMMENT = 'Database for loading cloud data';
    
    Copy
  2. CREATE OR REPLACE SCHEMA 줄에 커서를 놓고 스키마 이름과 선택적으로 설명을 입력한 다음 Run 을 선택합니다. 예:

    CREATE OR REPLACE SCHEMA cloud_data_db.s3_data
      COMMENT = 'Schema for tables loaded from S3';
    
    Copy
  3. CREATE OR REPLACE TABLE 줄에 커서를 놓고 테이블 정의를 완료한 다음 선택적 설명을 추가하고 Run 을 선택합니다. 예를 들어 다음 테이블에는 6개의 열이 포함됩니다.

    CREATE OR REPLACE TABLE cloud_data_db.s3_data.calendar
      (
      full_date DATE
      ,day_name VARCHAR(10)
      ,month_name VARCHAR(10)
      ,day_number VARCHAR(2)
      ,full_year VARCHAR(4)
      ,holiday BOOLEAN
      )
      COMMENT = 'Table to be loaded from S3 calendar data file';
    
    Copy
  4. 테이블이 성공적으로 생성되었는지 확인하려면 커서를 SELECT 줄에 놓은 다음 Run 을 선택하십시오.

    SELECT * FROM cloud_data_db.s3_data.calendar;
    
    Copy

    출력에는 생성한 테이블의 열이 표시됩니다. 현재, 테이블에는 행이 없습니다.

5단계. 저장소 통합 만들기

클라우드 저장소에서 데이터를 로드하려면 먼저 클라우드 공급자에 적용되는 저장소 통합을 구성해야 합니다. 다음 예는 Amazon S3 저장소에만 적용됩니다.

저장소 통합은 시크릿 키 또는 액세스 토큰과 같은 명시적 클라우드 공급자 자격 증명을 전달할 필요가 없는 명명된 일급 Snowflake 오브젝트입니다. 통합 오브젝트는 AWS ID 및 액세스 관리(IAM) 사용자 ID를 저장합니다.

Amazon S3의 저장소 통합을 생성하려면 다음을 수행하십시오.

  1. AWS Management Console을 사용하여 IAM 정책과 IAM 역할을 생성합니다. 이러한 리소스는 데이터를 로드할 수 있도록 S3 버킷에 대한 보안 액세스를 제공합니다. Snowflake에서 저장소 통합을 생성하려면 이러한 리소스가 필요합니다. 콘솔에 로그인한 후 옵션 1: Amazon S3에 액세스하기 위한 Snowflake 저장소 통합 구성하기 아래의 1단계와 2단계 를 완료하십시오.

  2. 열려 있는 워크시트에서 커서를 CREATE OR REPLACE STORAGE INTEGRATION 줄에 놓고 필수 매개 변수를 정의한 후 Run 을 선택합니다. 예:

    CREATE OR REPLACE STORAGE INTEGRATION s3_data_integration
      TYPE = EXTERNAL_STAGE
      STORAGE_PROVIDER = 'S3'
      STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::631373164455:role/tutorial_role'
      ENABLED = TRUE
      STORAGE_ALLOWED_LOCATIONS = ('s3://snow-tutorial-bucket/s3data/');
    
    Copy

    STORAGE_AWS_ROLE_ARN을 이전에 생성한 IAM 역할의 고유 식별자로 설정합니다. AWS Management Console의 IAM > Roles 에서 이 값을 찾을 수 있습니다.

  3. DESCRIBE INTEGRATION 줄에 커서를 놓고 생성한 저장소 통합의 이름을 지정한 다음 Run 을 선택합니다.

    DESCRIBE INTEGRATION s3_data_integration;
    
    Copy

    이 명령은 Snowflake 계정에 대해 자동으로 생성된 AWS IAM 사용자의 ARN 및 외부 ID를 검색합니다. 이러한 값을 사용하여 AWS Management Console에서 Snowflake에 대한 권한을 구성합니다.

    이 명령의 출력은 다음과 비슷해 보입니다.

    property, property_type, property_value, property_default 열이 포함된 DESCRIBE INTEGRATION 명령의 출력입니다.
  4. SHOW INTEGRATIONS 줄에 커서를 놓고 Run 을 선택합니다. 이 명령은 생성한 저장소 통합에 대한 정보를 반환합니다.

    SHOW INTEGRATIONS;
    
    Copy

    이 명령의 출력은 다음과 비슷해 보입니다.

    name, type, category, enabled, comment, created_on 열이 포함된 SHOW INTEGRATIONS 명령의 출력입니다.
  5. AWS Management Console을 사용하여 IAM 사용자(평가판 계정에 대해 자동으로 생성된 사용자)가 저장소 버킷에 액세스할 수 있는 권한을 구성합니다. 옵션 1: Amazon S3에 액세스하기 위한 Snowflake 저장소 통합 구성하기 아래의 5단계 를 따르십시오.

    Azure 또는 GCS를 사용하는 경우 Microsoft Azure에서 대량 로드하기Google Cloud Storage에서 대량 로드하기 에서 동등한 구성 절차를 찾을 수 있습니다.

6단계. 스테이지 만들기

스테이지는 Snowflake 데이터베이스에 로드할 데이터 파일을 보관하는 위치입니다. 이 자습서에서는 S3 버킷과 같은 특정 유형의 클라우드 저장소에서 데이터를 로드할 수 있는 스테이지를 만듭니다.

스테이지를 만들려면 다음을 수행하십시오.

  1. 열려 있는 워크시트에서 커서를 CREATE OR REPLACE STAGE 줄에 놓고 이름, 생성한 저장소 통합, 버킷 URL, 올바른 파일 형식을 지정한 다음 Run 을 선택합니다. 예:

    CREATE OR REPLACE STAGE cloud_data_db.s3_data.s3data_stage
      STORAGE_INTEGRATION = s3_data_integration
      URL = 's3://snow-tutorial-bucket/s3data/'
      FILE_FORMAT = (TYPE = CSV);
    
    Copy
  2. 생성한 스테이지에 대한 정보를 반환합니다.

    SHOW STAGES;
    
    Copy

    이 명령의 출력은 다음과 비슷해 보입니다.

    created_on, name, database_name, schema_name, url 열이 포함된 SHOW STAGES 명령의 출력입니다.

7단계. 스테이지에서 데이터 로드

COPY INTO <테이블> 명령을 사용하여 생성한 스테이지에서 테이블을 로드합니다. S3 버킷에서 로드하는 방법에 대한 자세한 내용은 S3 스테이지에서 데이터 복사하기 섹션을 참조하십시오.

데이터를 테이블에 로드하려면 커서를 COPY INTO 줄에 놓고 테이블 이름, 생성한 스테이지, 로드하려는 파일 이름을 지정한 다음 Run 을 선택하십시오. 예:

COPY INTO cloud_data_db.s3_data.calendar
  FROM @cloud_data_db.s3_data.s3data_stage
    FILES = ('calendar.txt');
Copy

출력은 다음 이미지와 유사합니다.

5개의 행이 테이블에 복사됩니다. 출력에는 file, status, rows_parsed, rows_loaded, error_limit 열이 있습니다.

8단계. 테이블 쿼리

이제 데이터가 로드되었으므로 calendar 테이블에서 쿼리를 실행할 수 있습니다.

열려 있는 워크시트에서 쿼리를 실행하려면 SELECT 명령의 줄을 선택한 다음 Run 을 선택하십시오. 예를 들어 다음 쿼리를 실행하십시오.

SELECT * FROM cloud_data_db.s3_data.calendar;
Copy

출력은 다음 이미지와 유사합니다.

테이블의 모든 행이 선택됩니다. 이 예에는 full_date, day_name, month_name, day_num, year_num, holiday 열이 있습니다.

9단계. 정리, 요약 및 추가 리소스

축하합니다! 평가판 계정에 대해 이 자습서를 성공적으로 완료했습니다.

잠시 시간을 내어 이 자습서에 살펴본 내용에 대한 간략한 요약과 주요 사항을 복습하십시오. 자습서에서 생성한 오브젝트를 삭제하여 정리를 할 수도 있습니다. 예를 들어, 생성하고 로드한 테이블을 삭제할 수 있습니다.

DROP TABLE calendar;
Copy

더 이상 필요하지 않으면 저장소 통합, 스테이지, 데이터베이스, 스키마 등 생성한 다른 오브젝트도 삭제할 수 있습니다. 자세한 내용은 DDL (데이터 정의 언어) 명령 섹션을 참조하십시오.

요약 및 주요 사항

요약하자면, Snowsight 에 미리 로드된 템플릿 워크시트를 사용하여 다음 단계를 완료했습니다.

  1. 사용할 역할과 웨어하우스를 설정합니다.

  2. 데이터베이스, 스키마, 테이블을 만듭니다.

  3. 저장소 통합을 만들고 클라우드 저장소에 대한 권한을 구성합니다.

  4. 스테이지를 만들고 스테이지의 데이터를 테이블에 로드합니다.

  5. 데이터를 쿼리합니다.

다음은 데이터 로드 및 쿼리에 대해 기억해야 할 몇 가지 주요 사항입니다.

  • 계정에서 오브젝트를 생성하고 관리하는 데 필요한 권한이 있어야 합니다. 이 자습서에서는 이러한 권한에 대해 ACCOUNTADMIN 시스템 역할을 사용합니다.

    이 역할은 일반적으로 오브젝트를 생성하는 데는 사용되지 않습니다. 대신, 조직 내 비즈니스 기능에 맞는 역할 계층 구조를 만드는 것이 좋습니다. 자세한 내용은 ACCOUNTADMIN 역할 사용하기 섹션을 참조하십시오.

  • 오브젝트를 생성 및 관리하고 SQL 명령을 실행하는 데 필요한 리소스를 위한 웨어하우스가 필요합니다. 이 자습서에서는 평가판 계정에 포함된 compute_wh 웨어하우스를 사용합니다.

  • 데이터를 저장하기 위한 데이터베이스와 데이터베이스 오브젝트를 논리적으로 그룹화하기 위한 스키마를 생성했습니다.

  • AWS S3 버킷에 저장된 CSV 파일에서 데이터를 로드하기 위한 저장소 통합과 스테이지를 만들었습니다.

  • 데이터가 데이터베이스에 로드된 후 SELECT 문을 사용하여 데이터를 쿼리했습니다.

다음에는 무엇을 해야 합니까?

다음 리소스를 활용하여 Snowflake에 대해 계속 알아보십시오.