dbt 프로젝트 설정 및 데이터 로드

사례 연구: dbt로 전자상거래 데이터 모델 구축

Susan Sun

Freelance Data Scientist

복습: dbt 설정 및 초기화

dbt 설치

pip install dbt

dbt 프로젝트 looker_ecommerce 초기화

dbt init looker_ecommerce

설정 성공 확인

cd looker_ecommerce
dbt debug

dbt 자동 생성 디렉터리:

이전 레슨의 스크린샷 반복. dbt init이 자동 생성한 파일 디렉터리 목록이 보입니다. 최상위 폴더는 looker e-commerce이며, 하위 폴더는 analyses, macros, models, seeds, snapshots, tests입니다. 기타 파일로는 gitignore, dbt project yaml, readme markdown이 있습니다.

사례 연구: dbt로 전자상거래 데이터 모델 구축

데이터 익히기: 물류 센터

  • distribution_centers.csv는 작고 정적이며, 행이 10개뿐입니다

  • 원시 distribution_centers.csv 예시

물류 센터 데이터 파일 미리보기. 3개 행과 4개 열이 보입니다. 열 이름은 id, name, latitude, longitude입니다.

  • id: 각 물류 센터의 고유 식별자
  • name: 물류 센터 이름
  • latitude: 물류 센터의 위도
  • longitude: 물류 센터의 경도
사례 연구: dbt로 전자상거래 데이터 모델 구축

데이터 익히기: 주문

orders.csv는 125,000행·9열의 대용량이며 지속적으로 갱신됩니다

  • order_id: 각 주문 품목의 고유 ID
  • user_id: 주문한 사용자 ID
  • status: 주문 상태
  • gender: 사용자 성별
  • created_at: 주문 생성 타임스탬프
  • returned_at: 주문 반품 타임스탬프
  • shipped_at: 주문 발송 타임스탬프
  • delivered_at: 주문 배송완료 타임스탬프
  • num_of_items: 주문 품목 수
사례 연구: dbt로 전자상거래 데이터 모델 구축

데이터 익히기: 주문

원시 orders.csv 예시:

주문 데이터 파일 미리보기. 2개 행과 9개 열이 보입니다. 열 이름은 order id, user id, status, gender, created at, returned at, shipped at, delivered at, num of items입니다.

사례 연구: dbt로 전자상거래 데이터 모델 구축

원시 소스와 시드 데이터 소스 설정

물류 센터 원시 데이터 파일:

  • 데이터 특성:
    • 작고 평평한 파일(csv)
    • 변경이 느린 데이터

주문 원시 데이터 파일:

  • 데이터 특성:
    • 대용량 데이터셋
    • 변경이 빠른 데이터
  • dbt 로드 방법:
    • dbt seed
    • 1회성 파일로 로드
  • dbt 로드 방법:
    • dbt source
    • DuckDB 커넥터
사례 연구: dbt로 전자상거래 데이터 모델 구축

원시 소스와 시드 데이터 소스 설정

dbt init은 기본 파일 구조를 자동 생성합니다:

looker_ecommerce/
  macros/
  models/
  seeds/
  snapshots/
  tests/
  dbt_project.yml
사례 연구: dbt로 전자상거래 데이터 모델 구축

원시 소스와 시드 데이터 소스 설정

distribution_centerseed로 로드:

looker_ecommerce/
  macros/
  models/
    stg_looker__distribution_centers.sql
  seeds/
    looker__distribution_centers.csv
  snapshots/
  tests/
  dbt_project.yml

stg_looker__distribution_centers.sql에서:

SELECT 
  id,
  name,
  latitude,
  longitude
FROM 
 {{ref('looker__distribution_centers')}}
사례 연구: dbt로 전자상거래 데이터 모델 구축

원시 소스와 시드 데이터 소스 설정

orderssource로 로드:

looker_ecommerce/
  macros/
  models/
    stg_looker__orders.sql
  seeds/
  snapshots/
  tests/
  dbt_project.yml

stg_looker__orders.sql에서:

SELECT *
FROM 
{{source('looker_ecommerce', 'orders')}}
사례 연구: dbt로 전자상거래 데이터 모델 구축

소스와 스테이징 모델 문서화

sources 문서화:

looker_ecommerce/
  macros/
  models/
    _looker__sources.yml
  seeds/
  snapshots/
  tests/
  dbt_project.yml

_looker__sources.yml에서:

version: 2

sources:
  - name: looker_ecommerce
    tables:
      - name: orders
사례 연구: dbt로 전자상거래 데이터 모델 구축

소스와 스테이징 모델 문서화

  • 같은 models 디렉터리의 예시 _looker__models.yml 파일:
version: 2

models:
  - name: stg_looker__distribution_centers
    description: 물류 센터 이름과 위치    

  - name: stg_looker__orders
    description: 주문 상태 등 주문 정보
사례 연구: dbt로 전자상거래 데이터 모델 구축

소스, 시드, 모델, YAML

looker_ecommerce/
  macros/
  models/
    _looker__models.yml
    _looker__sources.yml
    stg_looker__distribution_centers.sql
    stg_looker__orders.sql
  seeds/
    looker__distribution_centers.csv
  snapshots/
  tests/
  dbt_project.yml
사례 연구: dbt로 전자상거래 데이터 모델 구축

복습: dbt 하위 명령어

csv 파일을 시드로 로드

dbt seed

프로젝트의 모든 모델 생성/업데이트

dbt run

지정한 모델만 생성/업데이트

dbt run --select model

프로젝트의 모든 테스트 실행

dbt test 

지정한 모델의 테스트 실행

dbt test --select model

dbt rundbt test 일괄 실행

dbt build
dbt build --select model
사례 연구: dbt로 전자상거래 데이터 모델 구축

복습: 모범 사례 가이드

모델 이름 규칙:

  • 데이터 소스명과 모델명을 이중 밑줄로 구분
  • <data_source>__<model_name>.sql

예:

  • stg_looker__distribution_centers.sql
  • stg_looker__orders.sql

YAML 파일 이름 규칙:

  • 단일 밑줄로 시작
  • 데이터 소스명과 아티팩트명을 이중 밑줄로 구분
  • _<data_source>__<artifact_type>.yml

예:

  • _looker__models.yml
  • _looker__sources.yml
1 https://docs.getdbt.com/best-practices
사례 연구: dbt로 전자상거래 데이터 모델 구축

연습해 봅시다!

사례 연구: dbt로 전자상거래 데이터 모델 구축

Preparing Video For Download...