태블로를 배울 때 가장 많이 듣는 질문은 “어떤 계산식을 써야 하나요?”입니다. 실무에서 반복적으로 쓰이는 계산식은 의외로 한정적입니다. GDSK 컨설팅·교육 데이터를 바탕으로 현업 활용도가 가장 높은 15개의 계산식을 선정했습니다. 아래의 TOP15-한눈에 보기에는 초급과 중급의 식들이 모두 포함되어 있으나 이번 포스팅에서는 초급자가 반드시 알아야 할 9가지 핵심 내용을 중점으로 정리했습니다.

모든 예제는 태블로 기본 제공 슈퍼스토어(Superstore) 데이터를 기준으로 제작했으니 참고하여 언제든 따라해보실 수 있습니다.

실무 계산식 TOP 15 — 한눈에 보기

초급 9개 + 중급 6개, 총 15개 계산식을 한 표로 정리했습니다. 수식 칸의 코드를 그대로 복사해서 태블로 계산된 필드 편집 창에 붙여넣으면 바로 사용 가능합니다. 순위는 학습의 편의를 돕기 위한 참고용일 뿐 절대적인 중요도를 의미하지는 않습니다. 순위보다는 각 수식이 어떤 비즈니스 질문을 해결하기 위해 존재하는지 이해하는 것이 더 중요합니다.

순위레벨이름계산식
1초급IF 조건문IF [Profit] < 0 THEN “손실”
ELSEIF [Profit] < 100 THEN “낮음”
ELSEIF [Profit] < 500 THEN “중간”
ELSE “높음” END
2초급날짜 필터링
(동적·전년)
YEAR([Order Date]) = YEAR(TODAY()) – 1
3초급NULL 처리
(ZN, IFNULL)
ZN(SUM([Profit]))
4중급전년/전월 대비 증감률
(YoY)
ZN((SUM([Sales]) – LOOKUP(SUM([Sales]), -1)) /
LOOKUP(SUM([Sales]), -1))
5초급조건부 합계SUM(IF [Discount] > 0
THEN [Sales] END)
6초급문자열 결합[Customer Name] + ” (” + [Segment] + “)”
7초급날짜 차이
(DATEDIFF)
DATEDIFF(‘day’, [Order Date], [Ship Date])
8초급퍼센트 계산
(수익률)
SUM([Profit]) / SUM([Sales])
9초급순위 매기기
(RANK)
RANK(SUM([Sales]))
10중급LOD – FIXED
(신규/재구매)
IF [Order Date] = { FIXED [Customer ID] : MIN([Order Date]) }
THEN “신규” ELSE “재구매” END
11중급누적 합계
(RUNNING_SUM)
RUNNING_SUM(SUM([Sales]))
12중급이동 평균
(WINDOW_AVG, 3개월)
WINDOW_AVG(SUM([Sales]), -2, 0)
13초급중복 제거 카운트
(COUNTD)
COUNTD([Customer ID])
14중급상위 N개 필터링
(Top N)
IF RANK(SUM([Sales])) <= [Top N] THEN “Top N”
ELSE “기타” END
15중급LOOKUP
(이전 행 값)
LOOKUP(SUM([Sales]), -1)

수식의 색상은 태블로 계산된 필드 편집 창에서 실제로 보이는 색상과 동일합니다.
[필드명, 함수·키워드, 문자열, 숫자·연산자]


1위. IF 조건문

새로 만드는 계산식의 약 80%가 IF문에서 출발합니다. 수익 규모별 등급, 할인 여부 분류 등 조건 분기가 필요한 모든 곳에 쓰입니다. 수익이 0보다 작으면 ‘손실’로 처리하거나, 구매 횟수에 따라 ‘VIP’와 ‘일반’고객을 나누는 등 데이터에 특정 조건을 걸어 원하는 그룹으로 분류 할 때 필수적으로 사용합니다.

계산식

IF [Profit] < 0 THEN “손실”
ELSEIF [Profit] < 100 THEN “낮음”
ELSEIF [Profit] < 500 THEN “중간”
ELSE “높음” END

ELSEIF는 위에서부터 순차적으로 조건을 체크하므로 순서가 중요합니다.
조건이 2개뿐이면 IIF([Profit] > 0, “이익”, “손실”)이 더 간결합니다.


2위. 날짜 필터링

‘이번 달만’, ‘작년 데이터만’ 같은 동적 필터는 주간·월간 보고서 자동화의 핵심입니다.

고정 기간

[Order Date] >= #2023-01-01# AND [Order Date] <= #2023-12-31#

동적 기간 (전년)

YEAR([Order Date]) = YEAR(TODAY()) – 1

날짜 리터럴은 반드시 #yyyy-mm-dd# 형식으로 샵(#)으로 감싸야 합니다.
따옴표로 감싸면 문자열로 인식되어 오류가 발생합니다.


3위. NULL 처리

실무 데이터에는 NULL이 반드시 존재합니다. 제대로 처리하지 않으면 집계가 어긋나거나 시각화가 의도와 다르게 표시됩니다.

IFNULL — 일반 필드의 NULL을 대체값으로

IFNULL([Postal Code], 0)

ZN — 집계 필드의 NULL을 0으로 표시

ZN(SUM([Profit]))

