데이터 분석 Data Analytics/프로그래머스 데이터분석 데브코스 2기

[TIL] 데이터분석 데브코스 69일차 (2) - DBT Core 설치하기/DBT Model Building 실습

상급닌자연습생 2024. 5. 25. 15:44

DBT 설치하기 (로컬 개발 버전 : dbt Core)

 

 

터미널을 열자

DBT를 설치해보겠다.

`pip3 install dbt-redshift`

(에러가 발생한다면 `sudo pip3 install dbt-redshift`로 입력해보자.)

※ dbt-core 모듈을 설치해줌과 동시에 환경에 맞는 dbt connector(Redshift, BigQuery, Snowflake 등)도 설치해준다.

본인 컴퓨터에 맞는 시스템 암호를 입력해준다.

 

 

 

설치가 완료되었다면 dbt의 버전을 확인해보자. 

`dbt --version`

최신 버전임을 확인했다.

 

 

 

이제 ELT 작업을 할 프로젝트를 만들어보자.

`dbt init 프로젝트명`

※ 여기서 하나의 프로젝트는 하나의 ELT 작업을 뜻한다.

 

필자는 실습에서 Redshift를 사용할 것이기 때문에 1을 입력해주었다.

 

그럼 사용할 Redshift 연결 정보를 입력하도록 주어진다.

본인 계정에 맞게 host주소, port 번호, Redshift 계정 사용자 ID를 입력하자.

비밀번호를 입력할 것이라면 1을 선택한 다음 Redshift 계정 비밀번호를 입력한다.

이후 순서대로 DB명, 스키마명을 입력하고 1을 입력한다.

 

이렇게 되면 초기 환경설정이 끝난다.

 

 

 

 

환경설정이 끝났다면 프로젝트가 있는 디렉토리 안으로 이동해보자.

`cd 프로젝트명`

`ls -tl`

 

그럼 위와 같이 생성한 프로젝트 밑에 있는 다양한 폴더들이 있음을 확인할 수 있다.

 

 

 

 

 

dbt_project.yml

프로젝트 폴더를 살펴보자.

 

`~/.dbt/profiles.yml` 안에 존재해야 하는 정보들이다.

name: 'learn_dbt'
version: '1.0.0'
config-version: 2

profile: 'learn_dbt'

 

 

 

환경 정보가 들어가 있다. 이는 폴더 이름들과 일치해야 한다.

model-paths: ["models"]
analysis-paths: ["analyses"]
test-paths: ["tests"]
seed-paths: ["seeds"]
macro-paths: ["macros"]
snapshot-paths: ["snapshots"]

 

 

 

target, dpt_packages : 중간 결과들이 저장되는 폴더

target-path: "target" # folder to store compiled SQL files
clean-targets: # directories to be removed by `dbt clean`
	- "target"
    - "dbt_packages"
models:
	learn_dbt
    example:
    	+materialized: view

 

 

 

 

 

 

 

DBT Input 

우선, 만들어둔 프로젝트로 이동해보자.

`cd learn_dbt`

 

프로젝트에 어떤 폴더가 있는지 간단하게 살펴보자.

`ls -tl`

 

프로젝트 폴더 안으로 이동해보자.

`vi dbt_project.yml`

 

 

우리는 여기서 제일 하단의 두줄(example부터 view까지)을 삭제하려고 한다.

 

삭제 명령 실행 (챗 지피티님께 물어봤다..)

  • 커서가 "example" 줄에 있는 상태에서 `dd`를 두 번 누르면 현재 줄이 삭제됩니다.
  • "view" 줄도 동일하게 `dd`를 두 번 눌러 삭제합니다.

 

아래와 같이 깔끔하게 지워졌다면, 저장하고 밖으로 빠져나오자

 

vi 에디터 저장 (thanks to chat gpt)

  1. `Esc` 키를 누릅니다.
  2. `:wq`를 입력합니다.
  3. `Enter` 키를 누릅니다.

이제 변경된 내용을 저장하고 vi 에디터를 정상적으로 종료할 수 있습니다.

 

 

이제 models 폴더로 이동하자.

`cd models`

`ls -tl`

 

위와 같이 오늘 일자에 생성된 example 파일이 있는 것을 볼 수 있다.

이를 삭제해보자.

`rm -rf 삭제할파일명`

 

파일이 삭제된 것을 확인할 수 있다.

 

이제 src라는 새로운 폴더를 만들어 .sql 파일 3개를 생성해보자.

`mkdir src` : src라는 디렉토리를 생성한다.

`cd src` : src로 이동한다.

`vi src_user_event.sql` : 현재 디렉토리에 src_user_event.sql 파일이 없다면 생성한 후 열고, 있다면 그냥 연다.

`vi src_user_variant.sql`

`vi src_user_metadata.sql`

 

 

 

src_user_event.sql 파일에 쿼리문을 입력해보자.

 

 

src_user_variant.sql 파일에도 쿼리문을 입력한다.

 

 

마지막으로 src_user_metadata.sql 파일에도 쿼리를 입력하자.

 

 

 

.sql 파일 생성과 동시에 쿼리 내용 입력을 모두 마쳤다면, 루트 디렉토리(`learn_dbt`)로 이동하자.

`cd ..`

`cd ..`

 

그리고 dbt를 실행시켜보자.

`dbt run`

 

 

dbt run 과정에서 에러남... shit

해결하고 이어서 작성해보겠다... ㅠㅠ