addtotals 명령
addtotals 명령
addtotals 명령은 숫자 필드의 합을 계산하고 열 합계(요약 행)와 행 합계(새 필드)를 모두 만들 수 있어요. 이 명령은 소계(subtotal)나 총합계(grand total)가 있는 요약 보고서를 만드는 데 유용해요. 이 명령은 숫자 필드(정수, 부동 소수점, 더블)만 처리하며, 비숫자 필드는 필드 목록에 명시적으로 지정되더라도 무시돼요.
출처: 문서
본문
구문(Syntax)
addtotals 명령은 다음과 같은 구문을 가져요.
addtotals [field-list] [label=<string>] [labelfield=<field>] [row=<boolean>] [col=<boolean>] [fieldname=<field>]
매개변수(Parameters)
addtotals 명령은 다음 매개변수를 지원해요.
| Parameter | Required/Optional | Description |
|---|---|---|
<field-list> |
Optional | 더할 숫자 필드의 쉼표로 구분된 목록. 기본적으로 모든 숫자 필드가 더해져요. |
row |
Optional | 각 행의 합계를 계산하고 행 합계를 저장할 새 필드를 추가해요. 기본값은 true예요. |
col |
Optional | 각 열의 합계를 계산하고 열 합계와 함께 끝에 요약 이벤트를 추가해요. 기본값은 false예요. |
labelfield |
Optional | 레이블이 배치되는 필드. 필드가 없으면 생성되고 새 필드의 요약 행(마지막 행)에 레이블이 표시돼요. col=true일 때 적용돼요. |
label |
Optional | 계산된 합계를 식별하기 위해 요약 행(마지막 행)에 나타나는 텍스트. labelfield와 함께 사용하면 이 텍스트가 요약 행의 지정된 필드에 배치돼요. 기본값은 Total이에요. col=true일 때 적용돼요. labelfield와 fieldname 매개변수가 같은 필드 이름을 지정하면 이 매개변수는 효과가 없어요. |
fieldname |
Optional | 행 합계를 저장하는 필드. row=true일 때 적용돼요. |
예시 1: 열 합계 추가하기
다음 쿼리는 서비스별 오류 및 경고 수를 센 다음 총합계를 보여주는 열 합계 행을 추가해요.
source=otellogs
| where severityText IN ('ERROR', 'WARN')
| eval error_count = IF(severityText = 'ERROR', 1, 0), warn_count = IF(severityText = 'WARN', 1, 0)
| stats sum(error_count) as errors, sum(warn_count) as warnings by `resource.attributes.service.name`
| sort `resource.attributes.service.name`
| fields `resource.attributes.service.name`, errors, warnings
| addtotals col=true labelfield='resource.attributes.service.name' label='Total'
이 쿼리는 다음과 같은 결과를 반환해요.
| resource.attributes.service.name | errors | warnings | Total |
|---|---|---|---|
| checkout | 2 | 0 | 2 |
| frontend-proxy | 1 | 2 | 3 |
| payment | 2 | 0 | 2 |
| product-catalog | 1 | 2 | 3 |
| recommendation | 1 | 0 | 1 |
| Total | 7 | 4 | null |
예시 2: 행 합계 추가하기
다음 쿼리는 서비스별 오류 및 경고 수를 별도로 센 다음, 서비스별 조치 가능한 이슈의 결합 개수를 보여주는 행 합계를 추가해요.
source=otellogs
| where severityText IN ('ERROR', 'WARN')
| eval error_count = IF(severityText = 'ERROR', 1, 0), warn_count = IF(severityText = 'WARN', 1, 0)
| stats sum(error_count) as errors, sum(warn_count) as warnings by `resource.attributes.service.name`
| sort `resource.attributes.service.name`
| fields `resource.attributes.service.name`, errors, warnings
| addtotals row=true fieldname='total_issues'
이 쿼리는 다음과 같은 결과를 반환해요.
| resource.attributes.service.name | errors | warnings | total_issues |
|---|---|---|---|
| checkout | 2 | 0 | 2 |
| frontend-proxy | 1 | 2 | 3 |
| payment | 2 | 0 | 2 |
| product-catalog | 1 | 2 | 3 |
| recommendation | 1 | 0 | 1 |
예시 3: 모든 옵션 사용하기
다음 쿼리는 모든 옵션이 설정된 addtotals 명령을 사용해 행 합계와 열 합계를 단일 보고서에 결합해요.
source=otellogs
| where severityText IN ('ERROR', 'WARN')
| eval error_count = IF(severityText = 'ERROR', 1, 0), warn_count = IF(severityText = 'WARN', 1, 0)
| stats sum(error_count) as errors, sum(warn_count) as warnings by `resource.attributes.service.name`
| sort `resource.attributes.service.name`
| fields `resource.attributes.service.name`, errors, warnings
| addtotals errors, warnings row=true col=true fieldname='Row Total' label='Sum' labelfield='Column Total'
이 쿼리는 다음과 같은 결과를 반환해요.
| resource.attributes.service.name | errors | warnings | Row Total | Column Total |
|---|---|---|---|---|
| checkout | 2 | 0 | 2 | null |
| frontend-proxy | 1 | 2 | 3 | null |
| payment | 2 | 0 | 2 | null |
| product-catalog | 1 | 2 | 3 | null |
| recommendation | 1 | 0 | 1 | null |
| null | 7 | 4 | null | Sum |