https://signup.snowflake.com
에서 30일 무료 시험판 사용 가능

일종의 python의 jupyter notebook과 비슷하다고 보면 된다.
이메일에 로그인 URL이 있으니 이걸 확인 후 사용하면 된다.

크게 아래 3가지 컴포넌트로 구성됨

Snowflake 실습을 위해 초기 환경(스키마, 테이블)을 설정하고 Summary 테이블도 만들어본다.

먼저 Worksheet을 생성해주고 아래의 sql문들을 작성해준다. 드래그 해서 실행하면 원하는 sql문만 실행가능하다.
CREATE DATABASE dev;
CREATE SCHEMA dev.raw_data;
CREATE SCHEMA dev.analytics;
CREATE SCHEMA dev.adhoc;
CREATE OR REPLACE TABLE dev.raw_data.session_transaction (
sessionid varchar(32) primary key,
refunded boolean,
amount int
);
CREATE TABLE dev.raw_data.user_session_channel (
userid integer ,
sessionid varchar(32) primary key,
channel varchar(32)
);
CREATE TABLE dev.raw_data.session_timestamp (
sessionid varchar(32) primary key,
ts timestamp
);

IAM 콘솔에서 사용자 클릭

사용자 생성 클릭

사용자 이름 지정하고 다음 클릭

직접 정책 연결 클릭 후 검색하여 AmazonS3ReadOnlyAccess 정책 선택 후 다음 클릭 후 사용자 생성

생성한 사용자 클릭 후 보안 자격 증명 클릭 후 액세스키 메뉴에서 액세스키 만들기 누른 후 AWS 외부에서 실행되는 애플리케이션 션택 후 액세스 키 생성한다. 그럼 액세스키와 시크릿키가 만들어지는데 이걸 복사해서 저장하면 된다.
COPY INTO dev.raw_data.session_transaction
FROM 's3://redshift-yjbenkang-bucket/test_data/session_transaction.csv'
credentials=(AWS_KEY_ID='xxxx' AWS_SECRET_KEY='xxxx')
FILE_FORMAT = (type='CSV' skip_header=1 FIELD_OPTIONALLY_ENCLOSED_BY='"');
COPY INTO dev.raw_data.user_session_channel
FROM 's3://redshift-yjbenkang-bucket/test_data/user_session_channel.csv'
credentials=(AWS_KEY_ID='xxxx' AWS_SECRET_KEY='xxxx')
FILE_FORMAT = (type='CSV' skip_header=1 FIELD_OPTIONALLY_ENCLOSED_BY='"');
COPY INTO dev.raw_data.session_timestamp
FROM 's3://redshift-yjbenkang-bucket/test_data/session_timestamp.csv'
credentials=(AWS_KEY_ID='xxxx' AWS_SECRET_KEY='xxxx')
FILE_FORMAT = (type='CSV' skip_header=1 FIELD_OPTIONALLY_ENCLOSED_BY='"');
CREATE TABLE dev.analytics.mau_summary AS
SELECT
TO_CHAR(A.ts, 'YYYY-MM') AS month,
COUNT(DISTINCT B.userid) AS mau
FROM raw_data.session_timestamp A
JOIN raw_data.user_session_channel B ON A.sessionid = B.sessionid
GROUP BY 1
ORDER BY 1 DESC;
-- mau_summary 테이블 확인
SELECT * FROM dev.analytics.mau_summary LIMIT 10;
Snowflake는 Group을 지원하지 않음 !
-- 3개의 ROLE을 생성한다
CREATE ROLE analytics_users;
CREATE ROLE analytics_authors;
CREATE ROLE pii_users;
-- 사용자 생성
CREATE USER yongjin PASSWORD='xxxx';
-- 사용자에게 analytics_users 권한 지정
GRANT ROLE analytics_users TO USER yongjin;
-- set up analytics_users
GRANT USAGE on schema dev.raw_data to ROLE analytics_users;
GRANT SELECT on all tables in schema dev.raw_data to ROLE analytics_users;
GRANT USAGE on schema dev.analytics to ROLE analytics_users;
GRANT SELECT on all tables in schema dev.analytics to ROLE analytics_users;
GRANT ALL on schema dev.adhoc to ROLE analytics_users;
GRANT ALL on all tables in schema dev.adhoc to ROLE analytics_users;
-- set up analytics_authors
GRANT ROLE analytics_users TO ROLE analytics_authors;
GRANT ALL on schema dev.analytics to ROLE analytics_authors;
GRANT ALL on all tables in schema dev.analytics to ROLE analytics_authors;

| PRIVACY_CATEGORY | SEMANTIC_CATEGORY |
|---|---|
| IDENTIFIER | - EMAIL - IBAN, IMEI, IP_ADDRESS, PAYMENT_CARD - NAME - PHONE_NUMBER (US numbers only) - URL - US_BANK_ACCOUNT - US_DRIVERS_LICENSE - US_PASSPORT, VIN - US_SSN - US_STREET_ADDRESS |
| QUASI_IDENTIFIER | - AGE - GENDER - DATE_OF_BIRTH - ETHNICITY - LATITUDE, LAT_LONG, LONGITUDE - MARITAL_STATUS - OCCUPATION - US_POSTAL_CODE, US_STATE_OR_TERRITORY, US_COUNTY, US_CITY, COUNTRY - YEAR_OF_BIRTH |