전제 조건

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

  • Amazon AWS를 사용하도록 구성된 Snowflake 계정과 데이터베이스, 테이블 및 가상 웨어하우스 오브젝트를 만드는 데 필요한 권한을 부여하는 역할을 가진 사용자가 있습니다.

  • SnowSQL(CLI 클라이언트) 이 설치되어 있습니다.

20분만에 Snowflake 시작하기 자습서에서는 이러한 요구 사항을 충족하기 위한 관련 단계별 지침을 제공합니다.

Snowflake는 이 자습서에서 사용할 공용 S3 버킷의 샘플 데이터 파일을 제공합니다. 하지만 시작하기 전에 이 자습서에 따라 실습하기 위한 데이터베이스, 테이블, 가상 웨어하우스, 외부 스테이지를 만들어야 합니다. 이들은 대부분의 Snowflake 활동에 필요한 기본 Snowflake 오브젝트입니다.

샘플 데이터 파일 정보

이 자습서에서는 공개 S3 버킷에 제공된 다음 샘플 애플리케이션 이벤트 JSON 데이터를 사용합니다.

{
"device_type": "server",
"events": [
  {
    "f": 83,
    "rv": "15219.64,783.63,48674.48,84679.52,27499.78,2178.83,0.42,74900.19",
    "t": 1437560931139,
    "v": {
      "ACHZ": 42869,
      "ACV": 709489,
      "DCA": 232,
      "DCV": 62287,
      "ENJR": 2599,
      "ERRS": 205,
      "MXEC": 487,
      "TMPI": 9
    },
    "vd": 54,
    "z": 1437644222811
  },
  {
    "f": 1000083,
    "rv": "8070.52,54470.71,85331.27,9.10,70825.85,65191.82,46564.53,29422.22",
    "t": 1437036965027,
    "v": {
      "ACHZ": 6953,
      "ACV": 346795,
      "DCA": 250,
      "DCV": 46066,
      "ENJR": 9033,
      "ERRS": 615,
      "MXEC": 0,
      "TMPI": 112
    },
    "vd": 626,
    "z": 1437660796958
  }
],
"version": 2.6
}
Copy

이 데이터는 애플리케이션이 S3에 업로드하는 샘플 이벤트를 나타냅니다. 서버, 휴대폰, 브라우저와 같은 다양한 디바이스 및 애플리케이션이 이벤트를 게시합니다. 일반적인 데이터 수집 상황에서 확장 가능한 웹 엔드포인트는 다양한 소스에서 POSTed 데이터를 수집하여 큐 시스템에 씁니다. 그러면 수집 서비스/유틸리티가 S3 버킷에 데이터를 쓰며, 여기에서 사용자는 데이터를 Snowflake로 로드할 수 있습니다.

샘플 데이터는 다음 개념을 보여줍니다.

  • 애플리케이션은 이벤트를 일괄적으로 그룹화하도록 선택할 수 있습니다. 배치는 해당 배치의 모든 이벤트에 공통적인 헤더 정보를 포함하는 컨테이너입니다. 예를 들어 이전의 JSON은 공통적인 헤더 정보(이벤트를 생성한 device_typeversion)가 있는 두 이벤트의 배치입니다.

  • Amazon S3는 폴더 개념을 사용한 버킷 구성을 지원합니다. 애플리케이션은 이 기능을 활용하여 이벤트 데이터를 분할할 수 있습니다. 분할 구성표는 일반적으로 이벤트가 S3에 작성된 이벤트 날짜와 함께 이벤트를 생성한 애플리케이션 또는 위치와 같은 세부 정보를 식별합니다. 이러한 분할 구성표를 사용하면 단일 COPY 명령을 사용해 분할된 데이터의 일부를 Snowflake에 복사할 수 있습니다. 예를 들어 처음에 테이블을 채울 때 시간, 데이터, 월 또는 연도별로 이벤트 데이터를 복사할 수 있습니다.

    예:

    s3://bucket_name/application_a/2016/07/01/11/

    s3://bucket_name/application_b/location_c/2016/07/01/14/

    application_a, application_b, location_c 등은 경로에 있는 모든 데이터의 원본에 대한 세부 정보를 식별합니다. 데이터는 작성된 날짜별로 구성할 수 있습니다. 선택 사항인 24시간 디렉터리는 각 디렉터리의 데이터 양을 줄입니다.

    참고

    S3는 Snowflake에서 사용하는 각 COPY 문과 함께 디렉터리 목록을 전송하므로 각 디렉터리의 파일 수를 줄이면 COPY 문의 성능이 향상됩니다. 시간마다 10~15분 단위로 폴더를 생성하는 것을 고려할 수도 있습니다.

    S3 버킷에 제공된 샘플 데이터는 유사한 분할 구성표를 사용합니다. COPY 명령에서 이벤트 데이터를 복사할 특정 폴더 경로를 지정합니다.

데이터베이스, 테이블, 웨어하우스, 외부 스테이지 만들기

다음 문을 실행하여 이 자습서에 따라 실습하는 데 필요한 데이터베이스, 테이블, 가상 웨어하우스, 외부 스테이지를 만듭니다. 자습서를 마친 후 이러한 오브젝트를 삭제할 수 있습니다.

CREATE OR REPLACE DATABASE mydatabase;

USE SCHEMA mydatabase.public;

CREATE OR REPLACE TABLE raw_source (
  SRC VARIANT);

CREATE OR REPLACE WAREHOUSE mywarehouse WITH
  WAREHOUSE_SIZE='X-SMALL'
  AUTO_SUSPEND = 120
  AUTO_RESUME = TRUE
  INITIALLY_SUSPENDED=TRUE;

USE WAREHOUSE mywarehouse;

CREATE OR REPLACE STAGE my_stage
  URL = 's3://snowflake-docs/tutorials/json';
Copy

다음 사항을 참고하십시오.

  • CREATE DATABASE 문으로 데이터베이스를 만듭니다. 데이터베이스에는 ‘public’이라는 스키마가 자동으로 포함됩니다.

  • USE SCHEMA 문으로 현재 사용자 세션에 대한 활성 데이터베이스와 스키마를 지정합니다. 이제 데이터베이스를 지정하면 요청 시마다 이름을 입력할 필요 없이 이 데이터베이스에서 작업을 수행할 수 있습니다.

  • CREATE TABLE 문으로 JSON 데이터의 대상 테이블을 만듭니다.

  • CREATE WAREHOUSE 문으로 처음에 일시 중단되는 웨어하우스를 만듭니다. 또한 이 문으로 AUTO_RESUME = true가 설정되어, 컴퓨팅 리소스가 필요한 SQL 문을 실행할 때 웨어하우스를 자동으로 시작하게 됩니다. USE WAREHOUSE 문으로 현재 사용자 세션에 대한 활성 웨어하우스로 만든 웨어하우스를 지정합니다.

  • CREATE STAGE 문으로 이 자습서의 샘플 파일이 포함된 S3 버킷을 가리키는 외부 스테이지를 생성합니다.

다음 항목: 1단계. 데이터를 대상 테이블로 복사