배우기/데이터시각화&BI

[Tableau] 세부 수준(Level of Detail) 정리

수이 Sui 2023. 4. 19. 01:02

회사에서 태블로 관련 이야기가 나오면 LoD함수라는 단어도 함께 등장하곤 했는데,

LoD가 대체 무엇인고 하니, Level of Detail의 약자였다.. 😂

한국에서는 Level of Detail Expression을 한국어로 번역하여, 세부 수준 계산식이라고 부르는 듯 하다.

LoD가 Level of Detail이라는 것을 알고 나니, 세부 수준 계산식에 대한 개념도 이해하기 쉬웠다.


・세부 수준(Level of Detail) 이란?

태블로는 측정값으로 항상 집계(Aggregate)된 값을 표시하는데

세부 수준이란, 측정값을 '얼마나 세밀한 수준에서' 볼 것이냐?를 의미한다.

 

세부 수준은 얕을 수도 있고 깊을 수도 있다.

세부 수준이 얕다 = 측정값이 분리되어 있지 않다.

세부 수준이 깊다 = 차원에 따라 측정값이 분리되어 있다.

 

세부 수준은 차원이 결정하며, 열, 행, 세부정보, 마크 카드에 차원을 드래그하면 세부 수준은 깊어지게 된다.

 

아래의 두 테이블 중, 어느 테이블이 세부 수준이 얕고, 어느 테이블이 세부 수준이 깊을지 생각해보면,

Category 쪽이 얕고, Category & Sub-Category 쪽이 깊다는 것을 쉽게 알 수 있다.

Category는 profit을 Furniture, Office Supplies, Technology라는 세 개의 항목으로 분리하여 표시하고 있지만,

Category & Sub-Category는 profit을 Sub-Category 단위로 더 잘게 쪼개어 세밀하게 표시하고 있기 때문이다.

・세부 수준 계산식 (Level of Detail Expression) 이란?

뷰의 granularity와 관계없이, 계산식에서 지정한 granularity로 집계해주는 함수를 뜻한다.

세부 수준 계산식에은 Fixed, Include, Exclude의 3가지 종류가 있다.

 

1. Fixed

Fixed는 뷰에 설정된 차원을 참조하지 않고, 지정된 차원의 측정값을 계산하기 위해 사용한다.

 

식은 아래와 같다.

{ FIXED [차원] : 집계식 }

 

▼ FIXED 예시

 

아래의 테이블은 Region - Country 차원으로 측정값 Profit을 확인할 수 있다.

Country차원과는 독립적으로 Region차원의 Profit을 테이블에서 함께 확인하려면 어떻게 해야할까?

 

우선, Calculated Field를 생성하고 아래의 계산식을 입력한다.

Calculated Field는 툴바의 Analysis나 패널을 우클릭하면 나오는 Create Calculated Field를 통해 만들 수 있다.

이 경우, '뷰에 설정된 Country라는 차원과는 관계없이, Region이라는 차원에 대해, Profit의 합계를 계산해라' 라는 것을 의미한다.

{ FIXED [Region] : Sum([Profit]) }

 

그 다음, 새로 작성한 Profit Per Region을 기존 Profit의 열의 오른쪽에 설정하면,

아래와 같이 뷰에 설정된 Country라는 하위 차원과는 관계없이, Region이라는 차원에 대해 고정된 Profit의 합계를 확인할 수 있다.

 

2. Include

Include는 뷰에 설정된 차원 + 추가적으로 특정한 차원의 측정값을 계산하기 위해 사용한다.

Include는 데이터베이스에서 세밀한 세부 수준으로 계산한 뒤, 재집계하여 뷰의 거친 세부 수준으로 표시하려는 경우에 유용하다.

 

식은 아래와 같다.

{ INCLUDE [차원] : 집계식 }

 

▼ Include 예시

 

아래의 각 국가당 Profit 그래프와 함께, 각 국가의 Order당 Profit을 확인하려면 어떻게 해야 할까?

 

우선, Calculated Field를 생성하고 아래의 계산식을 입력한다.

이 경우, '뷰에 설정된 Country라는 차원과 Order ID라는 차원에 대해, Profit의 합계를 계산해라' 라는 것을 의미한다.

밑줄 친 부분은 뷰에 설정된 차원에 따라 달라진다.

{ INCLUDE [Order ID] : sum([Profit])}

 

그 다음, 새로 작성한 Profit Per Order ID를 Rows에 설정한 뒤, 우클릭 > Measure(SUM)을 Measure(Average)로 변경하면,

아래와 같이 각 국가의 Order당 Profit의 평균값을 확인할 수 있다.

결과적으로 이 예시는, 데이터베이스에서 Profit이라는 측정값을 Order ID라는 더 세밀한 세부 수준으로 계산한 뒤,

재집계하여 뷰의 Country라는 거친 세부 수준으로 표시한 것이 된다.

Include와 Fixed의 차이점은, 뷰에 설정된 차원에 종속적이냐 독립적이냐를 생각하면 이해하기 쉽다.

 

3. Exclude

Exclude는 뷰의 세부 수준에서 생략할 차원을 선언하기 위해 사용한다.

Exclude는 '전체 중 차지하는 비율' 혹은 '전체 평균에 대한 차이'를 확인하려는 경우에 유용하다.

주의할 점으로, 더 이상 생략할 차원이 없는 행 수준 식에서는 사용할 수 없다. (뷰 수준 계산 혹은 중간 수준의 항목을 수정에는 사용가능)

 

식은 아래와 같다.

{ EXCLUDE [차원] : 집계식 }

 

▼ Exclude 예시

 

아래와 같이 테이블의 차원에 Region, Country, State가 측정값에 Profit이 설정되어 있고

추가적으로 각 State의 평균 Profit과 각 Country의 평균 Profit의 차를 확인하려면 어떻게 해야 할까?

 

우선, Calculated Field를 생성하고 아래의 계산식을 입력한다.

이 Calculated Field는 State라는 차원을 제외하고, 즉, State보다 상위 granularity의 수준에서 Profit의 평균을 구한다.

{ Exclude[State] : AVG([Profit]) }

 

Calculated Field를 테이블에 설정하면, 각 Country의 평균 Profit을 확인할 수 있다.

 

그리고 각 Country의 평균 Profit과 State의 평균 Profit 간의 차를 구하기 위해,

새로운 Calculated Field를 생성하고 아래의 식을 입력한다.

AVG([Profit]) - ATTR([Exclude])

 

두 번째로 작성한 Calculated Field를 테이블에 설정하면 아래와 같은 모습이 되며, 

각 State의 평균 Profit과 각 Country의 평균 Profit의 차를 확인할 수 있다.

Exclude도 Include와 동일하게 뷰의 세부 수준에 종속적이기 때문에,

만약에 테이블에서 Country라는 차원을 드롭하면 Exclude는 자동적으로 Region의 Profit의 평균값을 계산하고,

difference에도 Region의 평균 Profit과 State의 평균 Profit의 차가 반영되게 된다.