Tableau Bootcamp 6일차 퀘스트

📚6일차 학습 안내

:railway_track::school_satchel:어느덧 벌써 Tableau Bootcamp의 후반부 파트가 시작되었습니다.
지금까지 잘 따라와주신 모든 Tableau Rookie 여러분들께 감사의 말씀드리면서, 오늘 6회차 퀘스트 시작해보겠습니다:clap:

오늘 배우게 될 내용은 1일차 ~ 5일차 퀘스트(과제)를 모두 클리어하신 것을 전제 하에 “고급 계산식 (테이블 계산 & 세부 수준 계산식)”에 대해서 알아보도록 하겠습니다!

학습 동영상

https://korea-tableau-users.slack.com/files/U08H2DP3ETZ/F08Q9DYHBFA/_tableau_bootcamp__6_________________________________________________________________________________________________________________________________.twbx
학습 더 알아보기 자료

추가 참고 자료


👾6일차 퀘스트(과제) 안내

오늘은 4일차 퀘스트(과제)에서 맛보기로 학습했던 계산식의 심화 과정과 함께, 테이블 계산식과 세부 수준 계산식 (LOD)의 개념을 이해하고 연습해보겠습니다.
Tableau를 비즈니스 실무에 활용하기 위해 반드시 필요한 내용이기도 하고, 본격적인 Tableau 고급 분석의 첫 발을 내 딛는 날입니다:books:

:star::star:심화된 내용일수록 기본 개념이 가장 중요합니다!! 읽기를 포기하지 않고 오늘의 퀘스트(과제)를 클리어해주세요!!:star::star:

6일차 퀘스트에서는 📁“주식 데이터”,“주문+반품 추출 데이터”를 이용하겠습니다. 아래의 데이터 파일을 다운로드 받아주세요.
https://korea-tableau-users.slack.com/files/U08H2DP3ETZ/F08PYS7GBJ5/_tableau_bootcamp__6______________________________________________________________________________________.twbx

[⭐️6일차 학습 내용 리마인드]
테이블 계산식의 원리에 대해서 먼저 정리해볼까요?
아래의 그림과 같이, 테이블 계산식은 “Raw Data”를 “집계한 값 (Aggregation)”을 가지고 “테이블 계산을 실행”합니다.

