eval

표현식을 평가하여 각 레코드에 필드를 추가하거나 기존 필드의 값을 변경합니다.

명령어 속성

항목설명
명령어 유형가공 쿼리
필요 권한없음
라이선스 사용량해당 없음
병렬 실행지원
분산 실행미지원

문법

eval FIELD=EXPR [, FIELD=EXPR ...]
FIELD
값을 할당할 필드 이름
EXPR
필드에 할당할 표현식. 상수, 함수, 다른 필드를 참조할 수 있습니다.
  • 쉼표(,)로 구분하여 여러 필드를 한 번에 할당할 수 있습니다.
  • 같은 eval 명령어 안에서 앞서 할당한 필드를 뒤의 표현식에서 참조할 수 있습니다.

입력 필드

없음

출력 필드

필드타입설명
(사용자 정의)모든 타입eval 표현식으로 추가하거나 변경한 필드

오류 코드

파싱 오류
오류 코드메시지설명
20100할당자(=) 가 없습니다.할당 연산자(=)가 없는 경우
20101필드 이름이 없습니다.필드 이름이 비어 있는 경우
20102표현식이 없습니다.할당할 표현식이 비어 있는 경우
런타임 오류

해당 사항 없음

설명

eval 명령어는 각 입력 레코드에 대해 표현식을 평가하고, 결과를 지정된 필드에 할당합니다. 필드가 이미 존재하면 값을 덮어쓰고, 존재하지 않으면 새로 추가합니다.

사용 예

이 사용 예에서 조회하는 WEB_APACHE_SAMPLE 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.

  1. 기존 필드를 이용한 값 계산

    table limit=5 WEB_APACHE_SAMPLE
    | eval kb = bytes / 1024
    | fields uri, bytes, kb
    

    bytes 필드를 1024로 나누어 응답 크기를 킬로바이트 단위로 변환한 kb 필드를 추가합니다.

  2. 여러 필드를 한 번에 할당

    table limit=5 WEB_APACHE_SAMPLE
    | eval protocol_ver = protocol, req = concat(method, " ", uri)
    | fields method, uri, protocol_ver, req
    

    protocol 필드를 복사하고, methoduri를 연결한 요청 문자열을 req 필드에 할당합니다. 같은 eval 안에서 앞서 할당한 필드를 뒤의 표현식에서 참조할 수 있습니다.

  3. 조건식을 사용한 필드 추가

    table limit=5 WEB_APACHE_SAMPLE
    | eval result = if(status == 200, "성공", "비성공")
    | fields uri, status, result
    

    status 필드 값에 따라 result 필드에 성공 또는 비성공을 할당합니다.

  4. 중첩 조건식으로 상태 코드 분류

    table limit=5 WEB_APACHE_SAMPLE
    | eval category = if(status < 300, "2xx/3xx", if(status < 500, "4xx", "5xx"))
    | fields uri, status, category
    

    HTTP 상태 코드 범위에 따라 응답을 2xx/3xx, 4xx, 5xx 범주로 분류합니다.

호환성

eval 명령어는 소나 4.0 이전 버전부터 제공되었습니다.