Airbnb에서 시작된 오픈소스

  • Airflow를 만든 Maxim이란 사람이 같이 시작한 오픈소스
  • 상용화 서비스도 시작됨

Superset이란?

  • 다양한 형태의 visualization와 손쉬운 인터페이스 지원
  • 대시보드 공유 지원
  • 오픈소스이지만 엔터프라이즈 수준의 보안과 권한 제어 기능 제공
  • SQLAlchemy와 연동
    • sql이 연동되는 다양한 데이터베이스 지원
  • Druid.io와 연동하여 실시간 데이터의 시각화도 가능
  • API와 플러그인 아키텍처 제공으로 인한 확장성이 더 좋음

Superset 구조와 용어

  • Flask와 React JS로 구성됨

  • 기본으로 sqlite을 메타데이터 데이터베이스로 사용

  • Redis를 캐싱 레이어로 사용

  • SqlAlchemy가 백엔드 DB 접근에 사용됨

  • Database/Dataset

    • Database == 관계형 데이터베이스 (예: Redshift)
    • Dataset == 테이블
  • Dashboard/Chart

    • Dashboard는 하나 이상의 chart로 구성

실습

만들어볼 두 개의 차트와 하나의 대시보드

  • Database로 Redshift 사용
  • 채널별 Monthly Active User 차트
    • 입력 테이블(Dataset)은 analytics.user_session_summary
  • Monthly Cohort 차트
    • 입력 테이블(Dataset)은 analytics.cohort_summary

두개의 차트로 하나의 대시보드 생성

MAU(Monthly Active User) 차트 입력 : 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

session 단의 완전한 정보를 갖게 만든 테이블
이를 바탕으로 시각화를 구현할 예정.

구글 스프레드시트로 해보는 MAU 시각화

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

이 쿼리의 결과를 다운로드 받아 mau.csv로 저장

  • 이 파일을 Google Spreadsheet로 로딩
  • 이를 차트 기능을 사용해서 시각화 수행

코호트 분석이란 ?

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

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;

구글 스프레드시트로 해보는 코호트 시각화


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;

  • 이 파일을 Google Spreadsheet로 로딩

  • 이를 피봇 테이블 기능을 사용해서 시각화 수행

Superset 설치 방법

Superset으로 대시보드를 만듬에 있어 두가지 설치 방법이 있다.

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

  • Docker에 익숙하고 개인컴퓨터 사양이 충분히 좋다면 Docker가 더 좋음
    • 이 경우는 Superset 오픈소스를 그대로 쓰는 형태
  • Preset.io는 무료 Starter 플랜이 있기는 하지만 회사 이메일이 있는 경우에만 사용 가능
    • Superset 오픈소스를 기반으로 변경된 버전을 사용하는 형태. 하지만 오픈소스 버전과 크게 다르지 않음.
  • 두 가지 설정 방법을 일단 모두 설명
    • Preset 셋업
    • Docker Superset 셋업
    • (세번째 방법은) 리눅스 서버에 설치하는 것
  • 차트/대시보드 생성 방식은 Superset 기준으로 설명

Docker란 무엇인가?

  • 예를 들어 MySQL을 다른 OS에서 설치하려면 다양한 변수가 존재

    • 즉 설치 과정이 OS와 OS의 버전에 따라 달라지게 됨
    • 다양한 다수의 다른 소프트웨어들의 설치가 동반되는 것이 일반적임
  • Docker는 특정 프로그램과 (그 프로그램을 실행하는데) 필요한 기타 소프트웨어들을 하나의 패키지로 만듬으로써 해당 프로그램의 개발과 사용을 도와주는 오픈소스 플랫폼

    • 이 패키지를 먼저 파일 시스템 형태로 만드는데 이를 Docker Image라고 함
      • 이 Image는 다른 이들과 공유 가능
      • Docker Image 공유소를 Docker Registry(Docker Hub)라고 부름
    • Docker Image를 실행시킨 것을 Docker Container라고 부르며 이 안에서 해당 프로그램이 실행됨
      • 이 때 Docker Engine이 먼저 실행되어 있어야함
  • Docker Image

    • 단순히 응용 프로그램 뿐만 아니라 그 프로그램이 필요로 하는 모든 다른 환경까지 포함한 소프트웨어 패키지
    • Docker Registry에 가면 다양한 Docker Image들을 찾아볼 수 있음
  • Docker Container

    • Docker Image를 Docker Engine에서 실행한 것을 지칭
    • Docker Engine만 실행하면 그 위에서 다양한 소프트웨어들을 충돌없이 실행 가능

