[Tableau] 태블로 신병훈련소 17기 6일차
✏️ 6일차
📖 6일차 학습 안내
테이블 계산식과 LOD를 이용한 고급 분석
💡 세부 수준 계산식(LoD)
-
세부 수준 계산식 (LoD; Level of Detail Expression)
{ [INCLUDE|EXCLUDE|FIXED] [차원] ...: 집계식([측정값]) }
- FIXED: 뷰의 차원을 참조하지 않고 지정된 차원만 사용하여 집계 계산
- EXCLUDE: 지정된 차원이 뷰에 존재하는 경우를 제외하여 집계를 계산
- INCLUDE: 지정된 차원과 뷰 차원을 사용하여 집계를 계산
- 화면상의 세부 수준(LoD)과 관계 없이 계산이 필요한 경우 사용
- 사용 예시
- 고객 당, 주문 당 등 ‘~당’ 계산이 필요한 경우
- 집계를 다시 집계해야 하는 경우
- 집계 결과를 기준으로 구간을 나눠야 하는 경우
- 뷰에서 보고 있는 수준보다 아래 또는 위 수준에서 계산 결과를 만들어야 하는 경우
🤔 유입 시점별 고객 매출 기여도: 2014년도에 처음 구매한 고객이 2017년도 매출에 얼마나 기여하고 있을까?
- 주문 별 시점이 아닌 고객 별로 처음 구매한 시점
- 고객 별 처음 구매 시점을 구하는 필드 생성 (FIXED, MIN 함수 사용)
{FIXED [고객명]:MIN([주문 일자])}
- 뷰에는 포함되지 않지만, ‘고객명’ 수준에서 각 고객의 주문일자 최소값을 구하는 필드
- 위에서 생성된 필드를 마크 선반의 색상에 끌어오면 각 연도 별로 구성 비율 확인 가능
- 구성 비율을 확인하기 위해 테이블 계산식 사용
- 합계(매출) > 퀵 테이블 계산 > 구성 비율
- 각 연도 별로 전체 100% 중 비율을 알기 위해 테이블 계산 범위를 테이블(아래로)로 변경
🤔 주문번호 당 평균 매출 금액
- 주문 번호를 뷰에 추가하지 않고 하나의 숫자로만 표현하고 싶다면?
- 주문번호별 매출 합계와 레코드 수 확인시 레코드 수가 1이 아닌 경우 존재
- 동일한 주문번호를 가지고 여러 제품을 주문한 경우에 해당
- 이 상태에서 집계 기준을 단순히 ‘평균’으로 바꾸면 각 주문에 대한 평균 매출액을 구하는 꼴
- But, 원하는 것은 주문번호 당 평균이기 때문에 이럴 때 LoD 사용
-
화면에는 없지만 집계에는 포함하고 싶기 때문에
INCLUDE
함수 사용{INCLUDE [주문 번호]:SUM([매출])}
- 이 경우에 FIXED를 사용해도 동일한 결과 (위의 식과 INCLUDE만 제외하고 동일)
- 단순히 평균 매출을 구한 경우에는 값이 332,467로 정답과 다름
🤔 LOD 계산 활용한 코호트 분석: 집단별 재구매
- 1분기, 2분기, 3분기, N분기마다 재구매를 하는 고객의 수는 얼마나 될까?
- 재구매를 한 번도 하지 않은 고객은 몇 명일까?
- 분기별 집단으로 세분화할 때 이 행동이 어떻게 보일까?
- FIXED 표현식을 사용하여 고객별 첫 번째 및 두 번째 구매 날짜를 구한 다음 이를 기반으로 재구매할 때까지의 분기 수 파악
-
첫 번째 구매 날짜(Name: 첫 번째 구매)
{FIXED [Customer ID]:MIN([Order Date])}
- 고객별 재구매 날짜(Name: 재구매)
- 1에서 구한 ‘첫 번째 구매’일보다 더 나중인 날짜가 있는 경우에 해당
- IIF 함수 사용: 조건이 충족되는지 여부를 확인하여 TRUE이면 첫 번째 값, FALSE이면 두 번째 값 반환, 알 수 없는 값일 경우 선택적 입력 값인 세 번째 값 또는 NULL 반환
IIF([Order Date]>[첫 번째 구매],[Order Date],NULL)
- 두 번째 구매 날짜(Name: 두 번째 구매)
- 2에서 구한 고객 별 ‘재구매’일 중 최소값 반환
{FIXED [Customer ID]:MIN([재구매])}
- 재구매할 떄까지의 분기 수 파악(Name: 재구매까지 분기 수)
- DATEDIFF 함수 사용
DATEDIFF('quarter', [첫 번째 구매], [두 번째 구매])
- 시각화
💡 테이블 계산
- 테이블 신병훈련소 4일차 참고
- 기존 집계 계산의 결과 집합 위에 추가 계산을 실행
🤔 정렬: 지역별 Top 3 (매출 기준) 제품 찾기
- 이미 집계된 ‘합계 매출‘로 테이블 계산식 사용
- 열 선반에 추가되어 있는 ‘매출’ 필드를 마크 선반의 세부 정보에 추가 (Ctrl + Drag)
- 세부 정보에 추가하는 이유?
- 뷰를 변화시키지 않으면서 이 필드에 대한 추가적인 계산 또는 속성을 변경하기 위해
- 마크 선반에 있는 ‘합계(매출)’ 필드 > 퀵 테이블 계산 >
순위
선택
- 연속형 필드: 축을 생성/ 불연속형 필드: 머릿글을 생성
- 테이블 계산이 된 마크 선반의 ‘합계(매출)’ 필드를 불연속형으로 변환 후 행 선반의 ‘지역’과 ‘제품 중분류’ 사이로 추가
- 전 지역에서의 순위가 아니라 지역별 순위를 봐야 하므로 계산 범위 변경
- 불연속형 매출 합계 필드 > 다음을 사용하여 계산 >
패널(아래로)
선택
- 불연속형 매출 합계 필드 > 다음을 사용하여 계산 >
- 해당 필드를 필터로 복사하여 Top 3만 보는 것도 가능!
- 뷰에서 순위를 숨기고 싶다면?
- 행 선반의 필드에서 마우스 오른쪽 클릭 > 머리글 표시 해제
🤔 기록 수익: 분기 별 수익이 최대 수익일 때 확인하기
- 지금까지 갖고있는 수익 중에 최대인지 확인할 필드 생성 (계산된 필드)
- 필드명: 현재 가장 높은 수익
- 테이블 계산 >
RUNNING_MAX()
함수 사용 -
RUNNING_MAX(): 첫 번째 행에서 현재 행까지 주어진 식의 누계값 중 최대값을 반환
RUNNING_MAX(SUM([수익]))
- 해당 분기의 수익이 ‘기록 수익‘인지 여부를 확인하기 위한 계산된 필드 생성
- 필드명: 기록 수익 여부
SUM([수익]) = [현재 가장 높은 수익]* * 현재 가장 높은 수익: 1에서 만든 필드
- 행 선반의 수익 합계 필드 하나 더 생성(Ctrl + Drag)
- 해당 필드에 해당하는 마크 선반에 아래 필드 추가
- 텍스트 카드에 ‘현재 가장 높은 수익’ 추가: 해당 분기마다 누계 중 최대값 표시
- 색상 카드에 ‘기록 수익 여부’ 추가: 2에서 만든 필드가 T/F 필드이기 때문에 기록 수익인 경우 T, 아니면 F로 색상 차이 발생
- 차이를 또렷하게 확인하기 위해 마크 모양을 원으로 변경
- 해당 필드에 해당하는 마크 선반에 아래 필드 추가
- 이중 축 설정하여 두 그래프 하나로 합치기
✏️ 6일차 과제
1️⃣ 테이블 계산식 - 차이
주식 데이터로 전일 대비 종가가 상승했는지 하락했는지 나타내는 차트 그리기
최종결과 🌈
- 마크의 라인, 원을 이용해 2019년 일 별 종가 표현
- 종가를 하나는 라인, 하나는 원으로 나타내고 이중축 설정
- ‘일’은 연속형으로 표현
- 마크의 원은 “전일 대비 종가 등락 여부”로 색상 표현 (상승은 파랑, 동일은 주황, 하락은 빨강)
- 퀵 테이블 계산 >
차이
이용해 전일과의 차이(계산 기준) 구하기 - 테이블 범위: 테이블
-
테이블 계산식 확인
ZN(SUM([종가])) - LOOKUP(ZN(SUM([종가])), -1)
- “전일 대비 종가 등락”을 이용해 “등가 여부 색상” 계산식 만들기
- 전일 대비 종가 등락 > 0 이라면 등락
- 전일 대비 종가 등락 < 0 이라면 하락
- 그도 아니라면 동일
IF [전일 대비 종가 등락] >0 THEN '▲' ELSEIF [전일 대비 종가 등락] <0 THEN '▽' ELSE '-' END
- 퀵 테이블 계산 >
[추가] 워크시트 작업(동작) 활용하기
차원에 있는 코드명을 이용해 해당 주식에 대한 정보 사이트로 이동하기
- “코드명”을 “원 마크”의 “세부 정보”에 추가
- 워크시트 > 동작 > 동작 추가 >
URL로 이동
클릭 - URL 추가 동작에서 아래와 같이 입력
- 이름 : 증권정보로 이동
- 작업(동작) 실행 조건 : 메뉴
- URL에 아래 주소 입력
- https://finance.naver.com/item/main.nhn?code=
- 위 주소에서 code= 뒤에
코드명
삽입
- 원 마크 클릭시 도구 설명의 맨 아래 위치
2️⃣ 테이블 계산식 - 구성비율
시도별 매출 구성비율 살펴보기
최종결과 🌈
- ‘수도권’ 지역 필터 선택 시, 서울특별시의 전국 대비 매출 구성비율이 22.13%이 아닌 46.82%로 바뀜
- “구성 비율”을 구할 때 계산 범위를 “테이블”로 지정
- 지역 필터를 적용하기 전에는 화면에 보이는 전체 시도에 대해 범위가 지정이 됐다면, 필터를 적용한 후에는 해당 지역에 포함된 ‘시도’에 대한 범위로 계산 범위가 바뀌게 됨
- 필터 적용 전: 구성비율 = 서울특별시 매출 합계 / 전국 매출 합계 (TOTAL의 범위가 전국)
- 필터 적용 후: 구성비율 = 서울특별시 매출 합계 / 인천,서울,경기도 매출 합계 (TOTAL의 범위가 수도권)
- 필터를 적용해도 전국 대비 매출 구성비율의 수치가 바뀌지 않게 하려면 어떻게 해야 할까?
- 세부 수준 계산식(LOD) 활용!!
3️⃣ 세부수준 계산식(LOD) : 전국 기준 매출 구성비율 구하기
2번 문제 해결하기!
- 2번 시트의 세부 수준은 “국가”와 “시도”이기 때문에 이 뷰에서 매출 합계 값을 구하면 가장 낮은 시각화 세부 수준인 “시도” 기준으로 합계 값이 구해짐
- But, 최종 목적인 전국 기준 매출 구성 비율을 구하려면 “시도 매출의 합계 값“을 “전국 매출의 합계 값“으로 나눠야 함
- 즉, 우리에게 필요한 *“전국 기준”의 매출 합계 값은 이 뷰의 수준에서는 절대 구할 수가 없음!
- “현재 뷰의 시각화 세부 수준“과 “실제 내가 필요한 집계의 기준“이 상이할 때 사용할 수 있는 것이 “세부 수준 계산식”
시도 기준 매출 비율과 전국 기준 매출 비율을 함께 나타내는 시각화해보기
최종결과 🌈
- FIXED 함수 이용해 “전국 기준 매출” 계산식 만들기
- FIXED: 지정된 특정 차원을 기준으로 집계하는 방법
{ FIXED [국가]: SUM([매출]) }
-
“전국 기준 구성비율” 계산식 만들기
SUM(매출) / SUM([전국 기준 매출])
- 애초에 뷰의 세부 수준이 “시도”이니까 매출 합계는 시도의 매출 합계를 나타냄
- 새로 만든 “전국 기준 구성비율” 필드 ‘레이블‘에 추가
- 필터를 바꿔도 전국 기준 매출 구성비율 값 바뀌지 않음 확인
4️⃣ 세부 수준 계산식 : 과거 고객 매출 기여도 및 신규 유입 고객 현황 분석
시각화를 통해 고객의 충성도와 신규 유입 고객 현황 살펴보기
최종결과 🌈
- 2015년에 첫 구매를 발생시킨 고객이 여전히 2018년도까지 많은 매출에 기여하고 있음
- 반면 매년 새로 유입되는 고객은 감소하고 있음
- 열 선반에 주문일자(연도), 행 선반에 매출 추가
- “고객별 최초 구매일” 계산식 만들기
- 현재 시각화 세부 수준은 “연도”이므로 “고객”을 기준으로 최초 주문 일자 구하기 위해 세부 수준식 사용
-
FIXED 함수를 이용하여 “고객“으로 차원 고정하고, MIN 함수를 이용해 최초 주문일자 구하기
{ FIXED [고객번호] : MIN([주문 일자]) }
- 새로 만든 “고객별 최초 구매일”을 색상에 추가
🔥 [추가 도전] 코호트 분석
최초 구매가 일어난 후, 두번째 구매가 발생하기까지의 기간이 어느 정도 되는지 시각화
최종결과 🌈
- 2015년 2분기에 처음 구매를 한 고객은 2분기가 지난 후 가장 많이 재구매
- 4번 과제에서 만든 최초 구매일을 활용해 2번째 구매일 (“고객별 최초 재구매일”) 구하기
- 세부 수준 계산식
{ FIXED [고객번호] : MIN( IIF( [고객별 최초 구매일] < [주문 일자], [주문 일자], NULL ) )}
- IIF 함수: 제일 첫 번째 조건이 만족하면, 2번째 값을, 아니라면 3번째 값을 적용한다는 의미
- IIF 함수를 통해 구해진 주문일자 중 가장 최소값을 가져오게 되면 그 날짜가 고객별 두번째 구매날짜가 됨
-
“고객별 최초 구매일”과 “고객별 최초 재구매일”을 가지고 DATEDIFF 함수를 이용해서 ‘quarter’기준으로 재구매가 일어나기 까지의 시간 차이를 구하기 (계산식 이름: “고객별 재구매 경과기간”)
DATEDIFF('quarter', [고객별 최초 구매일], [고객별 최초 재구매일 ])
- “고객별 재구매 경과기간”의 결과 값이 숫자여서 새로운 계산식이 측정값에 위치
- But, “고객별 재구며 경과기간”을 집계 형태로 사용하는 것이 아니라 하나의 “**차원**”으로 사용해야 하기 때문에 “고객별 재구매 경과기간” 필드를 드래그 하여 측정값에서 차원으로 이동
-
구해 놓은 “고객별 최초 구매일”을 행 선반에 불연속형 “년”, “분기” 수준으로 추가
-
“고객당 재구매 경과기간”을 열 선반에 추가
- “고객번호”에서 마우스 오른쪽 버튼을 누른채 (Mac의 경우 Option을 누른채) 로 색상에 드래그 하고, 고유 카운트로 집계
- 해당 기간에 해당하는 고객 수 카운트
Leave a comment