[3-5일차] 차원의 지배자: 세부 수준 계산식(LoD)
1. 세부 수준 계산식(LoD) 필요한 이유
시각화/뷰 세부 수준이란 태블로에서 데이터 값을 집계할 때 뷰에 추가되어 있는 차원에 따라 집계 수준과 뷰의 마크 수가 결정됩니다. 페이지, 열, 행, 색상, 크기, 레이블, 세부정보, 경로에 따라서 세부 수준이 결정됩니다.
예로 수익률을 구할 때 가장 낮은 수준에서는 [Profit]/[Sales] , SUM(Sales) / SUM(Profit)이 동일한 값으로 계산됩니다. 하지만 시각화 세부 수준이 달라지게 되면 앞의 식은 가장 낮은 수준에서 계산 후 요청된 뷰의 집계에 따라 구하기 때문에 비율 자체 합을 리턴합니다. 하지만 SUM(Sales) / SUM(Profit)의 경우 뷰의 세부 수준과 상관 없이 각 매출 합계를 구하고 집계하기 때문에 집계 기준에 따른 수익률을 구할 수 있습니다.
뷰 수준 이외의 세부 수준에서 계산을 만들 수 없어 세부 수준 식을 사용해야 합니다.
기본 : 행 수준
구분 | 수준 | 예시 |
집계되지 않은 데이터 원본 열을 참조하는 식 | 행 수준 | 각 행의 수익률 [Profit]/[Sales] |
뷰에서 계산된 필드가 집계 |
뷰 수준 | SUM([Sales]) SUM(Profit)/SUM(Sales) |
집계된 데이터 원본 열을 참조하는 식은 뷰의 차원으로 정의된 차원 특성에서 계산 | 뷰 수준 | SUM(Profit)/SUM(Sales) |
집계계산 | 뷰 수준 | AGG(SUM(Profit) / SUM(Sales)) |
테이블 범위 세부 수준 식 | 테이블 범위 세부 수준 | 각 행의 매출과 전체 매출 평균과 차이 [Sales] - {AVG([Sales])} |
뷰의 세부 수준 식 동작은 식의 세부 수준이 뷰의 세부 수준보다 더 높은지, 낮은지 또는 같은지에 따라 달라집니다. 그래서 시각화에 추가된 차원으로 계산된 집계값이 아닌 별개의 기준에 따라 계산이 필요할 때 LoD를 사용하게 됩니다. 예로 금년 고객 별 매출을 본다면 해당 고객의 이용일을 계산 시 첫 이용일에 대한 데이터가 필요하게 됩니다. 이런 경우 뷰에 적용된 필터와 상관없이 해당 고객의 첫 이용일을 표시해야 하기 때문에 시각화 세부 수준이 아닌 다른 수준을 기준으로 계산이 필요하게 됩니다. 따라서, 태블로에서는 다양한 수준으로 집계 및 컨트롤할 수 있도록 뷰에 세부 수준 식을 추가하여 시각화의 세부 수준과 식의 세부 수준으로 조정할 수 있게 됩니다.
2. 세부 수준 계산식(LoD, Level of Detail Expression)
화면상의 세부 수준과 관계없이 계산이 필요한 경우에 사용됩니다.
{ INCLUDE | EXCLUDE | FIXED [차원] ,... , ... : 집계 함수 ( [측정값] or [차원]) }
FIXED, INCLUDE, EXCLUDE의 차이
- "시각화의 세부 수준 범위 지정
구분 | 범위 | 태블로 실행 순서 | 계산식 세부수준 | |
시각화 수준 | 시각화 세부 수준 | sum([매출]) 제품 대분류, 중분류 별 매출합 |
제품 대분류, 중분류 | |
FIXED | 차원/측정값 | 차원 필터 이전 | SUM ( { FIXED [제품대분류] : SUM ( [매출] ) } ) 제품 대분류 별 매출 합 |
제품 대분류 |
INCLUDE | 측정값 | 차원 필터 이후 | SUM ( { EXCLUDE [제품중분류] : SUM ( [매출] ) } ) | 제품 대분류(제품 중분류 제외) |
EXCLUDE | 측정값 | 차원 필터 이후 | AVG ( { INCLUDE [제품번호] : SUM ( [매출] ) } ) | 제품 대분류, 중분류,제품번호 |
3. 케이스
3.1 필터, 매개변수로 인해 null 값 발생
원인: 날짜 매개변수에 따라서 해당하는 연도에는 [기준기간 매출]이 있으나 [전년동기간매출] null, 작년 [기준기간 매출] null 있으나 [전년동기간매출] 존재함에 따라서 YoY계산 불가
기준기간이 2023년인 경우
주문일 | 기준기간 매출 | 전녀동기간 매출 | 기준기간 매출 FIXED | 전녀동기간 메출 FIXED |
2023.09.03 | 100 | NULL | 1100 | 10 |
2023.10.03 | 1000 | NULL | 1100 | 10 |
2022.01.03 | NULL | 10 | 1100 | 10 |
솔루션 : Fixed로 기준기간 매출, 전년동기간매출 계산하고 해당 계산 결과로 YoY 계산
{FIXED [고객 세그먼트], [제품 대분류] : sum([기준기간 매출])}
( SUM([기준기간 매출_FIXED])- SUM([전년동기간 매출_FIXED]) ) / SUM([전년동기간 매출_FIXED])
3.2 시각화 세부 수준과 원하는 계산 수준이 다른 경우
원인: MTD 시각화 세부 수준 최소 단위가 날짜이기 때문에 최솟값의 집계기준은 시각화 세부 수준과 동일(예. 2023.09.03의 최솟값은 2023.09.03)
주문일 | MTD | 기준기간 최소일 |
2023.08.03 | NULL | 2023.08.03 |
2023.09.03 | 기준기간 | 2023.09.03 |
2023.10.03 | NULL | 2023.10.03 |
솔루션 :조건식에 해당하는 데이터 전체 범위에서 가장 작은 날짜를 LoD를 통해서 MTD 데이터 전체 범위에서 집계하여 해당 월의 가장 최소날짜 구함 (예. 2023.09.03의 데이터 전체 범위에서의 최솟값은 2023.09.01)
{FIXED : MIN(IF [MTD] = '기준기간' THEN [주문 일자] END)}
{ MAX(IF [MTD] = '기준기간' THEN [주문 일자] END) }
// FIXED 생량 가능
응용
- 위의 케이스를 이해하셨다면 아래와 같이 원하는 수준에서 계산을 하고 이에 따라 비교하여 표시할 수 있습니다.
// 계산식 이름 : 선택 주 키워드별 평균 순위
{ FIXED [Category], [Keyword], DATEPART('week', [기준날짜]) : AVG(
IF DATEPART('week', [기준날짜]) = DATEPART('week', [Date])
AND DATEPART('year', [기준날짜]) = DATEPART('year', [Date])
THEN [Keyword Rank]
END
)
}
// 계산식 이름 : 순위
RANK( SUM([선택 주 평균 순위]), 'asc' )
// 계산식 이름 : 선택 -2주 평균 순위
{ FIXED [Category], [Keyword], DATEPART('week', [기준날짜]) : AVG (
IF DATEPART('week', [기준날짜]) - 2 = DATEPART('week', [Date])
AND DATEPART('year', [기준날짜]) = DATEPART('year', [Date])
THEN [Keyword Rank]
END
)
}
// 계산식 이름 : 키워드 순위 상승 여부
IF [선택 -2주 평균 순위] > [선택 -1주 평균 순위] AND
[선택 -1주 평균 순위] > [선택 주 평균 순위]
THEN '순위 연속 상승 키워드'
ELSE '순위 연속 상승 키워드가 아님'
END
// 계산식 이름: 고객별 주문건당 매출(2020)
{FIXED [고객번호],[주문 번호] :
SUM (IF YEAR([주문 일자]) = 2020
THEN [매출]
END)
}
// 평균주문단가 증감율
(AVG([고객별 주문건당 매출(2020)]) - AVG([고객별 주문건당 매출(2019)]))
/ AVG([고객별 주문건당 매출(2019)])
// 계산식 이름: 증가/감소
IF [평균주문단가 증감율] > 0 THEN "증가"
ELSEIF [평균주문단가 증감율] = 0 THEN "동일"
ELSE "감소"
END
4. 회고
실제로도 FIXED활용한 LoD는 많이 사용되고 있는데 처음 접하는 경우 감이 잘 잡히지 않는다. 태블로 작업 순서(order of operation) 와 어떤 수준에서 집계되는지를 이해한다면 원하는 수준의 계산식을 만들어 활용 200% 가능!
출처
https://help.tableau.com/current/pro/desktop/ko-kr/calculations_calculatedfields_lod_overview.htm
https://help.tableau.com/current/pro/desktop/ko-kr/order_of_operations.htm
관련글
[Tableau] 태블로 신병 훈련소(소개,일정,설치, 태블로 퍼블릭 공유)
[Tableau]태블로 UDT(소개,일정,신청,커리큘럼,난이도,무료 교육)
[Tableau] Tableau Desktop Specialist 태블로 데스크탑 스페셜리스트 자격증 합격 후기(소개,시험 팁)
'Data > BI' 카테고리의 다른 글
[Tableau]Tableau DataFest Korea 2024 현장 스케치와 후기 (0) | 2024.09.23 |
---|---|
[Tableau] 태블로 신병 훈련소(소개,일정,설치, 태블로 퍼블릭 공유) (2) | 2023.11.01 |
[Tableau] Tableau Desktop Specialist 태블로 데스크탑 스페셜리스트 자격증 합격 후기(소개,시험 팁) (0) | 2023.08.14 |
[Tableau]태블로 UDT(소개,일정,신청,커리큘럼,난이도,무료 교육) (0) | 2023.08.06 |
[Tableau]태블로 UDT-1회차 시간의 지배자(유형,날짜 함수,yoy ytd mtd) (0) | 2023.05.20 |