Immersion In Data

분류 전체보기 196

[Snowflake] Scheduling Tasks

1. Understanding tasks task를 사용하여 SQL문을 스케줄링할 수 있음 독립실행형 task와 task 트리 2. Creating tasks 일시 데이터베이스 생성 CREATE OR REPLACE TRANSIENT DATABASE TASK_DB; 테이블 생성 CREATE OR REPLACE TABLE CUSTOMERS ( CUSTOMER_ID INT AUTOINCREMENT START = 1 INCREMENT =1, FIRST_NAME VARCHAR(40) DEFAULT 'JENNIFER' , CREATE_DATE DATE); task 생성 (분 단위로만 설정 가능) CREATE OR REPLACE TASK CUSTOMER_INSERT WAREHOUSE = COMPUTE_WH SCHED..

[Snowflake] Data Sampling

1. Why data sampling? 쿼리 개발, 데이터 분석 등에 사용 빠르고 비용 효율적임 (컴퓨팅 리소스 절감) 2. Methods of data sampling ROW or BERNOULLI method - 모든 행은 p 퍼센트로 선택됨 - 임의적 - 작은 테이블에 적합 BLOCK or SYSTEM method - 모든 블럭은 p 퍼센트로 선택 - 효율적 - 큰 테이블에 적합 3. Sampling data: Hands-on 데이터베이스 생성 CREATE OR REPLACE TRANSIENT DATABASE SAMPLING_DB; SAMPLE ROW를 통해 데이터를 샘플링해서 뷰 생성 CREATE OR REPLACE VIEW ADDRESS_SAMPLE AS SELECT * FROM SNOWFLAK..

[Snowflake] Data sharing

