일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 데이터파이프라인
- redshift
- Django
- selenium
- spark
- 웹 스크래핑
- 웹 크롤링
- SQL
- Hive
- 데이터 웨어하우스
- ELT
- docker-compose
- airflow
- Serializer
- 데이터마트
- dag
- 알고리즘
- AWS
- docker
- snowflake
- truncate
- Django Rest Framework(DRF)
- yarn
- dag 작성
- Kafka
- 데이터레이크
- docker hub
- 컨테이너 삭제
- airflow.cfg
- ETL
Archives
- Today
- Total
개발 기록장
05. 대시보드 소개와 구현 본문
반응형
학습 주제: 다양한 시각화 툴, 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
- 오픈 소스로 시작
- ReDash 소스 Github
- 이를 바탕으로 서비스를 제공하는 같은 이름의 회사 존재
- 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 대시보드로 이용함
- Airflow를 만든 Maxim이란 사람과 같이 시작한 오픈소스
- 상용화 서비스도 시작됨
- Maxim이 직접 창업
- 특징
- 다양한 형태의 시각화와 손쉬운 인터페이스 지원
- 대시보드 공유 지원
- 엔터프라이즈 수준의 보안과 권한 제어 기능 제공
- 강력한 사용자 권한 관련 기능으로 Role 기반 권한 지정 가능
- SQLAlchemy와 연동
- 다양한 데이터베이스 지원
- Druid.io(데이터 스트리밍)와 연동해 실시간 데이터 시각화도 가능
- API 와 플러그인 아키텍처 제공으로 인한 확장성 좋음
Superset 구조와 용어
- Flask와 React JS로 구성됨
- 기본으로 Sqlite를 메타데이터 데이터베이스로 사용
- Redis를 캐싱 레이어로 사용
- SQLAlchemy가 백엔드 DB 접근에 사용됨
- 용어
- Database/Dataset
- Database: 관계형 데이터베이스(ex. Redshift)
- Dataset: 테이블
- Dashboard/Chart
- Dashboard: 하나 이상의 chart로 구성
- Database/Dataset
만들려는 대시보드 소개
대시보드: 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을 설치하면서 어려움을 겪었지만 이를 해결하고 다른 사람들에게 도움을 줄 수 있는 새로운 블로그 기록이 하나 늘어난 것에 대하여 뿌듯하다.
반응형
'데브코스(DE) > 데이터 웨어하우스 관리와 고급 SQL, BI 대시보드' 카테고리의 다른 글
04. Snowflake 운영과 관리 (0) | 2024.05.12 |
---|---|
03. Redshift 고급 기능 실습(권한과 보안/백업 등) (0) | 2024.05.08 |
02. Redshift 소개와 기능 (0) | 2024.05.07 |
01. 다양한 데이터 웨어하우스 옵션, ETL/ELT, 데이터 조직 (0) | 2024.05.07 |