table

로그프레소 테이블에 저장된 데이터를 조회합니다.

명령어 속성

항목설명
명령어 유형드라이버 쿼리
필요 권한테이블 읽기 권한 (raw=t 사용 시 관리자 권한 추가 필요)
라이선스 사용량집계함
병렬 실행지원
분산 실행수집 노드에서 실행 (mapper)

문법

과거 데이터를 조회하려면

table [order={desc|asc}] [offset=LONG] [limit=LONG] [duration=INT{s|m|h|d|mon}] [from=DATE] [to=DATE] [parser=STR] [parallel=BOOL] [eachtable=BOOL] [raw=BOOL] [lazy=BOOL] [fields=STR] TABLE [TABLE ...]

실시간 데이터를 수신하려면

table window=INT{s|m|h|d|mon} [parser=STR] [lazy=BOOL] [fields=STR] TABLE [TABLE ...]

옵션

order={desc|asc}
테이블 조회 순서 (기본값: desc).
  • desc: 최신 데이터부터 조회
  • asc: 오래된 데이터부터 조회
offset=LONG
건너뛸 레코드 수. 0 이상의 값을 지정합니다.
limit=LONG
가져올 최대 레코드 수
duration=INT{s|m|h|d|mon}
현재 시각으로부터 일정 시간 범위 이내의 데이터로 한정합니다. s(초), m(분), h(시), d(일), mon(월) 단위를 사용합니다. 예: 10m은 현재 시각으로부터 10분 이전까지의 범위입니다. window과 함께 사용할 수 없습니다.
from=DATE
조회 범위의 시작 시각. yyyyMMddHHmmss 형식으로 입력합니다. 뒷자리를 생략하면 0으로 채워집니다. window과 함께 사용할 수 없습니다.
to=DATE
조회 범위의 끝 시각. yyyyMMddHHmmss 형식으로 입력합니다. 뒷자리를 생략하면 0으로 채워집니다. window과 함께 사용할 수 없습니다.
window=INT{s|m|h|d|mon}
쿼리 시작 시점부터 지정한 시간 동안 테이블에 새로 입력되는 데이터를 실시간으로 수신합니다. s(초), m(분), h(시), d(일), mon(월) 단위를 사용합니다. from, to, duration과 함께 사용할 수 없습니다.
parser=STR
레코드 파싱에 사용할 로그 파서 이름
parallel=BOOL
t 지정 시 병렬 스캔을 활성화합니다. limit을 지정하지 않은 경우 자동으로 오름차순 조회로 전환됩니다.
eachtable=BOOL
t 지정 시 offset, limit을 전체 결과가 아닌 테이블 단위로 적용합니다.
raw=BOOL
t 지정 시 로그 파서를 적용하지 않고 원본 데이터를 조회합니다. 관리자 권한이 필요합니다.
lazy=BOOL
t 지정 시 lazy loading을 활성화합니다. 초기에는 메타데이터만 로드하고 실제 데이터는 필요 시 로드합니다.
fields=STR
로드할 필드 이름을 쉼표로 구분하여 지정합니다. 지정 시 해당 필드만 읽어 성능을 향상시킬 수 있습니다.

대상

TABLE
조회할 테이블 이름. [NODE:][[NAMESPACE\]]TABLE[?] 형식으로 지정합니다. 공백으로 구분하여 여러 테이블을 지정할 수 있으며, * 와일드카드를 사용할 수 있습니다.
  • NODE: — 수집 노드 이름 (생략 시 전체 노드 대상)
  • NAMESPACE\ — 테이블 네임스페이스 (생략 가능)
  • TABLE — 테이블명
  • ? — 이름 끝에 붙이면 테이블이 존재하지 않아도 오류 없이 건너뜁니다

출력 필드

필드타입설명
_table문자열테이블 이름. 원격 노드 테이블은 NODE:TABLE 형식
_time날짜레코드 기록 시각
_sk64비트 정수스토리지 키
_era32비트 정수에포크 번호
_id64비트 정수파티션 내 레코드 일련번호

테이블에 로그 파서가 설정되어 있으면 파서가 반환하는 필드가 추가됩니다.

오류 코드

