열 지향 데이터베이스의 분석 워크플로

NoSQL 입문

Jake Roach

Data Engineer

Snowflake의 공통 테이블 식

공통 테이블 식(CTE):

  • WITH 키워드로 정의하는 이름 있는 서브쿼리/임시 테이블
  • 나중에 조회할 수 있는 객체를 만듦
  • 조회/JOIN 데이터 양을 줄임
  • 모듈화되어 문제 해결이 쉬움
WITH <cte-name> AS (
    SELECT
        ....
    FROM <table-name>
    [JOIN | WHERE | ...]
)

SELECT
    ...
FROM <cte-name>;
1 https://docs.snowflake.com/en/user-guide/queries-cte
NoSQL 입문

공통 테이블 식 작성하기

WITH premium_books AS (
    SELECT
        title,
        author,
        avg_reviews
    FROM books
    WHERE price > 25.00
)
SELECT
    author,
    MIN(avg_reviews) AS min_avg_reviews,
    MAX(avg_reviews) AS max_avg_reviews
FROM premium_books
GROUP BY author;
  • premium_books 임시 객체 생성
  • 이후 단계에서 premium_books 사용

$$

여러 임시 객체도 생성 가능:

WITH 
    <first-name> AS (...),
    <second-name> AS (...),
    ...
...
;
NoSQL 입문

Snowflake의 뷰

뷰:

  • 쿼리 결과를 테이블처럼 액세스 가능
  • 비물질화/물질화 두 종류
CREATE VIEW <view-name> AS
  SELECT
      ...
  FROM <table-name>
  [WHERE | JOIN | ...];
NoSQL 입문

Snowflake에서 뷰 만들기

CREATE VIEW premium_books AS
    SELECT
        title,
        author,
        avg_reviews
    FROM books
    WHERE price >= 25.00;
SELECT * FROM premium_books;
  • premium_books를 호출할 때 쿼리가 실행됨
  • 쿼리의 "이름 있는 정의"
CREATE MATERIALIZED VIEW premium_books AS
    SELECT
        title,
        author,
        avg_reviews
    FROM books
    WHERE price >= 25.00;
SELECT * FROM premium_books;
  • 실행 시 결과가 저장됨
  • 쿼리 성능 향상, 새로 고침 필요
NoSQL 입문

연습해 봅시다!

NoSQL 입문

Preparing Video For Download...