table
로그프레소 테이블에 저장된 데이터를 조회합니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 드라이버 쿼리 |
| 필요 권한 | 테이블 읽기 권한 (raw=t 사용 시 관리자 권한 추가 필요) |
| 라이선스 사용량 | 집계함 |
| 병렬 실행 | 지원 |
| 분산 실행 | 수집 노드에서 실행 (mapper) |
문법
과거 데이터를 조회하려면
실시간 데이터를 수신하려면
옵션
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=BOOLt지정 시 병렬 스캔을 활성화합니다.limit을 지정하지 않은 경우 자동으로 오름차순 조회로 전환됩니다.eachtable=BOOLt지정 시offset,limit을 전체 결과가 아닌 테이블 단위로 적용합니다.raw=BOOLt지정 시 로그 파서를 적용하지 않고 원본 데이터를 조회합니다. 관리자 권한이 필요합니다.lazy=BOOLt지정 시 lazy loading을 활성화합니다. 초기에는 메타데이터만 로드하고 실제 데이터는 필요 시 로드합니다.fields=STR- 로드할 필드 이름을 쉼표로 구분하여 지정합니다. 지정 시 해당 필드만 읽어 성능을 향상시킬 수 있습니다.
대상
TABLE- 조회할 테이블 이름.
[NODE:][[NAMESPACE\]]TABLE[?]형식으로 지정합니다. 공백으로 구분하여 여러 테이블을 지정할 수 있으며,*와일드카드를 사용할 수 있습니다.
NODE:— 수집 노드 이름 (생략 시 전체 노드 대상)NAMESPACE\— 테이블 네임스페이스 (생략 가능)TABLE— 테이블명?— 이름 끝에 붙이면 테이블이 존재하지 않아도 오류 없이 건너뜁니다
출력 필드
| 필드 | 타입 | 설명 |
|---|---|---|
| _table | 문자열 | 테이블 이름. 원격 노드 테이블은 NODE:TABLE 형식 |
| _time | 날짜 | 레코드 기록 시각 |
| _sk | 64비트 정수 | 스토리지 키 |
| _era | 32비트 정수 | 에포크 번호 |
| _id | 64비트 정수 | 파티션 내 레코드 일련번호 |
테이블에 로그 파서가 설정되어 있으면 파서가 반환하는 필드가 추가됩니다.
오류 코드
파싱 오류
| 오류 코드 | 메시지 | 설명 |
|---|---|---|
| 10600 | 저장소가 닫혀 있습니다. | 저장소가 닫혀 있는 경우 |
| 10601 | offset 값은 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 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.
-
웹 접근 로그의 최근 10건 조회
table limit=10 WEB_APACHE_SAMPLEWEB_APACHE_SAMPLE테이블에서 가장 최근에 기록된 웹 접근 로그 10건을 조회합니다. -
특정 기간의 웹 접근 로그 조회
set _from = "20241118" _to = "20241119" | table from=$("_from") to=$("_to") WEB_APACHE_SAMPLE2024년 11월 18일 하루치 웹 접근 로그를 조회합니다.
_from,_to값을 수정하여 조회 기간을 변경할 수 있습니다. -
최근 1시간의 웹 접근 로그 상위 100건 조회
table duration=1h order=desc limit=100 WEB_APACHE_SAMPLE최근 1시간 이내의 웹 접근 로그 중 최신 100건을 시간 역순으로 조회합니다.
-
오래된 순서로 조회
table order=asc limit=100 WEB_APACHE_SAMPLEWEB_APACHE_SAMPLE테이블에서 가장 오래된 100건을 시간 오름차순으로 조회합니다. -
앞의 일부를 건너뛰고 조회
table offset=1000 limit=100 WEB_APACHE_SAMPLE처음 1,000건을 건너뛰고 이후 100건을 조회합니다.
-
특정 필드만 로드하여 성능 최적화
table fields=_time,src_ip,method,uri,status limit=100 WEB_APACHE_SAMPLE_time,src_ip,method,uri,status필드만 로드하여 불필요한 I/O를 줄입니다. -
실시간 웹 접근 로그 모니터링
table window=60s WEB_APACHE_SAMPLE쿼리 시작 시점부터 60초 동안
WEB_APACHE_SAMPLE테이블에 새로 입력되는 웹 접근 로그를 실시간으로 수신합니다. -
매개변수를 사용한 기간 조회
set _from = "20241118" _to = "20241119" | table from=$("_from") to=$("_to") WEB_APACHE_SAMPLE | stats count() as total_count, sum(bytes) as total_bytesset 명령어로 기간 범위를 매개변수로 지정하고
$()함수로 참조합니다._from,_to값을 수정하거나,string(dateadd(now(), "day", -7), "yyyyMMdd")처럼 동적으로 계산한 값을 할당하여 조회 기간을 유연하게 변경할 수 있습니다.
호환성
table 명령어는 소나 4.0 이전 버전부터 제공되었습니다.