3-1. 계산된 필드
계산된 필드(calculated field)로 할 수 있는것은?
1. 데이터 소스에서 새로운 컬럼 생성
2. 새롭게 추가된 컬럼을 저장
3. 새롭게 추가된 컬럼을 분석에 사용
계산된 필드를 사용하는 이유?
⇒ 데이터 분류, 데이터 유형 변경, 데이터 집계, 데이터 필터링이 가능하기 때문임.
계산된 필드 생성 방법:
- 에디터(editor, 계산식 적는 공간)에 차원/수치값 필드 끌어 놓기
- 에디터에서 패널로 끌어 놓기
- 함수 참조 더블 클릭으로 사용하고 싶은 함수 자동완성
태블로 계산 유형
- 기본 계산
: 데이터 원본에 대한 행 수준 계산 또는 집계 계산
(숫자, 문자열, 날짜)
- 테이블 계산
: 현재 비주얼리제이션에 표시된 항목 기반 계산
(LOOKUP)
- LOD (level of operation) 계산
: 계산할 수준을 세부적으로 제어 가능
(FIXED, INCLUDE, EXCLUDE)
3-2. 기본 계산
: 데이터 원본에 대한 행 수준 계산 또는 집계 계산
기본 계산 방식
- 행 수준 계산: SPLIT([Author], ‘.’ , 3) ⇒ 구둣점을 기준으로 SPLIT한 다음에 3번째 문자열만 가져오도록 함
- 집계 계산: COUNT([Series]) ⇒ Series 필드에서 각각의 값을 COUNT하도록 함
기본 계산 함수 종류
숫자 함수
: 필드의 데이터 값에 대한 계산 수행 가능
- 숫자 값을 포함하는 필드에서만 사용 가능
- ABS() → 절댓값 반환, CELING(), FLOOR() → 작거나 같은 값에 근접한 값으로 반올림, ROUND(), ZN()
문자열 함수
: 문자열 데이터 (텍스트) 조작 가능
- 문자열 분할/합쳐서 새로운 필드에 저장 가능
- SPLIT(), CONTAINS(), LEN(), LEFT(), MID(), RIGHT(), REPLACE()
예) REPLACE([Customer name], “ “, “”) ⇒ Customer name 필드에서 공백을 없애줌
날짜 함수
: 데이터 원본의 날짜 조작 가능
- 기존 값에서 새로운 날짜 값을 만들 수 있음
- DATETRUNC(), DATEADD(), DATEDIFF(), DATEPARSE(), DATEPART() → 주어진 날짜에서 특정 부분 정수로 반환
예) DATEADD(’month’, 3, [Order date]) ⇒ Order date 필드에서 3개월 뒤 날짜로 모두 변환
예) DATEPART(’month’, [Order date]) ⇒ Order date 필드에서 월 부분 정수로 반환
예) DATETRUNC(’quarter’, [Order date]) ⇒ Order date 필드에서 분기별 시작일 반환
예) DATEDIFF(’day’, [Order date], [Ship date]) ⇒ Order date부터 Ship date까지 걸린 일수
유형 변환
: 필드를 한 데이터 유형에서 다른 데이터 유형으로 변환 가능
- 숫자를 문자열 값으로 변환해 집계하지 않게 할 수 있음
예) STR() → 주어진 필드 문자형으로 변환, DATEPARSE(), FLOAT(), INT()
논리 함수
: 특정 조건이 참인지 거짓인지 여부를 결정 가능
- 특정 임계값 위 또는 아래인지 판단 가능
- CASE WHEN, IF ELSEIF, OR, AND, ISNULL(), IFNULL()
예) IF ELSEIF문 활용
IF [Profit] > 0 then "profitable"
ELSEIF [Profit] = 0 then "breakeven"
ELSE "loss"
END
예) CASE문 활용
CASE [Region]
WHEN 'West' then 1
WHEN 'East' then 2
WHEN 'South' then 3
ELSE 4
END
집계 함수
: 데이터를 요약하거나 세부 수준 변경 가능
- 특정 연도의 주문 수를 요약해 비주얼리제이션에 표시 가능
- COUNT(), COUNTD() → 중복없이 순수하게 집계, AVG(), MAX(), MIN(), SUM()
3-3. 태블로 집계 방식
1. Row-level calculation
: 자동으로 합계로 집계
예) [Profit] / [Sales]
2. Aggregate calculation
: 이미 집계되어 집계라고 표시되고 더 이상 집계되지 않음
예) SUM([Profit]) / SUM([Sales])
2개의 집계 방식의 주요 차이점 ⇒ 집계되었느냐 아닌가에 대한 차이가 존재한다.
계산된 필드 오류 해결방안
집계와 집계되지 않은 것은 혼합 불가
예) SUM([Profit])/Sales
⇒ 모든 필드를 집계하거나, 모드 필드에 대한 집계 해제함
IF 식에서 집계 및 집계되지 않은 비교 또는 결과를 혼합할 수 없음
예)
IF [Region] = “West” THEN SUM([Sales]) END
⇒ 모든 필드 집계 해제 후 한꺼번에 집계함
SUM(IF [Region] = “West” THEN [Sales] END)
⇒ ATTR
활용 (데이터는 변형하지 않고 비집계 값을 집계로만 변경해줌)
ATTR 함수
하나의 마크에 단일 값만 있거나 모든 멤버가 동일한 경우 (MIN=MAX) 값 반환, 아니면(2개 이상의 값이 있다면) * 반환해주는 함수
예)
IF ATTR([Order date] = 2017-02-18 THEN COUNTD([Customer name]) END
예)
IF ATTR([Category]) = "Furniture"
THEN SUM([Sales])
END
→ Category 중에서 Furniture에 해당하는 값만 Sum([Sales])를 표시해주고, 아닌 경우에는 무시
1. 차원 집계
- 최소값
- 최대값
- 카운트 (COUNT)
- 카운트 고유 (COUNTD)
- 특성 (ATTR)
2. 측정값 집계
- 합계 (SUM)
- 평균 (AVG)
- 중앙값 (MEDIAN)
- 표준편차
- 분산
- 백분위수 (PERCENTILE) → 5~95까지 선택가능
3-4. 테이블 계산
: 현재 비주얼리제이션에 표시된 항목 기반 계산
- 현재 비주얼리제이션의 수준에서 값이 변형됨
- 데이터 원본이 아닌, 현재 보이는 View에서의 내용을 바탕으로 계산되며 (현재 워크시트에 있는 행, 열, 차원 등의 값에 의해서 워크시트에 나타나는 가상 테이블을 바탕으로 계산이 이루어짐), 측정값 집계에 자주 사용됨
- 모든 테이블 계산 함수 식 안에는 집계된 값만 입력할 수 있음 ! 썡 필드값만 넣을 수 없음 !
- LOOKUP, RANK, RUNNING, WINDOW
테이블 계산 방식
- 테이블 계산을 수행하고자 하는 필드를 세부정보 마크에 끌어 놓기
- 왼쪽 클릭 → ‘테이블 계산 편집’ 클릭
- 해당 필드에 대해서 ~ 기준으로 테이블 계산 수행
- 테이블(옆으로)
- 테이블(아래로)
- 테이블(옆에서 아래로)
- 테이블(아래에서 옆으로)
- 패널(아래로)
- 패널(옆에서 아래로)
- 패널(아래에서 옆으로)
- 셀
- 특정 차원
- 체크 : 주소 지정 필드
→ 계산이 어떻게 수행될 지 방향을 정의하는 차원 (계산 범위)
- 체크 X : 파티션 지정 필드
→ 계산을 어떻게 그룹 지을 것인지 정의하는 차원 (계산 재시작 기준)
주소 지정 ⇒ 테이블을 계산하고자 하는 구간에 따라서 수행 방식 선택 !
주식이나 흐름에 따른 차이값을 보여주고자 하는 경우에는 +, - 단위를 붙이고 싶은 경우가 있을 것임 !
⇒ 차이가 양수면 +(숫자), 음수면 -(숫자) 형식으로
→ 서식 - 숫자 - 사용자 지정 - [+0, -0] 입력하기
퀵 테이블 계산 (Quick table)
: 가장 자주 쓰이는 계산 유형을 몇 번의 클릭만으로 가능하도록 한 것
예) 누계, 차이, 비율 차이, 구성 비율 등
- 세모 모양 → 테이블 계산이 적용되었다는 의미
총계를 보고 싶다면?
⇒ 탭에서 ‘분석' 클릭 → 총계 → 행 총합계 표시/열 총합계 표시 등 원하는 표시 방법 선택
1) PARTITION 함수
: 현재 partition 내에서 행의 인덱스 값을 활용하는 함수
- INDEX()
⇒ 현재 행의 인덱스 값 반환
- FIRST()
⇒ 현재 행으로부터 첫번째 행까지 남은 행 개수 반환
- LAST()
⇒ 현재 행으로부터 마지막 행까지 남은 행 개수 반환
- LOOKUP (집계[필드], 타겟 위치)
⇒ 현재 행으로부터 타겟 위치만큼 떨어져있는 집계된 필드 값 반환
- 예) LOOKUP(SUM[Sales], -1) → 이전 행의 값 가져오기
- PREVIOUS_VALUE(0)
⇒ 이전 행의 값 반환, 현재 행이 첫번째 행인 경우 0 반환
- 예) SUM[Sales] + PREVIOUS_VALUE(0) → 누적 합계 가져오기
⇒ RUNNINGSUM (누계)와 동일한 개념
2) RUNNING 함수
: Parition의 첫번째 행부터 현재까지의 누계 합 계산하는 함수 (누적 기반의 계산)
- RUNNING_SUM(집계[필드])
⇒ 파티션의 첫번째 행부터 현재 행까지의 누적 합계
- RUNNING_AVG(집계[필드])
⇒ 파티션의 첫번째 행부터 현재 행까지의 누적 평균
예) 3번째 행이면 1~3의 평균, 4번째 행이면 1~4의 평균
- RUNNING_MAX(집계[필드])
⇒ 여태까지 나왔던 값 중 최댓값
예) 5개 행 중에 3번째 행이 가장 크면 3,4,5번째 행은 모두 3번째 행 값으로
- RUNNING_MIN(집계[필드])
⇒ 여태까지 나왔던 값 중 최솟값
예) 5개 행 중에 3번째 행이 가장 작으면 3,4,5번째 행은 모두 3번째 행 값으로
3) WINDOW 함수
: 시작 위치와 끝 위치를 지정해줄 수 있는 RUNNING 함수의 변형 버전 함수
- WINDOW_SUM(집계[필드], 시작 위치, 끝 위치)
⇒ 지정한 윈도우 범위 내 집계된 필드의 합계 계산
- 예) WINDOW_SUM(SUM[Sales], -2, 0) → 2개 이전 행으로부터 현재 행까지의 행별 합계 계산
- WINDOW_AVG(집계[필드], 시작 위치, 끝 위치)
⇒ 지정한 윈도우 범위 내 집계된 필드의 평균 계산
- WINDOW_MAX(집계[필드], 시작 위치, 끝 위치)
⇒ 지정한 윈도우 범위 내 최댓값
예) 1~5번째 행 내에서 3번째 행이 가장 크면 전체 다 3번째 행 값으로
- WINDOW_MIN(집계[필드], 시작 위치, 끝 위치)
⇒ 지정한 윈도우 범위 내 최솟값
예) 1~5번째 행 내에서 3번째 행이 가장 작으면 전체 다 3번째 행 값으로
4) RANK 함수
: 순위를 나타내는 함수
- RANK(집계[필드], asc | desc)
⇒ 집계된 필드의 순위를 반환
- asc: 오름차순 순위
- desc: 내림차순 순위 (default)
- asc, desc는 생략 가능
- RANK_DENSE(집계[필드], asc | desc)
⇒ 집계된 필드의 순위 반환, 순위에 gap이 없음
- 예) 공동 1위가 3명이어도 다음 4위는 2위로 표시됨
- RANK_UNIQUE(집계[필드], asc | desc)
⇒ 집계된 필드의 순위 반환, 유니크한 순위
- 예) 공동 1위가 3명이어도 각각 1위, 2위, 3위로 설정함
- 같은 순위를 가질 수 없음, 같은 순위에 한해서는 랜덤으로 자동 순위 분배
3-5. 와플차트/유닛차트 실습
와플차트란?
동일한 크기의 사각형을 쌓아 만든 차트이며 형태가 와플을 닮아 와플차트라고 불림
예) KPI가 0-100% 사이의 백분율로 나타날 때나 특정 요소가 전체에서 차지하는 비율을 표현하고자 할 때 자주 쓰임
와플차트 생성과정
1. 필드 배치
: Column과 Row를 각각 열과 행으로 옮깁니다.
2. 분석에서 측정값 집계 해제
3. 마크 사각형으로 변환
4. 사각형의 크기 와플 형태에 알맞게 조정
5. 계산식 필드 생성
- 데이터 > vgsales(vgsales)를 클릭한 뒤 계산된 필드(
NA Sales Portion
)를 생성합니다.
- 계산된 필드에
SUM([NA Sales])/SUM([Global Sales])
을 입력하여 비디오 게임의 북미 판매 비중을 구합니다.
6. 색상 마크 추가
- 데이터 > template(waffle)을 클릭한 뒤 계산된 필드(
NA Color
)를 생성합니다.
- 계산된 필드에
[vgsales(vgsales)].[NA Sales Portion]>=SUM([Percentage])
를 입력합니다. → 색상 마크에 드래그
7. 차트 서식 수정
- 행과 열의 머리글 표시 해제
- 라인 서식에서 격자선 제거
- 색상 변경
8. 차트 주석 추가
- 세부정보에 NA Sales Portion을 Drag & Drop 해줍니다.
- 회색 부분의 가운데에 오른쪽 마우스 클릭 후 주석추가 > 마크를 클릭합니다.
<vgsales(vgsales).SUM(NA Sales Portion)>
만 남기고 폰트 사이즈를 적절히 설정해줍니다.
9. 주석 서식 변경
- 마크 > 집계(
NA Sales Portion
) > 서식 > 패널을 누릅니다.
- 기본값에서 숫자를 백분율(소수 자리수 1)로 변경합니다.
최종 대시보드
유닛차트란?
특정 항목의 수량이나 개수를 표현하는데 적합한 차트
예) 인구 및 인원 수, 스포츠에서의 득점, 수상 기록 등을 표현할 때 자주 쓰임
유닛차트 생성과정
1. 필드 배치
Genre
를 행 메뉴에 드래그
- ID에 해당하는 Rank를 세부정보 마크에 드래그 → 해당 필드 차원, 불연속형으로 변경합니다.
2. Grouping으로 계산식 필드 생성
- 한 장르에 최대 3316개의 비디오 게임이 존재하기 때문에 간결하게 표현하기 위하여 100을 나누어 줍니다.
- Grouping이라는 계산된 필드를 생성한 다음
INT(INDEX()/100)
를 입력합니다.
- Grouping을 열에 Drag & Drop 해줍니다.
- Grouping의 다음을 사용하여 계산을 Rank로 지정해줍니다.
3. 마크 유형, 크기 조정
4. 원 겹침 방지용 계산식 필드 생성
INT(INDEX()/100)
으로 인해 하나의 원이 아닌 100개의 원이 겹쳐져 있습니다.
- 원을 여러개 중첩하지 않기 위해 Filter라는 계산된 필드를 생성합니다.
INT(INDEX()-1)% 100 = 0
를 입력한 후 Filter를 필터에 드래그합니다.
5. 필터에 놓고 참만 선택
6. 필터 계산방식 변경 (Rank)
- Filter의 화살표를 클릭한 후 다음을 사용하여 계산에서 Rank를 지정합니다.
- 다시 참을 누른후 확인을 누릅니다. (오류 메시지가 뜬다면 전부 X를 눌러 주세요.)
7. 마크 모양 편집
- 필드값 내림차순 정렬
- 모양을 다운받은 컨트롤러 이미지로 바꿉니다.
- Genre를 색상 마크에 드래그해줍니다.
8. WINDOW_SUM 계산식 필드 생성
- Genre를 레이블에 드해랙그해다니.
- 더블클릭한 후
WINDOW_SUM(COUNT([Genre]))
로 수정합니다.
- 화살표를 클릭한 후 다음을 사용하여 계산에서 Rank를 지정합니다.
- 열의 머리글 표시를 해제합니다.
최종 대시보드
3-6. 파라미터/LOD 계산식 활용 실습
- 매개변수 만들기 (Single parameter, Multi parameter)
- 다양한 계산식 함수 사용하기 (FIXED, EXCLUDE 함수)
- FIXED : 특정 필드를 기준으로 집계해주는 함수
- EXCLUDE : 특정 필드를 제외하고 집계해주는 함수
- Parameter: 사용자가 직접 입력할 수 있는 변수
- Parameter action: 사용자에게 입력값(인수)을 받아서 대시보드를 자유자재로 컨트롤