얼마나 detail하게 데이터를 분류할 것인가?
VLOD를 결정하는 것은 오직 차원이다. (O)
VLOD를 변화시킬 수 있는 위치: 행, 열, 페이지(?),필터, 색상, 크기, 레이블, 세부정보,도구설명
(차원을 위의 위치들에 올리면 화면의 LOD는 점점 더 구체적으로 감.)
모든 측정값은 VLOD에서 집계되고 표현된다.
Syntax for LOD Expressions:
{Include [차원1], [차원2] : SUM([측정값])}
어떤 종류의 LOD 표현식을 쓸 것인가?
현재 VLOD가 Category 수준에서 평균 매출값이 보여지고 있음.
{ INCLUDE [Sub-Category] : AVG([Sales]) }
식으로 구성된 Sales by Sub-Category – Include
를 화면에 넣으면
어떻게 계산된 것인가? 눈에 보이지 않지만 태블로 뒷단에서 “Avg. Sales by Category and Sub-Category”
계산이 먼저 이루어짐. 즉 Sub-Category를 포함하는 레벨에서 평균 Sales 계산이 먼저 이루어짐.
다음으로 그 결과를 갖고 카테고리를 기준으로 다시 계산이 이루어짐.
현재 카테고리 레벨의 Furniture
, Office Supplies
, Technology
를 기준으로 기존의 결과들이 아래와 같이 재집계.
그래서 1781 = 504 + 532 + 96 + 649
이게 지금 합산으로 이루어지는 이유는 Include LOD 표현식을 화면 안에 올릴 때 합계로 올리기 때문에, 재계산이 이루어지는 방식 또한 합계
Include LOD는 태생적으로 새로운 차원을 포함하고 있기 때문에, Include LOD에서 만든 결과는 VLOD보다 depth가 깊을 수밖에 없다. 그 깊은 (more granular) 레벨에서 계산된 결과를 그것보다 얕은 (more aggregated) 레벨인 VLOD에서 표현해야 하기 때문에 두 번째 계산이 이루어지는 것이다.
이제 Include LOD의 집계를 평균으로 바꾼 후 좌측과 우측을 비교.
SUM([Sales]) / Sum([Number of Records])
다시 말해, 먼저 서브카테고리 레벨에서
SUM([Sales]) / SUM([Number of Records])
(= Avg. Sales by Sub-Category)
다시 카테고리 레벨에서
SUM([Avg. Sales by Sub-Category])/COUNTD([Sub-Category])
다시 정리
각 도시(City)별 평균 매출(Sales)을 기준으로 최대-최소 편차가 다섯 번째로 큰 주(State)는 어디인가요?
위는 단순히 각 주별 평균 매출을 나타낸 것.
City 추가하고 원으로 바꾸면,
위의 원 하나하나는 각 주별로 소속되어 있는 도시들의 평균 매출
계산된 필드 생성
Sales - Avg by City - Include
{ INCLUDE [City] : AVG([Sales]) }
이것을 View에 올려준다면
뒷단에서는 도시 레벨을 포함해서 평균 매출을 1차 집계로 구할 것 (아래와 같이)
이 1차 집계한 결과를 어떻게 다시 한번 집계해야 할까?
Alabama 주 기준으로 먼저 Mobile을 갖고 오기 위해 MAX값으로 한 번 재집계, 다음으로 Tuscaloosa를 갖고 오기 위해 MIN값으로 한 번 재집계
Alabama 주 살펴보면 MAX는 Mobile의 평균 매출 금액이었고, MIN은 Tuscaloosa의 평균 매출 금액. MAX-MIN = 편차
축을 2개 사용하기보다는 최소값을 축 (축의 머리글이 표시된 부분) 위에 얹은 후, 이중 축(Ctrl 누르고 측정값 옆으로 옮기기)을 써서 위의 것은 점으로 두고 밑의 것은 라인으로 바꿈. 그리고 마크 판에 있는 ‘측정값 이름’에 Ctrl 누르고 측정값 이름을 경로에 넣으면 이렇게 된다.
이중축 쓰고 (측정값 중 우측에 우클릭하고 ‘이중축’ 선택) 우측 축에 대해 축 동기화 시키면, 편차가 보는 화면에서 만들어지고 있음.
위의 화면에서 편차를 내림차순으로 정리하려면 ‘편차’를 만들어주어야 함
이름: Diff
MAX([Sales - Avg by City - Include]) -
MIN([Sales - Avg by City - Include])
정렬
> 필드
> 필드명 Diff
> 내림차순
에 체크(상황은 그렇게 많지 않음)
VLOD에 포함된 특정 차원을 제외하고 싶을 때
이름: Sales by Category - Exclude
{ EXCLUDE [Sub-Category] : AVG([Sales]) }
식을 집어 넣으면 이렇게 됨.
서브 카테고리를 제외한 Exclude LOD 표현식을 화면 안으로 집어넣으면,
(기존 화면에서 VLOD는 Sub-Category까지 내려와 있는데)
Sub-Category 레벨을 제외한 수준에서 평균 Sales가 1차로 계산된다.
그리고 그 결과값은 현재의(기존의) VLOD(=Sub-Category 레벨)에서 표현하기 위해 각 카테고리별로 동일한 숫자들로 복제된다.
도시(City)의 소속 주(State)에 대한 수익(Profit) 기여도를 지도에 표현하라.
City
City
가 속한 State
의 총 수익에 대한 기여도. 파란색으로 갈수록 수익, 빨간색으로 갈수록 손실이것을 나타내는 지도를 만들기
City
를 더블클릭해서 지도 만듦“각 도시의 수익의 합계 / 해당 도시가 포함된 각 주의 수익의 합계”
을 계산해야 함City
레벨에서 형성되고 있기 때문에 SUM([Profit])
= 각 도시별 수익의 합계 City
레벨에서 도시를 제외(Exclude LOD) 해버리면 State
레벨에서 수익이 집계될 것이름: Profit Contribution
식: SUM([Profit]) / ATTR({ EXCLUDE [City] : SUM([Profit]) })
SUM([Profit])
은 도시별 수익 ‘집계된 값’SUM
으로 해도 되고, AVG
로 해도 되고, ATTR
로 해도 됨.이 계산된 필드를 색상
에 올려주면
Profit
을 크기에 집어넣으면, 가장 작은 값이 마이너스도 나오고 있음.SUM([Profit])
을 더블클릭 > ABS
(절댓값) 적고 괄호 치면Sub-Category별로 Sales의 총합계가 나와 있는 상황에서, (아래와 같은 상황)
Paper의 값을 기준으로 상대적으로 다른 Sub-Category 항목이 얼만큼 더 팔았는지 혹은 덜 팔았는지를 표현하라.
이름: Sales - Paper
식: IIF([Sub-Category] = 'Paper', [Sales], NULL)
IIF
는 IF
function과 동일. 형식은 IIF(테스트, 해당하는 경우, 해당하지 않는 경우, [알 수 없음])
Paper
이면 Sales
를 반환하고, 그렇지 않으면 NULL
값을 반환한다.Sales – Paper
을 화면에 넣어 보면이름: Sales - Paper - Exclude
식: { EXCLUDE [Sub-Category] : SUM([Sales - Paper]) }
Sales – Paper
을 더해 주라는 것. (다 더해 봤자 Sales - Paper의 금액). 그 상태에서 VLOD에 맞춰서 표현해주기 위해 복제된다.이름: Sales - Relative to Paper
식: SUM([Sales]) - ATTR([Sales - Paper - Exclude])
ATTR
로 집계해주기Fixed
Case 1: Fixed LOD에서 선언한 차원이 VLOD에 포함되어 있을 때
Case 2: Fixed LOD에서 선언한 차원이 VLOD에 포함되어 있지 않을 때
VLOD = FIXED LOD at Sub-Category 레벨
이름: Sales - Avg. by Sub-Category - Fixed
식: { Fixed [Sub-Category] : AVG([Sales]) }
Fixed LOD 안에 서브 카테고리 레벨에서 집계가 선언되고 있고, VLOD 안에 서브 카테고리가 포함되어 있다. 위의 Fixed LOD를 화면 안으로 집어넣게 된다면?
뒷단에서는 먼저 Sub-Category 레벨에서의 AVG([Sales])
계산이 일어날 것이고, 여기에서 태블로가 작동하는 방식은 Include 또는 Exclude 둘 중 하나임. (아래와 같이)
그리고 VLOD가 현재 Sub-Category 레벨이고 Fixed LOD에서 만들어진 레벨이 Sub-Category 레벨과 같음. 따라서 2차 집계 어떻게 하든지 상관 없이 Sub-Category 레벨로 나온다. Include 방식으로 재집계할 필요도, Exclude 방식으로 복제할 필요도 없다. 그래서 보고 있는 위의 화면이 그대로 나오고, 1차 계산 뒤 2차 계산이 일어나지 않는다.
(아래와 같음)
두번째 집계를 합계로 하든, 평균으로 하든, 최댓값으로 하든, 최솟값으로 하든 상관없이 1차로 Fixed LOD 안에서 집계된 레벨이 지금 화면의 VLOD와 같기 때문에, 2차 집계는 어떤 방식으로 하든 관계없이 VLOD, 그리고 Fixed LOD 안에서 선언되었던 레벨로 나오게 된다.
따라서 Sales - Avg.by Sub-Category - Fixed
의 두번째 집계를 합계
로 설정했음에도 불구하고 Sales
의 평균과 같은 그래프가 도출된다.
VLOD, deeper than Fixed LOD
아까의 Sub-Category 레벨에서 한단계 더 내려간 제조사 레벨 (밑의 검은색 화면의 왼쪽 그래프)
VLOD는 Manufacturer 레벨까지 내려감.
태블로 뒷단에서 일어난 (1차 집계) 결과는 아까 본 9강 FIXED (2) 그래프와 똑같이 Sub-Category 레벨에서 평균 Sales를 집계. 그러나 아까와 달리 VLOD가 현재 Fixed LOD 안에서 선언된 레벨보다 더 깊은 수준이다.
(아까 만든 Fixed LOD 표현식을 올리면,)
따라서 제조사 레벨과 상관없이, Sub-Category 레벨에서 계산된 평균 매출 금액이 오른쪽에 복제되어 나오는 것
복제되는 이유는 Exclude와 같음. VLOD와 맞추기 위해서.
왼쪽은 단순히 매출 합계를 카테고리별로 올린 것이고, 오른쪽은 서브 카테고리 레벨에서 집계된 매출 합계를 Fixed LOD로 만들어서 화면 안에 집어넣은 것. 둘의 결과는 똑같이 나온다.
Fixed LOD
이름: # Sales - Sum by Sub-Category - Fixed
식: { FIXED [Sub-Category] : SUM([Sales]) }
Include의 경우의 원리를 생각해 보면 동일하게 적용 가능
위 Fixed LOD 표현식에서 태블로 뒷단에서는 다음과 같은 계산을 수행한다.
Fixed LOD 안에서 정의된 레벨은 Sub-Category 레벨이고, 현재 VLOD에서 정의된 레벨은 보다 한 단계 높은 Category 레벨이기 때문에 VLOD에서 표현하기 위해 재집계가 이루어지고, 이것이 ‘합계’였기 때문에 동일한 그래프가 도출된 것이다.
City 레벨에서 Sales 평균 본 후에
이름: Sales - Avg. by Sub-Category - Fixed
식: { Fixed [Sub-Category] : AVG([Sales]) }
위의 Sub-Category 레벨에서 평균 Sales가 집계된 Fixed LOD를 화면 안으로 집어 넣으면
이렇게 나옴.
따라서 Auburn이라는 도시는 이 6개 항목의 1차 계산 결과에 대해서만 2차 계산(평균)을 수행하게 된다.
따라서 총 6가지의 항목들의 평균의 합계가 987이고, 이를 6으로 나누면 위에서 본 164라는 결괏값이 도출된다.
• Fixed LOD에서 선언한 차원과 집계 방식에 따라 1차 집계가 이루어짐
• Fixed LOD에서 선언된 차원(Sub-Category)을 포함하는 레벨에서 측정값(Sales)가 존재하는지 스캔
• 해당 측정값이 존재하는 항목에 대해서만 1차 집계값을 가지고 옴. (이 모든 과정은 눈에 보이지 않음)
• VLOD에서는 존재하는 1차 집계값에 대해서만 재집계하여 화면에 표현
각 지역(Region)별로 수익을 낸 주문과 손실을 낸 주문의 매출 비중을 구해보세요.
이름: Profitable Order
식: { FIXED [Order ID] : SUM([Profit]) > 0 }
(1) 전체 데이터셋 범위에서 집계값을 잡을 때
이름: Sales – Total
식: { SUM([Sales]) }
(2) 날짜 필드를 활용할 때 ex. 최근 3개월, 올해, 지난 주 등
이름: Recent Year
식: { MAX(YEAR([Order Date])) }
이름: Last Year
식: [Recent Year] – 1
(3) 필터의 영향을 받지 않는 값을 만들어야 할 때
이 외에도 수도 없이 많다!
Furniture
의 4개 Sub-Category의 평균끼리 평균 낸 값이 440각 서브 카테고리의 평균 매출이 자기 자신이 속한 카테고리의 평균 매출과 얼마만큼 차이가 나고 있는지 표현해보세요.
이름: Sales - by Category – Fixed
식: { FIXED [Category] : AVG([Sales]) }
이름: Difference
식: AVG([Sales]) - AVG([Sales - by Category - Fixed])
참고