데이터 엔지니어 이것저것

dbt Materializations 본문

오픈소스/dbt

dbt Materializations

pastime 2023. 11. 17. 23:50
728x90
dbt_project.yml 에서 models 부분에 +materialized 값들이 있다.
이는 dbt 실행 후 생성할 결과물을 설정하는 값이다.

 

5가지 타입으로 결과물을 저장할 수 있다.

  • table
  • view
  • incremental
  • ephemeral
  • materialized view

 


view : view를 다시 생성

장점 : 추가 데이터가 저장되지 않으며, 항상 최신의 데이터가 보임

단점 : 변환을 수행하거나, 다른 뷰 위의 뷰는 속도가 느리다

  • 일반적인 모델의 경우 뷰로 시작을 하고, 성능 이슈가 생길때 다른 옵션을 사용
  • 중요 변환작업이 없을 경우 사용하기 좋음

 

table : table 다시 생성

장점 : 쿼리 속도가 빠르다

단점 : 복잡한 변환 작업을 수행할 경우, 테이블 생성에 시간이 오래 걸린다, 신규 데이터의 새 레코드가 추가가 안된다.

  • BI 에서 쿼리하는 경우 테이블로 생성하여 속도 향상
  • 많은 모델에서 참조 될 경우 테이블 구체화

 

incremental : 마지막 실행된 이후 테이블에 레코드 삽입 또는 업데이트

장점 : 새로운 기록에만 대응함으로, 빌드 시간을 대폭 단축

단점 : 추가 구성이 필요

  • 이벤트 스타일의 데이터에 가장 적합
  • 속도가 너무 느려지면 해당 기능 사용, 처음부터 시작하기엔 추천하지않음

 

ephemeral : 메모리에만 존재하며 참조 테이블로 다른 쿼리와 함께 사용하기 위함

장점 : 관리하기 쉽고, 이해하기 쉽게 만든다

단점 : 과도한 사용시 디버깅이 어려워 진다

  • 초기에 수행되는 가벼운 변환에 사용 추천
  • 1~2개에서만 사용되는 모델
  • 직접 쿼리할 필요가 없을 경우

 

materialized view : 구체화된 뷰를 생성하고 유지, 관리

옵션

  • apply (default) : 가능하면 기존 DB 개체를 업데이트하려고 시도
    • 만약 전체 새로 고침이 필요할경우 alter 대신 전체 새로고침이 수행
  • continue : 객체가 최신상태라면 경고를 하며 실행
  • fail : 변경 사항이 감지되면 실행이 강제로 실패

장점 : 테이블의 쿼리 성능과 뷰의 데이터 최신성을 결합

단점 : 복잡하기 때문에 사용 가능한 옵션이 적음, 일부 미지원

 

 

 

 

 

728x90

'오픈소스 > dbt' 카테고리의 다른 글

dbt docs  (0) 2023.11.19
dbt packages  (0) 2023.11.19
dbt macros  (0) 2023.11.15
dbt_project.yml  (0) 2023.11.15
dbt test  (0) 2023.11.14