stream

쿼리 시작 시점부터 지정한 시간 동안 실시간으로 스트림 쿼리의 출력을 수신합니다. 쿼리가 실행되는 동안 스트림 쿼리의 출력이 없으면 빈 결과를 반환합니다. 이 명령어는 관리자 권한이 필요합니다.

명령어 속성

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

문법

스트림 출력을 실시간으로 수신하려면

stream window=INT{s|m|h|d|mon} STREAM_NAME [, STREAM_NAME ...]

입력 레코드를 스트림으로 전달하려면

stream forward=t STREAM_NAME [, STREAM_NAME ...]

옵션

window=INT{s|m|h|d|mon}
쿼리 시작 시점부터 스트림 출력을 수신할 시간. s(초), m(분), h(시), d(일), mon(월) 단위를 사용합니다. window 옵션과 forward 옵션은 함께 사용할 수 없습니다.
forward=t
입력 레코드를 지정한 스트림에 전달하는 가공 쿼리 모드. true로 설정하면 드라이버 쿼리 대신 가공 쿼리로 동작하여 이전 명령어의 출력을 스트림에 전달합니다.

대상

STREAM_NAME [, STREAM_NAME ...]
스트림 이름. 쉼표(,)로 구분하여 여러 스트림을 지정할 수 있습니다. 와일드카드(*)를 사용하여 이름 패턴으로 여러 스트림을 지정할 수 있습니다.

출력 필드

필드타입설명
_stream문자열스트림 이름

오류 코드

파싱 오류
오류 코드메시지설명
no-read-permission-관리자 권한이 없는 경우. 이 코드는 전역 오류 메시지 목록에 등록되어 있지 않아 코드 문자열이 그대로 노출됩니다.
missing-window-option-window 옵션과 forward 옵션 모두 지정되지 않은 경우. 위와 동일하게 코드 문자열이 그대로 노출됩니다.
11600지정된 스트림을 찾을 수 없습니다.지정된 이름과 일치하는 스트림이 존재하지 않는 경우. 이름 일치를 판정하는 방식은 계열에 따라 다릅니다 — 4.0 계열은 지정한 이름마다 하나 이상 일치해야 하고, 5.0 계열(5.0.2605.2까지)은 전체에서 하나만 일치하면 통과합니다
런타임 오류

해당 사항 없음

설명

stream 명령어는 두 가지 동작 모드를 지원합니다.

window 옵션을 사용하면 드라이버 쿼리로 동작합니다. 쿼리 시작 시점부터 지정한 시간 동안 실시간으로 스트림 쿼리의 출력을 수신합니다. 스트림의 이름이 _stream 필드로 출력됩니다.

forward=t 옵션을 사용하면 가공 쿼리로 동작합니다. 이전 명령어의 출력 레코드를 지정한 스트림으로 전달하면서 다음 명령어로도 그대로 전달합니다.

스트림 이름에는 와일드카드(*)를 사용하여 이름 패턴으로 여러 스트림을 지정할 수 있습니다. 지정한 이름이나 패턴과 일치하는 스트림이 하나도 없으면 파싱 시점에 오류가 발생합니다. 이름 일치를 검사하는 방식은 계열에 따라 다릅니다 — 4.0.2609.0 버전부터는 지정한 이름마다 하나 이상의 스트림에 일치해야 하며, 일치하지 않는 이름이 하나라도 있으면 오류가 됩니다. 5.0 계열(5.0.2605.2까지)은 지정한 이름·패턴 전체에서 어느 하나의 스트림에 일치하면 통과합니다. 또한 와일드카드가 없는 이름의 일치는 대소문자 구분도 계열에 따라 다릅니다 — 4.0 계열은 구분하고 5.0 계열(5.0.2605.2까지)은 구분하지 않습니다.

스트림은 저장된 스트림 쿼리로 정의되며, 스트림 쿼리 자체도 stream forward=t로 다른 스트림에, import로 테이블에 결과를 전달하도록 구성할 수 있습니다. 이렇게 구성된 스트림 쿼리는 전달 대상 테이블이나 스트림이 삭제되어 더 이상 해석할 수 없게 되면 자동으로 비활성화됩니다. 비활성화된 스트림 쿼리는 삭제되지 않고 남아 있지만 더 이상 출력을 생성하지 않으므로, window 옵션으로 조회하면 오류 없이 빈 결과만 반환됩니다.

사용 예

  1. 스트림 출력을 1분 동안 수신

    stream window=1m my_stream
    

    my_stream 스트림의 출력을 1분 동안 실시간으로 수신합니다.

  2. 와일드카드로 여러 스트림 수신

    stream window=30s alert_*
    

    이름이 alert_로 시작하는 모든 스트림의 출력을 30초 동안 수신합니다.

  3. 입력 레코드를 스트림으로 전달

    table duration=1h WEB_APACHE_SAMPLE
    | stream forward=t my_stream
    | stats count by src_ip
    

    WEB_APACHE_SAMPLE 테이블에서 조회한 레코드를 my_stream 스트림으로 전달하면서 동시에 다음 명령어로도 전달합니다.

변경 이력

대상도입 릴리스
stream 명령어소나 4.0 이전 버전
전달 대상 삭제 시 스트림 쿼리 자동 비활성화4.0.2609.0