여기서 잠깐 , “4일차 퀘스트(과제 → 국가별 가격 변동 비율 차이” 시트를 열어서 다시 한번 살펴볼까요?

저희는 앞서 국가별 가격 변동 비율을 구하기 위해서,

  • Dollar Price(Raw Data)의 합계(Aggregation)을 구하고,
  • 그 합계 값을 가지고 “구성 비율”이라는 테이블 계산식(Tableau Calculation)을 통해 변동 비율을 계산했습니다. 즉, 이미 집계된 Dollar Price 합계 값을 가지고 “재계산”을 했었죠.

그렇다면, Dollar Price는 무엇을 기준으로 합계 값을 구했었는지, 기억나시나요?

  • Dollar Price의 합계를 구한 기준은 연도(Date)와 국가명(Name)이었습니다!

기본적으로 Tableau는 집계 값을 통해 시각화를 합니다. 이 때, 집계의 기준은 “시각화의 세부 수준”에 따라 결정되는데요,

각화의 세부 수준을 이해하기 위해, 새로운 시트를 여시고 “Dollar Price를 더블 클릭”해보세요.

  • 그럼 전체 데이터의 총 Dollar Price의 합계가 표현되는 것을 볼 수 있습니다. 그 상태에서 Name을 “열” 선반에 올려보세요. 이번엔 Dollar Price가 국가 수준으로 집계가 되는 것을 볼 수 있습니다.

이처럼 시각화에 추가되는 차원에 따라 집계가 되는 기준이 변경되는데요.
여기서 말하는 측정값의 집계 기준을시각화의 세부 수준” 또는 “뷰의 수준”이라고 합니다.

이러한 시각화 세부 수준에 영향을 미치는 곳은 아래 그림에 빨간색으로 표시된 영역입니다.
빨간색에 추가되는 “차원이 시각화의 세부 수준을 결정 짓는다”라고 이해하시면 됩니다.

이제 4일차 퀘스트(과제) 시트를 접고, 다시 테이블 계산식 이야기로 돌아와볼까요?

앞서 말씀드린 내용과 같이, 측정값은 시각화의 세부 수준에 따라 집계가 되고 → 이 집계 값을 통해 재계산하는 테이블 계산은 어떤 기준으로 계산할 지 지정해야 되는 것이죠.
이 때, 재계산이 되는 범위(테이블, 패널, 셀), 방향, 기준에 따라 값이 달라 질 수 있기 때문에 “범위와 방향을 신중하게 설정”할 수 있어야 합니다.


[⭐️6일차 퀘스트(과제) 안내]
이제 본격적으로 6일차 퀘스트(과제)를 시작해보겠습니다!

1️⃣ 테이블 계산식 – 차이
내가 보유한 주식은 전일 대비 종가가 상승했을까요?:chart_with_upwards_trend: 하락했을까요?:chart_with_downwards_trend:
아래의 그림과 같이, “전일 대비 주식 종가 상승 및 하락 그래프”를 시각화하도록 하겠습니다.

1번 과제에서는 📁“주식 데이터”를 사용하도록 하겠습니다.

👇 1번 과제 인증 결과물

💡퀘스트(과제) 가이드라인

  1. 마크의 “라인과 원”을 이용해서 2019년 일 별 종가를 표현해 주세요.
  • 종가를 하나는 라인, 하나는 원으로 나타내고 이중축을 이용하시면 되겠죠?
  • “일”“연속형”으로 표현하는게 좋을 것 같네요.
  1. 마크의 “원” “전일 대비 종가 등락 여부” 색상을 표현해 봅니다.
    (상승은 파란색, 동일은 주황색, 하락은 빨간색)

1) “전일 대비 종가 등락”을 구하기 위해서는 테이블 계산식을 이용해야 하는데요,
처음부터 계산식을 활용하기 어려우시다면, 다음과 같은 방법을 활용해 보세요.

  • 측정값에 있는 종가를 행 선반에 가져다 놓고, 퀵 테이블 계산을 이용해서 “차이”를 구해 보세요.
  • 테이블 계산 “범위”는 전체 일자가 되어야 하니, 테이블이 되어야겠죠?
  • 계산 기준을 “전일”로 해야 이전 값을 가져와서 차이를 구할 수 있을 것 같아요.

2) 구해 놓은 테이블 계산 값을 차트에서 확인해 보세요.

  • 전날 보다 종가가 상승했으면 양수, 전날 보다 하락했으면 음수, 아니라면 0 값이 나타나겠죠.
    그런데 첫 번째 날(2019-01-02)은 비교할 이전 값이 없으니, 그 날짜에는 테이블 계산 값이 안보입니다. 화면 하단에 “1 Null”이 보이시나요? 이처럼 계산 되지 않은 값이 있음을 확인할 수 있습니다.

3) 제대로 계산이 되었다면, 테이블 계산식을 이용해 구해 놓은 종가를 “데이터 창”으로 드래그 해보세요!
새로운 측정값이 생성되나요? 이름을 “전일 대비 종가 등락”으로 설정해주세요.

  • 어떤 식으로 계산되었는지 한번 확인해 봅시다!
    • 측정값에 있는 “전일 대비 종가 등락”에서 마우스 오른쪽 버튼을 클릭하고 → “편집”을 클릭해보세요.
    • ZN(SUM([종가])) – LOOKUP(ZN(SUM([종가])), -1)
    • 위의 함수는 기준 일자의 종가 합계 값과, LOOKUP 함수를 이용해서 현재 기준 일자의 -1일 자의 집계된 종가를 가져와서 계산을 하고 있네요.
    • 즉, 기준일자 종가 합계에서 이전 일자의 합계를 뺀 결과인 것이죠. 결과가 왜 양수, 음수, 0 값이 나왔는지 이해하셨죠?

4) “전일 대비 종가 등락”을 이용해서 “등가 여부 색상”의 계산식을 만들어 보세요.

  • 전일 대비 종가 등락 > 0 이라면 → 등락▲
  • 전일 대비 종가 등락 < 0 이라면 → 하락▽
  • 2가지 모두 아니라면 → 동일 –

