일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- airflow
- 클라우드
- 파이썬
- 웹크롤링
- 데브코스
- 운영체제
- 에어플로우
- 알고리즘
- 데이터베이스
- SQL
- DataWarehouse
- 부트캠프
- 프로그래머스
- 웹스크래핑
- 개발
- Service
- 데이터엔지니어
- 자료구조
- Amazon
- 데이터웨어하우스
- 관계형데이터베이스
- 웹자동화
- CS
- Django
- 기술면접
- WEB
- 취준
- 개념정리
- AWS
- 데이터엔지니어링
- Today
- Total
사진과 음악을 좋아하는 개발자 지망생의 블로그
[데이터 웨어하우스 - 중급] 3. Snowflake - ① Snowflake 특징 소개, 무료 시험판 실행, 실습을 위한 초기 환경 설정 본문
[데이터 웨어하우스 - 중급] 3. Snowflake - ① Snowflake 특징 소개, 무료 시험판 실행, 실습을 위한 초기 환경 설정
devculture309 2023. 5. 25. 17:30
1. Snowflake 특징 소개
1 - 1. Snowflake 소개
Snowflake는 2014년에 클라우드 기반 데이터 웨어하우스로 시작되어 현재는 데이터 클라우드로 발전한 회사입니다. 2020년에 상장되었으며, 현재는 글로벌 클라우드 환경에서 동작하는 멀티클라우드 플랫폼으로 사용되고 있습니다. Snowflake는 Amazon Web Services (AWS), Google Cloud Platform (GCP), Microsoft Azure와 같은 다양한 클라우드 환경에서 실행될 수 있습니다.
Snowflake는 데이터 공유와 마켓플레이스 기능을 제공하여 데이터 판매를 가능하게 해주고 있습니다. 이를 통해 조직은 자체 데이터를 외부 조직과 공유하고 판매함으로써 추가 수익을 창출할 수 있습니다. 또한, Snowflake는 ETL(Extract, Transform, Load) 및 다양한 데이터 통합 기능을 제공하여 데이터를 수집, 변환, 적재하는 과정을 간편하게 처리할 수 있습니다.
Snowflake의 주요 특징은 다음과 같습니다:
- 클라우드 기반: Snowflake는 클라우드 기반의 데이터 웨어하우스로서, 기존의 온프레미스 데이터 웨어하우스와는 달리 클라우드 인프라에서 운영됩니다. 이를 통해 빠르고 확장 가능한 데이터 처리를 제공합니다.
- 멀티클라우드 지원: Snowflake는 AWS, GCP, Azure와 같은 다양한 클라우드 환경에서 동작할 수 있어, 사용자는 자신의 선호하는 클라우드 환경을 선택하여 이용할 수 있습니다.
- 데이터 공유 및 마켓플레이스: Snowflake는 데이터 공유와 마켓플레이스 기능을 제공하여 데이터 소유자가 자체 데이터를 다른 사용자와 공유하고 판매할 수 있습니다.
- ETL 및 데이터 통합 기능: Snowflake는 ETL과 다양한 데이터 통합 기능을 제공하여 데이터의 추출, 변환, 적재 작업을 간편하게 처리할 수 있습니다.
Snowflake의 유연성과 확장성은 많은 기업과 조직에서 데이터 관리 및 분석에 활용되고 있으며, 클라우드 환경에서의 데이터 처리와 공유에 대한 요구가 높아짐에 따라 더욱 중요한 역할을 수행하고 있습니다.
1 - 2. Snowflake 특징
- 가변 비용 모델: Snowflake는 스토리지와 컴퓨팅 인프라를 별도로 설정하여 가변 비용 모델을 제공합니다. 이는 Redshift와 같은 고정비용 모델과 달리 노드 수 조정이 필요하지 않으며, 최적화를 위한 distkey 등의 작업도 필요하지 않습니다.
- SQL 기반의 빅데이터 처리: Snowflake는 SQL 기반으로 대용량 데이터의 저장, 처리, 분석을 가능하게 합니다. 비구조화된 데이터 처리와 머신러닝 기능도 제공하며, 다양한 데이터 포맷인 CSV, JSON, Avro, Parquet 등을 지원합니다. 또한, S3, Google Cloud 클라우드 스토리지, Azure Blob Storage 등과의 연동이 가능합니다.
- 배치 및 실시간 데이터 처리: Snowflake는 주로 배치 데이터 중심으로 사용되지만, 실시간 데이터 처리도 지원합니다.
- Time Travel: Snowflake는 과거 데이터 쿼리 기능인 Time Travel을 제공하여 트렌드 분석 등을 쉽게 수행할 수 있습니다.
- 다양한 관리/제어 방식: Snowflake는 웹 콘솔 외에도 Python API를 통해 관리 및 제어할 수 있습니다. 또한, ODBC/JDBC 연결을 지원하여 다른 애플리케이션과의 통합도 용이합니다.
- 자체 및 외부 스토리지 사용 가능: Snowflake는 자체 스토리지 외에도 클라우드 스토리지를 외부 테이블로 사용할 수 있습니다.
- 멀티클라우드 및 Cross-Region Replication: Snowflake는 멀티클라우드 환경에서 동작하며, 다른 지역에 있는 데이터 공유(Cross-Region Replication) 기능을 지원합니다.
- 계정 구성: Snowflake의 계정 구성은 Organization, Account, Database로 이루어져 있습니다. Organization은 모든 Snowflake 자원을 통합하는 최상위 레벨 컨테이너이고, Account는 독립적인 사용자, 데이터 및 접근 권한을 가지며, Database는 Account에 속한 데이터를 다루는 논리적인 컨테이너입니다.
- Data Marketplace: Snowflake는 데이터 마켓플레이스 서비스를 제공하며, 데이터를 구매하거나 공유할 수 있습니다.
- Data Sharing: Snowflake는 "Share, Don't Move" 원칙에 따라 데이터를 스토리지 레벨에서 공유하는 Data Sharing 기능을 제공합니다. 이를 통해 데이터셋을 내부 조직이나 파트너와 공유할 수 있습니다
Snowflake는 다양한 기능과 유연한 구성으로 대규모 데이터 처리 및 분석을 위한 강력한 플랫폼을 제공하고 있습니다. 대표적인 고객사로는 Siemens, Flexport, Iterable, Affirm, PepsiCo 등이 있습니다.
1 - 3. Snowflake의 기본 데이터 타입
- Numeric: TINYINT, SMALLINT, INTEGER, BIGINT, NUMBER, NUMERIC, DECIMAL, FLOAT, DOUBLE, REAL
- Boolean: BOOLEAN
- String: CHAR, VARCHAR, TEXT, BINARY, VARBINARY
- Date and Time: DATE, TIME, TIMESTAMP, TIMESTAMP_LTZ, TIMESTAMP_TZ
- Semi-structured data: VARIANT (JSON, OBJECT)
- Binary: BINARY, VARBINARY
- Geospatial: GEOGRAPHY, GEOMETRY
- Array: ARRAY
- Object: OBJECT
이러한 데이터 타입을 사용하여 Snowflake에서 다양한 유형의 데이터를 저장하고 처리할 수 있습니다. 예를 들어, 숫자형 데이터, 논리형 데이터, 문자열 데이터, 날짜 및 시간 데이터, 반구조적 데이터(JSON, OBJECT), 이진 데이터, 지리 및 공간 데이터, 배열 데이터, 객체 데이터 등을 다룰 수 있습니다. 각 데이터 타입은 해당하는 데이터의 특성과 요구에 맞게 선택하여 사용할 수 있습니다.
2. Snowflake 무료 시험판 실행
2 - 1. Snowflake 30일 무료 시험판 시작
Snowflake 30일 무료 시험판을 시작하려면 다음 링크인 https://signup.snowflake.com/로 이동하세요. 해당 페이지에서 회원가입을 진행하고, 필요한 정보를 입력하여 무료 시험판을 신청할 수 있습니다.
무료 시험판 기간은 30일이며, 최대 사용 가능 금액은 $400입니다. 이를 활용하여 Snowflake의 기능과 성능을 체험하고 데이터 처리 및 분석을 수행할 수 있습니다.
2 - 2. Snowflake 로그인 URL 확인
Snowflake의 로그인 URL은 회사 또는 조직의 계정에 따라 다를 수 있습니다. 일반적으로는 다음과 같은 형식을 따릅니다:
https://<account-name>.snowflakecomputing.com/
여기서 <account-name>은 해당 계정의 고유한 식별자입니다. 계정 이름을 알고 있다면 위의 URL을 사용하여 Snowflake에 로그인할 수 있습니다. 그러나 정확한 로그인 URL을 확인하기 위해서는 계정 관리자나 해당 조직의 IT 관리팀에 문의하시는 것이 좋습니다. 그들은 정확한 로그인 URL과 로그인에 필요한 자격증명을 제공해줄 수 있습니다.
2 - 3. 내 Account안의 Databases, Warehouse 확인하기
1) Database 확인하기
Snowflake의 웹 콘솔에서 데이터베이스를 확인하는 방법은 다음과 같습니다.
- 왼쪽 메뉴에서 "Data" 섹션을 찾습니다.
- "Data" 섹션 아래에서 "Databases"를 클릭합니다.
- 해당 페이지에서 현재 계정에 있는 데이터베이스 목록을 확인할 수 있습니다.
위의 단계를 따라가면 데이터베이스 목록을 확인할 수 있을 것입니다. 그러나 실제로 데이터베이스가 있는지, 어떤 데이터베이스가 있는지는 사용자의 계정에 따라 다를 수 있습니다.
2) Warehouse 확인하기
Snowflake의 웹 콘솔에서 웨어하우스를 확인하는 방법은 다음과 같습니다.
- 왼쪽 메뉴에서 "Admin" 섹션을 찾습니다.
- "Admin" 섹션 아래에서 "Warehouses"를 클릭합니다.
- 해당 페이지에서 현재 계정에 있는 웨어하우스 목록을 확인할 수 있습니다.
위의 단계를 따라가면 웨어하우스 목록을 확인할 수 있을 것입니다. 해당 목록에서 "COMPUTE_WH"라는 웨어하우스가 있는지 확인할 수 있습니다. 그러나 실제로 어떤 웨어하우스가 있는지, 웨어하우스의 상태나 설정은 사용자의 계정에 따라 다를 수 있습니다.
2 - 4. Snowflake Warehouse에서 Credit이란?
Snowflake Warehouse에서 "Credit"은 쿼리 실행, 데이터 로드 및 기타 작업에 사용되는 계산 리소스를 측정하는 단위입니다. Credit은 웨어하우스의 사용량에 따라 발생하며, 실행된 쿼리의 복잡성과 크기, 데이터 로드 양, 작업의 수행 시간 등에 따라 달라집니다.
Credit은 일반적으로 시간 단위로 청구되며, 사용된 리소스의 양에 따라 계산됩니다. 각 웨어하우스의 크기와 타입에 따라 Credit 비용이 다를 수 있습니다. 일반적으로 1 Credit은 약 $2에서 $4 사이의 비용을 발생시킵니다. 그러나 이는 상황과 계정의 구성에 따라 다를 수 있으므로 정확한 비용은 사용자의 계정 설정과 이용 조건에 따라 달라질 수 있습니다.
Credit은 Snowflake에서 웨어하우스 사용의 비용을 나타내는 중요한 요소이며, 사용자는 웨어하우스를 효율적으로 사용하여 Credit을 최적화하고 비용을 관리할 수 있습니다.
2 - 5. Snowflake 비용 구조
Snowflake의 비용 구조는 크게 다음 세 가지 컴포넌트로 구성됩니다.
- 컴퓨팅 비용: 이는 앞서 언급한 대로 크레딧으로 결정됩니다. 웨어하우스의 사용량에 따라 크레딧이 발생하며, 실행된 쿼리의 복잡성과 크기, 데이터 로드 양, 작업의 수행 시간 등에 따라 크레딧이 소모됩니다.
- 스토리지 비용: Snowflake에서 사용하는 데이터의 스토리지 비용입니다. 스토리지 비용은 저장된 데이터의 양에 따라 결정되며, 테라바이트(TB) 당 비용으로 계산됩니다. 저장된 데이터의 양이 증가하면 스토리지 비용도 증가합니다.
- 네트워크 비용: Snowflake에서 지역간 데이터 전송이나 다른 클라우드 간 데이터 전송 시 발생하는 비용입니다. 이는 테라바이트(TB) 당 계산됩니다. 데이터를 다른 지역이나 클라우드로 전송하는 경우, 전송된 데이터의 양에 따라 네트워크 비용이 발생합니다.
이와 같은 비용 구조를 고려하여 Snowflake의 사용을 계획하고 데이터 처리 및 스토리지 요구사항을 관리할 수 있습니다. 비용 구조는 사용자의 계정 설정과 이용 조건에 따라 달라질 수 있으며, 정확한 비용은 계정 관리자나 Snowflake의 공식 문서를 참조하는 것이 좋습니다.
3. Snowflake 실습을 위한 초기 환경 설정
3 - 1. Worksheet 사용: 웹 SQL 에디터
Snowflake의 웹 SQL 에디터를 사용하여 SQL 쿼리를 실행하고 데이터베이스 작업을 수행할 수 있습니다. Snowflake의 웹 인터페이스인 Snowflake 웹 콘솔을 통해 웹 SQL 에디터를 열고 다음 단계를 따라 작업할 수 있습니다
- Snowflake 웹 콘솔에 로그인: 먼저 웹 브라우저에서 Snowflake 웹 콘솔에 로그인합니다. 필요한 자격 증명을 입력하고 로그인합니다.
- 워크시트 열기: 로그인 후, 콘솔의 상단 메뉴에서 "워크시트(Worksheet)" 탭을 선택합니다. 워크시트는 SQL 쿼리를 작성하고 실행할 수 있는 공간을 제공합니다.
- 데이터베이스 선택: 워크시트를 열면 데이터베이스 선택 드롭다운 메뉴가 표시됩니다. 원하는 데이터베이스를 선택합니다. 데이터베이스를 선택하면 해당 데이터베이스의 스키마와 테이블에 대한 정보를 사용할 수 있습니다.
- SQL 쿼리 작성: SQL 쿼리를 작성할 수 있는 워크시트 편집기가 제공됩니다. 원하는 SQL 문을 입력합니다. 예를 들어, "SELECT * FROM table_name;"과 같은 형식의 쿼리를 작성할 수 있습니다.
- 쿼리 실행: 작성한 SQL 쿼리를 실행하려면 실행 버튼을 클릭하거나 키보드 단축키(일반적으로 Ctrl + Enter 또는 Command + Enter)를 사용합니다. 쿼리 실행 결과는 워크시트 아래에 테이블 형식으로 표시됩니다.
3 - 2. 데이터베이스와 스키마 생성
아래의 SQL 문을 사용하여 데이터베이스와 스키마를 생성할 수 있습니다.
-- 데이터베이스 생성
CREATE DATABASE dev;
-- 3개의 스키마 생성
CREATE SCHEMA dev.raw_data;
CREATE SCHEMA dev.analytics;
CREATE SCHEMA dev.adhoc;
위의 SQL 문을 실행하면 "dev"라는 이름의 데이터베이스가 생성되고, 그 하위에 "raw_data", "analytics", "adhoc" 세 개의 스키마가 생성됩니다. 이렇게 스키마를 생성하면 각각의 스키마에 데이터를 구성하고 해당 목적에 맞는 작업을 수행할 수 있습니다.
3 - 3. 3개의 테이블을 raw_data 밑에 생성
아래의 SQL 문을 사용하여 "dev.raw_data" 스키마 아래에 세 개의 테이블을 생성할 수 있습니다.
-- session_transaction 테이블 생성
CREATE OR REPLACE TABLE dev.raw_data.session_transaction (
sessionid varchar(32) primary key,
refunded boolean,
amount int
); -- s3://user-test-bucket/test_data/session_transaction.csv
-- user_session_channel 테이블 생성
CREATE TABLE dev.raw_data.user_session_channel (
userid integer ,
sessionid varchar(32) primary key,
channel varchar(32)
); -- s3://user-test-bucket/test_data/user_session_channel.csv
-- session_timestamp 테이블 생성
CREATE TABLE dev.raw_data.session_timestamp (
sessionid varchar(32) primary key,
ts timestamp
); -- s3://user-test-bucket/test_data/session_timestamp.csv
위의 SQL 문을 실행하면 "dev.raw_data" 스키마 아래에 "session_transaction", "user_session_channel", "session_timestamp" 세 개의 테이블이 생성됩니다. 각 테이블은 주어진 컬럼과 해당 테이블의 primary key를 가지며, 데이터는 주어진 S3 경로에서 가져와 채워질 것입니다. 실제 데이터 파일은 주어진 S3 경로에 존재해야 합니다.
3 - 4. COPY를 사용해 벌크 업데이트를 수행
① 먼저, Snowflake에서 S3 버킷에 접근하기 위한 전용 사용자를 생성해야 합니다. 이를 위해 다음 단계를 따릅니다.
- AWS Management Console에 로그인하여 IAM (Identity and Access Management) 서비스로 이동합니다.
- "사용자"를 클릭하고, "사용자 추가" 버튼을 클릭하여 새로운 사용자를 생성합니다.
- "프로그래밍 방식 액세스"를 선택하고, "다음: 권한" 버튼을 클릭합니다.
- "기존 정책 직접 연결"을 선택하고, "AmazonS3ReadOnlyAccess" 정책을 선택합니다.
- "다음: 태그"와 "다음: 검토"를 순서대로 클릭하고, 마지막으로 "사용자 만들기"를 클릭합니다.
- 생성된 사용자의 "액세스 키 ID"와 "시크릿 액세스 키"를 안전한 장소에 보관합니다.
② 이제 COPY 명령문을 사용하여 데이터를 업로드할 수 있습니다.
COPY INTO dev.raw_data.session_timestamp
FROM 's3://user-test-bucket/test_data/session_timestamp.csv'
credentials=(AWS_KEY_ID='<AWS_ACCESS_KEY_ID>' AWS_SECRET_KEY='<AWS_SECRET_ACCESS_KEY>')
FILE_FORMAT = (type='CSV' skip_header=1 FIELD_OPTIONALLY_ENCLOSED_BY='"');
위의 명령문에서 <AWS_ACCESS_KEY_ID>와 <AWS_SECRET_ACCESS_KEY>를 사용자가 생성한 전용 사용자의 AWS 액세스 키 ID와 시크릿 액세스 키로 대체해야 합니다.
이 명령문을 실행하면 Snowflake에서 S3 버킷의 "session_timestamp.csv" 파일을 읽어와 "dev.raw_data.session_timestamp" 테이블에 데이터를 복사합니다. COPY 명령문의 FILE_FORMAT 부분은 CSV 형식으로 구성되어 있으며, 첫 번째 행을 건너뛰고 필드가 옵션으로 큰따옴표로 묶여 있는 형식입니다.
이와 같이 COPY 명령문을 사용하여 Snowflake와 S3 간에 데이터를 벌크로 이동시킬 수 있습니다.
3 - 5. Snowflake에서 S3 버킷을 접근하기 위한 IAM 사용자 생성
아래는 Snowflake에서 S3 버킷에 접근하기 위한 IAM 사용자를 생성하는 과정입니다.
① AWS Management Console에 로그인하여 IAM (Identity and Access Management) 서비스로 이동합니다.
② "사용자"를 클릭하고, "사용자 추가" 버튼을 클릭하여 새로운 사용자를 생성합니다.
③ 사용자에게 "프로그래밍 방식 액세스"를 허용합니다.
④ 사용자에게 "AmazonS3FullAccess" 권한을 부여합니다. 이 권한은 S3 버킷의 모든 작업에 대한 전체 액세스를 허용합니다. 또는 필요한 권한만 선택적으로 부여할 수 있습니다.
⑤ 액세스 키 ID와 시크릿 액세스 키를 생성하고, 이 정보를 안전한 장소에 저장합니다. 액세스 키 ID와 시크릿 액세스 키는 Snowflake에서 S3 버킷에 액세스할 때 사용됩니다.
⑥ Snowflake에 로그인하여 아래와 같이 IAM 사용자를 생성합니다.
CREATE USER <IAM_USER_NAME>
FROM EXTERNAL IDENTITY
(TYPE = 'AWS_IAM_USER',
EXTERNAL_ID = '<EXTERNAL_ID>',
ARN = 'arn:aws:iam::<AWS_ACCOUNT_ID>:user/<IAM_USER_NAME>');
- '<IAM_USER_NAME>'은 생성한 IAM 사용자의 이름입니다.
- '<EXTERNAL_ID>'는 Snowflake와 S3 간의 신뢰 관계를 설정하기 위해 생성한 외부 ID입니다.
- '<AWS_ACCOUNT_ID>'는 사용자가 IAM 사용자를 생성한 AWS 계정 ID입니다.
⑦ IAM 사용자에게 S3에 대한 액세스를 허용하기 위해 아래와 같이 역할을 생성합니다
CREATE ROLE <IAM_ROLE_NAME>;
GRANT USAGE ON AWS INTEGRATION <AWS_INTEGRATION_NAME> TO ROLE <IAM_ROLE_NAME>;
GRANT ROLE <IAM_ROLE_NAME> TO USER <IAM_USER_NAME>;
- '<IAM_ROLE_NAME>'은 Snowflake에서 생성할 IAM 역할의 이름입니다.
- '<AWS_INTEGRATION_NAME>'은 Snowflake에서 생성한 AWS 인티그레이션의 이름입니다.
- '<IAM_USER_NAME>'은 이전에 생성한 IAM 사용자의 이름입니다.
⑧ 마지막으로, S3 버킷에 대한 액세스 권한을 위해 생성한 IAM 사용자의 액세스 키 ID와 시크릿 액세스 키를 Snowflake에 저장합니다.
CREATE STORAGE INTEGRATION <STORAGE_INTEGRATION_NAME>
TYPE = EXTERNAL_STAGE
STORAGE_PROVIDER = S3
ENABLED = TRUE
STORAGE_ALLOWED_LOCATIONS = ('s3://<BUCKET_NAME>/');
ALTER STORAGE INTEGRATION <STORAGE_INTEGRATION_NAME>
SET STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<IAM_ROLE_NAME>'
SET STORAGE_AWS_IAM_USER_ARN = 'arn:aws:iam::<AWS_ACCOUNT_ID>:user/<IAM_USER_NAME>'
SET STORAGE_AWS_EXTERNAL_ID = '<EXTERNAL_ID>'
SET STORAGE_AWS_IAM_USER_ACCESS_KEY = '<AWS_ACCESS_KEY_ID>'
SET STORAGE_AWS_IAM_USER_SECRET_KEY = '<AWS_SECRET_ACCESS_KEY>';
- '<STORAGE_INTEGRATION_NAME>'은 Snowflake에서 생성할 스토리지 인티그레이션의 이름입니다.
- '<BUCKET_NAME>'은 IAM 사용자가 액세스할 S3 버킷의 이름입니다.
- '<AWS_ACCOUNT_ID>'는 사용자가 IAM 사용자를 생성한 AWS 계정 ID입니다.
- '<IAM_ROLE_NAME>'은 Snowflake에서 생성한 IAM 역할의 이름입니다.
- '<IAM_USER_NAME>'은 생성한 IAM 사용자의 이름입니다.
- '<EXTERNAL_ID>'는 Snowflake와 S3 간의 신뢰 관계를 설정하기 위해 생성한 외부 ID입니다.
- '<AWS_ACCESS_KEY_ID>'와 '<AWS_SECRET_ACCESS_KEY>'는 IAM 사용자의 액세스 키 ID와 시크릿 액세스 키입니다.
이렇게 하면 Snowflake에서 S3 버킷에 접근하기 위한 IAM 사용자를 생성하고 연결할 수 있습니다. 이후 COPY 명령문을 사용하여 데이터를 Snowflake로 복사할 수 있습니다.
3 - 6. COPY를 사용해 벌크 업데이트를 세 개 테이블에 대해 수행
① 'session_transaction' 테이블에 대한 COPY 명령문
COPY INTO dev.raw_data.session_transaction
FROM 's3://keeyong-test-bucket/test_data/session_transaction.csv'
CREDENTIALS = (
AWS_KEY_ID = '<AWS_KEY_ID>',
AWS_SECRET_KEY = '<AWS_SECRET_KEY>'
)
FILE_FORMAT = (
TYPE = 'CSV',
SKIP_HEADER = 1,
FIELD_OPTIONALLY_ENCLOSED_BY = '"'
);
② 'user_session_channel' 테이블에 대한 COPY 명령문
COPY INTO dev.raw_data.user_session_channel
FROM 's3://keeyong-test-bucket/test_data/user_session_channel.csv'
CREDENTIALS = (
AWS_KEY_ID = '<AWS_KEY_ID>',
AWS_SECRET_KEY = '<AWS_SECRET_KEY>'
)
FILE_FORMAT = (
TYPE = 'CSV',
SKIP_HEADER = 1,
FIELD_OPTIONALLY_ENCLOSED_BY = '"'
);
'<AWS_KEY_ID>'와 '<AWS_SECRET_KEY>'를 사용자의 AWS 액세스 키 ID와 시크릿 액세스 키로 대체해야 합니다. 또한, FILE_FORMAT 옵션은 데이터 파일의 형식에 맞게 설정해야 합니다.
각각의 COPY 명령문을 실행하여 데이터를 해당 테이블로 복사할 수 있습니다.
3 - 7. analytics 스키마 밑에 테이블을 CTAS로 생성
CREATE TABLE dev.analytics.mau_summary AS
SELECT
TO_CHAR(A.ts, 'YYYY-MM') AS month,
COUNT(DISTINCT B.userid) AS mau
FROM dev.raw_data.session_timestamp A
JOIN dev.raw_data.user_session_channel B ON A.sessionid = B.sessionid
GROUP BY 1
ORDER BY 1 DESC;
SELECT * FROM dev.analytics.mau_summary LIMIT 10;
'dev.raw_data.session_timestamp'와 'dev.raw_data.user_session_channel'은 'raw_data' 스키마에 있는 테이블입니다. SELECT 문을 사용하여 원하는 데이터를 추출하고, 'CREATE TABLE' 문을 사용하여 해당 데이터를 'dev.analytics.mau_summary '테이블로 저장합니다. 마지막으로, 'SELECT' 문을 사용하여 생성된 테이블의 상위 10개 레코드를 조회합니다.
'개발 > 데이터 웨어하우스 - 중급' 카테고리의 다른 글
[데이터 웨어하우스 - 중급] 4. 다양한 시각화 툴 소개 (0) | 2023.05.26 |
---|---|
[데이터 웨어하우스 - 중급] 3. Snowflake - ② Snowflake 사용자 권한 설정 (0) | 2023.05.25 |
[데이터 웨어하우스 - 중급] 2. Redshift - ⑧ Redshift 중지/제거하기 (0) | 2023.05.25 |
[데이터 웨어하우스 - 중급] 2. Redshift - ⑦ Redshift ML 사용하기 (0) | 2023.05.25 |
[데이터 웨어하우스 - 중급] 2. Redshift - ⑥ Redshift Spectrum으로 S3 외부 테이블 조작해보기 (0) | 2023.05.25 |