dbt를 사용하기 위해서는 아래와 같은 절차를 따라야 한다.
여기서 1, 2, 3번 절차를 알아보자.
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-core
와 dbt-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설치가 잘 되는 것을 확인했다.
아래 명령어로 프로젝트를 생성한다. 초기화하면서 프로젝트 폴더를 생성하거나, 이미 있는 폴더로 이동하여 그 위치에서 초기화하는 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에서 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의 상태가 달라져 아래 명령어가 먹지 않기 때문이다..