Overview

무료 시각화 프로그램 Tableau Public을 이용하여 Sales KPI 대시보드를 제작하는 일련의 과정을 보여줍니다.

Platform: Tableau

First upload date: 2025-12-23


I. 들어가며

1편에서 설정한 “경영 불확실성 해소를 위한 대시보드 제작” 과제를 강력한 대시보드 제작 도구 Tableau로 해결해보았습니다.

1. 왜 Tableau인가?

1) 무료로 사용 가능하다!

Tableau Public은 대시보드 제작 기능의 대부분이 무료입니다!

완성된 대시보드를 Tableau Public에 게시 가능하며, 링크 첨부 기능으로 타 플랫폼에서도 무료로 공유할 수 있습니다!

수많은 Tableau 고수분들이 Tableau Public에 고퀄리티 대시보드를 무료로 공유해주시니, 복사하거나 레퍼런스 삼기가 매우 좋습니다.

2) UI가 직관적이고, 배우기 쉽다!

데이터 시각화에 대해 약간의 지식만 있어도 바로 시작할 수 있을 정도로 직관적인 UI와 쉬운 시각화 난이도를 자랑합니다.

Tableau의 ‘필터’와 ‘테이블계산’ ‘이중축’ 등의 기능은 매우 강력하지만 코드 작성 없이 클릭 몇 번만으로 구현 가능하여 매우 매우 편리합니다.

3) 무엇보다도 예쁘다!

가장 중요합니다.

대충 만들어도 보기에 아주 예쁩니다!

예전엔 예쁜 그래프 하나 만드려면 파워포인트에서 힘들게 값 입력해주고 디자인 효과 추가하고 고생했었는데, Tableau에선 클릭 몇 번으로 쉽게 만들 수 있으니 세상 참 좋아졌습니다. 오래 살고 볼 일이네요

2. 참고자료

  • Let’s 태블로, 쉽게 따라하는 데이터 시각화
    • Tableau의 UI와 그래프/대시보드 시각화의 기본을 실습할 수 있습니다.
    • 시각화 전략과 대시보드 철학도 담겨있어 좋았습니다.
    • ‘계산된필드생성’ 기능은 Excel 함수와 흡사한 문법으로 파생변수를 만들 수 있는 기능인데, 해당 내용이 책에 포함되어있지 않은 점은 아쉬웠습니다.
  • Build Tableau Dashboard from Start to End - Data Tutorials
    • Sales KPI 대시보드 구성을 A to Z로 따라해보는 유튜브 영상입니다.
    • 이 대시보드를 거의 배꼈습니다
    • 너무 빠르고 인도 영어라 따라하기 조금 어려웠습니다.

II. 대시보드 만들기

1. 파생 변수 생성

작년 매출과 올해 매출을 비교하는 컨셉의 Sales KPI 대시보드를 구성할 것입니다.

더 효과적인 비교 및 시각화를 위해 몇 가지 파생변수를 생성해줍니다.

1) YTD Revenue: 최신 연도 매출

IF YEAR([Order Date]) = { MAX(YEAR([Order Date])) }
THEN [Revenue]
END

2) YTD Revenue LOD: 최신 연연도 매출 누적합계 (fixed)

{ FIXED :
    SUM(
        IF YEAR([Order Date]) = { MAX(YEAR([Order Date])) }
        THEN [Revenue]
        END
    )
}

3) PYTD Revenue: 직전 연도 매출

IF YEAR([Order Date])= {MAX(YEAR([Order Date]))}-1 
THEN [Revenue] 
END

4) PYTD Revenue LOD: 직전 연도 매출 누적합계 (fixed)

{ FIXED :
    SUM(
        IF YEAR([Order Date]) = { MAX(YEAR([Order Date])) - 1 }
        THEN [Revenue]
        END
    )
}

5) YOY Revenue: 전년 대비 매출 성장률

([YTD Revenue LOD]-[PYTD Revenue LOD])/[PYTD Revenue LOD]

6) YOY Revenue Margin: 전년 대비 매출 증감

IF [YOY Revenue] > 0 THEN '▲'
ELSEIF [YOY Revenue] < 0 THEN '▼'
END

7) % Difference: 전년 대비 매출 증감률

(SUM([YTD Revenue]) - SUM([PYTD Revenue])) / SUM([PYTD Revenue])

8) N%, P%, No Sales: 전년 대비 매출 증감, 매출 없음

IF [% Difference]<0 THEN '▼' END
 
IF [% Difference]>0 THEN '▲' END
 
IF [Revenue Margin]='작년 매출 없음' THEN '작년 매출 없음' END

9) Revenue Margin: 전년 대비 매출 성과 (범례용)

IF SUM([YTD Revenue]) - SUM([PYTD Revenue]) < 0 THEN '작년 매출 대비 저조'
ELSEIF SUM([YTD Revenue]) - SUM([PYTD Revenue]) > 0 THEN '작년 매출 대비 호조'
ELSEIF ISNULL(SUM([PYTD Revenue])) THEN '작년 매출 없음'
END