🔥 6일차 1번 과제 추가 도전하기
차원에 있는 “코드명”을 이용해서 해당 주식에 대한 정보 사이트로 이동해 봅시다. (※ “작업”이라는 용어가 최신 버전에서 “동작”으로 변경되어, 병행 표기)

  1. 코드명”“원 마크”의 “세부 정보”추가해 주세요.
  2. 메뉴 → 워크시트 → 작업(동작)을 클릭해주세요.
  3. 작업(동작) 추가에서 URL로 이동을 클릭해 주세요.
  4. URL 추가 작업(동작)에서 아래와 같이 해보세요.
  • 이름 : 증권정보로 이동
  • 작업(동작) 실행 조건 : 메뉴
  • URL에 아래 주소 입력
  • 위 주소에서 code= 뒤에 코드명을 넣어 주세요.
  • 확인 클릭
  1. 원 마크를 클릭하고 도구 설명에 있는 “증권정보로 이동”을 클릭해보세요.

원본 데이터에는 코드명이 존재하지 않아서 임의로 하나의 데이터 값을 만들어 놓았습니다.
따라서, 하나의 사이트만 연결이 되었지만, 다양한 코드를 가진 필드가 있다면, 해당 코드에 대한 사이트로 연결될 수 있도록 활용할 수 있겠죠?


2️⃣ 테이블 계산식 – 구성비율 1
내가 담당하는 상품의 전국 매출 구성비율을 한눈에 살펴볼 수 있을까요?📦📦📦
아래의 그림과 같이, 테이블 계산식을 활용해서 “시도별 매출 구성비율”을 시각화하겠습니다.

2번 과제에서는 📁“주문+반품 추출 데이터”를 사용하도록 하겠습니다.

👇 2번 과제 인증 결과물

💡퀘스트(과제) 가이드라인

  1. 국가, 시도를 상세 정보에 넣고, 마크의 색상은 매출 합계로 나타내 주세요.
  2. 매출“구성 비율”레이블로 표시해 주세요.
    1. 매출을 레이블로 드래그 해 주세요.
    2. 퀵 테이블 계산의 “구성 비율”을 이용해보세요. 범위는 테이블로 설정해야, 전국을 기준으로 비율이 계산 되겠죠?
    3. 구성비율 계산식을 더블 클릭해서 살펴보면, 아래와 같은 계산식을 볼 수 있습니다.
      1. SUM([매출]) / TOTAL(SUM([매출]))
      2. 매출 값을 전체 매출의 합계(TOTAL) 값으로 나눠주고 있죠. (TOTAL 함수는 테이블 계산 함수 입니다.)
  3. 지역을 필터로 추가해주세요! (단일 값 선택만 가능하게 옵션을 조정해주세요.)
  4. “수도권” 지역 필터를 선택해 보세요. 서울특별시의 전국 대비 매출 구성비율 22.13%의 값이 그대로 보이시나요?

왜 비율이 왜 비율이 46.82%로 바뀌었을까요?

  1. “구성 비율”을 구할 때 계산의 범위를 “테이블”로 지정했습니다.
  2. 지역 필터를 적용하기 전에는 화면에 보이는 전체 시도에 대해 범위가 지정이 됐다면,
    지역 필터를 적용한 후에는 해당 지역에 포함된 “시도”에 대한 범위로 계산 범위가 바뀌게 됩니다.
  3. 즉, 필터 적용 전에는 → 서울특별시 매출 합계 / 전국 매출 합계 (TOTAL의 범위가 전국)로 구성비율이 구해졌다면,
    필터 적용 후에는 → 서울특별시 매출 합계 / 인천,서울,경기도 매출 합계 (TOTAL의 범위가 수도권) 로 계산되어 → 구성비율의 수치가 달라지게 된것이죠.
  4. 그렇다면 필터를 적용해도 전국 대비 매출 구성비율의 수치가 바뀌지 않게 하려면 어떻게 해야 할까요? 바로 다음 과제에서 알아봅시다!!

