if()
if() 함수는 조건 표현식을 평가하여 참이면 첫 번째 값을, 거짓이면 두 번째 값을 반환합니다. 3항 연산자(ternary operator)와 동일한 방식으로 동작합니다.
문법
if(CONDITION, EXPR_IF_TRUE, EXPR_IF_FALSE)
매개변수
CONDITION- 평가할 조건 표현식입니다.
null, 불리언false, 숫자0이나NaN, 빈 문자열, 빈 목록·배열이나 맵은 거짓으로 판정하고, 그 외의 값은 참으로 판정합니다. EXPR_IF_TRUE- 조건이 참으로 판정될 때 반환할 값 표현식입니다.
EXPR_IF_FALSE- 조건이 거짓으로 판정될 때 반환할 값 표현식입니다.
설명
if() 함수는 CONDITION을 평가하여 참·거짓을 판정합니다. null, 불리언 false, 숫자 0이나 NaN, 빈 문자열, 빈 목록·배열이나 맵은 거짓으로 판정되어 EXPR_IF_FALSE를 반환하고, 그 외의 값은 참으로 판정되어 EXPR_IF_TRUE를 반환합니다.
반환 타입은 EXPR_IF_TRUE와 EXPR_IF_FALSE의 타입에 따라 결정됩니다. 두 표현식의 타입이 서로 다르면 자동으로 상위 타입으로 승격됩니다(예: 정수와 실수가 혼합되면 실수로 반환).
오류 코드
해당 사항 없음
사용 예
이 사용 예에서 조회하는 WEB_APACHE_SAMPLE 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.
-
HTTP 상태 코드가 400 이상이면 오류로 분류
table limit=5 WEB_APACHE_SAMPLE | eval result = if(status >= 400, "error", "ok") | fields status, result -
응답 크기가 1000바이트를 초과하는지 여부에 따라 분기
table limit=5 WEB_APACHE_SAMPLE | eval label = if(bytes > 1000, "large", "small") | fields bytes, label -
조건이 거짓인 경우 — 두 번째 표현식 반환
table limit=5 WEB_APACHE_SAMPLE | eval result = if(method == "GET", "읽기", "쓰기") | fields method, result -
NULL 입력 — 조건이 null이면 거짓으로 처리
json "{'val': null}" | eval result = if(val, "존재", "없음") | # result: 없음 -
숫자 0을 조건으로 사용 — 거짓으로 판정(4.0.2609.0부터 적용된 동작)
json "{'val': 0}" | eval result = if(val, "참", "거짓") | # result: 거짓4.0.2609.0 이전에는 조건이 불리언이 아니면서
null도 아닌 값이면 항상 참으로 판정되어 이 예의 결과가 "참"이었습니다. 이제는 숫자0이 거짓으로 판정되어 결과가 "거짓"으로 바뀝니다.
변경 이력
| 대상 | 도입 릴리스 |
|---|---|
if() 함수 | 소나 4.0 이전 버전 |
조건 판정 기준 통일 — 숫자 0·빈 문자열 등을 거짓으로 판정 | 4.0.2609.0 |