Profit과 Quantity 등의 변수에 대해서도 필요하시다면 같은 맥락으로 파생변수를 생성해주시면 되겠습니다. (생각보다 되게 노가다입니다)

2. 시각화 그래프 제작

대시보드를 구성할 그래프들을 하나하나 만들어줍니다.

1) 월별 매출 현황: Line chart

단순한 올해 월별 매출 현황을 볼 수 있는 Line chart을 그려줍니다.

  1. 매출 변수를 행 선반에 위치합니다. (측정값=합계)

  2. 날짜 변수를 열 선반에 위치한 후, 연속형 ‘월’ 필드로 바꿔줍니다.

  3. 마크 상자에 앞서 생성한 파생변수를 아래와 같이 추가합니다.

  4. 마크 → 레이블에서 ‘마크 레이블 표시’를 체크합니다.

  5. 제목을 더블클릭하여 제목 편집으로 진입한 후, 아래와 같이 수정합니다

  6. 필터 상자에 날짜 변수를 할당하고, 가장 최신 연도로 설정합니다.

  • 결과

Profit이나 Quantity 등 다른 변수에 대해서도 같은 맥락으로 만드시면 되겠습니다.

필터에 회색으로 걸려있는 두 변수는 대시보드 구성 단계에서 설명드리겠습니다.

2) 판매 채널별 매출 비율: Doughnut Chart

판매 채널별 매출의 비율을 볼 수 있을 뿐 아니라, 가운데 빈 공간에 추가 정보를 제공할 수 있는 도넛 차트 입니다.

Tableau에서는 먼저 크기가 다른 파이차트트 두 개를 그려준 뒤, ‘이중 축’ 기능을 사용하여 가운데가 비어있는 것처럼 보이게 하여 도넛차트를 만들 수 있습니다.

  1. 열 선반의 빈 공간을 더블클릭하여 더미 변수 두 개를 만들어줍니다. 저는 AVG(0)이라 입력하여 만들었습니다.

  2. 마크 상자에 2개의 ‘집계(AVG(0))‘외에도 상단에 ‘전체’ 탭이 생겼음을 확인할 수 있습니다. ‘전체’ 탭에서 그래프 종류를 ‘파이 차트’로 설정합니다.

  3. 각각의 ‘집계(AVG(0))’ 탭에서 ‘크기를’ 다르게 설정합니다. 저는 각각 40%, 30%로 설정했습니다.

  4. ‘이중축’ 기능을 사용하여 두 그래프를 하나로 합쳐줍니다.

  5. 첫 번째 ‘집계(AVG(0))’ 탭을 아래와 같이 설정해줍니다. ‘색상’에는 표현하고 싶은 범주형 변수를 할당합니다. 여기까진 일반적인 파이차트와 다르지 않습니다.

  6. 두 번째 ‘집계(AVG(0))’ 탭에 매출 합계 정보를 표시합니다. 레이블을 아래와 같이 구성합니다. 기타 서식도 취향껏 설정합니다.

  • 결과

    ‘맞춤’ 설정을 ‘전체 보기’로 설정하셔야 도넛차트가 보기 좋게 정렬됩니다.

3) 상품별 작년 대비 매출 증감: Bar chart

상품별 올해 매출을 보려면 어떤 그래프를 쓸 수 있을까요.

직관적이고 익숙한 막대 그래프가 좋아보입니다.

여기에 작년 매출과의 비교 요소를 추가하려면 어떻게 해야할까요.

작년도 매출 막대 그래프를 겹쳐 Multi-set bar chart를 만드는 것도 좋겠지만, 저는 미리 만들어둔 파생변수들을 이용하여 좀 더 효과적으로 그려봤습니다.

  1. 행 선반에 상품코드가 들어있는 범주형 변수를 위치합니다.

  2. 열 선반에 최신 연도 매출인 ‘YTD Revenue’를 위치합니다.

  3. 마크 선반에 미리 만들어둔 파생변수를 아래와 같이 위치하고, 레이블 편집에서 서식을 아래와 같이 수정합니다.

    <집계(Negative % Diff)> <집계(Positive % Diff)> <집계(No Sales)> <집계(% Difference)>

  4. 집계(% Difference)를 우클릭, ‘숫자 서식에서’ ‘백분율’로 바꿔줍니다.

  • 중간 결과

색상과 숫자로 작년 대비 매출 증감이 잘 표현되었습니다.

정확한 매출액도 같이 표시하면 더욱 보기 좋겠습니다.

  1. ‘YTD Revenue’를 열 선반에 하나 더 추가하고 ‘이중 축’을 걸어줍니다.

  2. 위에 새로 생겨난 축을 우클릭, 어긋난 축을 하나로 동기화해줍니다.

  3. 첫 번째 ‘합계(YTD Revenue)‘탭의 요소들을 전부 제거하고, ‘YTD Revenue’만을 레이블로 추가합니다.

  4. 레이블 모양을 왼쪽 정렬로 설정합니다. (레이블 모양은 Tableau Desktop Public Edition에서만 수정 가능한 것 같습니다.)

  5. 기타 글꼴 및 서식을 취향껏 바꿔줍니다.

  • 결과

