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] TABLE [TABLE ...]

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

table window=INT{s|m|h|d|mon} [parser=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 지정 시 로그 파서를 적용하지 않고 원본 데이터를 조회합니다. 관리자 권한이 필요합니다.

대상

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

테이블 이름 대신 메타데이터 조건으로 대상을 고를 수도 있습니다.

meta("KEY==VALUE"[, TABLE_PATTERN, ...])

테이블 메타데이터의 KEY 값이 VALUE와 일치하는 테이블을 조회합니다. and, or, not으로 조건을 조합할 수 있고 !=로 부정할 수 있습니다. 조건 뒤에 테이블 패턴을 지정하면 그 패턴에 해당하는 테이블만 검사하며, 생략하면 전체 테이블(*)을 검사합니다. 예를 들어 table meta("logparser==iis")는 iis 파서를 쓰는 테이블을 모두 조회하고, table meta("logparser==iis", "WEB_*")는 이름이 WEB_으로 시작하는 테이블만 대상으로 같은 조건을 적용합니다. 값에는 와일드카드(*, ?)를 쓸 수 있습니다.

메타데이터는 테이블마다 붙는 키/값이며, 제품이 자동으로 기록하는 키와 관리자가 직접 지정하는 키가 함께 쓰입니다. 제품이 사용하는 대표적인 키는 다음과 같습니다.

키설명
parser테이블에 지정된 파서 이름
logparser테이블에 지정된 파서 팩토리 이름
lifecycle테이블에 적용된 생명주기 프로파일
app_id테이블을 생성한 앱의 식별자
alt_table_path테이블 데이터를 저장하는 대체 경로
created_from테이블을 만든 명령(import, insert 등)
_filetype무결성 검사에서 사용하는 파일 유형

키 목록은 고정되어 있지 않습니다. 위 키 외에도 앱이나 관리자가 임의의 키를 설정할 수 있으므로, 조건에 쓸 키와 값은 대상 환경에서 확인하세요. 와일드카드가 없는 리터럴 값의 대소문자 구분은 계열에 따라 다릅니다. 4.0.2609.0 버전부터는 대소문자를 구분해 정확히 일치시킵니다. 5.0 계열(5.0.2605.2까지)은 구분하지 않습니다.

출력 필드

필드타입설명
_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-permission—raw=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 window=60s WEB_APACHE_SAMPLE
    

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

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

    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 이전 버전