본문 바로가기
데이터분석데브코스 8/이론

7주차 4. Superset 소개와 대시보드 생성

by DataJ 2025. 5. 21.

🧩 1. 시각화 툴과 대시보드란?

📌 시각화 툴의 정의

  • BI 툴(Business Intelligence) 또는 대시보드 툴이라고 불림
  • KPI, 주요 지표, 데이터 포인트들을 시각적으로 표현하여
  • 데이터 기반 의사결정(Data-Driven Decision)을 돕는 도구

📌 주요 시각화 툴

툴명 특징

Excel / Google Sheet 가장 널리 사용되는 기본 툴
Tableau (세일즈포스) 시각화 다양, 대중적 사용률 높음
Looker (구글) LookML 사용, 고급 사용자 대상
Power BI (MS) MS 생태계 연동에 강점
Apache Superset 오픈소스 기반, 기업용 대시보드 가능
Mode Analytics SQL, R, Python 통합 분석
ReDash 오픈소스, 쿼리 에디터 강점
Google Data Studio / AWS QuickSight 클라우드 환경 최적화 툴

🧭 2. Superset 소개

📌 Superset 개요

  • Airbnb에서 개발된 오픈소스 대시보드 툴
  • 다양한 DB 연동 + 직관적인 시각화 UI 제공
  • 공식 GitHub: apache/superset
  • 상용 서비스: preset.io

📌 주요 기능

  • 시각화 차트/대시보드 생성 및 공유
  • SQLAlchemy 기반 다양한 DB 지원 (Redshift, MySQL 등)
  • 실시간 데이터 시각화 가능 (Druid.io 연동 시)
  • API, 플러그인 아키텍처를 통한 확장성
  • 엔터프라이즈급 보안/권한 관리

📌 기술 스택

구성요소 설명

Frontend React.js
Backend Flask (Python)
Metadata DB 기본 SQLite 사용
캐시 레이어 Redis
DB 접근 SQLAlchemy 이용

📊 4. MAU (Monthly Active Users) 차트 생성

📌 입력 테이블 생성

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 집계 쿼리 예시

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

📌 Superset 차트 설정

  • Chart Type: Line Chart
  • Metrics: COUNT_DISTINCT(userid)
  • Time Column: ts, Grain: Month
  • Dimension: channel

📊 5. Cohort 차트 생성

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

📌 Cohort 집계 쿼리 예시

SELECT
  DATEDIFF(month, cohort_month, visited_month) AS month,
  cohort_month,
  COUNT(userid) AS users
FROM analytics.cohort_summary
GROUP BY 1, 2
ORDER BY 1, 2;

📌 Superset 차트 설정

설정 항목 값

Chart Type Heatmap
Rows cohort_month
Columns visited_month 또는 DATEDIFF(month, cohort_month, visited_month)
Metrics COUNT(userid)