# VIEW

VIEW는 SQL 쿼리로 정의하는 가상 테이블로, 테이블처럼 FROM 절에서 사용할 수 있습니다.

간단히 생각하면 긴 쿼리를 하나의 테이블처럼 저장해두고 사용한다고 보면 됩니다. WITH와 비슷하다고 생각할 수 있는데, WITH는 쿼리문이 실행될 때 임시로 사용하고, VIEW는 데이터셋에 저장해서 여러 사람이 활용할 수 있습니다.

VIEW는 Logical View와 Materialized View 2가지로 나뉩니다. 아마 VIEW에 대해 들으신 것이 있으시면 전자일 확률이 높습니다. 후자는 최근에 나왔습니다.

VIEW는 일반적으로 테이블로 저장된 경우보다 느리지만, 쿼리문을 쉽게 바꿀 수 있기 때문에 작업 초반에 사용하기 좋습니다. 추후 쿼리문이 고정되면 배치 파이프라인을 구성해 테이블을 저장하면 좋습니다.



# Logical VIEW(논리적인 뷰)

쿼리 실행한 후, Save View(한국어로는 보기 저장)을 클릭합니다.

저장할 데이터세트와 테이블 이름을 지정하고 저장을 클릭합니다.



이제 저장된 VIEW를 확인할 수 있습니다. 잘 보면 Table(leadme_sample)과 VIEW(test_view)는 이모티콘이 다른 것을 확인할 수 있습니다.



VIEW를 클릭한 후, 세부정보를 클릭하면 쿼리문을 확인할 수 있고, 쿼리 수정도 할 수 있습니다.



# Materialized VIEW(구체화된 뷰)

성능과 효율성을 향상하기 위해 쿼리 결과를 주기적으로 캐시하는 미리 계산된 VIEW입니다.

  • 특징

      1. 유지보수 불필요 : 기존 테이블이 변경되면 뷰는 다시 계산되고, 증분된 데이터도 자동으로 추가됩니다
      1. 최신 데이터 : 기존 테이블이 변경되면 새로 데이터를 읽습니다
      1. 스마트 조정 : 쿼리 일부가 연결할 수 없는 경우 다시 시도합니다
  • 사용하는 이유

    • 쿼리 실행 시간 및 비용 절감 : ETL 또는 BI 도구에서 사용되는 경우 구체화된 뷰를 사용해야 합니다
    • 자동화된 쿼리 최적화
    • 실시간 데이터 집계 : Materailized VIEW를 BigQuery 스트리밍과 함께 사용하면 실시간으로 집계하고, 최신 데이터를 확인할 수 있습니다

단, HAVING 절, 집계 함수에 다른 연산(ROUND 등)을 하는 경우엔 사용할 수 없습니다.

# 다른 BigQuery 기능과 비교

공식 문서 (opens new window)


# 문법

Materialized VIEW는 쿼리를 실행해서 저장하는 방식이 아닌 CREATE 문을 사용합니다.

CREATE MATERIALIZED VIEW project-id.my_dataset.my_mv_table AS
SELECT 
  date, 
  AVG(net_paid) AS avg_paid
FROM 
  project-id.my_dataset.my_base_table
GROUP BY date