본문 바로가기

데브코스/TIL

[TIL] 8주차_Day35: 데이터 웨어하우스 관리, 고급 SQL, BI 대시보드 (5)

💡Today I Learned

  • 데이터 웨어하우스, SQL, BI 대시보드에 대한 다섯 번째 수업을 진행했습니다.
  • Superset 이용한 대시보드 실습

1. 다양한 시각화 툴

- 시각화 툴이란

: 대시보드 or BI(Business Intelligence)

: KPI(Key Performance Indicator), 백엔드 관계형 DB/데이터 웨어하우스의 데이터 기반으로 계산/분석/표시

: 데이터 퀄리티가 중요 → ELT를 통한 summary 테이블을 사용하는 것이 일반적 (by. 데이터 분석가)

: 의사결정권자들의 데이터 기반 결정을 위함

 

*) Citizen Data Analyst: 현업 종사자들(데이터 인력이 아닌)이 대시보드를 직접 만들고 KPI를 정의, 팀에 필요한 작업을 중앙 데이터 팀을 통하지 않고 수행 (*데이터 민주화, 데이터 탈중앙화)

 

*) EDA(탐색적 데이터 분석): 데이터 사용 전, 데이터가 어떻게 생겼는지 탐색 (column, row, ... 시각화해서 확인) ex: 자동으로 대시보드 출력해주는 파이썬 라이브러리도 있음

 

- 종류

: Python → EDA에 더 적합

: Mode Analytics, ReDash

: etc

 

- Looker

: 구글 클라우드의 일부

: 셀프 서비스하기 좋음

: 누가 만든 거 가져다가 커스터마이징 하기 쉬움

: 누구나 대시보드 만들기 쉬움 → 너무 많아지면 정보 과잉, 데이터 디스커버리 문제..

 

- Tableau

: 어렵, but 강력한 대시보드

: 한 번 작성 시 수정이 어려움 (Looker와 반대) 극히 일부의 전문인력만 만들 수 o

 

- ReDash

: Superset과 흡사

 

- Mode Analytics

: SQL, R, Python으로 데이터 분석 가능

: KPI 대시보드라기 보다는 EDA 툴에 가까움

 

 

2. Superset

- 특징

: Airbnb에서 시작된 오픈소스 (Airflow도 Airbnb꺼)

: python의 SQLAlchemy와 연동 (SQLAlchemy와 연동 가능한 다양한 DB 지원)

  •  SQLAlchemy: 데이터베이스 인터페이스, 백엔드 DB 접근에 사용됨

; API, 플러그인으로 확장 가능

: Druid.io와 연동해 실시간 데이터도 시각화 가능

 

- 구조

: sqlite을 메타데이터 DB로 사용

: Redis를 캐싱 레이어로 사용 (백엔드 가기 전에 캐싱 → 성능 최적화) 

 

- 용어

Database: 관계형 데이터베이스 (백엔드 DB 엔진, ex: Redshift, Snowflake, ..)

Dataset: Database 안의 특정 테이블

Dashboard/Chart: Dashboard는 하나 이상의 chart로 구성

Dashboard 레벨에서 사용자별로 권한 다르게 설정 ('Role' 사용)

 

 

3. 만들고자하는 대시보드 구성하기

- 코호트(Cohort) 분석

코호트: 특정 속성을 바탕으로 나눠진 사용자 그룹 (ex: 사용자의 서비스 등록일)

코호트 기반 → 사용자 이탈률, 잔존률, 총 소비금액 등.. 계산 가능

사용자 잔존률 (Retention): 보통 월기반 시각화가 일반적

 

*) cohort_month:해당 사용자가 서비스를 처음 방문한 달 (한 사용자에 대해서는 동일)

*) visited_month: 그 후에 다시 방문한 달

 

 

4. Superset 설치

1) Docker 위에서 설치

$ git clone https://github.com/apache/superset.git

: Superset Github repo 클론

 

cd superset

: superset 폴더로 이동

 

*) Apple silicon(M1, M2)의 경우 docker-compose pull 명령 시

'no matching manifest for linux/arm64/v8 in the manifest list entries'

와 같은 에러 발생

$ export DOCKER_DEFAULT_PLATFORM=linux/amd64

: 환경변수 export하기

 

$ docker-compose -f docker-compose-non-dev.yml pull

: docker-compose pull (이미지 다운)

 

$ docker-compose -f docker-compose-non-dev.yml up

: docker-compose up (컨테이너 구동)

 

2) Preset (Superset SaaS 페이지)

: Preset에서의 한 Workspace == 하나의 Superset

: 여러 Workspace 넘나드는 사용자or팀 설정 가능 (Database/Dataset 연결은 동일)

 

 

5. (Docker 위에서) Superset 대시보드 만들기

- 웹 UI 접속

: (docker-compose up 상태에서) 웹 UI 로그인 → localhost/8088 포트로 접속 가능

디폴트 id: admin / pwd: admin

 

- DB (실습_Redshift) 접속

: host, port, database name('dev'), username, password → Redshift 연결 정보 입력

: Postgresql(도커에서 띄운 Superset, 따로 Redshift 확장 설치 x)

: Display 이름을 'Redshift' 로..

 

- Dataset(=테이블) import

: 2개의 Dataset 생성

: Database(앞서 연결한) > Schema(DB안의 여러 폴더 / 'analytics') > 안의 Table 선택 > Create Dataset And Create Chart

 

- Chart 생성

: chart type 선택 > Create new chart

: 차트 이름 지정

 

*) Line chart 기준 설정할 attribute

: X-AXIS (테이블의 컬럼 지정)

: TIME GRAIN (X-Axis의 단위)

: METRICS (SELECT문의 함수 → CUSTOM SQL로 사용자 지정 SQL문)

: DIMENSIONS (Group by 느낌? ex: channel 선택 후 channel 컬럼별로 line 차트 여러개 그려짐)

: Save시 만들어둔 Dashboard에 추가 가능

 

- Dashboard 생성

: 차트 생성 후 > save > 대시보드 이름 지정 > save & go to new dashboard

: Charts > 기존 차트 > save > 대시보드 이름 지정 > save & go to new dashboard

: Edit Dashboard로 크기/위치 조정 가능

  • Layout Elements의 여러 기능 (Filter, Divider, ...)

 


 

💡Furthermore

  • SQLAlchemy 개념
반응형