💡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 개념
'데브코스 > TIL' 카테고리의 다른 글
[TIL] 10주차_Day42: 데이터 파이프라인, Airflow (2) (0) | 2023.12.20 |
---|---|
[TIL] 10주차_Day41: 데이터 파이프라인, Airflow (1) (1) | 2023.12.19 |
[TIL] 8주차_Day34: 데이터 웨어하우스 관리, 고급 SQL, BI 대시보드 (4) (0) | 2023.11.30 |
[TIL] 8주차_Day33: 데이터 웨어하우스 관리, 고급 SQL, BI 대시보드 (3) (1) | 2023.11.29 |
[TIL] 8주차_Day32: 데이터 웨어하우스 관리, 고급 SQL, BI 대시보드 (2) (0) | 2023.11.28 |