[데이터분석/Tableau] Table Calc원리, Index, Size, Rank, Total, Window, Nested Table Calc, 필터 — Last, LookUp

ohmy ddatta
13 min readAug 25, 2021

--

테이블 계산의 작동 원리

테이블 계산의 의미

calculation부터 설명 시작
  • calculation = 태블로 총 4가지 계산 방법 (row level, aggregation, table, lod) ➡️ 테이블 계산이 태블로에서 제공(지원)하는 계산 방법 중
  • secondary = table calculation = secondary calculation ➡️ 어떤 계산으로부터 부수(부차)적으로 나오는 계산인 테이블 계산
  • 첫번째로 이루어지는 계산은? 집계 계산 (aggregation) ➡️ 테이블 계산은 집계 계산이 이루어진 후 이에 대해 이루어진다
  • 계산된 필드 안에 테이블 계산 넣는다면 = 이는 무조건 집계값으로 인식
  • configurable = 내가 원하는 값을 직접 설정할 수 있다 (테이블 계산 = vlod 안에서 집계된 값) ➡️ 어떤 값을 정확히 원해서 만들어내는데 설정이 잘못되면 숫자가 잘못만들어진 가능성이 높아 이 부분이 어렵고 중요하다 ➡️ 설정에 대한 이야기가 아주 중요하고 이가 자동하는 방법을 이해하는 것이 중요하다

Table Calc의 Configurable 특징 확인

  • 우클릭 ➡️ 테이블 계산 편집

테이블 / 패널 / 셀 / 옆으로 / 아래로의 의미

  • 테이블 = 이 뷰에서 처음부터 끝까지
  • 패널 = 어떤 한 구간, 구획
  • 셀 = 하나의 지점, 하나의 포인트

테이블 계산 세팅 방법

  • 누적합계의 방향은 테이블 (옆으로)라는 것!➡️ 눌러보며 이해하기 (노란색 하이라이팅)
  • 옆에서 아래로 ➡️ 아래로 내려갈때 새 value가 되는 것이 아닌 옆으로의 가장 끝 value를 받아 다시 시작!
  • 옆으로 아래로 ➡️ 아래로 내려갈때 새 value가 되는 것이 아닌 옆으로의 가장 끝 value를 받아 다시 시작!
  • 특정차원 = 원하는 숫자를 가져오는데 도움
  • 각각의 product category별로, 연도와 분기에 대해서 table calculation을 만들어주세요
  • — 별로 = 체크마크 빼주기
  • — 에 대해서 = 체크
  • 순서에 따라 결과가 다르게 나온다
(왼) order date의 연도가 위, (오) order date의 연도가 아래

INDEX, SIZE, RANK, TOTAL 함수

INDEX 함수

index = 이 화면 그대로에서 번호표를 주는 기능

  • 더블클릭으로 생성➡️ 계산된 필드사용해도되지만 이 화면에서 잠깐 쓰고 치울 것이니 이렇게 만들어도 무방
  • 인덱스를 화면에 바로 넣어주기
  • 번호표를 테이블에서 줄 것이 아니라 각각의 시도별로 번호를 새롭게 시작하고 싶다면? = 각각의 시도별로, 시군구에 대해서 줄세워주세요! ➡️ SD 체크 빼기, SGG 체크
  • index ➡️ 우클릭 ➡️ 테이블계산 편집 ➡️ 특정 차원 ➡️ sgg만 체크
시도별 번호 새로 부여 결과

SIZE 함수

size 함수 = index로 줄세운것의 끝값 가져오기

  • 더블클릭으로 Size 함수 적용
  • 모든 칼럼에 229 추가 ➡️ 시군구 전체값이 299개라 ➡️ 테이블 기준으로 잡힌 것
  • 각각의 시도별로 다시 세팅 ➡️ 테이블 계산 편집
size를 활용해 각 시도별 마지막 count 값을 가져와 단순 counting으로 이용
  • 각 도별 시, 군 개수 카운팅해서 붙는다 ➡️ 카운팅이라기보다 맨끝값으로 붙여준 것

RANK함수

rank는 sorting을 포함하는 기능

  • rank는 sorting을 포함하는 기능 = 랭킹 먹이는 기준점이 필요하다는 의미 = rank 안에 기준 명시해야한다
  • index와 생긴 것이 다르다
  • 빨간색으로 뜬다 = 이는 들어갈 요소가 불충분하다는 의미
랭킹될 기준 (요소) 추가
  • (왼) = 전체 테이블의 매출 합계를 기준으로 정렬한 것 ➡️ sorting으로 정렬 가능➡️ 그 전에 시도별 세팅 먼저 하자 ➡️ 테이블 계산 편집
  • (오) = sorting 까지 하니 index는 변화 없지만 ranking은 정렬된 것 확인 가능