4) 월별 판매 채널 순위: Bump chart

판매 채널의 순위를 직관적으로 볼 수 있는 범프 차트 입니다.

도넛 차트가 비율에 초점을 맞췄다면 범프 차트는 순위에 집중합니다.

x축을 월(month)로 설정하여 순위의 시계열적 변화도 볼 수 있습니다.

  1. 날짜 변수를 열 선반에 두고, 범주형 월로 바꿔줍니다.

  2. 행 선반에 판매량 변수를 두 번 올리고, ‘이중축’을 설정합니다. (이번엔 Qty라는 판매량 order_quantity로 그래프를 그려봤습니다.)

  3. 마크 선반에서 ‘합계(Qtry)(2)‘의 그래프 종류를 ‘원’ 그래프로 바꿔줍니다.

  4. 판매 채널이 들어가 있는 범주형 변수를 ‘합계(Qty)‘와 ‘합계(Qty)(2)’ 모두에 색상 요소로 추가합니다.

  5. 행 선반에서 두 ‘합계(Qty)’ 모두에게 ‘테이블 계산을’ 부여합니다.

    • 계산 유형: 순위
    • 계산 대상: 특정 차원 ‘Site_grouped’

  6. 행 선반의 ‘합계(Qty)‘를 Ctrl을 누른채 드래그하여 ‘합계(Qty)(2)‘의 레이블로 복사 및 추가합니다. 또한, 레이블 모양에서 정렬을 가운데로 맞춥니다.

  7. 마크 선반의 ‘합계(Qty)‘에 ‘Site_grouped’ 변수를 레이블로 추가하고, 레이블 지정할 마크를 ‘가장 최근’으로 설정합니다.

  8. 기타 글꼴 및 서식을 취향껏 설정해줍니다.

  • 결과

3. 대시보드 제작

마참내! 만들어둔 그래프들을 하나의 대시보드로 구성해줄 차례입니다.

대시보드는 단순한 그래프의 집합이 아닙니다.

대시보드는 그 이상의 의미가 있습니다!

간단한 필터링으로 대시보드의 강력함을 확인해보겠습니다.

1) 필터링

그래프 제작 단계에서 잠깐씩 보이던 광역 필터를 만들 차례입니다.

태블루에선 이를 ‘컨텍스트’ 기능이라고 명명하였습니다.

  1. 만든 그래프 중 아무 곳에서, ‘필터’ 상자에 판매 채널 변수 ‘Site_grouped’와 지역 변수 ‘Region 1Dep’을 추가합니다. (1편에서 만든 파생변수가 여기서 빛을 발하네요)

  2. 각각 우클릭 ‘컨텍스트에 추가’를 설정합니다. 이로서 모든 워크시트에 해당 필터들이 관여하게 됩니다.

  3. 4) 월별 판매 채널 순위 Bump chart에는 필터 상자에 날짜 변수를 추가하고, 범주형 연도로 설정합니다.

  • 결과

2) 대시보드 어셈블

이제 그래프들을 모으고, 필터를 추가하고, 꾸며주면 끝입니다.

  1. 우선 대시보드의 크기를 설정해줍니다. 저는 PowerPoint 크기로 설정해주었습니다. (사실 ‘자동’으로 했다가 나중에 변경하는 것이 편합니다.)

  2. 바둑판식 대시보드에 빈페이지를 추가하고, 가로 컨테이너를 위에 추가합니다.

  3. 만들어둔 시트를 하나씩 추가합니다.

  4. Region 필터를 추가합니다. (필터링 단계에서 설정한 ‘컨텍스트’ 필터가 반드시 선행되어야 합니다.)

  5. Site Rank 시트 설정에서 ‘필터’ → 날짜 변수의 ‘연도’를 체크합니다.

  6. 대시보드 상단에 ‘빈 페이지’와 ‘텍스트’를 추가하여 대시보드 제목과 빈 공간을 만들어줍니다.

  7. 필터와 범례를 ‘부동’을 체크하여 알맞은 위치에 재배치하고, 범례 컨테이너를 없애줍니다.

  8. 취향껏 서식과 추가 정보 및 기능을 반영한 뒤 Tableau public에 게시합니다!

  • 최종 결과 Link

III. 나가며

제로 베이스에서부터 책과 유튜브를 보며 만들어가는 과정이 힘들지만 나름 재밌었던 것 같습니다. 사실 블로그 올리겠다고 하나하나 재현하고, 스샷 찍는 게 더 힘들었네요…

나중엔 DB를 직접 연결하여 실시간으로 업데이트 내용이 반영되고, 예측 모델이 적용된 고오급 대시보드도 만들어보고 싶네요.

여기까지 읽어주셔서 감사합니다~


관련 게시글

참고문헌