timeSeriesTopKMasks
Introducido en: v26.8.0 Selecciona las series temporales con los k valores más altos en cada paso de una cuadrícula temporal. Cada fila de entrada es una serie temporal:key identifica la serie y values contiene sus valores alineados con una
cuadrícula temporal común, por lo que los arrays values de todas las filas deben tener el mismo tamaño. En cada paso temporal, se seleccionan las series con los k valores
no NULL más altos en ese paso (NaN se considera menor que cualquier otro valor). Los empates se resuelven
dando preferencia a la serie con la key más pequeña.
Esta función implementa el operador de agregación topk() de PromQL y mantiene un único heap acotado de tamaño k por
paso temporal, por lo que el tamaño de su estado no depende del número de series agregadas.
Esta función está en vista previa privada; para habilitarla, establezca
enable_time_series_aggregate_functions = 1.k— Número de series que se seleccionan en cada paso de tiempo: un único valor para todos los pasos de tiempo o un array con un valor por paso de tiempo. Debe ser el mismo para todas las filas.UInt*oArray(UInt*)key— Identificador de la serie temporal.UInt64values— Valores de la serie temporal alineados con la cuadrícula temporal, un elemento por paso de tiempo.Array(Nullable(Float32))oArray(Nullable(Float64))oArray(Float32)oArray(Float64)
key, cada una junto con su máscara por paso: steps_mask[t] = 1 si la serie está seleccionada en el paso de tiempo t. Las series que no se seleccionan en ningún paso de tiempo no se devuelven. Array(Tuple(key UInt64, steps_mask Array(UInt8)))
Ejemplos
Selección de las 2 series con los valores más altos por paso de tiempo
Query
Response