문제점 발견!

  • 갑자기 등장한 11위 이유는? = 고성군은 강원도에도 있고 경상남도에도 있다 ➡ ️address-sgg가 정렬될때 두 값이 합쳐진 것 ➡ 하지만 우리가 원한 정보는 아니니 고쳐주자
  • 중첩 = 시도를 고려해 정렬하겠다는 의미
  • 수정 성공

INDEX 함수와 RANK 함수의 차이

  • index 있는 순서대로 줄먹이는 것
  • rank는 줄먹이는 방식을 구체화할 수 있다 (sorting + 줄 세우는 방식 구체화 가능)
  • 계산된 필드 ➡️ 도움말 ➡️ 테이블 계산 ➡️ rank 종류 다양 확인

TOTAL함수

  • size와 비슷
  • 오류 = 안에 무언가 선언해줘야한다 ➡️ 반드시 집계값
  • 4년치 모든 시도에서 발생한 매출 ➡️ 시도별 정리➡️ 테이블 계산 편집

INDEX 함수의 활용 사례

  • 줄세워서 번호표 주기 ➡️ 세로로 1, 2, 3번 번호 부여 ➡️ 컴팩트한 차트 생성
  • 다른 방식의 줄세우기 ➡️ 일렬 말고 응용해서 5개씩 줄세워보기도 가능
  • Index ➡️ 아주 다양하게 이용 가능

WINDOW 함수

WINDOW에 대한 개념 이해

window개념 = customizing이 가능한 계산의 범위

  • 이 날짜를 기준으로 calculation의 범위를 얼마만큼 잡을 것이냐, 어떻게 잡을 것이냐, 이렇게 잡힌 범위 = window 범위
  • 특정 날짜를 조절 (필터 부분에 존재) ➡️ 계산되는 범위 (window 함수에 따라서)
  • 윈도우 기준날짜 +-5일 (일자 기준이니) ➡️ 총 11일치가 계산될 것 (기준 날짜 포함)
  • 해당 평균이 아래 그래프에 찍힌다 = window_avg로 계산된 필드 만들었으니
  • window 범위 내에서 정해진 값을 찍고 그 결과를 기준 날짜 value에 찍어준다

퀵테이블 계산을 활용한 이동 평균(MA) 만들기

퀵 테이블 계산 (built in) 이동평균 식
  • 이동평균 이미 window 먹여있네 ➡️ 퀵테이블 계산 = built in 개념
  • 이동평균 ➡️ 테이블 계산 편집 ➡️ 이해하기
  • 현재값 포함 ➡️ 이전값 2개 ➡️ 미래값은 없고 ➡️ 총 3개 항목에 대한 값을 3으로 나눠준 value를 기준 날짜에 찍는다, 라는 의미

WINDOW 함수의 활용 사례

  • address -region 그룹 만들기 (본체- address-sd)
  • 계산된 필드 추가 ➡️ 열 더블클릭 ➡️ random( ) 추가
  • 각각 이상치 존재 ➡️ normalize 시키기 = 각각의 지역에서 제일 많이 팔았던 제품을 기준으로 그 아래 나머지 전체 제품들을 다시 비율을 보는 것 (분포를 보는 것)
  • 계산된 필드 추가 ➡️ normalize = (값-최소)/(최대-최소)> 0과 1 사이에서 normalize
  • 이후 지역별 세팅 ➡️ 테이블 계산 편집

중첩된 테이블 계산

Nested Table Calc의 의미

Nested Table Calc = table calc 연속으로 2번 사용

  • 둥지를 틀었다 = table calc이 들어가있고 추가적으로 그 table calc를 다른 table calc를 감싼다= table calc가 연속으로 2번 들어갔다
  • 누계 활용 ➡️ 누적 + 구성비율 ➡️ 2개 연속 사용

Nested Table Calc 만드는 방법

(왼) 합계, (오) 누계
  • 마지막 값 = 4년동안 모든 매출 합계
  • 구성비율로 바꿔준다 = 누적후 구성비율 ➡️ table calc 2번 ➡️ nested table calcs
  • 우클릭 ➡️ 테이블 계산 편집 ➡️ 보조 계산 추가 ➡️ 구성비율 체크
  • 처음에 sorting 앞쪽으로 갈수록 top 매출 시도 (SD)
  • 인덱스를 추가해 순위를 알 수 있다 ➡️ 불연속형으로 변경

테이블 계산과 필터

