sum/min/max/avg 애그리게이터를 바꿔도 값이 달라지지 않아요
sum/min/max/avg 애그리게이터를 바꿔도 값이 달라지지 않아요 (Switching between the sum/min/max/avg aggregators doesn't change the value)
sum/min/max/avg 애그리게이터를 전환했는데 값이 그대로인 경우가 있어요. 결함이 아니라 쿼리 범위 때문입니다. 이 애그리게이터들은 단일 시리즈 안의 포인트가 아니라 여러 시리즈를 가로질러 값을 보기 때문이에요.
쿼리가 가장 세분화된 수준으로 범위가 좁혀져 있으면, 즉 각 시리즈가 이미 하나의 조합에 해당한다면 애그리게이터를 바꿔도 값이 달라지지 않습니다. 언제 그런지, 언제 달라지는지 예시로 살펴볼게요.
출처: 문서
본문
sum/min/max/avg 애그리게이터를 사용할 때는 단일 시리즈 안의 포인트가 아니라 여러 시리즈를 가로질러 봐요. 그래서 쿼리가 가장 세분화된 수준으로 범위가 좁혀져 있다면, 이 애그리게이터들을 전환해도 보이는 값이 달라지지 않을 수 있습니다.
예를 들어 웹 요청을 host와 path로 세분화해 각 조합마다 시리즈를 얻는다고 해 볼게요. 특정 시점의 데이터는 다음과 같을 수 있어요.
| Metric Name | Tags | Value |
|---|---|---|
| web.requests | host: a, path: /test1 |
5 |
| web.requests | host: a, path: /test2 |
3 |
| web.requests | host: b, path: /test1 |
2 |
| web.requests | host: b, path: /test2 |
8 |
host로 그룹핑하면 조합해야 할 host당 시리즈가 2개씩 있으므로, 집계 방법에 따라 결과가 달라져요.
| Query | host: a | host: b |
|---|---|---|
sum:web.requests(*) by {host} |
8 | 10 |
min:web.requests(*) by {host} |
3 | 2 |
max:web.requests(*) by {host} |
5 | 8 |
avg:web.requests(*) by {host} |
4 | 5 |
이 예시에서 host 그리고 path로 그룹핑하면, 이 데이터의 가장 세분화된 수준이므로 시리즈마다 sum/min/max/avg가 같은 네 개의 시리즈가 나와요.