Search

[dbt] 2. 개발환경 구축하기 - (SQLite 기준)

[dbt] 1. ELT의 시대 - dbt란 무엇인가?
dbt
Data Engineering
Data Analysis
2025/07/27
[dbt] 1. ELT의 시대 - dbt란 무엇인가?
dbt
Data Engineering
Data Analysis
2025/07/27
지난 글에서는 데이터 파이프라인이 ETL에서 ELT로 변화하면서 등장한 dbt(Data Build Tool)의 개념과 철학, 실무적 장점에 대해 이야기했습니다.
이번 글에서는 실제로 SQLite 기반의 dbt 환경을 구축하고, 첫 번째 데이터 모델을 정의하고 실행하는 과정을 단계별로 함께 진행해보겠습니다.

SQLite와 dbt: 빠르게 시작하기

일반적으로 dbt는 BigQuery나 Snowflake 같은 클라우드 데이터 웨어하우스와 함께 사용됩니다. 하지만 학습이나 로컬 테스트 목적이라면 SQLite가 선택하는 것도 나쁘지 않은 선택입니다. 별도의 설치나 비용 없이 누구나 쉽게 사용할 수 있기 때문입니다.
이 글에서는 macOS 환경을 기준으로, SQLite에서 dbt 프로젝트를 설정하고 모델을 실행하는 과정을 안내합니다.

1. dbt-core와 Adapter 설치

dbt는 핵심 엔진인 dbt-core와 데이터베이스별 어댑터(Adapter)로 구성됩니다. SQLite를 위한 어댑터는 dbt-sqlite입니다.
터미널에서 아래 명령어로 설치합니다.
pip install dbt-core dbt-sqlite
Bash
복사
정상적으로 설치됐는지 확인합니다.
dbt --version
Bash
복사

2. dbt 프로젝트 초기화

dbt 프로젝트를 생성하기 위해 원하는 위치로 이동한 후, 프로젝트를 초기화합니다.
dbt init my_first_dbt
Bash
복사
my_first_dbt라는 프로젝트 폴더 생성
dbt_project.yml, models/, tests/, macros/ 등 필수 디렉토리와 기본 설정 파일 자동 생성

3. SQLite 데이터베이스 준비하기

dbt 프로젝트 폴더 안에 SQLite 데이터베이스 파일을 생성합니다. 별도의 데이터베이스 초기화는 필요하지 않습니다. dbt가 자동으로 테이블을 생성해줍니다.
mkdir -p my_first_dbt/data # 데이터베이스 파일을 저장할 폴더 생성 touch my_first_dbt/data/etl.db # SQLite용 빈 데이터베이스 파일 생성
Bash
복사

4. 프로필 설정 (profiles.yml)

dbt는 데이터베이스 연결 정보를 profiles.yml에서 관리합니다.
이 파일은 기본적으로 사용자 홈 디렉토리의 .dbt 폴더 안에 위치합니다 (~/.dbt/profiles.yml).
해당 파일을 위에서 세팅한 SQLite DB 기준으로 변경합니다.
my_first_dbt: # 프로젝트명과 동일해야 합니다. outputs: dev: # 환경 type: sqlite # SQLite Adapter 사용 지정 threads: 1 # 동시 실행 가능한 스레드 수 (SQLite는 일반적으로 1) database: elt_test # dbt 내부 참조용 데이터베이스명 (임의 이름) schema: 'main' # SQLite에서는 main으로 고정 schemas_and_paths: # 스키마(여기서는 main)와 SQLite 파일 경로 지정 main: '/my_project/data/etl.db' schema_directory: '/my_project/data' # 스키마 파일 위치 target: dev # 기본 타겟 환경 지정
Shell
복사

5. 첫 번째 모델 작성하기

이제 간단한 첫 번째 모델을 작성해봅시다. 모델은 models 폴더 안에 .sql 파일로 작성합니다.
-- models/my_first_model.sql -- 이 쿼리는 두 개의 컬럼을 가진 테이블을 생성하는 간단한 모델입니다. SELECT 1 AS id, 'hello, dbt!' AS greeting
SQL
복사
위의 SQL 파일은 dbt가 실행될 때 자동으로 SQLite의 테이블로 변환됩니다. dbt는 기본적으로 파일명(my_first_model)으로 테이블 이름을 자동 지정합니다

6. 모델 실행하기

이제 터미널에서 dbt 모델을 실행하여 SQLite에 테이블을 생성합니다.
dbt run
Bash
복사
프로젝트의 모든 모델(models/*.sql)을 읽고 컴파일합니다.
SQL 구문을 데이터베이스에 실행하여 실제 테이블로 저장합니다.
모델 실행 결과와 상태를 터미널에 출력합니다.
정상적으로 실행되면 아래와 유사한 메시지가 출력됩니다.
Completed successfully Done. PASS=1 WARN=0 ERROR=0 SKIP=0 TOTAL=1
Bash
복사

7. 생성된 테이블 확인하기

SQLite CLI를 통해 테이블이 제대로 생성됐는지 확인합니다.
sqlite3 my_first_dbt/data/etl.db
Bash
복사
SQLite 콘솔에서 쿼리를 날려 결과를 확인합니다.
-- dbt가 생성한 테이블 내용 확인 SELECT * FROM my_first_model;
SQL
복사
예상 결과:
1|hello, dbt!
SQL
복사
결과가 보이면 성공입니다.

8. 문서화 자동화

dbt는 자동 문서화 기능을 지원하여, 모델의 관계와 설명을 보기 쉽게 제공합니다.
dbt docs generate # 모델 정보를 읽어 HTML 형태의 문서 생성 dbt docs serve # 생성된 문서를 로컬 웹서버에서 실행
Bash
복사
docs generate: 프로젝트 내의 모든 모델과 의존성을 분석하고, HTML 문서를 생성합니다.
docs serve: 로컬 웹서버를 시작하여 브라우저에서 시각화된 모델 관계도 및 설명을 제공합니다.

마무리

이번 글에서는 SQLite를 기반으로 dbt 환경을 구축하고 첫 번째 모델을 실행하는 과정을 단계별로 다뤄봤습니다. 간단한 모델 작성부터 문서화까지 직접 경험해보며, dbt가 데이터 모델링을 얼마나 쉽고 구조적으로 만들어주는지 확인할 수 있었습니다.
다음 글에서는 dbt를 실무에서 능숙하게 활용하기 위해 꼭 알아야 할 핵심 구성요소들을 깊이 있게 다뤄볼 예정입니다.