Superset을 Docker로 설치

Docker는 이미 설치되어있는 상태.

Docker Superset 실행

  • Superset의 Docker 기반 설치 문서 참조
  • 먼저 터미널 프로그램을 실행
  • 적당한 폴더로 이동
  • 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
  • 아래는 최신 버전을 다운로드. 특정 버전을 다운로드하려면 아래를 먼저 실행
    ```shell
    git checkout 1.4.0
    ```
  • https://localhost:8088으로 웹 UI 로그인
  • admin:admin 사용

Redshift 설정하고 MAU 차트 만들기

Docker 위 Superset에서 Dataset을 먼저 import하고 다음으로 MAU 차트 생성

요약

  • Database Connection 설정
  • Dataset (user_session_summary 테이블) import하기
  • MAU 차트 만들고 저장하기

Database Connection 설정

  • Data에서 Database Connections 클릭
  • Postgres 클릭 (오픈소스버전에서는 Redshift 선택이 없음)

    DB 관련 정보 입력 후 Display Name을 Redshift로 입력해준 후 Connection Database

    연결완료

Dataset (user_session_summary 테이블) import하기


Datasets 클릭 후 + Dataset 클릭

위와 같이 설정 후 Create dataset and create chart 클릭

Line Chart 클릭 후 Create new chart 클릭

MAU 차트 만들고 저장하기


Chart Source 및 x-axis, time grain, metrics 설정 후 Create Chart하면 위와 같은 화면 확인 가능


채널(Facebook, Instgram, etc...)별로 보고싶을 경우 Dimensions에 channel 선택 후 Update Chart클릭 하면 채널별 그래프 확인 가능 위의 색깔 선으로 추가 및 제거 가능

Save chart눌러서 차트 저장

Cohort 차트 만들고 대시보드 구성하기

Cohort 차트 만들고 앞서 MAU 차트와 묶어서 대시보드 생성

요약

  • Dataset (cohort_summary 테이블) 임포트하기
  • Cohort 차트 만들기
  • Cohort 차트로 일단 대시보드 생성
  • MAU 차트를 대시보드에 추가

Dataset (cohort_summary 테이블) 임포트하기


위와 같이 입력 후 Create dataset and create chart 클릭

pivot table 선택

Cohort 차트 만들기


위와 같이 세팅 후 create chart하면 첫번째 테이블 생성 가능(x축이 월인)

Columns를 기준월로부터 몇달차이가 나는지로 나타내기 위해 기존 컬럼을 삭제 후 새로 생성을 누른 후 Custom SQL에서 위와 같이 입력 후 Save

그럼 위와 같은 테이블 생성 가능

Cohort 차트로 일단 대시보드 생성


Save 누룬 후 위에서 Dashboard 생성 후 Save & go to dashboard 클릭

위와 같이 대시보드 확인 가능, Edit눌러서 드래그엔 크기 조절로 수정 가능

MAU 차트를 대시보드에 추가


Charts에 가 미리 만들어 놓은 MAU 차트 선택 후 KPI Dashboard에 추가 후 Save & go to dashboard클릭 하면 대시보드에 추가가 된다.

위가 최종 수정한 KPI 대시보드

profile
keep growing

0개의 댓글