1. 다양한 시각화 툴
2. Superset
3. 대시보드 제작 예시
4. Superset 설치
5. Redshift 설정 및 차트 생성
6. 정리
대시보드 혹은 BI(Business Intelligence)툴이라고 부르기도 함
KPI (Key Performance Indicator), 지표, 중요한 데이터 포인트들을 데이터를 기반으로 계산/분석/표시해주는 툴
데이터 기반 의사결정
데이터 기반 결정 (Data-Driven Decision)
데이터 참고 결정 (Data-Informed Decision)
현업 종사자들이 데이터 분석을 쉽게 할 수 있도록 하는 툴
시티즌 데이터 애널리스트, 사이언티스트란?
데이터 인력이 아닌 현업에 있는 사람들이 대시보드를 직접 만들고 지표를 정의해서 팀에 필요한 일들을 중앙에 있는 데이터 팀을 통하지 않고 수행하는 사람들
Excel, Google Spreadsheet : 가장 많이 쓰이는 시각화 툴
Python, R : 데이터 특성 분석 (EDA)에 적합
Mode Analytics : 오픈 소스 기반에 EDA에 적합
위 3가지는 정말로 제대로 된 지표를 보고 KPI를 확인하기 위한 대시보드
위 2가지도 Power BI와 비슷한 기능을 제공하지만 오픈소스인 만큼 기능에 한계가 있습니다.
이 2가지는 기능이 정말 떨어짐
2012년 미국 캘리포니아 산타크루즈에서 시작
구글이 2019년 6월에 $2.6B에 인수
특징
오픈소스로 시작
Superset과 상당히 흡사
2020년에 Databrick이 인수
2013년에 샌프란시스코에서 창업됨
SQL, R, Python 등을 기반으로 데이터 분석 가능
Looker 혹은 Tableau가 가장 많이 사용되는 추세
중요한 포인트는 셀프서비스 대시보드를 만드는 것
안 그러면 매번 사람의 노동이 필요해짐
사용하기 쉬워야 더욱 많은 현업 인력들이 직접 대시보드를 만들 수 있습니다.
데이터 민주화 (Data Democratization)
데이터 탈중앙화 (Data Decentralization)
데이터 품질이 중요해짐에 따라 데이터 거버넌스가 필요
이런 측면에서 Looker가 좋은 선택이지만 비쌈
다양한 형태의 visualization과 손쉬운 인터페이스 지원
대시보드 공유 지원
엔터프라이즈 수준의 보안과 권한 제어 기능 제공
SQLAlchemy와 연동
Druid.io와 연동하여 실시간 데이터의 시각화도 가능
API와 플러그인 아키텍처 제공으로 인한 확장성이 좋음
Flask와 React JS로 구성됨
파이썬으로 만들어짐
기본으로 sqlite를 메타데이터 데이터베이스로 사용
( sqlite는 병렬성이 떨어지기에 사실 상 사용하지 않음 )
Redis를 캐싱 레이어로 사용
SqlAlchemy가 백엔드 DB 접근에 사용
Database/Dataset
Dashboard/Chart
하나의 대시보드 안에서 2개의 차트를 생성해보려고 합니다.
Database로 Redshift를 사용
채널별 Monthly Active User 차트
analytics.user_session_summaryMonthly Cohort 차트
analytics.cohort_summary입력 테이블로 Redshift의 user_session_summary를 사용하도록 하겠습니다.
# CTAS로 user_session_summary를 생성
CREATE TABLE analytics.user_session_summary AS
SELECT usc.*, t.ts
FROM raw_data.user_session_channel usc
LEFT JOIN raw_data.session_timestamp t ON t.sessionid = usc.sessionid
Python에서 gspread라는 모듈을 통해 구글 스프레드 시트 조작을 코드할 수 있습니다.
Redshift에서 아래 쿼리를 실행하고
그 결과를 mau.csv로 저장합니다.
SELECT
LEFT(ts, 7) "month",
COUNT(DISTINCT userid) mau
FROM analytics.user_session_summary
GROUP BY 1
ORDER BY 1;
이 파일을 Googele Spreadsheet로 로딩
차트 기능을 사용해 시각화

