model의 matrerializad type에는 View, Table, CTE 등이 존재
View : SELECT 결과를 기반으로 만들어진 가상테이블
CTE : WITH - AS와 같이 사용된 뒤 사라지는 테이블
Table : 실제 물리적인 테이블
"models/analytics/analytics_variant_user_daily.sql"을 예시로 type을 변경하는 작업 진행
dbt_projct.yml을 수정해서 변경
analytics_variant_user_daily.sql을 수정해서 변경
초기 상태
dbt_project.yml
dbt 프로젝트 이름은 learn_dbt
dim 디렉터리 내부의 .sql은 table로 생성
src 디렉터리 내부의 .sql은 ephemeral(CTE) -> 빌딩 되지 않음
두 개(dim, src)의 디렉터리를 제외한 모든 .sql은 view로 빌딩
...
models:
learn_dbt:
# Config indicated by + and applies to all files under models/example/
+materialized: view
dim:
+materialized: table
src:
+materialized: ephemeral
analytics_variant_user_daily.sql
WITH u AS (
SELECT * FROM {{ ref("dim_user") }}
), ue AS (
SELECT * FROM {{ ref("fact_user_event") }}
)
...
dbt run 실행
view로 빌딩 되는 것을 확인할 수 있음
dbt run
방법 1 : dbt_project.yml 수정
dbt_projcet.yml 수정
analytics 디렉터리 내부의 .sql을 table로 빌딩 되도록 설정
models:
learn_dbt:
# Config indicated by + and applies to all files under models/example/
+materialized: view
dim:
+materialized: table
src:
+materialized: ephemeral
analytics:
+materialized: table
dbt run 실행
table로 빌딩 되는 것을 확인할 수 있음
dbt run
방법 2 : models의 .sql 파일 수정
models의 .sql 파일 수정
코드 상단에 config 블록을 사용하여 table로 설정
{{ config(
materialized = 'table'
) }}
WITH u AS (
SELECT * FROM {{ ref("dim_user") }}
), ue AS (
SELECT * FROM {{ ref("fact_user_event") }}
)
...