개요
본격적으로 DBT 설치 후에 프로젝트를 진행해보려고 한다. 아무래도 처음 접해보는 툴이라서 설정부터 버벅거림이 있었는데, Windows 사용자는 아래 내용을 참고하면 좋을 것 같다. 설정값들은 강의에서 나온 내용으로 설정한 것이라서, 혹시 다르게 세팅한 사람은 해당 부분을 본인 것으로 수정해서 넣으면 될 것 같다. (계정명이나 클라우드 등등) 다행히 오류 없이 세팅이 잘 된 것 같아서 안심이다.. 버전 같은 것도 안 맞아서 호환 안 되는 경우도 있다는데, 나는 무리 없었다. 휴.
Snowflake Free Trial 가입하기
- 가입 시 클라우드는 AWS로 설정하고, 계정 하나 만들어주기
- Trial 기간은 30일이기 때문에, 프로젝트 빨리 끝내기 목표!
- 개인 프로젝트라면 클라우드 보통 없으니까 Google Cloud가 좋을 듯.
Airbnb 데이터 INSERT 해놓기
- 데이터 적재 전에, 계정 권한을 설정해줘야 한다.
-- Use an admin role
USE ROLE ACCOUNTADMIN;
-- Create the `transform` role
CREATE ROLE IF NOT EXISTS transform;
GRANT ROLE TRANSFORM TO ROLE ACCOUNTADMIN;
-- Create the default warehouse if necessary
CREATE WAREHOUSE IF NOT EXISTS COMPUTE_WH;
GRANT OPERATE ON WAREHOUSE COMPUTE_WH TO ROLE TRANSFORM;
-- Create the `dbt` user and assign to role
CREATE USER IF NOT EXISTS dbt
PASSWORD='dbtPassword123'
LOGIN_NAME='dbt'
MUST_CHANGE_PASSWORD=FALSE
DEFAULT_WAREHOUSE='COMPUTE_WH'
DEFAULT_ROLE='transform'
DEFAULT_NAMESPACE='AIRBNB.RAW'
COMMENT='DBT user used for data transformation';
GRANT ROLE transform to USER dbt;
- DB 만들고, S3에 미리 넣어둔 데이터 INSERT 하기 (Snowflake worksheet 추가해서 SQL로 진행)
- 이 데이터는 Udemy 강사님이 설정해두신 곳 같은데, 만일 Airbnb의 다른 데이터로 하고 싶다면 이 사이트에서 다운 받아서 진행하면 좋을 것 같다. (사이트 : https://insideairbnb.com/get-the-data/)
- 새로 만든 AIRBNB 디비에도 유저 권한 부여 필수
-- Create our database and schemas
CREATE DATABASE IF NOT EXISTS AIRBNB;
CREATE SCHEMA IF NOT EXISTS AIRBNB.RAW;
-- Set up permissions to role `transform`
GRANT ALL ON WAREHOUSE COMPUTE_WH TO ROLE transform;
GRANT ALL ON DATABASE AIRBNB to ROLE transform;
GRANT ALL ON ALL SCHEMAS IN DATABASE AIRBNB to ROLE transform;
GRANT ALL ON FUTURE SCHEMAS IN DATABASE AIRBNB to ROLE transform;
GRANT ALL ON ALL TABLES IN SCHEMA AIRBNB.RAW to ROLE transform;
GRANT ALL ON FUTURE TABLES IN SCHEMA AIRBNB.RAW to ROLE transform;
- 데이터 INSERT SQL 날리기
- 파일을 해당 DB로 밀어 넣는 거니까, COPY + 파일 경로
-- Set up the defaults
USE WAREHOUSE COMPUTE_WH;
USE DATABASE airbnb;
USE SCHEMA RAW;
-- Create our three tables and import the data from S3
CREATE OR REPLACE TABLE raw_listings
(id integer,
listing_url string,
name string,
room_type string,
minimum_nights integer,
host_id integer,
price string,
created_at datetime,
updated_at datetime);
COPY INTO raw_listings (id,
listing_url,
name,
room_type,
minimum_nights,
host_id,
price,
created_at,
updated_at)
from 's3://dbtlearn/listings.csv'
FILE_FORMAT = (type = 'CSV' skip_header = 1
FIELD_OPTIONALLY_ENCLOSED_BY = '"');
CREATE OR REPLACE TABLE raw_reviews
(listing_id integer,
date datetime,
reviewer_name string,
comments string,
sentiment string);
COPY INTO raw_reviews (listing_id, date, reviewer_name, comments, sentiment)
from 's3://dbtlearn/reviews.csv'
FILE_FORMAT = (type = 'CSV' skip_header = 1
FIELD_OPTIONALLY_ENCLOSED_BY = '"');
CREATE OR REPLACE TABLE raw_hosts
(id integer,
name string,
is_superhost string,
created_at datetime,
updated_at datetime);
COPY INTO raw_hosts (id, name, is_superhost, created_at, updated_at)
from 's3://dbtlearn/hosts.csv'
FILE_FORMAT = (type = 'CSV' skip_header = 1
FIELD_OPTIONALLY_ENCLOSED_BY = '"');
DBT 프로젝트 진행할 가상환경 만들기 (Virtualenv)
- pip install virtualenv 로 해당 패키지 있는지 확인하고 없으면 자동 설치됨
- 가상환경 세팅할 폴더 만들기
- 접근하기 편하게 바탕화면에 만들었음 (cd Desktop > mkdir course)
- 해당 폴더로 들어가서 가상환경 venv 만들기 (cd course > virtualenv venv)
- 가상환경 Activate하기 (venv\Scripts\activate)
DBT 설치
- Python 버전 확인하는 것이 좋음 (3.12 이상은 DBT 지원 안하는 것 같다. 그 미만 버전으로 설치할 것)
- 버전 확인 (python --version)
- dbt-snowflake 설치 (pip install dbt-snowflake==1.7.1)
- 버전은 호환성에 따라서 확인하고 진행하면 됨
- cmd에서 dbt 실행했을 때, 결과 하단에 이 화면 뜨면 정상 설치 완료
DBT 초기 셋팅
- DBT 프로필 파일 생성 (mkdir %userprofile%\.dbt)
- snowflake 정보 확인 (Admin > Accounts > 사용하는 계정 i 아이콘 위에 마우스오버 하면 URL > "~~~ - ~~~~" 확인
- 이 정보는 사용자마다 다르니까, 본인꺼로 꼭 이용할 것
- dbt init [프로젝트명]
※ dbt profile setup
1. Which database would you like to use? -> snowflake니까 1
2. DB 정보 입력
-> 이 내용은 아까 snowflake에서 DB 세팅할 때 넣었던 값으로 넣으면 된다. (threads는 프로젝트용이면 그냥 엔터)
- 모두 세팅하면 course 폴더 안에 dbtlearn 디렉토리가 생성된 상태
DBT DEBUG로 설정 확인
- dbtlearn 폴더로 이동 (cd dbtlearn)
- dbt debug 커맨드 수행 (dbt debug)
- 본인이 설정한 내용들이 모두 출력됨
포스팅 자료 출처
본 포스팅은 유데미(Udemy) 사이트의 "The Complete dbt (Data Build Tool) Bootcamp: Zero to Hero" 강의의 내용을 발췌하여 작성했습니다. (광고 X)
'Data Science > DBT' 카테고리의 다른 글
CTEs(Common Table Expressions) 개념 및 사용법 (0) | 2024.09.02 |
---|---|
느린 변경 차원; Slowly Changing Dimension(SCD) (0) | 2024.08.11 |
현대 데이터 스택 (과거와 현재, DBT 툴의 중요성) (0) | 2024.08.11 |
데이터레이크(Data Lake)와 데이터레이크하우스(Data Lakehouse) (0) | 2024.08.11 |
데이터 웨어하우스 이해하기 (온프레미스 vs 클라우드 DW) (0) | 2024.08.05 |
댓글