Immersion In Data

전체 글 199

[Snowflake] Dynamic Data Masking

1. Understanding data masking 일부 사용자에게 일부 데이터를 보이지 않도록 설정하는 보안기능 2. Creating a masking policy 데이터베이스 변경 USE DEMO_DB; role 변경 USE ROLE ACCOUNTADMIN; 테이블 생성 create or replace table customers( id number, full_name varchar, email varchar, phone varchar, spent number, create_date DATE DEFAULT CURRENT_DATE); 데이터 삽입 insert into customers (id, full_name, email,phone,spent) values (1,'Lewiss MacDwyer','l..

[Snowflake] Materialized Views

1. Understand materialized 자주 쿼리되고, 처리해야할 시간이 긴 view를 가진 경우(사용자는 안좋은 경험을 갖게됨, 더 많은 컴퓨팅 리소스가 소비됨) materialized view를 만들기 위해 SELECT문을 사용 결과는 별도의 테이블에 저장되며, 기본 테이블에 따라 자동으로 업데이트됨 2. Using materialized views 일반 select문과 view와 materialized view를 비교하는데 공정한 환경을 만들기 위해 글로벌 캐싱 제거 ALTER SESSION SET USE_CACHED_RESULT=FALSE; -- disable global caching ALTER warehouse compute_wh suspend; ALTER warehouse compu..

[Snowflake] Streams

1. Understanding streams 소스 테이블에 변경 사항을 캡쳐하여 2. INSERT operation 일시 데이터베이스 생성 CREATE OR REPLACE TRANSIENT DATABASE STREAMS_DB; 소스 테이블 생성 create or replace table sales_raw_staging( id varchar, product varchar, price varchar, amount varchar, store_id varchar); 소스 테이블에 데이터 삽입 insert into sales_raw_staging values (1,'Banana',1.99,1,1), (2,'Lemon',0.99,1,1), (3,'Apple',1.79,1,2), (4,'Orange Juice',1...

[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..