사례 연구: dbt로 전자상거래 데이터 모델 구축
Susan Sun
Freelance Data Scientist
dbt 설치
pip install dbt
dbt 프로젝트 looker_ecommerce 초기화
dbt init looker_ecommerce
설정 성공 확인
cd looker_ecommerce
dbt debug
dbt 자동 생성 디렉터리:

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

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

물류 센터 원시 데이터 파일:
주문 원시 데이터 파일:
dbt seeddbt sourcedbt init은 기본 파일 구조를 자동 생성합니다:
looker_ecommerce/
macros/
models/
seeds/
snapshots/
tests/
dbt_project.yml
distribution_center를 seed로 로드:
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')}}
orders를 source로 로드:
looker_ecommerce/
macros/
models/
stg_looker__orders.sql
seeds/
snapshots/
tests/
dbt_project.yml
stg_looker__orders.sql에서:
SELECT *
FROM
{{source('looker_ecommerce', 'orders')}}
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
models 디렉터리의 예시 _looker__models.yml 파일:version: 2
models:
- name: stg_looker__distribution_centers
description: 물류 센터 이름과 위치
- name: stg_looker__orders
description: 주문 상태 등 주문 정보
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
csv 파일을 시드로 로드
dbt seed
프로젝트의 모든 모델 생성/업데이트
dbt run
지정한 모델만 생성/업데이트
dbt run --select model
프로젝트의 모든 테스트 실행
dbt test
지정한 모델의 테스트 실행
dbt test --select model
dbt run과 dbt test 일괄 실행
dbt build
dbt build --select model
모델 이름 규칙:
<data_source>__<model_name>.sql예:
stg_looker__distribution_centers.sqlstg_looker__orders.sqlYAML 파일 이름 규칙:
_<data_source>__<artifact_type>.yml예:
_looker__models.yml_looker__sources.yml사례 연구: dbt로 전자상거래 데이터 모델 구축