Data/BI

[Tableau] 태블로 UDT 2회차 차원의 지배자: 세부 수준 계산식(LoD)

뚱요 2023. 9. 4. 09:00
반응형

[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 태블로 데스크탑 스페셜리스트 자격증 합격 후기(소개,시험 팁)

[Tableau]태블로 UDT-1회차 시간의 지배자(유형,날짜 함수,yoy ytd mtd)

반응형