LITTLE BY LITTLE

태블로 마스터 클래스 - Order of Operations : 테이블 계산 필터(LAST,LOOKUP) , Fixed LOD , 컨텍스트 필터 본문

시각화

태블로 마스터 클래스 - Order of Operations : 테이블 계산 필터(LAST,LOOKUP) , Fixed LOD , 컨텍스트 필터

위나 2022. 8. 2. 23:47

*영상 참고

 Order Of Operations

  1. 무엇이 먼저 작동되고, 나중에 작동되는지 알아야 한다.
  2. 필터는 태블로의 Order Of Operations를 구성하는 핵심요소

왼쪽 하늘색 부분은 계산 관련 , 오른쪽 주황색 부분은 필터 관련


목차

1. LAST()

2. LOOKUP()

4. FIXED LOD

5. CONTEXT FILTER 

 


 

LAST()

2015-2018년 Super Store 데이터로 최근 2년간 수익(Profit)에 대한 12개월 이동평균을 만들어보자.

* 이동평균(Moving Average) : 전체 데이터 집합의 하위 집합에 대한 평균 = (이전의 이동평균) + (들어온 가장 최근 값 - 나간 가장 오래된 값) / m개

  1. [Profit]을 행 선반에 올리고, [Order Date]를 열 선반에 연속형 - 월로 설정하여 올리기
  2. 행 선반의 [Profit] 우클릭 - 테이블 계산 추가 - 이동 계산 선택, 합계 대신 평균으로 변경, 이전 값 - 11(개월), 현재값에 체크 → 총 12개월
  3. Profit 레이블 마크에 넣고, 처음과 끝에만 나오게 체크 
  4. Order Date를 필터에 올려서, 연/월 - 2017 Jan ~ 2019 Dec 까지 24개 선택
  5. 여기까지 했을 경우 문제는, 최초 11개월에 대해서는 이동평균의 값이 제대로 만들어지지 않았다는 것이다. 그 이유는 이동평균을 만들기 위해 필요한 값이 이동평균이 만들어지기 이전에 필터링되어 빠져나갔기 때문이다.

(위의 Order Of Operations참고, 중간 오른쪽에 'Aggregate Calculation Filters''Table Calculations' 보다 위에 있다.)

 

6. 따라서 '이동평균 계산'이 먼저 이룰어진 후에, 필터가 적용되게 만들어야한다.

7. *LAST 함수는 날짜(연월)에 대한 차원 필터를 대체할 수 있다. LAST함수를 필터로 활용하여, 뒤에서부터 24개의 마크를 가지고오면 된다.

  • 계산된 필드만들기 - 이름과 식에 모두 LAST()라고 입력하고 엔터를 누른다.
  • 만든 필드를 필터에 넣으면, 값 범위를 지정할 수 있다. 최근2년의 값이 필요하므로, 거꾸로 24개월값을 입력하기 위해 0 부터 23까지로 설정해준다. (LAST 끝에서부터니까)
  • 필터 대신 이렇게 LAST()함수를 사용하면 이동평균이 잘 구해진다.

 

필터를 이용한 이동평균(X)

잘못된 이동평균값

LAST() 함수를 이용한 이동평균 (O)

잘 계산된 이동평균 값


 

집계 계산 후 필터 설정을 하고싶다면, 날짜 차원 필터는 LAST함수를 이용하면 되고, 

LOOKUP()

문자열 차원 필터는 LOOKUP() 함수를 이용하면 된다.

  1. [고객명] 필드를 행에, [수익]필드를 열에 올려놓고, [수익]을 레이블 마크에 드래그한다.
  2. 행 선반을 더블클릭하여 RANK(SUM([수익])) 입력 후, 불연속형으로 변경하고, [고객명]필드 앞으로 이동시켜 순위를 표시한다.
  3. [고객명] 필드를 필터에 드래그하고, 보고자하는 고객명에 체크하여 확인을 누르면 그 고객들이 필터되어 뷰에 보여진다. 하지만 그 고객들의 원래 순위가 아닌, 필터된 후의 순위가 보여진다.

