prev
입력 데이터 스트림에서 지정된 필드의 이전 레코드 값을 현재 레코드에 prev_ 접두사가 붙은 필드로 추가합니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 가공 쿼리 |
| 필요 권한 | 없음 |
| 라이선스 사용량 | 해당 없음 |
| 병렬 실행 | 지원 |
| 분산 실행 | 미지원 |
문법
prev FIELD, ...
대상
FIELD, ...- 이전 레코드의 값을 참조할 필드 이름. 쉼표(
,)로 구분하여 여러 필드를 지정할 수 있습니다. 각 필드에 대해prev_접두사가 붙은 출력 필드가 생성됩니다.
출력 필드
| 필드 | 타입 | 설명 |
|---|---|---|
| prev_FIELD | 원본 타입 | 직전 레코드의 해당 필드 값. 첫 번째 레코드에서는 null입니다. |
오류 코드
파싱 오류
해당 사항 없음
런타임 오류
해당 사항 없음
설명
prev 명령어는 입력 레코드를 순서대로 처리하면서, 지정한 각 필드에 대해 직전 레코드의 값을 prev_ 접두사가 붙은 새 필드에 추가합니다. 예를 들어 prev count를 지정하면, 현재 레코드에 prev_count 필드가 추가되고 직전 레코드의 count 값이 들어갑니다. 첫 번째 레코드에서는 이전 레코드가 없으므로 prev_ 필드 값이 null입니다.
값은 깊은 복사(deep copy)되므로 Map, List, Date 등 변경 가능한 타입도 안전하게 참조할 수 있습니다.
사용 예
이 사용 예에서 조회하는 WEB_APACHE_SAMPLE 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.
-
이전 레코드의 바이트 값 참조
table limit=10 WEB_APACHE_SAMPLE | sort _time | prev bytes | fields _time, src_ip, bytes, prev_bytes시간 순으로 정렬한 후 각 레코드에 직전 레코드의
bytes값을prev_bytes필드로 추가합니다. 첫 번째 레코드의prev_bytes는 null입니다. -
이전 요청과의 전송량 차이 계산
table limit=10 WEB_APACHE_SAMPLE | sort _time | prev bytes | eval bytes_diff = if(isnull(prev_bytes), 0, bytes - prev_bytes) | fields _time, src_ip, bytes, prev_bytes, bytes_diff직전 요청과의 전송 바이트 차이를
bytes_diff필드로 계산합니다. -
여러 필드의 이전 값 참조
table limit=10 WEB_APACHE_SAMPLE | sort _time | prev src_ip, bytes | fields _time, src_ip, prev_src_ip, bytes, prev_bytesprev_src_ip와prev_bytes필드가 각 레코드에 추가됩니다.
호환성
prev 명령어는 소나 4.0 이전 버전부터 제공되었습니다.