[데이터분석/Tableau] Table Calc원리, Index, Size, Rank, Total, Window, Nested Table Calc, 필터 — Last, LookUp
13 min readAug 25, 2021
테이블 계산의 작동 원리
테이블 계산의 의미
- 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을 만들어주세요
- — 별로 = 체크마크 빼주기
- — 에 대해서 = 체크
- 순서에 따라 결과가 다르게 나온다
INDEX, SIZE, RANK, TOTAL 함수
INDEX 함수
index = 이 화면 그대로에서 번호표를 주는 기능
- 더블클릭으로 생성➡️ 계산된 필드사용해도되지만 이 화면에서 잠깐 쓰고 치울 것이니 이렇게 만들어도 무방
- 인덱스를 화면에 바로 넣어주기
- 번호표를 테이블에서 줄 것이 아니라 각각의 시도별로 번호를 새롭게 시작하고 싶다면? = 각각의 시도별로, 시군구에 대해서 줄세워주세요! ➡️ SD 체크 빼기, SGG 체크
- index ➡️ 우클릭 ➡️ 테이블계산 편집 ➡️ 특정 차원 ➡️ sgg만 체크
SIZE 함수
size 함수 = index로 줄세운것의 끝값 가져오기
- 더블클릭으로 Size 함수 적용
- 모든 칼럼에 229 추가 ➡️ 시군구 전체값이 299개라 ➡️ 테이블 기준으로 잡힌 것
- 각각의 시도별로 다시 세팅 ➡️ 테이블 계산 편집
- 각 도별 시, 군 개수 카운팅해서 붙는다 ➡️ 카운팅이라기보다 맨끝값으로 붙여준 것
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) 만들기
- 이동평균 이미 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 그대로 활용 가능
난이도 🥕🥕🥕, 집합으로 IN, OUT 필터를 걸고 이가 작용하지 않는다..? 싶으면 바로 Order of Operations 확인하다보니 이제 애증의 존재가 되어간다 + Rank, Size 안에 넣는 기준은 감은 있지만 확신은 없는 상태! 실습으로 체화시키자!