4.조건 함수

Edit

4.1case()case()

여러 개의 조건에 따라 분기하여 표현식을 평가합니다.

문법

case(CONDITION_1, EXPR_1[, CONDITION_2, EXPR2, ...], DEFAULT_EXPR)
CONDITION_1, EXPR_1[, CONDITION_2, EXPR2, ...]

조건문이 true이거나, null이 아닐 때 실행할 평가식(EXPR_N)과 함께 쌍으로 입력합니다.

DEFAULT_EXPR

어느 평가 조건에도 맞지 않을 때 수행할 표현식을 지정합니다.

사용 예

1) Score가 90이 넘으면 A, 80이 넘으면 B, 70이 넘으면 C, 60이 넘으면 D, 그 외에는 F로 평가

json "[
  {'Name': 'Alice', 'Score': 98},
  {'Name': 'Bob', 'Score': 65},
  {'Name': 'Clark', 'Score': 40}
  ]" 
| eval
  Grade=case(
    Score > 90, "A",
    Score > 80, "B",
    Score > 70, "C",
    Score > 60, "D",
    "F") 
| order Name, Grade, Score

2) str 필드 값의 문자열 길이가 9자보다 크면 9자로 자르고 말줄임표 적용

json "[{'str': 'Somewhere over the rainbow'}, {'str': 'Wonderful'}]"
| eval truncated=case(len(str) > 10, concat(left(str, 10), "…"), str)

4.2if()if()

조건문이 평가 결과(참/거짓)에 따라 실행할 표현식을 평가합니다.

문법

if(CONDITION, EXPR_IF_TRUE, EXPR_IF_FALSE)
CONDITION

조건문이 true 이거나, null이 아닐 때 참으로 평가됩니다.

EXPR_IF_TRUE

조건문이 참일 때 평가할 표현식을 입력합니다.

EXPR_IF_FALSE

조건문이 거짓일 때 평가할 표현식을 입력합니다.

사용 예

1) status 코드가 200인 경우 ok, 아닌 경우 error 평가

if(status == "200", "ok", "error")

4.3in()in()

표현식의 평가값이 이후의 표현식 평가 값 집합 중에 존재하는지 여부를 평가합니다.

문법

in(VAL_EXPR, EXPR_1[, EXPR_2, ...])
VALUE_EXPR

평가 대상 표현식을 입력합니다.

EXPR_1[, EXPR_2, ...]

VALUE_EXPR과 대조할 표현식을 쉼표(,)로 구분하여 입력합니다. 이 중 하나와 일치하면 true, 그렇지 않으면 false를 반환합니다.

사용 예

1) user_agent 필드 값이 msie, chrome, safari, firefox 중 하나와 일치하는지 검사

in(user_agent, "msie", "chrome", "safari", "firefox")

2) user_agent 필드 값이 google 혹은 yahoo 문자열을 포함하고 있는지 검사

in(user_agent, "*google*", "*yahoo*")

3) level이 6, 7 중 하나인지 검사

in(level, 6, 7)

4.4match()match()

문자열의 일부가 정규표현식과 일치하는지 여부를 반환합니다.

문법

match(VALUE_EXPR, REGEX)
VALUE_EXPR

평가 대상 표현식을 입력합니다. 값이 문자열이 아닌 경우, 문자열로 변환한 다음 REGEX와 비교합니다.

REGEX

VAL_EXPR 값을 비교할 정규표현식을 쌍따옴표 쌍(" ")으로 감싸서 입력합니다. 표현식이 null인 경우 false를 반환합니다.

사용 예

json "{}" 
| eval match=match("8 miles", "\\d+ [a-z]+") => true

json "{}"
| eval match=match(" 8 miles ", "^\\d+ [a-z]+$") => false

json "{}"
| eval match=match("sample", "\\d+ [a-z]+") => false

json "{}"
| eval match=match(123, "\\d+") => true

json "{}"
| eval match=match(null, "\\d+") => false

4.5nvl()nvl()

평가 대상 표현식이 null이 아니면 표현식의 값을 반환하고, null이면 기본값을 반환합니다.

문법

nvl(VAL_EXPR, DEFAULT_EXPR)
VALUE_EXPR

평가 대상 표현식을 입력합니다. 평가한 값이 null이 아닌 경우, 평가한 값을 반환합니다.

DEFAULT_EXPR

VAL_EXPR 값이 null일 때 반환할 값을 지정합니다.

사용 예

json "{}" | eval nvl=nvl("hello", "") => "hello"
json "{}" | eval nvl=nvl(null, "") => ""
Count of comments [0]