개발 기록장

05. 대시보드 소개와 구현 본문

데브코스(DE)/데이터 웨어하우스 관리와 고급 SQL, BI 대시보드

05. 대시보드 소개와 구현

jxwxnk 2024. 5. 12. 19:21
반응형

학습 주제: 다양한 시각화 툴, Superset 소개 및 실습, MAU 차트, Cohort 차트

다양한 시각화 툴

시각화 툴

  • 대시보드 또는 BI(Business Intelligence) 툴이라고 부르기도 함
  • KPI(Key Performance Indicator, 지표, 중요한 데이터 포인트들을 데이터 기반으로 계산/표시/분석 해주는 툴
  • 데이터 기반(Data-Driven Decision) 의사결정을 지원함
  • 현업 종사자들이 데이터 분석을 쉽게 할 수 있게 함

시각화 툴의 종류

  • Excel, Google, Spreadsheet: 가장 많이/쉽게 쓰이는 시각화 툴
  • Python: 데이터 특성분석(EDA)에 더 적합
    • EDA(Explordatory Data Analaysis): Data를 사용하기 전 데이터 특성에 대해 알아보는 것(ex. 비어있는 칼럼 개수, 컬럼간의 관계, 데이터 개수 등)
    • 보통 Python을 사용하는 경우는 Jupyter Notebook을 이용하는 경우가 많음
  • Looker(구글)
  • Tableau(세일즈포스)
  • Power BI(마이크로소프트)
  • Apache Superset(오픈소스)
  • Mode Analyrics, ReDash
  • Google Studio
  • AWS Quicksight

Looker

  • 2012년 미국 캘리포니아 산타크루즈에서 시작
  • 구글이 2019년 6월 $2.6B에 인수하여 지금은 구글 클라우드의 일부
  • 특징
    • LookML이 자체언어로 데이터 모델을 만드는 것으로 시작
    • 내부 고객뿐만 아니라 외부 고객을 위한 대시보드 작성 가능
    • 고가의 라이센스 정책을 갖고 있으나 다양한 기능 제공
    • 한국에서는 잘 안 쓰이지만 실리콘 밸리에서 굉장히 많이 사용됨
    • 쉽게 대시보드 제작 가능 But, 누구나 대시보드를 제작해 정보 과잉의 문제 발생 가능성
    • 확장성과 가변성(?)이 Tableau 보다 좋음

Tableau

  • 2002년 미국 캘리포니아 마운틴뷰에서 시작하여 2013년 상장
  • 세일즈포스가 2019년 6월 $15.7B에 인수함
  • 특징
    • 다양한 제품군 보유, 일부는 사용이 무료
    • 배우기는 어려우나(시간이 걸림) 강력한 대시보드 작성 가능
      • 전문인력만 Tableau 조작 가능(전문성 인정?)
    • Looker가 뜨기 전 까지 오랫동안 시장 리더로 군림

ReDash

  • 오픈 소스로 시작
  • Superset과 상당히 유사함
    • 더 강력한 쿼리 에디터를 제공하지만 사용자 권한 관련 기능은 부족함
    • ReDash는 SQL editor가 존재(technical한 툴)
  • 2020년 Databricks가 인수함

Mode Analytics

  • 2013년 샌프란 시스코에서 시작됨
  • SQL, R, Python 등을 기반으로 데이터 분석 가능
    • 기술적 인력을 대상으로 한 Analytics 기능 제공
    • KPI 대시보드보단 EDA(Exploratory Data Analysis)툴에 가까움

시각화 툴을 선택할 때 고려할 점

  • Looker 또는 Tableau가 가장 많이 사용되는 추세
    • 두 툴 모두 처음 배우는데 시간이 필요함
    • Tableau의 가격이 더 싸고 무료 버전도 존재해서 공부하기 좋음
  • 중요한 포인트는 셀프 서비스 대시보드를 만드는 것
    • 그렇지 않다면 매번 사람의 노동이 필요함
      • 60-70%의 질문을 셀프서비스 대시보드로 할 수 있다면 대성공
    • 사용하기 쉬워야 더 많은 현업 인력들이 직접 대시보드 제작 가능
      • 데이터 민주화(Data Democratization), 데이터 탈중앙화(Data Decentralization)
      • 데이터 품질이 더 중요해지며 데이터 거버넌스가 필요한 이유가 됨
    • 이런 측면에서 Looker가 더 좋은 선택이지만 가격이 비쌈

Supserset

Supserset 소개

  • Airbnb에서 시작된 오픈소스
    • Airflow를 만든 Maxim이란 사람과 같이 시작한 오픈소스
      • Superset 소스 Github
      • 현재 Airbnb 전사 대시보드가 Superset
      • Dropbox에서 데이터 Explore 대시보드로 이용함
  • 상용화 서비스도 시작됨
  • 특징
    • 다양한 형태의 시각화와 손쉬운 인터페이스 지원
    • 대시보드 공유 지원
    • 엔터프라이즈 수준의 보안과 권한 제어 기능 제공
      • 강력한 사용자 권한 관련 기능으로 Role 기반 권한 지정 가능
    • SQLAlchemy와 연동
      • 다양한 데이터베이스 지원
    • Druid.io(데이터 스트리밍)와 연동해 실시간 데이터 시각화도 가능
    • API 와 플러그인 아키텍처 제공으로 인한 확장성 좋음

Superset 구조와 용어

  • Flask와 React JS로 구성됨
  • 기본으로 Sqlite를 메타데이터 데이터베이스로 사용
  • Redis를 캐싱 레이어로 사용
  • SQLAlchemy가 백엔드 DB 접근에 사용됨
  • 용어
    • Database/Dataset
      • Database: 관계형 데이터베이스(ex. Redshift)
      • Dataset: 테이블
    • Dashboard/Chart
      • Dashboard: 하나 이상의 chart로 구성

만들려는 대시보드 소개

대시보드: MAU 차트 + Cohort 차트

  • 두 개의 차트로 하나의 대시보드 생성
  • Database는 Redshift 사용
  • 채널별 Monthly Active User 차트
    • 입력 테이블(Dataset): analytics.user_session_summary
  • Monthly Cohort 차트
    • 입력 테이블(Dataset): analycics.cohort_summary

MAU 차트 입력: user_session_summary

  • Monthly Active User
  • session단의 완전한 정보를 갖게 만든 테이블
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;

Cohort 분석

  • 코호트(Cohort)란?
    • 특정 속성을 바탕으로 나뉘어진 사용자 그룹
    • 보통 속성은 사용자의 서비스 등록 월
  • 코호트 분석이란?
    • 코호트를 기반으로 사용자의 이탈률, 잔존률, 총 소비금액 등을 계산
  • 코호트 기반 사용자 잔존률
    • 보통 월 기반으로 시각화하는 것이 일반적

Cohort 차트 입력: cohort_summary

  • Redshift 단에 생성
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;

Supserset 설치

Docker 이용 설치 vs. Preset.io에 있는 서비스 이용

  • Docker에 익숙하고 개인 컴퓨터 사양이 충분히 좋다면 Docker가 더 좋음
    • 이 경우는 Superset 오픈 소스를 그대로 쓰는 형태
  • Preset.io는 무료 Starter 플랜이 있으나 회사 이메일이 있는 경우만 사용 가능
    • Superset 오픈 소스를 기반으로 변경된 버전을 사용하는 형태. But, 오픈소스 버전과 크게 다르지 않음

Docker 이용 설치

Docker란?

  • 특정 프로그램과 (그 프로그램을 실행하는데)필요한 기타 소프트웨어들을 하나틔 패키지로 만들어 해당 프로그램의 개발과 사용을 도와주는 오픈소스 플랫폼
  • 가상환경과 비슷한 개념(Linux 기반의 플랫폼)
  • Docker Image
    • 단순히 응용 프로그램 뿐만아니라 그 프로그램이 필요로 하는 모든 다른 환경까지 포함한 소프트웨어 패키지
    • 패키지를 파일 시스템의 형태로 만드는 것
    • Image는 공유 가능
      • Docker Registry(Docker Hub): Docker Image 공유소
  • Docker Container
    • Docker Image를 Docker Engine에서 실행한 것(Build)
    • Docker Engine만 실행하면 그 위에서 다양한 소프트웨어들을 충돌 없이 실행 가능

설치 방법


데이터 시각화 실습

Google SpreadSheet에서 시각화

  • MAU(Monthly Active User) 차트

  • Monthly Cohort 차트

Superset에서 대시보드 생성

  • MAU(Monthly Active User) 차트
  • Monthly Cohort 차트
  • 대시보드: MAU + Cohort

공부하며 느낀점

데이터 직무를 공부하면서 Looker, Tableau 등 다양한 시각화 도구에 대해 막연한 궁금증이 있었다. 그동안은 Seaborn 등을 통해 시각화만 해봤음. 이번 Superset 실습을 통해 시각화 툴/ 대시보드의 편리함을 깨닫게 되었다. 또 Docker 위에 Superset을 설치하면서 어려움을 겪었지만 이를 해결하고 다른 사람들에게 도움을 줄 수 있는 새로운 블로그 기록이 하나 늘어난 것에 대하여 뿌듯하다.

반응형