터칭 데이터

DBT - Input 본문

Airflow 고급 기능, dbt, Data Catalog

DBT - Input

터칭 데이터 2024. 1. 4. 12:50

 

 

 

Contents


1. ELT의 미래는?
2. Database Normalization
3. dbt 소개
4. dbt 사용 시나리오
5. dbt 설치와 환경 설정
6. dbt Models: Input
7. dbt Models: Output
8. dbt Seeds
9. dbt Sources
10. dbt Snapshots
11. dbt Tests
12. dbt Documentation
13. dbt Expectations
14. 마무리

 

 

 

 

 

 

 

 

 

dbt Models: Input


dbt Model을 사용해 입력 데이터들을 transform해보자

 

 

 

 

 

 

 

 

 

 

Model이란?

 

 

ELT 테이블을 만듬에 있어 기본이 되는 빌딩블록

테이블이나 뷰나 CTE의 형태로 존재

 

입력,중간,최종 테이블을 정의하는 곳

티어 (raw, staging, core, …)
raw => staging (src) => core

 

 

 

 

 

 

 

 

 

 

 

 

잠깐: View란 무엇인가?

 

SELECT 결과를 기반으로 만들어진 가상 테이블

기존 테이블의 일부 혹은 여러 테이블들을 조인한 결과를 제공함
CREATE VIEW 이름 AS SELECT …

 

View의 장점

데이터의 추상화: 사용자는 View를 통해 필요 데이터에 직접 접근. 원본 데이터를 알 필요가 없음
데이터 보안: View를 통해 사용자에게 필요한 데이터만 제공. 원본 데이터 접근 불필요
복잡한 쿼리의 간소화: SQL(View)를 사용하면 복잡한 쿼리를 단순화. 

 

View의 단점

매번 쿼리가 실행되므로 시간이 걸릴 수 있음
원본 데이터의 변경을 모르면 실행이 실패함

 

 

 

 

 

 

 

 

 

 

 

 

잠깐: CTE (Common Table Expression)

 

WITH temp1 AS (
    SELECT k1, k2
    FROM t1 
    JOIN t2 ON t1.id = t2.foreign_id
), temp2 AS (

)
SELECT *
FROM temp1 t1
JOIN temp2 t2 ON …

 

 

 

예)
WITH src_user_event AS (
    SELECT * FROM raw_data.user_event
)
SELECT
    user_id,
    datestamp,
    item_id,
    clicked,
    purchased,
    paidamount
FROM
    src_user_event

 

 

 

 

 

 

 

 

 

 

 

 

Model 구성 요소

 

Input

입력(raw)과 중간(staging, src) 데이터 정의
raw는 CTE로 정의
staging은 View로 정의

 

Output

최종(core) 데이터 정의
core는 Table로 정의

 

이 모두는 models 폴더 밑에 sql 파일로 존재

기본적으로는 SELECT + Jinja 템플릿과 매크로
다른 테이블들을 사용 가능 (reference)
    - 이를 통해 리니지 파악

 

 

 

 

 

 

 

 

 

 

 

 

데이터 빌딩 프로세스

 

 

 

Append라고 적혀있지만 Incremental Update

 

 

 

 

 

 

 

 

 

 

 

models/src - src_user_event.sql

 

 

WITH src_user_event AS (
    SELECT * FROM raw_data.user_event
)
SELECT
    user_id,
    datestamp,
    item_id,
    clicked,
    purchased,
    paidamount
FROM
    src_user_event

 

 

 

 

 

 

 

 

 

 

 

 

 

 

models/src - src_user_variant.sql 

WITH src_user_variant AS (
    SELECT * FROM raw_data.user_variant
)
SELECT 
    user_id,
    variant_id
FROM
    src_user_variant

 

 

 

 

 

 

 

 

models/src - src_user_metadata.sql 

WITH src_user_metadata AS (
    SELECT * FROM raw_data.user_metadata
)
SELECT 
    user_id,
    age, 
    gender,
    updated_at 
FROM
    src_user_metadata

 

 

 

 

 

 

 

 

 

 

 

 

Model 빌딩: dbt run

 

 

 

 

 

 

 

 

 

 

Model 빌딩 확인

 

해당 스키마 밑에 테이블 생성 여부 확인

 

dbt run은 프로젝트 구성 다양한 SQL 실행

이 SQL들은 DAG로 구성됨

 

dbt run은 보통 다른 더 큰 명령의 일부로 실행

dbt test
dbt docs generate

 

 

 

 

 

 

 

 

'Airflow 고급 기능, dbt, Data Catalog' 카테고리의 다른 글

데모 Input-Output  (0) 2024.01.04
DBT - Outnput  (0) 2024.01.04
DBT - 사용 시나리오  (0) 2024.01.04
DBT - Database Normalization  (0) 2024.01.04
Airflow 운영과 대안  (0) 2024.01.04