일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- bar cahrt
- polars
- DBT
- query history
- 쿠버네티스
- 도커
- freshness
- dbt_project
- Python
- k9s
- airflow
- spring boot
- 파이썬
- CDC
- KubernetesPodOperator
- 모바일
- numpartitions
- proerty
- ksql
- Java
- Materializations
- UI for kafka
- kafka
- 크롤링
- spark
- 카프카
- 윈도우
- 동적 차트
- mysql
- docker
- Today
- Total
데이터 엔지니어 이것저것
dbt 시작하기 본문
dbt를 postgresql과 연결하여 시작을 해보려한다
pip install dbt-postgres
설치 이후
프로젝트 생성
dbt init users
이후 db 접근 설정들을 입력하라고 하는데 일단 설정을 모두 해본다
cd users
dbt debug
db 접근 정보들이 어디에 저장되어있는지 확인하던 도중
설정 정보값들이 HOME DIR에 저장되어 있어서 이것을 바꾸려 한다
dbt run --help
별도로 설정을 하지 않으면 HOME dir를 검색한다고 한다
.env Dir에 profiles.yml에 db 접근 정보를 입력하고 테스트 해보자
users:
outputs:
dev:
dbname: root
host: localhost
pass: password
port: 5432
schema: source
threads: 1
type: postgres
user: root
target: dev
실행할때 따로 옵션을 추가해서 실행을 해보자
dbt debug --profiles-dir ..\.env\profiles.yml
에러가 나서 확인을 해보니 profiles.yml 까지 작성을 하면 안된다.
dbt debug --profiles-dir ..\.env
설정 정보들을 저장한 dir 위치까지만 입력해주고 실행을 하면
환경변수 적용 순서
- 명령어에 --profiles-dir 옵션을 주었을 경우
- 환경 변수에 설정된 값
- 현재 DIR
- root의 .dbt DIR
mac의 경우 환경변수를 추가하면 해결되지만 윈도우에서는 귀찮다.
모델 생성
- models DIR에 테스트를 위한 SQL을 생성한다
SELECT id,
user_name
FROM users
dbt run
이렇게 하면 오류가 발생하는데 테이블이 존재하지 않다고 한다.
SELECT id,
user_name
FROM source.users
앞에 스키마 정보를 추가하면 정상 동작한다.
schema.yml 에 정보를 입력
version: 2
sources:
- name: user_table
database: root
schema: source
tables:
- name: users
관련 문서 : https://docs.getdbt.com/docs/build/sources
Add sources to your DAG | dbt Developer Hub
Read this tutorial to learn how to use sources when building in dbt.
docs.getdbt.com
쿼리 수정
SELECT id,
user_name
FROM {{ source('user_table', 'users')}}
관련 view 테이블이 생성된것을 확인할수있다
{{config(alias='test') }}
SELECT id,
user_name
FROM {{ source('user_table', 'users')}}
맨 앞줄에 config alias 로 설정을 하면 원하는 테이블 또는 view로 작성할수있다
초반에 테이블이 삭제가 되었다
- alias를 하지 않고 sql 파일이 테이블 명과 같으면 안된다.
- alias를 하여도 테이블명과 동일하면 안된다.
해당 부분은 많이 위험한것같은데 테스트중 미리 발견해서 다행이다.
진자 탬플릿으로 작성한 SQL이 변환되는지 확인하는 방법
dbt compile
해당 명령어를 실행하면
├─target
│ ├─compiled
│ │ └─users
│ │ └─models
│ │ └─users
targer 폴더 밑에 compiled로 sql들이 작성된다.
SELECT id,
user_name
FROM "root"."source"."users"
이런식으로 확인할 수 있다.
TODO
- dbt run 할때 스키마 입력 안하면 오류 발생하는 부분
'오픈소스 > dbt' 카테고리의 다른 글
dbt test (0) | 2023.11.14 |
---|---|
dbt snapshot (0) | 2023.11.13 |
dbt sources (1) | 2023.11.12 |
dbt seeds (0) | 2023.11.12 |
dbt란? (0) | 2023.11.10 |