차원 필터를 사용할 때 조심하자

LAST 함수 활용 예제

  • KPI에 많이 이용
  • 맨 마지막 달의 value만 가져오면 된다
  • sales ➡️ 세부정보로 한번 더 올리기➡️ 우클릭➡️ 퀵테이블 ➡️ 비율 차이 ➡️ 화면상 변경 x ➡️ 이후 텍스트로 변경
  • 전월대비 성장률
  • 마지막 달 정보만 남기고 나머지는 화면에서 다 치워버리자 = 필터 사용하자 ➡️ 우클릭 ➡️ 필터 ➡️ 마지막 달만 남기기
  • 비율이 사라졌다!

이유는 바로?

order of operations 이슈

  • dimension에서 걸린다 = 전체 중 2020. 12만 남기고 다 날려 ➡️ 근데 우리는 전월대비라 전월 정보가 필요해 다 날리고 aggregate만난 거야 ➡️ 그러니 %안나와 ➡️ table calc필터 또는 이 이후 필터 사용
  • 숨기기 기능 사용 (필터처럼)

원하는 달 제외 숨기기

  • 문제점 존재 = 데이터 업데이트 되어 2021.1 데이터 들어온다면 옆에 붙게된다 = 업데이트 될때마다 들어와서 숨겨야한다 ➡️ 더 쉽게, 더 편하게 할 방법은?
  • logically 맨 마지막 것만 남기게 만들수는 없는가? ➡️ 마지막 것만 남기는 function 써보자 이게 바로 last 함수 = 계산된 필드 이용 ➡️ 필터로 넣기 ➡️ 0= 가장 last 값
  • 새 값이 업데이트 되어도 last 함수 썼으니 마지막 값만 남는다

Last ( ) 예제 2

  • 3개만 가져와서 비교 = 이번달, 저번달, 전년도 동월
  • 계산된 필드로 필터 만들기➡️ 필터 ➡️ 참
  • 업데이트 자동으로 last 개념 자동으로 찾아갈 것
  • 12월달 (=이번달)만 색 다르게 = last 함수 이용
  • 가장 마지막이면 참이다

아예 테이블 계산 필터로 만들어주는 방법도 있다

LOOKUP1함수 활용 예제

  • 각각의 지역에서 매출 기준 상위 3명만 뽑아주세요!
  • 계산된 필드 ➡️ rank 함수 이용 (안에 기준점, sum(sales)) ➡️ 행에 올린후 불연속형으로 변경 ➡️ 순서 바꾸기 customer name 앞으로
  • 각각의 지역별 배치 원해= rank 우클릭 ➡️ 테이블 계산 편집
  • 각 도별 sum(Sales)별 정렬까지 완료 ➡️ 이제 도별 3명씩 뽑아주세요
  • 필터 활용 ➡️ 우클릭 ➡️ 필터표시 1, 2, 3만 뽑기
  • customer name ➡️우클릭➡️ 필터 사용➡️ 강씨만 뽑아보자 manually
  • 근데 강민호 고객이 경기도 1등이야..? 아니야 그냥 강씨중에 1등이야..이거 또 …

order of operations 문제

  • dimension filter에서 강씨만 뽑혀 ➡️ 이후 Table calc rank, 남아있는 사람 중에 rank를 만든 것 = 남아있는 강씨 중에서 지역별 순위 뽑은 것
  • 강민호씨 전체로 보면 경기도에서 110등..이거 유지할 수는 없을까?
  • 계산된 필드 = look up 활용 (+문자열 집계 함수 attr 이용)
  • look up= 찾아와라
  • 0= 자기자신의 그자리
  • 더이상 뭉개지지 않는다
  • table calc만들어지고 나서 강씨가 아닌 사람들 out시키니 원래 ranking 그대로 활용 가능
🥕Back to the Basic 4, 어느순간부터 화만 내고 있는 Me.. 자꾸 삽질한다는 느낌에 나 자신에게 자꾸만 화가 난다..심지어 이번 Basic 개념 이해는 쉬운데 실습 진행이 어려워따..+ 끝까지 Order of Operations에 발목잡히고 말았다..🥕

난이도 🥕🥕🥕, 집합으로 IN, OUT 필터를 걸고 이가 작용하지 않는다..? 싶으면 바로 Order of Operations 확인하다보니 이제 애증의 존재가 되어간다 + Rank, Size 안에 넣는 기준은 감은 있지만 확신은 없는 상태! 실습으로 체화시키자!

--

--

ohmy ddatta

Majored in Film and Media Arts, but want to be a Product Manager, but studying data analysis is difficult. Oh, my data…Oh, my ddatta…