timeSeriesTopKMasks
도입 버전: v26.8.0 시간 그리드(time grid)의 각 시간 간격마다 값이 가장 큰 k개의 시계열을 선택합니다. 각 입력 행은 하나의 시계열입니다.key는 시계열을 식별하고, values에는 공통 시간 그리드에 맞춰 정렬된 해당 시계열의 값이 들어 있습니다.
따라서 모든 행의 values 배열은 크기가 같아야 합니다. 각 시간 간격에서는 해당 간격의 NULL이 아닌 값이 가장 큰 k개의
시계열이 선택됩니다(NaN은 다른 어떤 값보다도 작은 것으로 간주됩니다). 값이 같으면 key가 더 작은 시계열이
우선 선택됩니다.
이 함수는 PromQL의 topk() 집계 연산자를 구현하며, 시간 간격마다 크기가 k로 제한된 힙을 하나만 유지하므로
상태(state) 크기가 집계 대상 시계열의 개수와 무관합니다.
이 함수는 비공개 프리뷰 단계입니다.
enable_time_series_aggregate_functions = 1로 설정하여 활성화하십시오.k— 각 시간 간격마다 선택할 시계열의 개수입니다. 모든 시간 간격에 공통으로 적용되는 단일 값이나, 시간 간격마다 값을 하나씩 지정하는 배열을 사용할 수 있습니다. 모든 행에서 동일해야 합니다.UInt*또는Array(UInt*)key— 시계열의 식별자입니다.UInt64values— 시간 그리드에 맞춰 정렬된 시계열 값으로, 시간 간격마다 원소가 하나씩 있습니다.Array(Nullable(Float32))또는Array(Nullable(Float64))또는Array(Float32)또는Array(Float64)
key 오름차순으로 반환하며, 각 시계열에는 간격별 마스크가 함께 포함됩니다. 시계열이 시간 간격 t에서 선택되면 steps_mask[t] = 1입니다. 어떤 시간 간격에서도 선택되지 않은 시계열은 반환되지 않습니다. Array(Tuple(key UInt64, steps_mask Array(UInt8)))
예시
시간 간격마다 값이 가장 큰 시계열 2개 선택
Query
Response