materialized type 변경
- 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로 빌딩 되는 것을 확인할 수 있음
방법 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로 빌딩 되는 것을 확인할 수 있음
방법 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") }}
)
...
dbt run 실행
- table로 빌딩 되는 것을 확인할 수 있음