서비스를 사용한 사람이 시간이 지남에 따라 어떤 형태로 재방문을 하고 어떤 형태로 돈을 사용하는지를 분석하여 이탈률, 잔존률, 총 매출 금액 등을 파악
Cohort 분석을 위해 Redshift에 cohort_summary라는 테이블을 생성해주겠습니다.
CREATE TABLE analytics.cohort_summary as
SELECT cohort_month, visited_month, cohort.userid
FROM (
SELECT userid, date_trunc('month', MIN(ts)) cohort_month
FROM raw_data.user_session_channel usc
JOIN raw_data.session_timestamp t ON t.sessionid = usc.sessionid
GROUP BY 1
) cohort
JOIN (
SELECT DISTINCT userid, date_trunc('month', ts) visited_month
FROM raw_data.user_session_channel usc
JOIN raw_data.session_timestamp t ON t.sessionid = usc.sessionid
) visit ON cohort.cohort_month <= visit.visited_month and cohort.userid = visit.userid;
Redshift에서 아래 쿼리를 실행하고
그 결과를 cohort.csv로 저장합니다.
SELECT
DATEDIFF(month, cohort_month, visited_month) month,
cohort_month,
COUNT(userid) users
FROM analytics.cohort_summary
GROUP BY 1, 2
ORDER BY 1, 2;
이 파일을 Googele Spreadsheet로 로딩
피봇 테이블 기능을 사용해 시각화
설치하는 방법에는 2가지 방법이 있습니다.
1. Docker 이용 설치
-> 저는 Docker를 사용해서 진행하겠습니다.
예를 들어, MySQL을 다른 OS에서 설치하려면 다양한 변수가 존재합니다.
-> 이 경우, 설치 과정이 OS와 OS의 버전에 따라 달라지게 됩니다. 그렇기 때문에 다양한 다수의 다른 소프트웨어들의 설치가 동반되는 것이 일반적입니다.
특정 프로그램과 그 프로그램을 실행하는데 필요한 기타 소프트웨어들을 하나의 패키지로 만듦으로써 해당 프로그램의 개발과 사용을 도와주는 오픈소스 플랫폼 입니다.
Docker Image : 이 패키지를 파일 시스템 형태로 만드는 것
Docker Registry : Docker Image 공유소
Docker Container : Docker Image를 실행 시킨 것
( 사전에 Docker Engine이 실행되어 있어야 합니다. )

Docker Image
Docker Container
Host: learnde.~.ap-northeast-2.redshift.amazonaws.com
Docker 메모리 할당
( Setting -> Resources )
wsl2 옵션을 사용하고 있으므로 메모리를 제한하기 위해서는
c:\Users\사용자명위치에.wslconfig파일을 생성해주어야합니다.[wsl2] memory=8GB processors=4 swap=0
Superset의 Docker 기반 설치 문서 참조
https://superset.apache.org/docs/installation/docker-compose/
원하는 경로에 Superset Github repo를 클론
git clone https://github.com/apache/superset.git
superset 폴더로 이동해서 아래 명령을 수행
cd superset
git checkout 1.4.0
docker-compose -f docker-compose-non-dev.yml pull
# superset 실행
docker-compose -f docker-compose-non-dev.yml up
docker-compose -f docker-compose-non-dev.yml up에서 SECRET_KEY 에러가 발생하는 경우
superset/superset/config.py에서
SECRET_KEY = ...를 복사해서
superset/docker/pythonpath_dev/supersetconfig.py에 값을 붙여넣어주면 해결이 됩니다.
http://localhost:8088 로 웹 UI 로그인
이후에 다시 실행을 하기 위해선, Docker -> Actions에서 시작 버튼을 눌러주면 됩니다.

- Datasets 메뉴 : import된 Dataset을 선택 가능 (연산을 할 때마다 읽어오는 방식)
- (+DATASET) 클릭
- user_session_summary 테이블 선택
- CREATE DATASET AND CREATE CHART : 차트 생성 화면으로 이동
Chart type의 #Popular 태그에서 Line Chart를 선택하고 차트 생성

MAU 차트를 생성

중요한 KPI를 Summary해서 보여줄 때 유용
( 시간을 두고 어떻게 변하는 지 )
월 간 매출이나 지난 18개월 매출이 어떻게 변화하고 있는지 보여주기 용이
WoW : Weak of Weak
- Datasets 메뉴 : import된 Dataset을 선택 가능 (연산을 할 때마다 읽어오는 방식)
- (+DATASET) 클릭
- chort_summary 테이블 선택
- CREATE DATASET AND CREATE CHART : 차트 생성 화면으로 이동
Chart type의 #Popular 태그에서 Pivot Chart를 선택하고 차트 생성

MAU 차트를 생성

위에서 만든 차트와의 차이는 Columns 뿐 입니다.
Columns이 연도 월이 아니라 일관되게 볼 수 있도록 조정한 차트입니다.
cohort_month 이후 몇 번째 방문한 사람인지 한 눈에 보기 쉽습니다.
( retention 계산하기가 쉬워짐 )

KPI Dashboard란 이름의 대시보드를 생성

Cohort 차트 크기 조정 - EDIT DASHBOARD

대시보드에 MAU 차트 추가

클라우드 데이터웨어하우스의 기능은 대동소이
데이터 거번넌스
대시보드
후자가 Tableau, Looker, Power BI, Superset 등등 -> KPI/지표 대시보드
전자는 Mode Analytics, Python Notebook, Excel 등등