dbt 설치

ohyujeong·2023년 6월 22일
0

dbt

목록 보기
2/2

dbt 사용절차

dbt를 사용하기 위해서는 아래와 같은 절차를 따라야 한다.

  1. dbt 설치
  2. dbt 환경설정
  3. connector(데이터베이스) 설정
  4. 데이터 모델링
  5. 테스트 코드 작성
  6. 필요시 snapshot 설정

여기서 1, 2, 3번 절차를 알아보자.

dbt 설치

dbt는 dbt core, dbt cloud 와 같이 설치 옵션이 2가지가 있다.

dbt core

dbt Core는 오픈 소스 버전의 dbt이다. Python 기반으로 만들어져 pip 를 통해 쉽게 설치할 수 있다.

dbt cloud

dbt cloud는 dbt core의 모든 기능을 포함하며, 추가로 엔터프라이즈급 기능을 제공하는 호스팅 서비스이다. 클라우드 기반으로 동작하고 웹 인터페이스가 제공된다. CI/CD 기능 또한 제공한다.

여기서 이번에 설치할 dbt 옵션은 dbt core 이다.
간단하게 아래 pip 명령어로 설치할 수 있다.
지원되는 Python 버전은 3.7, 3.8, 3.9, 3.10, 3.11이다.
dbt-<사용할 데이터베이스> 의 형태로 설치한다.

➜ $ pip install dbt-redshift

이렇게 명령어를 실행하면 dbt-coredbt-redshift, 그리고 redshift가 postgres기반이기 때문에 dbt-postgres 플러그인이 설치된다. dbt --version 으로 설치된 모듈을 확인할 수 있다.

➜  $ dbt --version
Core:
  - installed: 1.5.1
  - latest:    1.5.1 - Up to date!

Plugins:
  - redshift: 1.5.5 - Up to date!
  - postgres: 1.5.1 - Up to date!

참고 : https://docs.getdbt.com/docs/core/pip-install#change-dbt-core-versions

설치 시 오류

pip 로 위와 같이 설치를 하는데 아래와 같은 에러가 계속 발생했다.
캡쳐를 못했다 🥲 쭉쭉 잘 설치되다가 대충 아래와 같이 에러가 출력되었다.

clang: error: invalid version number in 'MACOSX_DEPLOYMENT_TARGET=11.0'
...
error: command '/usr/bin/clang' failed with exit code 1
...

설치를 진행한 컴퓨터는 mac os intel chip을 사용하였다.
에러 메시지로 해결방법을 검색하다가 Mac CommandLineTools를 재설치하면 된다고 하여 아래와 같이 명령어를 입력하여 재설치했다.

sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install

이렇게 되면 설치하겠냐는 팝업이 뜨는데, 설치를 클릭하고 동의를 누르면 설치가 진행된다.
설치 완료 후 pip로 dbt설치가 잘 되는 것을 확인했다.

dbt 프로젝트 생성과 연결정보 설정

아래 명령어로 프로젝트를 생성한다. 초기화하면서 프로젝트 폴더를 생성하거나, 이미 있는 폴더로 이동하여 그 위치에서 초기화하는 2가지 방법이 있다.

dbt init [생성할 프로젝트명]
dbt init # 프로젝트 폴더에서 실행해야 함

이렇게 명령어를 실행하게 되면 profile을 설정을 해야한다. (redshift 기준)
아래와 같이 몇 가지 연결설정 정보를 입력하면 /Users/사용자/.dbt/profiles.yml 파일에 정보가 저장된다.

# 사용 데이터 베이스 시스템 선택
Which database would you like to use?
[1] redshift
[2] postgres

(Don''t see the one you want? https://docs.getdbt.com/docs/available-adapters)

Enter a number: 1

# host url 입력
host (hostname.region.redshift.amazonaws.com): learnde.-------.ap-northeast-2.redshift.amazonaws.com

# port 입력 (기본값 5439)
port [5439]: 5439

# user 입력
user (dev username):  dev_user

# 인증방식 선택
[1] password
[2] iam
Desired authentication method option (enter a number): 1

# password 선택 시 password 입력
password (dev password): 

# 사용할 데이터베이스 입력
dbname (default database that dbt will build objects in): dev

# 사용할 스키마 입력
schema (default schema that dbt will build objects in): dbwjd090

# 스레드 수 지정
threads (1 or more) [1]: 1

이렇게 설정하면 아래와 같이 profiles.yml 에 저장된다.

learn_dbt: # 프로젝트 폴더명
  outputs: # 현재는 dev만 있지만 staging이나 prod와 같은 환경을 추가할 수 있음
    dev:
      dbname: dev
      host: learnde.-------.ap-northeast-2.redshift.amazonaws.com
      password: password
      port: 5439
      schema: schema
      threads: 1
      type: redshift
      user: user
  target: dev # 사용할 환경을 설정

github repository에 commit

github에서 dbt 프로젝트를 담을 repository를 생성한 후 아래 명령어들을 입력하여 repository에 dbt 프로젝트를 올린다.

git init
git branch -M main
git add .
git commit -m "Create a dbt project"
git remote add origin https://github.com/USERNAME/REPO_NAME.git
git push -u origin main

repository를 생성 시 README.md 파일이나 .gitignore 파일을 추가하지 않아야 한다.(중요❗️)
dbt 프로젝트 생성 시 이미 README.md 파일이나 .gitignore 파일을 기본으로 제공하고, 또한 추가 시 initial commit이 되어 remote repo와 나의 local repo의 상태가 달라져 아래 명령어가 먹지 않기 때문이다..

profile
거친 돌이 다듬어져 조각이 되듯

0개의 댓글