4. SuperSet 소개와 대시보드 생성

2024. 1. 25. 17:54TIL

다양한 시각화 툴 소개

 시각화 툴(대시보드, BI 툴)은 KPI, 지표, 중요한 데이터 포인트를 데이터 기반으로 계산/분석/표시해주는 툴이다. 결정권자로 하여금 데이터 기반 의사결정을 가능하게 하고 현업 종사자들이 데이터 분석을 쉽게 할 수 있게 해준다. 다양한 시각화 툴들이 존재한다.

  • Excel, Google Spreadsheet: 사실상 가장 많이 쓰이는 시각화 툴
  • Looker (구글)
    • LookML이 자체언어로 데이터 모델을 만드는 것으로 시작
    • 내부 고객뿐만 아니라 외부 고객을 위한 대시보드 작성가능
    • 고가의 라이센스 정책을 갖고 있으나 굉장히 다양한 기능 제공
  • Tableau (세일즈포스)
    • 다양한 제품군 보유, 일부는 무료
    • 제대로 배우려면 시간이 걸리지만 강력한 대시보드 작성가능
    • Looker가 뜨기 전까지 오랫동안 마켓 리더로 군림
  • Power BI (마이크로소프트)
  • Apache Superset (오픈소스)
  • Mode Analytics
    • SQL, R, Python 등을 기반으로 데이터 분석 가능
    • 조금 더 테크니컬한 인력 대상 애널리틱스 기능 제공
    • KPI 대시보드라기 보다 EDA (Exploratory Data Analysis) 툴에 가까움
  • ReDash
    • 오픈소스로 시작
    • Superset과 상당히 흡사
    • 더 강력한 쿼리 에디터를 제공하지만 사용자 권한 관련 기능은 부족
  • Google Studio, AWS Quicksight
  • Python: 데이터 특성 분석(EDA: Exploratory Data Analysis)에 더 적합

 중요한 점은 셀프서비스 대시보드를 만드는 것이다. 그렇지 않다면 매번 사람의 노동이 필요해지기 때문에 사용하기 쉬워야 직접 대시보드를 만들 수 있다. 데이터 품질이 점점 더 중요해지며 데이터 거버넌스가 필요한 이유이다.

 

Superset 소개

 Superset은 Airbnb에서 시작된 오픈소스로 현재 Airbnb의 전사 대시보드이다. 다양한 형태의 visualization와 손쉬운 인터페이스, 대시보드 공유를 지원한다. 엔터프라이즈 수준의 보안과 권한 제어 기능을 제공하며  API와 플러그인 아키덱처 제공으로 인한 확장성이 좋다. SQLAlchemy, Druid.io와 연동하여 실시간 데이터의 시각화도 가능하다. 

 Superset은 Flask와 React JS로 구성되며 sqlite을 메타데이터 데이터베이스로 사용한다. Redis를 캐싱 레이어로 사용하고 SqlAlchemy가 백엔드 DB 접근에 사용된다. Database는 관계형 데이터베이스, Dataset은 테이블을 뜻하며 Dashboard는 하나 이상의 chart로 구성된다. 

 

Superset으로 만들려는 대시보드 소개

 Database로 Redshift를 사용하여 채널별 Monthly Active User 차트와 Monthly Cohort 차트로 하나의 대시보드를 생성할 것이다. 채널별 Monthly Active User 차트는 user_session_summary라는 테이블을 만들어 MAU.csv파일을 Google Spreadsheet 차트 기능으로 시각화를 한다.

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

--MAU.csv
SELECT
 LEFT(ts, 7) "month",
 COUNT(DISTINCT userid) mau
FROM analytics.user_session_summary
GROUP BY 1
ORDER BY 1;

 

 Monthly Cohort 차트는 먼저 cohort_summary 테이블을 Redshift 단에 생성한다. 그 다음, cohort.csv파일을 Google Spreadsheet 피봇 테이블 기능을 사용해서 시각화를 수행한다. 

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;
 
--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;

 

Superset 설치 방법

 Superset 설치는 Docker 이용 설치 방법과 Preset.io에 있는 서비스 사용하는 두가지 방법이 있다. Docker에 익숙하고 개인컴퓨터 사양이 충분히 좋다면 Docker가 더 좋다. Preset.io는 무료 Starter 플랜이 있기는 하지만 회사 이메일이 있는 경우에만 사용 가능하다. 

 Docker는 특정 프로그램과 (그 프로그램을 실행하는데) 필요한 기타 소프트웨어들을 하나의 패키지로 만듦으로써 해당 프로그램의 개발과 사용을 도와주는 오픈소스 플랫폼이다. Docker Image는 단순히 응용 프로그램뿐만 아니라 그 프로그램이 필요로 하는 모든 다른 환경까지 포함한 소프트웨어 패키지이다. Docker Container는 Docker Image를 Docker Engine에서 실행한 것을 지칭한다. Docker Engine만 실행하면 그 위에서 다양한 소프트웨어들을 충돌 없이 실행 가능하다. 

 

Preset 설정

 Preset.io에 접속하여 Free Starter 선택하고 기타 항목 입력한다. WORKSPACE 생성하고 백엔드 데이터베이스로 Redshift를 선택한다. 그 다음, Workspace와 데이터베이스를 연결한다. 

 

Superset을 Docker로 설치

 Docker Engine을 설치 후 실행하여 설정 메뉴에서 Resources를 선택하고 메모리 할당 부분을 체크한다. 터미널 프로그램을 실행하여 적당한 폴더로 이동한다.

#Superset Github repo를 클론
git clone https://github.com/apache/superset.git

#superset 폴더로 이동
cd superset

#다음 2개의 명령을 수행
docker-compose -f docker-compose-non-dev.yml pull
docker-compose -f docker-compose-non-dev.yml up

#http://localhost:8088으로 웹 UI 로그인

 

Redshift 설정하고 MAU 차트 만들기

 Database Connection을 먼저 설정한다. Postgresql을 선택하고 앞서 공유받은 Redshift 연결정보(Host, Port, Database, ID, Password)를 입력한다. 이렇게 Database를 만들었으면 user_session_summary 테이블을 Dataset으로 추가한다. 차트 형식은 Line Chart로 해주고 이름: MAU(Monthly Active User), X-Axis: ts, Time Grain: month, Metrics: COUNT(DISTINCT userid), Dimension: channel로 설정한다.

 

Cohort 차트 만들고 대시보드 만들기

 Cohort 차트도 MAU 차트와 마찬가지로 먼저 Cohort_summary 테이블을 Dataset으로 추가한다. 차트 형식은 Pivot Table로 설정하고 이름: Monthly Cohort, Columns: DATEDIFF(month, cohort_month, visited_month), Rows: cohort_month, Time Grain: Month, Metrics: COUNT(*)로 한 뒤 KPI Dashboard라는 이름으로 차트와 함께 대시보드를 만든다. 그리고 앞서 만든 MAU 차트도 대시보드에 추가한다.

 

공부하며 어려웠던 내용

Superset을 Docker로 설치할 때 윈도우는 Git Bash에서 해야 되는 걸 몰라서 헤맸다.

'TIL' 카테고리의 다른 글

머신러닝 기초와 수학적 배경  (1) 2024.01.29
5. Tableau소개와 대시보드 생성  (0) 2024.01.26
3. 다양한 지표 소개  (2) 2024.01.24
2. Snowflake 운영과 관리  (0) 2024.01.23
1. 데이터 웨어하우스 소개  (1) 2024.01.22