3️⃣ 세부 수준 계산식(LOD) – 구성비율 2
2번 과제에 이어서, 세부 수준 계산식을 이용해 지역 기준 / 전국 기준 매출 구성비를 함께 살펴보겠습니다.
먼저, “지역별/전국구 구성비 함께 보기”시트를 열어주세요.

현재 시트의 시각화 세부 수준을 한번 생각해볼까요?

이 시트의 시각화 세부 수준은 “국가”와 “시도”입니다.
이 뷰에서 매출의 합계 값을 구한다면 가장 낮은 시각화 세부 수준인 “시도” 매출 합계 값이 구해지게 되겠죠.

그런데 우리의 최종 목적인 전국 기준 시도 별 매출 구성 비율을 구하려면 “시도 매출 합계 값”“전국 매출 합계 값”으로 나눠야 합니다.

즉, 우리에게 필요한 “전국 매출 합계” 값은 해당 뷰의 시각화 세부 수준에서는 절대 구할 수가 없는거죠.

이처럼 “현재 뷰의시각화 세부 수준”과 “실제 내가 필요한 집계의 기준”이 상이할 때 사용할 수 있는 것이 “세부 수준 계산식” 입니다.

세부 수준 계산식의 개념을 다시 한번 이해하고! 아래와 같이 “시도 기준 매출 비율과 전국 기준 매출 비율을 함께 나타내는 시각화”를 만들어봅시다!

3번 과제에서는 📁“주문+반품 추출 데이터”를 사용하도록 하겠습니다.

👇 3번 과제 인증 결과물

💡퀘스트(과제) 가이드라인

  1. FIXED 함수를 이용해 “전국 기준 매출” 계산식을 만들어 보세요.
  • FIXED는 지정된 특정 차원을 기준으로 집계하는 방법입니다.
  • “시도의 전체 합계 매출”을 구하려면 그보다 높은 수준의 차원인 “국가”를 기준으로 매출의 합계 값을 구하면 되겠죠?
  1. 전국 기준 구성비율계산식을 만들어 보세요.
  • 아래와 같이 매출 합계를 이전에 구해 놓은 전국 기준 매출 합계로 나누면 되겠죠?
    • SUM(매출) / SUM([전국 기준 매출])
  • 애초에 뷰의 세부 수준이 “시도”이니 매출 합계는 시도의 매출 합계를 나타내는 것! 이제 확실히 이해가 되셨을까요? (더 이상의 설명은 생략한다!:nerd_face:)
  1. 새로 만든 “전국 기준 구성비율”“레이블”에 추가해주세요.
    레이블을 클릭해서 위의 결과와 같이 나타나게 해주세요.
  2. 이제 필터를 바꿔보세요!! 전국 기준 매출 구성 비율 값이 고정된 것이 보이시나요?

4️⃣ 세부 수준 계산식(LOD) – 구성비율 3
이번 4번 과제에서는 “과거 구매 고객 매출 기여도와 신규 유입 고객 현황”을 살펴보겠습니다!

2015년 처음 비즈니스를 시작한 슈퍼스토어:shopping_bags: 입니다.
2015년에 첫 구매가 발생한 고객이 2018년도까지 얼마나 매출에 기여하고 있을까요?
아래의 시각화를 살펴보니, 2015년에 첫 구매를 발생시킨 고객이 여전히 2018년도까지 많은 매출에 기여하고 있음을 알 수가 있는데요! 반면, 매년 새로 유입되는 고객 수는 줄어들고 있는 것을 확인할 수 있네요.

4번 과제에서도 📁“주문+반품 추출 데이터”를 사용하도록 하겠습니다.

👇 4번 과제 인증 결과물

💡퀘스트(과제) 가이드라인

  1. “주문일자”를 이용해 연도“열”에 놓고, 매출“행”에 놓아주세요.
  2. 위의 내용을 시각화하기 위해, 고객별 최초 구매 연도를 색상으로 표현해 봅시다.
    1. 예를 들어, 아래와 같이 데이터가 있을 때,
      “고객별 최초 구매일”을 구하고, 고객 별 최초 구매일의 “연도를 색상으로 표현”하면 → 매출 막대의 색상은 고객의 유입 년도에 따라 구분되겠죠?
    2. “고객별 최초 구매일”이라는 이름으로 계산식을 만들어 주세요.
      1. 현재 시각화 세부 수준은 “연도”이기 때문에, “고객”을 기준으로 최초 주문 일자를 구하려면 우리는 세부 수준식을 사용해야합니다.
      2. FIXED 함수를 이용해서 “고객”으로 차원을 고정하고, MIN 함수를 이용해서 “최초 주문일자”를 구해보세요.
      3. { FIXED [고객번호] : MIN([주문 일자]) }
  3. 새로 만든 “고객별 최초 구매일”을 색상에 놓아주세요!

