[실습으로 배우는 태블로 by 주정민 튜터]
0. 들어가기 전
- 태블로에서 추가 기능 구현하고 싶다면? 공식 문서에서 확인 후 구글링 하는 것이 좋음
└ 공식 유튜브 https://www.youtube.com/@Tableau-eo8gj
└ 공식 문서 사이트(https://help.tableau.com/current/guides/get-started-tutorial/ko-kr/get-started-tutorial-home.htm
└ 추천 아티클 참고: https://www.tableau.com/ko-kr/learn/whitepapers
1. BI 소개
1) BI란?
- 비즈니스 인텔리전스 (Business Intelligence, BI)의 약어
- 조직이 데이터 기반 의사 결정을 빠르게 할 수 있도록 돕는 비즈니스 분석, 데이터 마이닝, 데이터 시각화 등 도구
- BI 도구를 활용해 드래그앤 드랍으로 손쉽게 데이터 분석 및 시각화 가능(노 코드 툴)
2) 일상 속 데이터기반 의사결정
- 예시) 인포그래픽, 건강앱 메인 대시보드, 기상청 날씨예보 등
3) 실무 BI 프로세스
- (현실) 각 팀마다 흩어져있는 Excel 데이터 트래킹 (이상) 전사 BI 자동화 작업을 통한 전체 대시보드 활용
- 현업에서는 Ad-hoc 업무가 많고, 각 팀이나 담당자에게 수많은 업무 요청이 들어옴
└ Ad-hoc 업무는 한 번 쓰이고 버려지는 업무로 주로 데이터 추출이나 쿼리 작성 등 업무를 일컫음
- 대시보드 생성을 위해 어떤 지표를 추가하면 좋을지 타 팀과 싱크를 맞추고, 데이터 엔지니어와 커뮤니케이션도 필요
4) BI 워크 플로우
- 데이터 인프라: 데이터 레이크 → 데이터 웨어하우스 → 데이터 마트 → BI 툴
└ 데이터 레이크: 모든 Raw data(정형 데이터, 로그 데이터, 테이블 등) 저장할 수 있는 스토리지
└ 데이터 웨어하우스(DW): 데이터를 장기적인 보존용으로 통합, 정제, 분석하여 정리한 저장소
· 예시) AWS Redshift, Snowflake, Google Bigquery
└ 데이터 마트(DM): 부서별, 목적별 분석용으로 만든 데이터 웨어하우스의 데이터 일부분
- BI 설계 및 생성 내 주요 담당자
└ 데이터 마트 설계 및 구축: 데이터 엔지니어/백엔드 엔지니어/Analytics Engineer/BI 엔지니어 등
└ 대시보드 구축: 데이터 분석가/BI 분석가 등
└ 대시보드 뷰어: 경영진/Product Owner/Product Manger 등
5) 왜 Tabelau인가?
① 장점
- Excel, CSV, 스프레드시트 등 다양한 형식의 파일을 대시보드로 생성해 쉽게 공유 가능
- 손쉬운 Drag & Drop으로 인터랙티브한 대시보드와 그래프 시각화
- 최근 많은 회사들이 태블로를 BI툴로 활용
- 무료로 글로벌 커뮤니티와 템플릿, 강의 참고 가능
② 단점
- 데이터 용량이 크거나 개발 대시보드 양이 많아지면 대시보드 로딩 속도 저하
- 다른 BI툴과 비교해 가격이 비쌈
6) 다양한 BI 툴 소개
① BI 툴
- Google Looker Studio: https://lookerstudio.google.com/
- Microsoft PowerBI: https://powerbi.microsoft.com/ko-kr/landing/free-account/
- Redash: https://redash.io/
- Apache Superset: https://superset.apache.org/
- Microstrategy(MSTR): https://www.microstrategy.com/
② 프로덕트 대시보드 툴
- GA4: https://marketingplatform.google.com/about/analytics/
- Amplitude: https://www.ab180.co/solutions/amplitude
- Mixpanel: https://mixpanel.com/
③ Python 라이브러리 활용 대시보드: 모델 및 실험 모니터링에 활용
- Plotly dash: https://dash.plotly.com/
- Streamlit: https://streamlit.io/
- Gradio: https://www.gradio.app/
2. Tableau와 친해지기
1) 구조 및 권한
▶ 구조
- Tableau Desktop: Tableau Desktop에서 데이터를 시각화하는 역할(클라우드에 저장)
- Tableau Cloud(Tableau Online): Tableau Server가 SaaS 버전으로 제공되는 형태
- Tableau Prep: Tableau Desktop에 필요한 데이터 전처리 역할
- Tableau Server: Tableau Server를 통해 게시 및 배포
- Tableau Public: 대시보드 작업 결과물을 PC의 로컬에 저장
▶ 권한
- creator: 전체 권한 보유(원본 데이터 편집, 대시보드 편집, 게시, 보기)
- explorer: 대시보드 편집과 게시 가능
- viewer: 접근 권한이 있거나 공유된 통합 문서 대시보드 보기만 가능
* 본 실습에서는 Tableau Desktop/Prep/Server 모두 이용 가능한 creator 버전으로 진행
2) 데이터 연결와 전처리
① 데이터 연결
- 데이터 연결하기는 태블로 Desktop(유료 버전)에서만 활용 가능
- 기본 제공 데이터, 파일(csv, xlsx 등), 커넥터(클라우드, 빅쿼리, DB 등 연동) 3가지 활용 가능
- 데이터 원본 연결 형태는 '추출'로 하는 것이 대시보드 생성 시간을 줄이는데 도움
└ 라이브: 원본 파일이 바뀌면 연동. 새로고침시 실시간으로 데이터 업데이트
└ 추출: 라이브 연결을 끊고 현재 데이터만 로컬로 가져오는 형태. 원본 데이터 파일이 클때 사용 용이
② 데이터 병합
- 관계: 조인과 달리 하나의 테이블로 병합하지 않고 테이블간 관계를 설정해서 뷰에서 필드 사용
- 유니온: 테이블 구조가 같은 형태인 경우, 유니온으로 테이블 병합 가능(ex. 월이 다른 판매 데이터)
- 조인: 2개 이상의 테이블을 하나의 테이블로 병합. SQL 조인과 유사하게 Left join, inner join 등이 있음
- 블렌딩: 물리적으로 테이블을 병합하지 않고, 워크시트 화면에 두 테이블이 같이 있는 형태. 임시 분석 시 사용하는 방법
③ 데이터 전처리
- 태블로는 데이터 원본을 연결하면 원본 컬럼 수정 및 삭제 불가
- 데이터 원본 탭 > 우측 하단 테이블 > 칼럼 선택하여 칼럼 숨기기 및 데이터 유형 변경 가능
- 시트 탭 > 테이블 리스트 상단 ▼ 클릭 > 계산된 필드 및 매개 변수 만들기로 분석 필요한 칼럼 생성 가능
3) 구성 및 용어
① 탭 구성
- 워크시트: 기본 작업 공간으로 마크, 분석 등 여러 기능을 활용해 시각화 진행
- 대시보드: 여러 워크시트를 통합해 대시보드를 만드는 공간. 통상 각 워크시트별로 작업해 통합 대시보드 생성하여 활용
- 스토리: 여러 워크시트와 대시보드를 합쳐서 하나의 인포그래픽 형태를 만드는 공간
② 용어
(1) 차원(dimension) vs 측정값(metric)
- 차원(dimension) : 측정 기준 또는 분석의 기준 (ex. 유저 아이디, 지역, 상품명 등)
- 측정값(metric): 측정하는 값 또는 항목. 집계함수(SUM, AVG, COUNT 등)를 활용해서 계산하고 비교 (ex. 매출, 리텐션, 전환율 등)
(2) 연속형 vs 불연속형
- 연속형: 하나로 연결돼 이어진 데이터. 녹색 측정값과 차원.
- 불연속형: 이어지지 않고 각각 구분되는 개별적인 데이터. 파란색 측정값과 차원
(3) 계산된 필드
- 기존 칼럼을 계산해서 새로운 칼럼을 생성 (ex. CVR, ROAS 등)
(4) 매개변수
- 계산, 필터 또는 참조선에서 상수 값으로 대체할 수 있는 숫자, 날짜 또는 문자열과 같은 통합 문서 변수
- 사용자가 대시보드와 워크시트의 데이터를 필터링하거나 조정할 수 있는 기능
- 계산된 필드에 추가해서 사용
- ex. 날짜 범위를 선택, 상위 고객(Top Customers) 필터링 등
3. 데이터 시각화
1) 들어가며
- 데이터 시각화(Data Visualization)란?
: 데이터를 그래프 형식으로 나타내 데이터 추세, 분포, 상관관계 등을 시각적으로 표현하는 것
: 데이터를 쉽고 빠르게 이해 할 수 있도록 하여, ① 의사결정 ② 효과적인 커뮤니케이션 ③ 인사이트 도출에 도움
- 데이터 사우루스: 소수점 3자리수만 다른 데이터로, 평균과 표준편차 등 모두 동일하나 시각화가 다르게 되는 예시
- 차트 치트 시트: 효과적인 차트를 고르는 법
▼ 참고: 태블로 퍼블릭 버전
- (실습) 에어비앤비 데이터 활용 예정
2) 기본 그래프
① 선 그래프(Line Plot)
- 시계열 데이터(시간에 따른 추이)를 시각화할 경우, 변화량과 트렌드를 한눈에 보기 용이
- 시간, 온도, 페이지뷰 등 연속형 데이터 사용에 적합
- 예시: 유료 구독자 수 변화 추이, 전년대비 상품 주문 판매량 변화, 일별유저수 등
(실습) 에어비앤비 호스트 수 추이
② 막대 그래프(Bar Plot)
- 범주 간의 차이나 분포를 시각적으로 이해하기 쉬움
- 범주형 데이터(성별, 혈액형, 이름 등) 사용에 적합
- 예시: 항공권 최다 예약 지역, 퍼널별 전환율, 카테고리별 상품 판매량 비교 등
(실습) 동네별 숙소 평균 가격
③맵 차트(Map Chart)
- 지도를 활용해서 지리적 위치 확인 가능
- 각 지역별 데이터의 분포 및 비중을 한눈에 확인할 때 주로 사용
- 태블로 기능: 뷰 툴바(지도 확대/축소), 백그라운드 레이어(투명도 설정, 건물표시 등)
- 예시: 특정 시간대 택시 이용률이 높은 서울 자치구, 지역별 ATM 기기 위치 및 개수, 성수동 맛집 위치 및 분포 등
(실습) zipcode별 숙소 리뷰 평균 평점 분포
④ 파이 차트(Pie Chart)
- 각 부분이 전체에서 차지하는 비중을 쉽게 이해 가능
- 데이터의 구성 비율과 분포를 한눈에 파악
- 변수가 적을 때 직관적으로 사용하기 용이(다양한 변수를 다루기엔 부적합)
- 예시: 사용자 기기별(안드로이드, IOS, 태블릿) 앱 다운로드 비율, 멤버십 등급별 매출 비중 등
(실습) 룸 타입별 비중
⑤ 트리맵 차트(Treemap Chart)
- 데이터를 계층적으로 표현하는데 사용
- 카테고리별 특정 데이터 집합이 전체 데이터에서 차지하는 비율을 면적으로 표현해 카테고리별 구성 요소 파악에 용
- 예시: 카테고리의 지역별 매출 비율, 책의 종류(소설, 자기계발, 역사 등)별 지역별 서점 도서 매출
(실습) 가장 많이 리스트된 호스트 이름
3) 심화 그래프
① 도넛 차트(Donut Chart)
- 파이 차트와 비슷한 형태이나 가운데 구멍이 뚫린 차트
- 각 부분이 전체에서 차지하는 비중을 쉽게 이해할 수 있음
- 태블로에서는 대시보드의 KPI 카드로 많이 활용
② 히트맵 차트(Heatmap Chart)
- 색상을 활용해 데이터 값을 시각적으로 강조하고 그라데이션으로 측정값을 한눈에 비교
- 태블로에서 하이라이트 테이블이라고 불림
③ 영역 차트(Area Chart)
- 선 아래 영역을 색으로 채워서 데이터의 영역 크기를 파악하는 차트
- 시간에 따른 데이터의 추이를 시각적으로 나타내 데이터의 변화 및 흐름을 쉽게 파악 가능
④ 스택 플랏(Stacked Plot)
- 바 자체가 구성 비율로 이뤄져 있어 상대적인 비율을 직관적으로 시각화할 때 사용
- 시간에 따라 데이터가 어떻게 변하는지 확인 가능
- 스택 플랏 단순 누적 그래프는 기준선이 일정하지 않기 때문에 구성 비율 비교가 어려움
- 스택 플랏 100% 누적 그래프는 기준을 비교하기 용이
(실습) 일반 호스트와 슈퍼 호스트의 응답 시간별 비중 비교
4) 시각화 레벨업
① 이중 축(콤보 차트)
- 두 개 이상의 측정값을 동시에 비교하고 싶을 때 이중축 활용
- 축에 서로 다른 단위나 기준을 가지고 있는 경우, 한 눈에 파악하기 어려움
② 평균선/참조선
- 분석 패널에서 평균선 라인/상수 라인/참조선을 추가해서 의사결정에 도움
5) 데이터 분석
① 박스 플랏(Box Plot)
- 데이터의 분포와 이상치(outlier)를 시각적으로 파악할때 사용하는 그래프
(실습) 숙박 시설 유형별 가격 분포
② 파레토 차트(Pareto Chart)
- 파레토 법칙이란?
: 전체 결과의 80%가 전체 원인의 20%에서 일어난다는 마케팅 기법(다수의 결과는 소수의 원인에 의해 생겨난다)
: 매출의 80%가 고객의 20%에 의해 발생한다는 법칙
③ 상관 관계(Scatter Plot)
- 지표간 어떤 선형적인 관계가 있는지 알아보고자 할 때는 선점를 활용
- (참고) 피어슨 상관 관계
└ 상관 관계 r이 -1이나 1에 가까울수록 x와 y 사이는 상관 관계가 크고, 0에 가까울수록 상관 관계가 약하거나 없음
└ 일반적인 r 값 해석 방식
· +.70 이상 / -7.0 이하는 매우 강한 양/음의 상관관계
· +.40에서 +.69 / -.40에서 -.69 사이는 강한 양/음의 상관관계
· +.20에서 +.39 / -.20에서 -.39 사이는 중간 정도의 양/음의 상관관계
·+ .19에서 -.19 사이는 약하거나 거의 상관이 없는 관계
④ 시계열 예측
- 지수 평활법(exponential smoothing)을 활용한 예측 모델링 기법
- 과거 데이터에 기반하여 미래를 예측하는 시계열 예측
(실습) 일별 에어비앤비 매출 예측하기
4. 계산식 활용하기
0) 들어가기 전에
- 실습 데이터: Superstore (Tableau 예시 내장 데이터) / 4개년 커머스 데이터(2020년-2023년)
1) 텍스트 테이블
: 데이터 프레임 모양으로 엑셀의 피벗 테이블 형태와 유사
① wide format table
- 하나의 열에 여러 개 특성의 데이터가 나열되는 형태로 옆으로 넓은 형태로 데이터가 쌓임
- 데이터 분석 시 많이 사용되는 형태로 표 비교나 그래프 시각화에 용이
- 상관 관계 분석이나 각 변수 분포 비교에 적합
② long format table
- 하나의 특성을 가진 열에 여러 행에 데이터가 나열되는 형태로 아래로 길게 데이터가 쌓임
- 시간에 따른 변화와 카테고리 간 비교를 시각화하기에 적합
- 컴퓨터와 태블로가 선호하는 형태
③ 총계
- [분석탭]에서 열과 행의 총 합계 및 소계를 표시
(실습) 하이라이트 테이블
2020년부터 2023년까지 Sub-Category별 매출의 합계를 하이라이트 테이블로 표현하기
2) 태블로 작동 원리
① 필터 종류와 필터 작동 순서
- 태블로는 여러 필터가 작동하는 순서가 상이해, 작동 원리를 파악하고 활용하는 것이 중요
- 필터 작동 순서: 추출 필터 > 데이터 원본 필터 > 컨텍스트 필터 > 차원 필터 > 측정값 필터 > 테이블 계산 필터
└ 추출 필터: 데이터 소스에서 추출된 데이터 필터링(데이터 연결을 추출로 선택했을때만 사용 가능)
└ 데이터 원본 필터: 데이터 원본 소스에서 일부 데이터만 필터링
└ 컨텍스트 필터: 특정값에 대한 데이터만 필터링
└ 차원 필터: 차원을 기준으로 데이터 필터링
└ 측정값 필터: 측정값을 기준으로 데이터 필터링
└ 테이블 계산 필터: 특정 계산 결과를 기준으로 데이터 필터링
② 계산과 필터의 작동 순서
- 계산과 필터의 태블로 작업 순서(쿼리 파이프 라인)
└ 필터를 추가할 때 해당 필터가 항상 작업 순서에 따라 설정된 순서대로 실행
└ ex. FIXED 계산은 컨텍스트 필터보다 순서가 늦어 이점을 유의해서 작업 필요
③ 필터 활용법: Top N 필터와 차원 필터
- 지역별(차원 필터) 고객별 상위 매출 Top N 필터링 하려면?
└ Top N 필터는 차원 필터보다 위에서 먼저 작동되기 때문에 지역별 필터(차원 필터)가 적용되지 않는 문제 발생
└ (해결방안) 차원 필터를 컨텍스트 필터로 추가해 작동 우선 순위 변경: 컨텍스트 필터 > Top N > 차원 필터
└ (참고) 컨텍스트 필터는 필터링된 데이터에 대해서만 필터링 적용되어 원본이 클 때도 자주 사용
(실습) 지역별 매출 Top 10 고객 막대 그래프 시각화
3) 기본 계산식 활용
① 계층과 드릴 다운
- 계층: 위계가 있는 차원. ex. Product > Category/Sub-Category
- 드릴다운: 계층이 있는 경우 '+/-' 아이콘을 클릭해서 하위 계층 항목(날짜-년/분기/월 등) 드릴 다운 가능
② 퀵테이블 계산
- 누계, 차이, 비율, 순위, 백분위수, 이동 평균 등을 빠르게 계산해주는 기능
- 연도별/월별/주별/일별 비즈니스 지표 증감을 비교할 때 유용하게 사용
└ LOD식을 활용해 YTD(연초 대비 증감률) / YoY(전년 대비 증감률) / MoM(전월 대비 증감률) 등 계산
(실습) 각 카테고리별로 서브 카테고리 매출 비중을 100% 스택플랏으로 시각화
> 기기 카테고리에서 핸드폰 매출이 차지하는 비율은 39.51%로 확인
- 차원별 비중 구하기
③ 태블로 함수
(1) 논리 함수
# IF
IF SUM([Sales]) >= 10000
THEN '상위 매출'
ELSEIF [Sales] < 10000 AND [Sales] > 0
THEN '하위 매출'
ELSE '미판매' END
# Case when
CASE [측정값]
WHEN 'Sales' THEN [매출]
WHEN 'Profit' THEN [수익]
...
END
# ZN
# IFNULL과 유사
ZN([Sales]) # null이 아니면 [Sales], null 이면 0을 반환
* 더 많은 논 함수는 https://help.tableau.com/current/pro/desktop/ko-kr/functions_functions_logical.htm
(2) 날짜 함수
# DATEDIFF
# 두 날짜 사이의 차이를 반환
DATEDIFF(단위, 시작 날짜, 끝 날짜)
DATEDIFF('day', [Order Date], [Ship Date]) #배송 기간
# DATEADD
# 날짜 더하기
DATEADD(단위, 간격, 기준 날짜)
DATEADD('day, 7, [Order Date]) #주문 7일 이후
* 더 많은 날짜 함수는 https://help.tableau.com/current/pro/desktop/ko-kr/functions_functions_date.htm
(실습) 날짜 함수 활용하기
- 주문 날짜와 배송 날짜를 활용해서 [배송 기간] 필드를 만들기
- 주문 번호를 기준으로 배송 기간(일)을 텍스트 테이블로 표현하기
* '배송 기간' 계산식 필드는 불연속형이기 때문에 마지막에 '차원'으로 수정 필요
4) LOD식 활용
- LOD식(세부 수준 식)이란?
: View Level of Detail에서 나온 말로 View가 제외된 Level of Detail을 의미
: 현재 화면(VLOD)에 영향을 받지 않고 원하는 세부 수준에서 값을 계산 할 수 있는 기능
: LOD식은 세분화된 수준(INCLUDE), 덜 세분화된 수준(EXCLUDE), 완전히 독립적인 수준(FIXED) 크게 3가지로 나뉨
: 고객별 평균, 카테고리별 매출 합계 등을 구할 때 LOD식 활용
- LOD식 기본 문법 구조
: 전체 LOD식은 {}(중괄호)로 묶어줘야 함
{[FIXED | INCLUDE | EXCLUDE] [차원1], [차원2] : AVG([측정값])}
① FIXED
- 뷰에 있는 차원과 상관없이 계산된 필드에서 FIXED 계산식을 고정시켜 지정된 차원을 계산
- 지역(Region)별 평균 매출
└ 지역을 고정하고 평균 매출을 계산하므로, 지역 내 하위 나라별 평균값이 다르지 않고 지역별 평균값으로 똑같이 출력
{ FIXED [Region] : AVG([Sales]) }
② INCLUDE
- 뷰에 지정된 차원 뿐만 아니라 모든 차원을 포함해서 계산. 평균과 많이 사용됨
- 지역(Region)-나라(Country)별 평균 매출: 모든 차원을 포함하기 때문에 지역-나라별 평균값과 동일하게 출력
{ INCLUDE [Region]: AVG([Sales]) }
- 카테고리별 평균값 추가 예시
└ 카테고리별 평균: 전체 매출액 / 카테고리 행 개수를 나눠서 계산
└ INCLUDE 평균: 서브카테고리 레벨에서 평균값을 구하고 나서, 그 다음 상위 카테고리에 있는 평균값을 구해줌
{INCLUDE [Sub-Category]: AVG([Sales])}
③ EXCLUDE
- 차원을 제거해서 계산
- 지역(Region)을 제외한 평균 매출: 지역값 기준을 제외하고 계산하여, 각 나라별로 동일한 평균값 도출
{ EXCLUDE [Region]: AVG([Sales]) }
'TIL' 카테고리의 다른 글
[240222] SQL: 코드카타 127~130 & 파이썬: 코드카타 34 (0) | 2024.02.22 |
---|---|
[240221] SQL: 코드카타 125~126(regexp) & 파이썬: 코드카타 33 (0) | 2024.02.21 |
[240220] SQL: 코드카타 123~124(not exists, offset, group_concat) & 파이썬: 코드카타 31~32(zip) (0) | 2024.02.20 |
[240219] SQL: 코드카타 122 (0) | 2024.02.19 |
[240216] 구매자 예측 모델링(실패한 코드) (0) | 2024.02.16 |