잘못된 순위 차트

  1. 계산된 필드 만들기 - 'Customer Name - Table Calc Filter'로 이름 설정  - LOOKUP(ATTR([고객명]),0) → 의미 : 고객명이 나열되어 있는 리스트에서, 자기 자신의 줄에 있는 그 값, 즉 자기 자신을 가져오라는 뜻의 식이다. (ATTR은 attribute 약자)
  2. 생성된 필드를 필터에 드래고하고, 모두 체크한뒤 원래 있던 고객명 필드를 제거하면, 필터 전 그 고객들의 순위가 몇위인지 확인할 수 있다.

필터링 하기 전 각각 고객들의 순위가 잘 나타난 차트 ( LOOKUP 함수 이용 )

이번에는 고객명이 아닌, 고객 세그먼트에 대한 필터를 생성해보자.

  1. 계산된 필드 만들기 - 'Segment - Table Calc Filter'로 이름 설정, - LOOKUP(ATTR([고객 세그먼트]),0)
  2. 역시 필터에 넣어주고 전체를 선택하여 가져온뒤, 필터 표시한 후 특정 세그먼트만 선택하여 보아도 전체 순위를 유지하고있다.

 


FIXED LOD

주별 매출을 표현한 지도를 통해서, 카테고리별 수익률을 필터링하는 대시보드를 만들어보자.

*차트의 참조선 값이 바뀌지 않도록 주의하기

  1. [State] 필드를 더블클릭하여 화면에 올리고, [Sales]를 색상 마크에 올려서, 각 주별 매출 금액을 지도로 표현한다.
  2. 바 차트를 만들기위해서 새 시트를 열고, [Profit Ratio] 필드를 행에 올리고, [Category]를 열에 올린다. 
  3. 행↔열 을 해주고, 레이블을 달아주고(행바꾸기 버튼 우측에 있다), 표준 - 전체보기로 바꿔준다.
  4. [Category] 필드를 색상 마크에 넣어준다.
  5. 분석 패널 - 참조선을 셀에 드래그하고, 레이블을 사용자 지정 - National Level = <값> 으로 입력해준다.
  6. 대시보드로 이동해서, 생성했던 시트 두가지를 배치한다.
  7. 액션을 걸어주기 위해서 상단에 대시보드 - 동작 - 동작추가 - 필터에서 아래 캡쳐본과 같이 체크해준다. (의미→ 원본시트 : 시트3(지도)차트를 클릭했을 때, 대상시트 : 시트4가 나오게 한다.)
  8. 지도 속 지역 선택시, 막대 차트는 그에 따라 다르게 잘 보여지지만, 생성했던 참조선도 같이 변해버리는 문제가 생긴다. (참조선은 모든 주들의 값의 기준선이라서 바뀌면 안됨)
  9. 다시 맨 위의 Order Of Operations 그림을 다시보면, 참조선에 나오는 'Profit Ratio'집계 계산이기 때문에, 'Aggregate Calculations'에 해당하여, ' 액션 필터 Dimension Filters( bins, actions, groups )'보다 뒤에 있다.(적용 우선순위가 낮다.) 즉, '필터'가 '집계'보다 앞서 적용된다.
  10. 그래서 집계 계산action 필터의 영향을 받지 않는, 그보다 더 앞 순위에 있는 {Fixed} (←LOD를 의미)로 바꾸어주어야한다.

위의 7번 과정 : 대시보드 액션 추가해주기
Order Of Operations : FIXED 설정시 액션 필터 영향을 받지 않는다.

(▼)잘못된 예 (feat.참조선)

지역에 따라 바 차트도 바뀌고, 바뀌면 안되는 참조선 National Ratio까지 바뀌는 잘못된 대시보드

→ 액션 필터보다 작동 우선 순위가 높은 Fixed LOD 참조선을 넣으면, 바 차트는 칠터링 되지만, 참조선은 필터링 되지 않는 화면을 만들 수 있다.

  1. 앞서 만든 화면에서 기존의 참조선을 제거한다.
  2. 계산된 필드 - 'Profit Ratio by Cateogory'로 이름을 지정해주고, 식을 {FIXED [Category] : [Profit Ratio]} 로 입력해준다.
  3. 생성한 필드를 이용해서 참조선을 만드려면, **필드가 뷰 안에 들어가있어야한다. 그럴 때 이용하는 것이 마크카드 - 세부정보 이다. 세부정보 마크에 생성한 필드를 드래그해준다.
  4. 그 이후 분석 패널에서 참조선을 셀에 드래그해주면, 라인에 값 - 합계(Profit Ratio by Category)를 선택해주고, 레이블도 아까와 같이 National Level = <값>으로 설정해준다. 그리고 참조선 우클릭 - 서식 패널 - 숫자를 백분율, 1자리로 바꿔준다.
  5. 대시보드에서 확인해보면 지역이 바뀔 때마다 바 차트는 잘 필터링되고, 참조선은 원래의 값으로 유지되는 것을 볼 수 있다.