1. Understanding data sharing 일반적인 데이터 공유는 복잡한 프로세스를 가지고 있음 Snowflake의 데이터 공유는 데이터의 실제 복사본 없이 데이터를 공유하고 최신 상태로 유지함 공유 데이터는 자체 컴퓨팅 리소스에 의해 소비됨 Snowflake를 사용하지 않는 유저도 reader 계정으로 접근할 수 있음 2. Using data sharing 데이터베이스 생성 CREATE OR REPLACE DATABASE DATA_S; 스테이지 생성 CREATE OR REPLACE STAGE aws_stage url='s3://bucketsnowflakes3'; 스테이지 확인 LIST @aws_stage; 테이블 생성 CREATE OR REPLACE TABLE ORDERS ( ORDER_ID..

[Snowflake] Zero-Copy Cloning

1. Understanding Zero-Copy Cloning 데이터베이스, 스키마 또는 테이블의 복사본을 만듬 복제된 개체는 기존 테이블로부터 독립적 모든 메타데이터를 쉽게 복사하고, 스토리지 관리를 개선함 일반적으로 개발을 목적으로 백업을 신속하게 생성하려는 경우 사용 2. Cloning tables 테이블 확인 SELECT * FROM OUR_FIRST_DB.PUBLIC.CUSTOMERS; CLONE으로 테이블 생성 CREATE TABLE OUR_FIRST_DB.PUBLIC.CUSTOMERS_CLONE CLONE OUR_FIRST_DB.PUBLIC.CUSTOMERS; CLONE 테이블 확인 SELECT * FROM OUR_FIRST_DB.PUBLIC.CUSTOMERS_CLONE; 테이블 변경 UPD..

[Snowflake] Types of tables

1. Different table types Permanent : 영구테이블, default 값, 가장 일반적인 유형, time travel 보존기간 포함(0 - 90일), Fail Safe 포함 Transient : 일시테이블, time travel 보존기간 포함(0 - 1일), Fail Safe 미포함 Temporary : 임시테이블, time travel 보존기간 포함(0 - 1일), Fail Safe 미포함, 세션에만 존재(세션이 종료되면 테이블도 없어짐) 2. Permanent tables & databases 데이터 베이스 전환 USE OUR_FIRST_DB; 테이블 생성 CREATE OR REPLACE TABLE customers ( id int, first_name string, last_..

[Snowflake] Fail Safe

1. Understanding Fail Safe Faile Safe 재해 발생 시, 기록 데이터를 보호하는 역할 수행 영구 테이블의 경우 구성할 수 없는 7일의 시간 부여(time travel 기간이 끝난 후 즉시 시작됨) 사용자 상호작용이 없으며, Snowflake 측에서만 복구 가능(이 데이터를 직접 쿼리할 수 없음) 2. Fail Safe storage 스토리지 사용량 확인 SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.STORAGE_USAGE ORDER BY USAGE_DATE DESC; 스토리지 사용량 기가바이트로 변환 SELECT USAGE_DATE, STORAGE_BYTES / (1024*1024*1024) AS STORAGE_GB, STAGE_BYTES / (1024*..

[Snowflake] Time Travel

1. Using time travel 테이블 생성 CREATE OR REPLACE TABLE OUR_FIRST_DB.public.test ( id int, first_name string, last_name string, email string, gender string, Job string, Phone string); file format 생성 CREATE OR REPLACE FILE FORMAT MANAGE_DB.file_formats.csv_file type = csv field_delimiter = ',' skip_header = 1; 스테이지 생성 CREATE OR REPLACE STAGE MANAGE_DB.external_stages.time_travel_stage URL = 's3://dat..

[Snowflake] Snowpipe

1. What is Snowpipe 버킷에 파일이 나타나면 자동으로 데이터 로드를 활성화 분석에 데이터를 즉시 사용하는 경우 적용 웨어하우스 대신 서버리스를 사용 2. High-level steps 스테이지 생성 - COPY COMMAND 테스트 - 파이프 생성 - S3 알림 3. Creating stage 테이블 생성 CREATE OR REPLACE TABLE OUR_FIRST_DB.PUBLIC.employees ( id INT, first_name STRING, last_name STRING, email STRING, location STRING, department STRING ); file format 생성(null값 처리) CREATE OR REPLACE file format MANAGE_DB...

[Snowflake] Loading from AWS

1. Creating S3 bucket 버킷 이름 설정 : 버킷 이름은 전역에서 고유해야 함 AWS 리전 : Snowflake에서 선택한 동일한 리전을 선택함(동일한 리전끼리는 데이터 전송 비용이 무료임) 버킷 생성 확인 버킷안에 폴더 생성 2. Upload files in S3 csv 폴더 클릭 업로드 버튼 클릭 파일 추가 버튼 클릭 csv 파일 업로드 csv파일을 업로드 한 절차와 동일하게 json파일을 json 폴더에 업로드 3. Creating policy IAM 서비스 접속 새로운 역할(role) 생성 신뢰할 수 있는 엔터티 선택 AWS 계정 옵션에 외부 ID 필요 선택(더미로 '00000' 적용) 권한 추가(S3 Full Access) 버킷 생성 확인 ExternalID 수정 4. Creati..

[Snowflake] Performance optimization

1. Performance in Snowflake 목적 : 쿼리 성능 최적화, 비용 절감 Snowflake에서 성능을 최적화하는 방법 : 마이크로 파티션을 자동적으로 관리 특정 사용자 그룹을 위한 전용 웨어하우스 생성 : 서로 다른 워크로드에 따라 분리 Scaling Up : 이미 알고있는 패턴의 많은 워크로드를 위한 작업 Scaling Out : 워크로드의 패턴을 알 수 없는 상태인 동적 작업 최대 캐시 사용 : 자동 캐싱 최대화 클러스터 키 : 사이즈가 큰 테이블을 위한 작업 cf) 전통적인 성능 최적화 방법 인덱스, PK 추가 테이블 파티션 생성 쿼리 실행 테이블 계획 분석 불필요한 전체 테이블 스캔 제거 2. Create dedicated virtual warehouse 사용자 그룹 또는 워크로드..