웨어하우스의 크기를 변경하면서 raw_pos 스키마의 fact 테이블을 추가로 적재합니다. 웨어하우스 크기에 따라 적재 성능의 변화를 확인해 봅니다.

+를 클릭하여 새 SQL Worksheet를 만듭니다...을 클릭하여 RENAME합니다// 컨텍스트 설정 USE ROLE sysadmin ; USE WAREHOUSE demo_build_wh ; USE DATABASE tasty_db ; USE SCHEMA raw_pos ;
// order_header 테이블 생성 CREATE OR REPLACE TABLE order_header ( order_id NUMBER(38,0), truck_id NUMBER(38,0), location_id FLOAT, customer_id NUMBER(38,0), discount_id VARCHAR(16777216), shift_id NUMBER(38,0), shift_start_time TIME(9), shift_end_time TIME(9), order_channel VARCHAR(16777216), order_ts TIMESTAMP_NTZ(9), served_ts VARCHAR(16777216), order_currency VARCHAR(3), order_amount NUMBER(38,4), order_tax_amount VARCHAR(16777216), order_discount_amount VARCHAR(16777216), order_total NUMBER(38,4) ); // order_detail 테이블 생성 CREATE OR REPLACE TABLE order_detail ( order_detail_id NUMBER(38,0), order_id NUMBER(38,0), menu_item_id NUMBER(38,0), discount_id VARCHAR(16777216), line_number NUMBER(38,0), quantity NUMBER(5,0), unit_price NUMBER(38,4), price NUMBER(38,4), order_item_discount_amount VARCHAR(16777216) );

현재 웨어하우스 조회
// 웨어하우스 조회 SHOW WAREHOUSES LIKE 'demo%' ;
웨어하우스 크기 변경 (XSMALL -> SMALL)
// 웨어하우스 크기 변경 ALTER WAREHOUSE demo_build_wh SET warehouse_size = 'small' ;
- 위에서 실행한 SHOW WAREHOUSES 구문을 다시 실행해서 결과를 확인합니다
데이터 적재 전에 데이터 검증만 수행할 수 있습니다
// order_header 데이터 검증 COPY INTO order_header FROM @public.s3load/raw_pos/order_header/ file_format = (format_name = 'public.csv_ff') validation_mode=return_all_errors ;
- 아무런 결과가 출력되지 않는 것은 데이터 오류가 없다는 의미입니다
이제는 데이터를 적재하고 수행 시간을 확인합니다
// order_header 데이터 적재 COPY INTO order_header FROM @public.s3load/raw_pos/order_header/ file_format = (format_name = 'public.csv_ff') ;
- 각 데이터 파일별로 적재된 데이터 행이 출력됩니다
- rows_loaded 컬럼값을 드래그하여 모두 선택하면 오른쪽에 전체합과 평균값이 계산됩니다
웨어하우스 크기 변경 (SMALL -> MEDIUM)
// 웨어하우스 크기 변경 ALTER WAREHOUSE demo_build_wh SET warehouse_size = 'medium' ; // 웨어하우스 조회 SHOW WAREHOUSES LIKE 'demo%' ;
테이블 truncate
// order_header 테이블 truncate TRUNCATE TABLE order_header ;
데이터 적재
// order_header 데이터 적재 COPY INTO order_header FROM @public.s3load/raw_pos/order_header/ file_format = (format_name = 'public.csv_ff') ;
LIST 구문을 이용하여 S3의 파일 목록을 확인합니다
// 데이터 파일 목록 조회 LIST @public.s3load/raw_pos/order_header/ ;
위의 실행 결과를 이용하여 파일의 크기를 계산합니다
// 데이터 파일 크기 계산 SELECT floor(sum($2) / power(1024, 3), 1) as total_compressed_storage_gb, floor(avg($2) / power(1024, 2), 1) as avg_file_size_mb, count(*) as num_files FROM table(result_scan(last_query_id())) ;쿼리 결과는 result cache에 저장되고 이를 활용하여 웨어하우스의 컴퓨팅 필요없이 다시 조회할 수 있습니다. 즉, 위의 쿼리가 실행될 때는 suspend된 demo_build_wh는 다시 활성화되지 않습니다
테이블의 상태 확인
// order_header 테이블 조회 SHOW TABLES LIKE 'order%';
앞의 실습 과정과 같이 웨어하우스를 한 단계 더 scale-up하고 데이터 적재를 수행합니다
웨어하우스 크기 변경 (MEDIUM -> LARGE)
// 웨어하우스 크기 변경 ALTER WAREHOUSE demo_build_wh SET warehouse_size = 'large' ; // 웨어하우스 조회 SHOW WAREHOUSES LIKE 'demo%' ;
데이터 적재
// order_detail 데이터 적재 COPY INTO order_detail FROM @public.s3load/raw_pos/order_detail/ file_format = (format_name = 'public.csv_ff') ;
테이블의 상태 확인
// order_header 테이블 조회 SHOW TABLES LIKE 'order%';
웨어하우스 크기에 따라 데이터 적재 속도의 변화를 확인합니다
Apply Filters를 클릭하여 필터 조건을 적용합니다Columns를 열어 WAREHOUSE_SIZE와 ROWS를 추가로 선택합니다