(▼)바 차트는 변화하고, 참조선은 고정된 올바른 예

아래 바 차트에서 참조선이 Furniture은 2.5%, Office Supplies는 17%,  Techonology는 17.4%로 고정되어 지역을 선택해도 그 기준선이 변하지 않아 지역별로 참조선 기준 어디에 위치하는지 확인해볼 수 있다.

 


컨텍스트 필터

필터 선택(ALL or 특정 지역)에 따라 차원이 드릴 다운(지역→주)되는 화면을 만들어보자.

Steps

  1. '지역'을 필터로 사용해야한다. 'all'이 선택되는 경우 차원은 [reion]필드를 가져오고, '특정지역'이 선택되는 경우  [state]필드를 가져오게 하기 위해서, IF문을 사용해야한다.
  2. 계산된 필드로 계산시 식은 
    1. IF ( (ALL)이 선택되었을 때 )  THEN [Region] ELSE [State] END 
    2. IF ( 특정 지역이 선택되었을 때 ) THEN [State] ELSE [Region] END
    3. 여기서 고려해야할 사항은 "Region과 State 필드는 집계되지 않은 Raw Level의 값"이라는 점이다.
      1. 그래서 IF 바로 뒤에 역시 집계되지 않은 값이 필요하고, (한가지로 통일된 값들끼리만 계산 가능함)
      2. 선택은 곧 전체 레코드 수가 달라진다는 의미이다.
      3. 두가지를 조합해보면, Fixed LOD와 SUM(Number Of Records) 조합의 식이 필요하다는 것을 알 수 있다.

* Fixed LOD는 집계되지않은 Raw 값이다.

1.계산된 필드 생성

필드 생성 - 전체 Region의 수가 각 Region별로 집계된 수와 같을시 State, 그렇지 않을시 Region을 반환하는 식

2.행에 생성한 필드를 올려주고, 열에 [Quantity]필드를 올려주고, 행↔열, 레이블 표시, 표준-전체보기 변경

3. [Region] 필드 우클릭 - 필터표시, 단일값을 선택할 수있도록 필터 수정

4. 한 지역만 선택하였는데에도 State가 아닌 Region level에 머물러있음. (필터가 작동하지 않음)

5. 해결하기 위해 생성한 필드 식에서 '지역 필터가 적용되었을 때, 2개의 Fixed LOD가 필터에의해 값이 바뀌어야한다.' 하지만 Order Of Operations를 또다시 확인해보면, Fixed LOD는 차원필터의 영향을 받지 않음 (앞선 순위임) 

FIXED LOD는 [Region]이라는 차원필터(Dimension Filters)보다 우선순위가 높다. ↔ 즉, FIXED LOD는 차원필터의 영향을 받지 않는다.

 

→ 따라서 FIXED LOD를 제어하기 위해서, FIXED LOD보다 우선순위가 낮은 차원 필터FIXED LOD보다 먼저 작동하는 컨텍스트 필터로 만들면 된다.

 

  1. 방법은 매우 간단하다. 필터에 올라가있는 [Region]필드 우클릭, 컨텍스트에 추가를 누르게되면 바로 바뀐다.
  2. 이렇게만 해주면 이제 필터에서 지역 선택시, Region level으로 바뀌어 뷰가 그에맞게 잘 바뀐다.

 

()FIXED LOD보다 우선순위가 낮은 차원 필터 [Region]는 FIXED LOD 이후에 적용, 즉 계산된 필드 속 차원필터 [Region]이 작동하지 않는 경우(X)

Region level로 넘어가지 않고, Sate level에 머물러 있음 (필터 작동 X)

()차원 필터 [Region]을 FIXED LOD보다 우선순위인 컨텍스트 필터로 변경한 경우, 계산된 필드 속 차원필터 [Region]이 잘 작동되는 경우(O)

필터 속 [Region]필드를 우클릭하여 컨텍스트 필터로 변경만 해주면 바로 문제가 해결된다.

 

Comments