커스텀 포뮬러
커스텀 포뮬러에서는 다음이 가능해요:
비율 계산: 전환율, 평균 주문금액, 클릭당 비용 등 핵심 지표 계산
목표 관리: 목표 달성률, 목표 대비 실적, 진행률 추적
조건부 분석: 등급 분류, 세그먼트 구분, 조건부 집계
문자열 처리: 데이터 정제, 파싱, 결합 및 변환
날짜 연산: 기간 계산, 날짜 형식 변환, 분기별 분석
복합 계산: ROAS, ROI, 순이익률 등 고급 지표
작동 원리
Custom Formula는 다음과 같은 순서로 작동합니다:
수식 입력
예: DIVIDE('revenue', 'order_count')
구문 검증 문법 오류 체크 - 괄호, 따옴표, 함수명 검증
타입 검증 데이터 타입 호환성 체크 - 숫자, 문자열, 날짜 타입 확인
SQL 변환 Trino SQL로 변환하여 데이터베이스 실행 가능한 쿼리 생성
실행 & 결과 쿼리 실행 및 결과를 대시보드에 표시
엑셀과의 비교
셀 참조
A1, B2:B10
'revenue', 'order_count'
함수
=SUM(A1:A10)
SUM('revenue')
조건문
=IF(A1>100, "High", "Low")
IF('revenue' > 100, "High", "Low")
문자
="Hello " & A1
CONCAT("Hello ", 'product_name')
기본 문법
1. 컬럼 참조
"컬럼명"
2. 숫자 리터럴
3. 문자열 리터럴
큰 따옴표를 사용합니다.
4. 연산자 우선순위
()괄호 가장 먼저 계산 됩니다.
* / 곱셈, 나눗셈
덧셈/뺄셈보다 먼저 계산
+ - 덧셈, 뺄셈
곱셈/나눗셈 다음에 계산
> < >= <= 비교 연산자
산술 연산 후 비교
AND OR 논리 연산자
마지막으로 계산됩니다
연산자
산술 연산자
+
더하기
'revenue' + 'cost'
매출 + 비용
-
빼기
'revenue' - 'cost'
순이익
*
곱하기
'quantity' * 'unit_price'
총 금액
/
나누기
'revenue' / 'order_count'
평균 주문금액
%
나머
'number' % 2
홀짝 판별용
비교 연산자
평균 주문금액(AOV) = 총 매출/ 주문건수
논리 연산자
AND
그리고 (둘 다 참)
'revenue' > 1000 AND 'status' = "완료"
OR
또는 (하나라도 참)
'category' = "의류" OR 'category' = "잡화"
함수 종류
집계 함수
SUM
SUM(value)
합계
SUM('revenue')
AVG
AVG(value)
평균
AVG('order_amount')
COUNT
COUNT(value)
개수
COUNT('order_id')
MIN
MIN(value)
최솟값
MIN('price')
MAX
MAX(value)
최댓값
MAX('purchase_date')
수학 함수
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')
ROUND
ROUND(value, [decimals])
반올림
ROUND('avg_price', 2)
FLOOR
FLOOR(value)
내림
FLOOR('decimal_value')
CEIL
CEIL(value)
올림
CEIL('decimal_value')
POWER
POWER(base, exponent)
거듭제곱
POWER(2, 3)
SQRT
SQRT(value)
제곱근
SQRT(16)
MOD
MOD(a, b)
나머지
MOD(10, 3)
조건 함수
IF
IF(condition, true_value, false_value)
조건문
IF('revenue' > 1000, "우수", "보통")
IFS
IFS(cond1, val1, cond2, val2, ...)
다중 조건문
IFS('revenue' >= 10000, "최우수", 'revenue' >= 5000, "우수", TRUE, "보통")
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_DAT
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=월)
DAY_OF_WEEK('time_id')
QUARTER
QUARTER(date)
분기
QUARTER('time_id')
DATE_DIFF
DATE_DIFF(unit, date1, date2)
날짜 차이
DATE_DIFF("day", 'start_date', 'end_date')
DATE_ADD
DATE_ADD(unit, value, date)
날짜 더하기
DATE_ADD("day", 7, 'order_date')
DATE_TRUNC
DATE_TRUNC(unit, date)
날짜 절삭
DATE_TRUNC("month", 'time_id')
DATE_FORMAT
DATE_FORMAT(date, format)
날짜 형식화
DATE_FORMAT('time_id', "%Y-%m-%d")
정규식 함수
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', 'clicks') * 100
5.0%
평균 주문금액 (AOV)
매출 ÷ 주문수
DIVIDE('revenue', 'order_count')
₩ 50,000
클릭당 비용 (CPC)
광고비 ÷ 클릭수
ROUND(DIVIDE('ad_cost', 'clicks'), 2)
₩ 200
ROAS
(매출 ÷ 광고비) × 100
ROUND(DIVIDE('revenue', 'ad_cost') * 100, 1)
500%
목표 관리
목표 달성률
(실제 매출 ÷ 목표 매출) × 100
ROUND(DIVIDE('revenue', 'target_revenue') * 100, 1)
85%
목표 달성 등급
S (130%↑) / A (110%↑) / B (90%↑) / C (90%↓)
IFS( DIVIDE('revenue', 'target_revenue') >= 1.3, "S등급", DIVIDE('revenue', 'target_revenue') >= 1.1, "A등급", DIVIDE('revenue', 'target_revenue') >= 0.9, "B등급", TRUE, "C등급" )
A등급
목표 대비 차이
실제 매출 - 목표 매출
SUBTRACT('revenue', 'target_revenue')
+ ₩ 2,000,000
일평균 필요 매
(목표 - 현재) ÷ 남은 일수
ROUND( DIVIDE( SUBTRACT('target_revenue', 'current_revenue'), 'days_remaining' ), 0 )
₩ 1,200,000/
고객 세분화
고객 등급 분류
플래티넘 (50K↑) / 골드 (20K↑) / 실버 (10K↑) / 브론즈
IFS( 'revenue' >= 50000, "플래티넘", 'revenue' >= 20000, "골드", 'revenue' >= 10000, "실버", TRUE, "브론즈" )
주말/평일 구분
요일 번호로 주말 판별
IF(DAY_OF_WEEK('time_id') >= 6, "주말", "평일")
신규/재구매 고객
주문 횟수로 고객 유형 분류
IF('order_count' > 1, "재구매", "신규")
연령대 분류
35세 → "30대"
CONCAT( CAST(FLOOR('age' / 10) * 10, "VARCHAR"), "대" )
팁과 주의사항
권장 사항
괄호로 우선순위 명확히
복잡한 수식은 괄호로 의도를 명확하게 표현하세요.
NULL과 0으로 나누기 방지
나눗셈 전에 항상 0 체크를 하세요.
타입 일치 확인
비교/연산 시 같은 타입끼리 사용하세요.
주의 사항
함수명 대소문자
sum('revenue')
SUM('revenue')
컬럼 참조
revenue 또는 "revenue"
'revenue'
문자열
'완료'
"완료"
컬럼명 오타
'revenu'
'revenue'
순환 참조 금지
수식이 자기 자신을 참조하면 오류가 발생합니다. 다른 수식을 참조하는 것은 가능하지만, 순환 참조는 피해야 합니다.
자주 묻는 질문 (FAQ)
전담 매니저에게 요청하기
커스텀 포뮬러 이용에 어려움이 있으신가요?
하단의 문의하기 혹은 홈페이지의 채널톡을 통해 문의하세요. 담당 매니저가 데이터 연결에 도움을 드리도록 하겠습니다.
이메일 문의: [email protected]
Last updated