🔥 6일차 4번 과제 추가 도전하기 – 코호트 분석
이번에는 최초 구매가 일어난 후, “두 번째 구매가 발생하기까지의 기간”이 어느 정도 되는지를 시각화해봅니다! (즉, 2015년 2분기에 처음 구매한 고객은 → 2분기가 지난 후 가장 많이 재구매를 했음을 나타냅니다.)

📁“주문+반품 추출 데이터”를 계속 사용해주세요!

👇 4번 추가 도전하기 과제 인증 결과물

💡퀘스트(과제) 가이드라인

  1. 최초 구매일은 이미 4번 과제에서 “고객별 최초 구매일”로만들어 놓았습니다.
  2. 최초 구매일을 활용해서 2번째 구매일 (“고객별 최초 재구매일”)을 구해볼까요?
    1. 우리는 아래와 같은 시각화를 그리게 될텐데요.
      4번 과제와 마찬가지로 우리가 구해야하는 “고객 별 최초 재구매일”에 사용되어야 하는 집계 기준과, “시각화 세부수준 (뷰의 세부수준)”이 다르기 때문에 FIXED 세부 수준식을 사용해야 합니다.
    2. 아래의 식을 이용해서 “고객별 최초 재구매일” 계산식을 만들어 주세요.
  1. 상단의 식이 의미하는 바를 한번 알아보도록 할까요?
    1. IIF 함수는 제일 첫 번째 조건이 만족하면, 2번째 값을, 아니라면 3번째 값을 적용한다는 의미입니다. 즉, “고객별 최초 구매일”이 “주문일자” 보다 작으면 주문일자를 가져오고, 아니라면 NULL 값이라는 뜻인데요,
    2. 그렇다면, 아래의 표 이미지와 같은 결과가 나올 수 있겠죠!
    3. IIF를 통해 구해진 주문일자 중 가장 최소값을 갖고 오게 되니, 고객 별 두 번째 구매 날짜를 구할 수 있겠죠?? (아래의 표 이미지에서 파란색 값을 가져오게 됨.)
  1. “고객별 최초 구매일”“고객별 최초 재구매일”을 가지고 DATEDIFF 함수를 이용해서 ‘quarter’ 기준으로 재구매가 일어나기 까지의 시간 차이를 구해보세요. 계산식 이름은 “고객별 재구매 경과기간”으로 설정합니다.
  1. “고객별 재구매 경과기간”의 결과 값은 숫자이기 때문에, 새로운 계산식이 측정값에 위치하는 것을 볼 수 있습니다.
    하지만 우리는 “고객별 재구며 경과기간”을 집계 형태로 사용하는 것이 아니라 하나의 “차원”으로 사용해야겠죠!
    “고객별 재구매 경과기간” 필드를 드래그 하여 측정값에서 차원으로 이동시켜 주세요.
  2. 고객별 최초 구매일”행 선반에 불연속형 “년”, “분기” 수준으로 놓아주세요.
  3. “고객당 재구매 경과기간” 열 선반에 놓아 주세요.
  4. “고객번호”에서 마우스 오른쪽 버튼을 누른채 (Mac의 경우 Option을 누른채)로 → 색상에 드래그하고 → 고유 카운트로 집계해주세요. 해당 기간에 해당하는 고객을 카운트합니다.

:railway_track::school_satchel:Tableau Bootcamp 6일차 학습과 퀘스트가 클리어되었습니다!

오늘의 퀘스트(과제)는 다소 난이도가 높고, 분량이 적지 않았는데요, 추가 도전 과제까지 모두 끝내셨다면 정말 큰 박수 보내드리고 싶습니다👏 👏 👏


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *