대시보드 소개와 구현
다양한 시각화 툴 소개
시각화 툴이란?
대시보드 또는 BI(Business Intelligence) 툴이라고 부른다. KPI(Key Performance Indicator), 지표, 중요한 데이터 포인트를 데이터 기반으로 계산/분석/표시해 주는 툴이다. 현업 종사자들이 데이터 분석을 쉽게 할 수 있도록 해주며, 결정권자들이 데이터 기반 의사결정을 가능하게 한다.
- 데이터 기반 결정 (Data-Driven Decision) vs 데이터 참고 결정 (Data-Informed Decision)
시각화 툴
- Excel, Google Spreadsheet
- Python
- Looker (구글)
- 2012년 미국 캘리포니아 산타크루즈에서 시작하였고 구글이 2019년 6월에 $2.6B에 인수
- LookML이 자체 언어로 데이터 모델을 만드는 것으로 시작
- 내부 고객뿐만 아니라 외부 고객을 위한 대시보드 작성가능
- 고가의 라이센스 정책을 갖고 있으나 다양한 기능 제공
- 대시보드 하나를 만들어 놓으면 쉽게 수정 가능
- Taebleau (세일즈포스)
- 2002년 미국 캘리포니아 마운틴뷰에서 시작하였고 세일즈포스가 2019년 6월에 $15.7B에 인수
- 다양한 제품군을 보유하였고, 일부는 사용이 무료
- 제대로 배우려면 시간이 꽤 필요하지만 강력한 대시보드 작성 가능
- Looker가 뜨기 전까지 오랫동안 마켓 리더로 군림
- 대시보드를 만든 뒤 수정하기 힘듦
- Power BI (마이크로소프트)
- Apache Superset (오픈소스)
- Mode Analytics
- 2013년 샌프란시스코에서 창업
- SQL, R, Python 등을 기반으로 데이터 분석 가능
- KPI 대시보드보다는 EDA 툴에 가까움
- ReDash
- 2020년에 Databricks가 인수
- 오픈 소스로 시작
- Superset보다 강력한 쿼리 에디터를 제공하지만 사용자 권한 관련 기능은 부족
- Google Studio
- AWS Quicksight : AWS 이름에 맞지 않게 기능이 떨어짐
어떤 시각화 툴을 선택할 것인가?
Looker 혹은 Tableau가 가장 많이 사용되는 추세이다. 특히 Tableau는 무료 버전으로 공부도 가능하다. 중요한 포인트는 셀프서비스 대시보드를 만드는 것인데, 데이터 민주화 / 데이터 탈중앙화의 관점에서는 Looker가 좋은 선택이지만 가격이 비싸다.
Superset 소개
Superset 소개
Airbnb에서 시작된 Airflow를 만든 Maxim이 같이 시작한 오픈소스이다. 다양한 형태의 시각화와 손쉬운 인터페이스, 대시보드 공유를 지원한다. 또한 엔터프라이즈 수준의 보안과 권한 제어 기능을 제공한다. SQLAlchemy와 연동되며, Druid.io와 연동하여 실시간 데이터의 시각화도 가능하다.
Superset 구조와 용어
- Flask와 React JS로 구성됨
- 기본으로 sqlite을 메타데이터 데이터베이스로 사용
- Redis를 캐싱 레이어로 사용
- SQLAlchemy가 백엔드 DB 접근에 사용
- Database : 관계형 데이터베이스
- Dataset : 테이블
- Dashboard : 대시보드는 하나 이상의 chart로 구성
실습을 진행할 대시보드 소개
만들어볼 두 개의 차트와 하나의 대시보드
- Database로 Redshift 사용
- 채널 별 Monthly Active User 차트 : 입력 테이블(dataset) - analytics.user_session_summary
- Monthly Cohort 차트 : 입력 테이블(dataset) - analytics.cohort_summary
Dataset 생성 - 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
MAU
스프레드시트로 시각화하면, 아래 쿼리의 결과가 담긴 파일을 활용하여 차트를 그릴 수 있다.
SELECT
LEFT(ts, 7) "month",
COUNT(DISTINCT userid) mau
FROM analytics.user_session_summary
GROUP BY 1
ORDER BY 1;
코호트(Cohort) 분석
코호트란 특정 속성을 바탕으로 나뉜 사용자 그룹이며, 보통 속성은 사용자가 서비스를 처음 사용한 월이다. 코호트 분석은 코호트를 기반으로 사용자의 이탈률, 잔존율, 총 소비금액 등을 계산하는 것이다. 아래의 사진은 일을 기준으로 코호트 분석을 진행한 것이다. 좋은 서비스라면 일정 시점 이후로 잔존율이 유지된다.
Dataset 생성 - 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;
Superset 설치 및 실습
preset.io
preset.io 페이지에 들어가 회원가입을 하고, 대시보드를 생성한다. 대시보드에 들어가 Setting > Database Connections에 들어가 다양한 데이터베이스와 연결할 수 있다. 강의에서는 Redshift를 연결하여 진행한다.
Docker > Superset
Docker에서 Superset을 설치하여 사용할 수 있다. 주의해야 할 점은 리소스를 많이 할당해야 하므로 컴퓨터 사양이 어느 정도 돼야 사용이 가능하다. 진행 과정은 다음과 같다.
- 적당한 폴더를 들어가 아래 명령어를 실행한다.
git clone https://github.com/apache/superset.git
- 다음 두 개의 명령을 실행한다.
docker-compose -f docker-compose-non-dev.yml pull
docker-compose -f docker-compose-non-dev.yml up
이후 Setting > Database Connections에 들어가서 PostgreSQL을 선택한다. Redshift가 따로 존재하지 않기 때문에 호환이 되는 PostgreSQL로 진행한다.
실습
실습은 어렵지 않기 때문에 설명은 생략하려고 한다. Charts에서 알맞은 형태의 차트를 선택하고 행, 열, 값에 적절히 테이블의 컬럼을 넣어주면 된다. 아래의 사진은 대시보드를 생성하여 차트를 추가해 준 것이다.
'[프로그래머스] 데이터 엔지니어링 데브코스 3기 > TIL(Today I Learn)' 카테고리의 다른 글
[TIL - 42일 차] 데이터 파이프라인과 Airflow (2) (0) | 2024.05.21 |
---|---|
[TIL - 41일 차] 데이터 파이프라인과 Airflow (1) (0) | 2024.05.20 |
[TIL - 34일 차] 데이터 웨어하우스 관리와 고급 SQL과 BI 대시보드 (4) (0) | 2024.05.09 |
[TIL - 33일 차] 데이터 웨어하우스 관리와 고급 SQL과 BI 대시보드 (3) (0) | 2024.05.08 |
[TIL - 32일 차] 데이터 웨어하우스 관리와 고급 SQL과 BI 대시보드 (2) (0) | 2024.05.07 |