월별 매출 같은 시계열 뷰에서 특정 기간에 데이터가 없어 빈칸으로 나올 때, ZN을 씌우면 0으로 채워져 연속된 라인 차트를 만들 수 있습니다.

나눗셈 분모에 ZN을 쓰면 안 됩니다
– 흔한 오해: SUM([Profit])/ZN(SUM([Sales])) 이렇게 분모를 ZN으로 감싸서 ‘NULL 방어’를 시도하는 경우가 많습니다.
– 문제점: ZN은 NULL을 0으로 바꾸기 때문에, 분모가 NULL이면 0이 되어 ‘0으로 나누기’ 오류가 발생하고 뷰가 * 기호로 깨집니다.
– 올바른 방법: 그냥 SUM([Profit])/SUM([Sales])로 쓰면 분모가 NULL일 때 결과도 NULL이 되어 뷰에서 자연스럽게 빈 값으로 처리됩니다.


5위. 조건부 합계/카운트

‘할인이 적용된 주문의 매출’, ‘손실 주문의 개수’처럼 특정 조건의 데이터만 집계할 때 사용합니다.

조건부 합계

SUM(IF [Discount] > 0 THEN [Sales] END)

조건부 카운트

COUNT(IF [Profit] < 0 THEN [Order ID] END)

핵심은 ELSE를 생략하는 것입니다.
ELSE가 없으면 조건에 맞지 않는 행은 NULL이 되고, 집계 함수는 NULL을 무시합니다.


6위. 문자열 결합

+ 연산자로 여러 문자열 필드를 하나로 이어 붙이는 함수입니다. 고객명·세그먼트처럼 별도 필드에 나뉜 정보를 하나의 레이블로 합치거나, 숫자 필드를 STR()로 변환해 단위까지 포함한 텍스트를 만들 수 있습니다. 툴팁과 레이블을 풍성하게 만들 때 가장 자주 쓰입니다.

기본

[Customer Name] + ” (” + [Segment] + “)”

→ 결과: Claire Gute (Consumer)

숫자 포함 (STR 변환 필수)

“매출: “ + STR(ROUND(SUM([Sales]), 0)) + “원”


7위. 날짜 차이 (DATEDIFF)

두 날짜의 간격을 계산합니다. 슈퍼스토어에서는 배송 소요일 분석에 가장 많이 쓰입니다.

DATEDIFF(‘day’, [Order Date], [Ship Date])

첫 번째 인자에 ‘day’, ‘week’, ‘month’, ‘quarter’, ‘year’ 등의 단위를 지정합니다.
가입 경과 개월, 근속 연수, 분기 경과 등 다양한 시나리오에 응용됩니다.


8위. 퍼센트 계산

수익률, 비중, 달성률 등 모든 비율 지표의 기본입니다. 계산식 작성 후 ‘서식 → 숫자 → 백분율’로 설정하면 자동으로 %가 표시됩니다.

수익률

SUM([Profit]) / SUM([Sales])

전체 대비 비중

SUM([Sales]) / TOTAL(SUM([Sales]))

TOTAL 함수는 뷰 전체 또는 파티션 전체의 합계를 반환합니다.


9위. 순위 매기기 (RANK)

매출 상위 제품, 이익 하위 고객 등 순위 기반 분석에 사용합니다. 테이블 계산이므로 뷰의 차원 구성과 계산 방향에 따라 결과가 달라집니다.

RANK(SUM([Sales]))

RANK 계열 비교 (값: 100, 90, 90, 80)

함수결과특징
RANK1, 2, 2, 4동점 후 순위 건너뜀
RANK_DENSE1, 2, 2, 3동점 후 연속 순위
RANK_UNIQUE1, 2, 3, 4동점 허용 없음


13위. 중복 제거 카운트 (COUNTD)

데이터의 개수를 셀 때, 태블로에서는 질문의 의도에 따라 두 가지 함수를 명확히 구분하여 사용해야 합니다.
– 전체 건 수를 알고 싶을 때: COUNT

데이터에 기록된 내역을 하나도 빠짐 없이 전부 세고 싶을 때 사용합니다.

ex) 해당 지점에 총 몇 건의 주문(영수증)이 발생했나요?
– 중복 없는 고유한 개수를 알고 싶을 때: COUNTD

 같은 데이터가 여러 번 반복되더라도 중복을 제외하고 딱 1번만 계산하여, ‘진짜 사람 수’나 ‘고유한 종류’를 알고 싶을 때 사용합니다. (D=Distinct)

ex) 해당 지점에서 물건을 구매한 ‘고객’은 총 몇 명인가요?

COUNTD([Customer ID])

예를 들어 주문 5건이 모두 고객 2명(Alice, Bob)에게서 나왔다면, COUNT는 5이고 COUNTD는 2입니다.


이상으로 태블로에서 가장 빈번하게 활용되는 초급 계산식 9가지를 정리했습니다. 해당 수식들은 조건 분류, 결측값 처리, 기초적인 집계 등 데이터 처리와 기본 지표 생성에 사용됩니다. 이어지는 다음 포스팅에서는 전년 대비 증감률, 누적 합계, 신규 및 재구매 고객 분류 등 조금 더 복잡한 비즈니스 요건을 구현하는데 필요한 중급 계산식 6가지를 다뤄보겠습니다.