파싱 오류
오류 코드메시지설명
10600저장소가 닫혀 있습니다.저장소가 닫혀 있는 경우
10601offset 값은 0보다 크거나 같아야 합니다: 입력값=[offset].offset 값이 0보다 작은 경우
10602입력값이 허용 범위를 벗어났습니다: limit=[offset].limit 값이 허용 범위를 벗어난 경우
10603[options]에서 [exp] 잘못된 옵션입니다.잘못된 테이블 지정자가 사용된 경우
10604테이블이 없습니다.테이블이 지정되지 않은 경우
10605테이블 [table]이(가) 존재하지 않습니다.지정된 로컬 테이블이 존재하지 않는 경우
10606테이블 [table] 읽기 권한이 없습니다.로컬 테이블 읽기 권한이 없는 경우
10607테이블 [table]이(가) 존재하지 않습니다.지정된 원격 테이블이 존재하지 않는 경우
10608테이블 [table] 읽기 권한이 없습니다.원격 테이블 읽기 권한이 없는 경우
no-raw-permissionraw=t 사용 시 관리자 권한이 없는 경우
런타임 오류

해당 사항 없음

설명

table 명령어는 로그프레소 테이블에 저장된 데이터를 조회합니다. 드라이버 쿼리이므로 쿼리 파이프라인에서 첫 번째 명령어로만 사용합니다.

window 옵션을 지정하면 과거 데이터 스캔 대신 실시간 수신 모드로 동작합니다. 쿼리 시작 시점부터 지정한 시간이 경과하거나 쿼리가 취소될 때까지 테이블에 새로 입력되는 데이터를 수신합니다. from, to, duration 옵션과 함께 사용할 수 없습니다.

분산 환경에서는 테이블이 저장된 각 수집 노드에서 스캔이 실행됩니다.

사용 예

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

  1. 웹 접근 로그의 최근 10건 조회

    table limit=10 WEB_APACHE_SAMPLE
    

    WEB_APACHE_SAMPLE 테이블에서 가장 최근에 기록된 웹 접근 로그 10건을 조회합니다.

  2. 특정 기간의 웹 접근 로그 조회

    set _from = "20241118" _to = "20241119"
    | table from=$("_from") to=$("_to") WEB_APACHE_SAMPLE
    

    2024년 11월 18일 하루치 웹 접근 로그를 조회합니다. _from, _to 값을 수정하여 조회 기간을 변경할 수 있습니다.

  3. 최근 1시간의 웹 접근 로그 상위 100건 조회

    table duration=1h order=desc limit=100 WEB_APACHE_SAMPLE
    

    최근 1시간 이내의 웹 접근 로그 중 최신 100건을 시간 역순으로 조회합니다.

  4. 오래된 순서로 조회

    table order=asc limit=100 WEB_APACHE_SAMPLE
    

    WEB_APACHE_SAMPLE 테이블에서 가장 오래된 100건을 시간 오름차순으로 조회합니다.

  5. 앞의 일부를 건너뛰고 조회

    table offset=1000 limit=100 WEB_APACHE_SAMPLE
    

    처음 1,000건을 건너뛰고 이후 100건을 조회합니다.

  6. 특정 필드만 로드하여 성능 최적화

    table fields=_time,src_ip,method,uri,status limit=100 WEB_APACHE_SAMPLE
    

    _time, src_ip, method, uri, status 필드만 로드하여 불필요한 I/O를 줄입니다.

  7. 실시간 웹 접근 로그 모니터링

    table window=60s WEB_APACHE_SAMPLE
    

    쿼리 시작 시점부터 60초 동안 WEB_APACHE_SAMPLE 테이블에 새로 입력되는 웹 접근 로그를 실시간으로 수신합니다.

  8. 매개변수를 사용한 기간 조회

    set _from = "20241118" _to = "20241119"
    | table from=$("_from") to=$("_to") WEB_APACHE_SAMPLE
    | stats count() as total_count, sum(bytes) as total_bytes
    

    set 명령어로 기간 범위를 매개변수로 지정하고 $() 함수로 참조합니다. _from, _to 값을 수정하거나, string(dateadd(now(), "day", -7), "yyyyMMdd")처럼 동적으로 계산한 값을 할당하여 조회 기간을 유연하게 변경할 수 있습니다.

호환성

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