appendpipe 명령
appendpipe 명령
appendpipe 명령은 하위 파이프라인(subpipeline)의 결과를 검색 결과에 추가해요. 하위 검색과 달리 하위 파이프라인은 먼저 실행되지 않고, 검색이 appendpipe 명령에 도달했을 때만 실행돼요. 이 명령은 같은 필드 이름과 타입을 가진 열을 정렬하고, 메인 검색이나 하위 파이프라인 중 한쪽에만 있는 열에는 해당 행의 누락된 필드에 NULL 값을 삽입해요.
출처: 문서
본문
구문(Syntax)
appendpipe 명령은 다음과 같은 구문을 가져요.
appendpipe [<subpipeline>]
매개변수(Parameters)
appendpipe 명령은 다음 매개변수를 지원해요.
| Parameter | Required/Optional | Description |
|---|---|---|
<subpipeline> |
Required | appendpipe 명령 앞에 오는 명령들이 생성한 검색 결과에 적용되는 명령 목록. |
예시 1: 집계 결과에 합계 행 추가하기
다음 쿼리는 심각도 수준별 로그를 센 다음 합계 행을 추가해요. 분류와 합계를 모두 포함하는 요약 보고서를 만들 때 유용해요.
source=otellogs
| stats count() as log_count by severityText
| sort - log_count
| appendpipe [ stats sum(log_count) as total ]
| fields severityText, log_count, total
이 쿼리는 다음과 같은 결과를 반환해요.
| severityText | log_count | total |
|---|---|---|
| ERROR | 7 | null |
| INFO | 6 | null |
| WARN | 4 | null |
| DEBUG | 3 | null |
| null | null | 20 |
예시 2: 상세 행에 요약 통계 추가하기
다음 쿼리는 서비스별 오류 수를 보여준 다음, 모든 서비스에 걸친 전체 평균 오류 수를 추가해요.
source=otellogs
| where severityText = 'ERROR'
| stats count() as error_count by `resource.attributes.service.name`
| sort - error_count
| appendpipe [ stats avg(error_count) as avg_errors ]
| fields `resource.attributes.service.name`, error_count, avg_errors
이 쿼리는 다음과 같은 결과를 반환해요.
| resource.attributes.service.name | error_count | avg_errors |
|---|---|---|
| checkout | 2 | null |
| payment | 2 | null |
| frontend-proxy | 1 | null |
| product-catalog | 1 | null |
| recommendation | 1 | null |
| null | null | 1.4 |
제한 사항(Limitations)
appendpipe 명령에는 다음과 같은 제한 사항이 있어요.
- 스키마 호환성(Schema compatibility): 메인 검색과 하위 파이프라인 양쪽에 같은 이름의 필드가 존재하지만 타입이 호환되지 않으면 쿼리가 오류로 실패해요. 타입 충돌을 피하려면 같은 이름의 필드가 같은 데이터 타입을 공유하는지 확인해요. 또는 다른 필드 이름을 사용해요.
eval로 충돌하는 필드 이름을 바꾸거나fields로 충돌하지 않는 열을 선택할 수 있어요.