[데이터 엔지니어링 데브코스] TIL 33일차 - 데이터 웨어하우스 관리와 고급 SQL과 BI 대시보드(5) & 데이터 웨어하우스를 이용한 대시보드 구성 3일차

박단이·2023년 12월 6일
0

데브코스 TIL

목록 보기
33/56

오늘 배운 것🤓

시각화 툴

  • 대시보드 혹은 BI(Businuess Intelligence) 툴이라고도 부른다.
  • 데이터 기반 의사결정을 가능하게 한다.
  • 현업 종사자들이 데이터 분석을 가능하도록 한다
    -> Citizen Data Analyst

시각화 툴 종류

  • Excel / 구글 스프레드 시트
    어쩌면 전세계적으로 가장 많이 쓰는 시각화 툴이 아닐까?
  • Python/R
    대시보드보다는 EDA에 가깝다.
  • Google Looker
    구글에서 인수한 BI 툴
    자체 언어인 LookML이 있으며 데이터 모델을 만드는 것으로 시작했다.
    이미 만들어진 대시보드를 self-service하기 쉽다.
    즉, 한 사람이 대시보드를 잘 만들어놓으면 다른 사람들이 수정하기 좋다.
    처음 배울 때는 어려울 수 있지만 적용 및 수정하기 좋다.
  • Tableau
    가장 유명하고 보편적인 BI 툴
    오랫동안 군림한 만큼 다양한 제품군을 보유하고 있다.
    일부는 사용이 무료이다.(단, 모두 공개한다는 조건)
    제대로 배우는데 시간이 오래걸리고 이미 만들어진 대시보드를 수정하기 쉽지 않다.
  • MS Power BI
  • Apache Superset
    이번 수업에서 쓰는 BI 툴
    enterprise 수준의 보안과 권한 제어 기능을 제공한다.
    Python으로 개발(Flask, React JS로 구성)
    SQL Alchemy를 사용하여 백엔드 DB 연동한다.
    Druid.io와 연동하여 실시간 데이터를 시각화할 수 있다.
    API, 플러그인 아키텍쳐 제공으로 확장성이 좋다.
  • Mode Analytics
    BI 툴과 Python 중간 그 어딘가
    기술적인 인력에게 적합한 대시보드(Python, R, SQL)
    EDA 툴에 가깝다.
  • ReDash
    Superset과 유사하며 자체적인 SQL 에디터를 보유하고 있다.
    사용자 권한 관련 기능은 약간 부족하다.
  • Google Studio
  • AWS Quicksight

=> 보편적으로 Looker와 Tableau를 많이 사용한다.
Tableau가 비교적 Looker보다 가격이 싸고, public 버전을 사용하여 무료로 공부도 할 수 있기 때문에 강세를 띄운다.
다만, 데이터 품질이 점점 더 중요해지고 데이터 전문인력이 아닌 일반 직원들도 분석할 수 있도록 하는 Looker의 사용량이 점점 늘어나는 추세이다.

오늘 진행한 것🤓

데이터 전처리

  • '서울 생활이동 인구' 데이터 전처리 진행
    • 기간 : 2023년 1월 ~ 9월
    • 출발, 도착지는 서울에만 해당
    • 연령대는 '서울 시민생활' 데이터와 맞추기 위해 20대~60대까지만
    • '시민생활' 데이터와 시군구 코드가 일치하지 않아서 최신 법정동 코드를 적용
    • 요일, 월, 남녀 등 데이터 타입 및 값 변환

snowflake에 데이터 삽입

  • snowflake는 외부 파일을 사용해 데이터를 넣을 경우 50MB이하인 데이터를 사용해야 하지만, 전체 데이터는 1GB이고 월별로 나눠도 250MB를 넘기 때문에 python을 이용하여 데이터를 삽입했다.
  1. 우선 cmd에서 snowflake connector 모듈을 설치
    나는 pandas의 dataframe의 데이터를 넣을 것이기 때문에 정확하게 " "와 [ ]을 모두 써야한다. 지우면 안돼!
$ pip install "snowflake-connector-python[pandas]"
  1. 데이터를 넣을 테이블을 먼저 snowflake에 schema를 만들어둬야 한다.
    CREATE TABLE을 사용하여 테이블 형태를 만들어 둔다.
  2. python 파일로 와서 연결한다.
import snowflake.connector as snow
from snowflake.connector.pandas_tools import write_pandas

conn = snow.connect(
user="id",
password="pw",
account="account 탭에 가서 복사",
warehouse="warehouse 탭에 가서 복사",
database="내가 지정한 db 이름",
schema="내가 지정한 schema 이름")
  1. data의 column명과 snowflake 테이블의 column명을 동일하게 사용해야 한다. 또한 snowflake에서는 대소문자를 구분하고, 테이블 이름과 column명을 모두 대문자로 사용하므로 대문자로 모두 통일하자.
import pandas as pd

data = pd.DataFrame(~~~)
write_pandas(conn, data, "테이블 이름(대문자로)")

느낀 점😊

대소문자 구분한다는 사실을 알지 못해서 여기서 어이없이 시간을 보냈다. 테이블 이름, 컬럼 이름 모두 대문자로 통일! 아주 중요한 사실을 알았다!!!

profile
데이터 엔지니어를 꿈꾸는 주니어 입니다!

0개의 댓글