cov()
그룹 내 두 숫자 필드 간의 공분산을 계산합니다.
문법
cov(EXPR_X, EXPR_Y)
매개변수
EXPR_X- 첫 번째 변수 값을 반환하는 표현식.
EXPR_Y- 두 번째 변수 값을 반환하는 표현식.
설명
cov() 함수는 그룹 내 레코드를 처리하면서 EXPR_X와 EXPR_Y가 반환하는 두 숫자 값의 쌍을 누적합니다. 두 값 중 하나라도 null이거나 숫자가 아닌 경우 해당 레코드는 집계에서 제외됩니다.
공분산은 두 변수가 얼마나 함께 변동하는지를 나타내는 통계량입니다. Wikipedia에서 제안하는 Welford 방식의 온라인 알고리즘(Algorithms for calculating variance — Covariance)을 사용하므로 수치적으로 안정적입니다.
모집단 공분산(분모 n)을 계산하여 64비트 실수(double)로 반환합니다. 집계 대상 유효 쌍이 하나도 없으면 null을 반환합니다.
stats, timechart 등 집계 명령어에서만 사용할 수 있습니다.
오류 코드
해당 사항 없음
사용 예
공분산은 두 연속형 수치가 함께 변동하는 정도를 측정합니다. HTTP 상태 코드(status)와 같이 숫자로 표기되더라도 범주(카테고리)를 의미하는 필드는 대상이 될 수 없습니다. 실제 운영 환경에서 분당 요청 수와 평균 응답 지연 시간 등 연속형 수치 쌍을 입력으로 사용하세요.
-
요청 수와 평균 응답 지연 시간 간의 공분산 계산
json "[{'minute': 1, 'req_count': 50, 'avg_latency_ms': 30}, {'minute': 2, 'req_count': 120, 'avg_latency_ms': 75}, {'minute': 3, 'req_count': 200, 'avg_latency_ms': 140}, {'minute': 4, 'req_count': 350, 'avg_latency_ms': 280}, {'minute': 5, 'req_count': 500, 'avg_latency_ms': 450}]" | stats cov(req_count, avg_latency_ms) | # 두 값이 함께 증가하므로 양의 공분산을 반환합니다. -
호스트별 요청 수와 평균 응답 지연 시간 간의 공분산 계산
json "[{'host': 'web-01', 'req_count': 100, 'avg_latency_ms': 50}, {'host': 'web-01', 'req_count': 220, 'avg_latency_ms': 130}, {'host': 'web-01', 'req_count': 380, 'avg_latency_ms': 260}, {'host': 'web-02', 'req_count': 80, 'avg_latency_ms': 40}, {'host': 'web-02', 'req_count': 180, 'avg_latency_ms': 100}, {'host': 'web-02', 'req_count': 320, 'avg_latency_ms': 220}]" | stats cov(req_count, avg_latency_ms) by host -
null 값 처리
json "[{'x': 1, 'y': 2}, {'x': null, 'y': 4}, {'x': 3, 'y': 6}]" | stats cov(x, y) | # x가 null인 레코드는 집계에서 제외됩니다.
호환성
cov() 함수는 로그프레소 소나 4.0 이전부터 제공되었습니다.