커스텀 포뮬러
커스텀 포뮬러에서는 다음이 가능해요
비율 계산: 전환율, 평균 주문금액, 클릭당 비용 등 핵심 지표 계산
목표 관리: 목표 달성률, 목표 대비 실적, 진행률 추적
조건부 분석: 등급 분류, 세그먼트 구분
문자열 처리: 데이터 정제, 파싱, 결합 및 변환
날짜 연산: 연·월·일·주차·요일·분기 추출
복합 계산: ROAS, ROI, 순이익률 등 고급 지표
작동 원리
Custom Formula는 다음과 같은 순서로 작동합니다:
수식 입력
예: DIVIDE('revenue', 'order_count')
구문 검증 괄호, 따옴표, 함수명과 함께 참조한 컬럼이 지금 선택한 측정값·분석단위에 있는지 확인
계산 선택한 측정값과 분석단위로 데이터를 조회한 뒤, 조회 결과의 각 행에 수식을 적용해 새 컬럼을 만듭니다
결과 표시 계산한 값을 대시보드에 표시
엑셀과의 비교
셀 참조
A1, B2:B10
'revenue', 'order_count'
나누기
=A1/B1
DIVIDE('revenue', 'order_count')
조건문
=IF(A1>100, "High", "Low")
IF('revenue' > 100, "High", "Low")
문자
="Hello " & A1
CONCAT("Hello ", 'product_name')
기본 문법
1. 컬럼 참조
'컬럼명'
2. 숫자 리터럴
음수는 -50 처럼 바로 쓸 수 없어요. 0 - 50 처럼 뺄셈으로 만듭니다.
3. 문자열 리터럴
큰 따옴표를 사용합니다.
4. 연산자 우선순위
()괄호 가장 먼저 계산 됩니다.
* / 곱셈, 나눗셈
덧셈/뺄셈보다 먼저 계산
+ - 덧셈, 뺄셈
곱셈/나눗셈 다음에 계산
> < >= <= 비교 연산자
산술 연산 후 비교
연산자
산술 연산자
+
더하기
'revenue' + 'cost'
매출 + 비용
-
빼기
'revenue' - 'cost'
순이익
*
곱하기
'quantity' * 'unit_price'
총 금액
/
나누기
'revenue' / 'order_count'
평균 주문금액
비교 연산자
=
같다
'status' = "완료"
<>
같지 않다
'status' <> "취소"
>
크다
'revenue' > 1000
<
작다
'revenue' < 1000
>=
크거나 같다
'order_count' >= 2
<=
작거나 같다
'order_count' <= 1
논리 함수
AND, OR 는 조건 사이에 쓰는 연산자가 아니라 함수로 씁니다. 'revenue' > 1000 AND 'status' = "완료" 처럼 쓰면 오류가 납니다.
AND
AND(조건1, 조건2): 둘 다 참
AND('revenue' > 1000, 'status' = "완료")
OR
OR(조건1, 조건2): 하나라도 참
OR('category' = "의류", 'category' = "잡화")
NOT
NOT(조건): 참과 거짓을 뒤집음
NOT('revenue' > 1000)
조건은 두 개까지 넣을 수 있어요. 세 개 이상이면 AND(조건1, AND(조건2, 조건3)) 처럼 겹쳐 씁니다.
함수 종류
수학 함수
MULTIPLY
MULTIPLY(a, b)
곱셈
MULTIPLY('quantity', 'unit_price')
DIVIDE
DIVIDE(a, b)
나눗셈
DIVIDE('revenue', 'order_count')
SUBTRACT
SUBTRACT(a, b)
뺄셈
SUBTRACT('revenue', 'cost')
ABS
ABS(value)
절댓값
ABS('profit_loss')
FLOOR
FLOOR(value)
내림
FLOOR('decimal_value')
CEIL
CEIL(value)
올림
CEIL('decimal_value')
조건 함수
IF
IF(condition, true_value, false_value)
조건문
IF('revenue' > 1000, "우수", "보통")
IFS
IFS(cond1, val1, cond2, val2, ...)
다중 조건문. 어느 조건에도 맞지 않는 행은 빈 값
IFS('revenue' >= 10000, "최우수", 'revenue' >= 5000, "우수")
COALESCE
COALESCE(val1, val2, ...)
NULL 대체
COALESCE('discount', 0)
NULLIF
NULLIF(val1, val2)
같으면 NULL
NULLIF('order_count', 0)
문자열 함수
CONCAT
CONCAT(str1, str2, ...)
문자열 결합
CONCAT('first_name', " ", 'last_name')
UPPER
UPPER(text)
대문자 변환
UPPER('product_code')
LOWER
LOWER(text)
소문자 변환
LOWER('email')
TRIM
TRIM(text)
공백 제거
TRIM('address')
LENGTH
LENGTH(text)
문자열 길이
LENGTH('product_name')
SUBSTR
SUBSTR(text, start, length)
부분 문자열
SUBSTR('phone', 1, 3)
REPLACE
REPLACE(text, old, new)
문자열 치환
REPLACE('address', "서울", "Seoul")
날짜/시간 함수
NOW
NOW()
현재 시각
NOW()
CURRENT_DATE
CURRENT_DATE()
오늘 날짜
CURRENT_DATE()
DATE
DATE(year, month, day)
날짜 생성
DATE(2024, 1, 15)
YEAR
YEAR(date)
연도 추출
YEAR('time_id')
MONTH
MONTH(date)
월 추출
MONTH('time_id')
DAY
DAY(date)
일 추출
DAY('time_id')
WEEK
WEEK(date)
주차 추출
WEEK('time_id')
DAY_OF_WEEK
DAY_OF_WEEK(date)
요일 (1=일, 2=월, ..., 7=토)
DAY_OF_WEEK('time_id')
QUARTER
QUARTER(date)
분기
QUARTER('time_id')
정규식 함수
REGEXP_EXTRACT
REGEXP_EXTRACT(text, pattern)
정규식 추출
REGEXP_EXTRACT('url', "utm_source=([^&]+)")
REGEXP_REPLACE
REGEXP_REPLACE(text, pattern, replacement)
정규식 치환
REGEXP_REPLACE('phone', "[^0-9]", "")
타입 변환 함수
CAST
CAST(value, "TYPE")
타입 변환
CAST('amount', "DOUBLE")
VARCHAR, DOUBLE, BIGINT, BOOLEAN, DATE, TIMESTAMP
예제
비율 계산
전환율(CVR)
(주문수 ÷ 클릭수) × 100
DIVIDE('order_count' * 100, 'clicks')
5.0%
평균 주문금액 (AOV)
매출 ÷ 주문수
DIVIDE('revenue', 'order_count')
₩ 50,000
클릭당 비용 (CPC)
광고비 ÷ 클릭수
DIVIDE('ad_cost', 'clicks')
₩ 200
ROAS
(매출 ÷ 광고비) × 100
DIVIDE('revenue' * 100, 'ad_cost')
500%
목표 관리
목표 달성률
(실제 매출 ÷ 목표 매출) × 100
DIVIDE('revenue' * 100, 'target_revenue')
85%
목표 달성 등급
S (130%↑) / A (110%↑) / B (90%↑) / C (90%↓)
IF(DIVIDE('revenue', 'target_revenue') >= 1.3, "S등급", IF(DIVIDE('revenue', 'target_revenue') >= 1.1, "A등급", IF(DIVIDE('revenue', 'target_revenue') >= 0.9, "B등급", "C등급")))
A등급
목표 대비 차이
실제 매출 - 목표 매출
SUBTRACT('revenue', 'target_revenue')
+ ₩ 2,000,000
일평균 필요 매출
(목표 - 현재) ÷ 남은 일수
DIVIDE( SUBTRACT('target_revenue', 'current_revenue'), 'days_remaining' )
₩ 1,200,000/일
고객 세분화
고객 등급 분류
플래티넘 (50K↑) / 골드 (20K↑) / 실버 (10K↑) / 브론즈
IF('revenue' >= 50000, "플래티넘", IF('revenue' >= 20000, "골드", IF('revenue' >= 10000, "실버", "브론즈")))
주말/평일 구분
요일 번호로 주말 판별
IF(OR(DAY_OF_WEEK('time_id') = 1, DAY_OF_WEEK('time_id') = 7), "주말", "평일")
신규/재구매 고객
주문 횟수로 고객 유형 분류
IF('order_count' > 1, "재구매", "신규")
연령대 분류
35세 → "30대"
CONCAT( CAST(FLOOR('age' / 10) * 10, "VARCHAR"), "대" )
팁과 주의사항
권장 사항
괄호로 우선순위 명확히
복잡한 수식은 괄호로 의도를 명확하게 표현하세요.
0으로 나누기는 자동으로 처리돼요
DIVIDE와 /는 분모가 0이면 오류 대신 빈 값을 돌려줍니다. 따로 0 체크를 하지 않아도 됩니다.
단, 나눗셈 결과에 다시 곱하거나 더하면 빈 값이 0으로 바뀝니다. 백분율처럼 배수를 곱해야 할 때는 분자에 먼저 곱하세요.
타입 일치 확인
비교/연산 시 같은 타입끼리 사용하세요.
주의 사항
컬럼 참조
revenue 또는 "revenue"
'revenue'
문자열
'완료'
"완료"
컬럼명 오타
'revenu'
'revenue'
순환 참조 금지
수식이 자기 자신을 참조하면 오류가 발생합니다. 다른 수식을 참조하는 것은 가능하지만, 순환 참조는 피해야 합니다.
자주 묻는 질문 (FAQ)
전담 매니저에게 요청하기
커스텀 포뮬러 이용에 어려움이 있으신가요?
하단의 문의하기 혹은 홈페이지의 채팅 상담을 통해 문의하세요. 담당 매니저가 도움을 드리도록 하겠습니다.
이메일 문의: product@laplacetec.com
마지막 업데이트