본문 바로가기

TIL

[240220-21] 태블로(Tableau) - 데이터 시각화, 계산식 활용

[실습으로 배우는 태블로 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자리수만 다른 데이터로, 평균과 표준편차 등 모두 동일하나 시각화가 다르게 되는 예시

출처 - Datasaurus (by. Alberto Cairo)

- 차트 치트 시트: 효과적인 차트를 고르는 법 

출처 - Chart Suggestions A Thought Scatter (by. Andrew Abela)

▼ 참고: 태블로 퍼블릭 버전

- (실습) 에어비앤비 데이터 활용 예정

 

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년)

https://www.tableau.com/ko-kr/data-insights/dashboard-showcase/superstore

 

 

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]) }