timeSeriesLimitKMasks
Introducido en: v26.8.0 Selecciona hasta k series temporales en cada paso de una cuadrícula temporal, de forma pseudoaleatoria y determinista. Cada fila de entrada es una serie temporal:key identifica la serie, sampling_key es un hash por serie que se usa como
orden de selección, y values contiene los valores de la serie 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, de entre las series
con valores no NULL en ese paso, aquellas con las k claves de muestreo más pequeñas. Los empates en la clave de muestreo se resuelven dando preferencia a la serie con el key más pequeño.
Esta función implementa el operador de agregación limitk() de PromQL y mantiene un único heap acotado de tamaño k por
paso temporal, de modo 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 temporal: puede ser un único valor para todos los pasos temporales o un array con un valor por paso temporal. Debe ser el mismo para todas las filas.UInt*oArray(UInt*)key— Identificador de la serie temporal.UInt64sampling_key— Hash por serie que define el orden de selección, p. ej.,timeSeriesGroupToSamplingKey(key).UInt64values— Valores de la serie temporal alineados con la cuadrícula temporal, con un elemento por paso temporal.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 temporal t. Las series que no se seleccionan en ningún paso temporal no se devuelven. Array(Tuple(key UInt64, steps_mask Array(UInt8)))
Ejemplos
Selección de 2 series por paso temporal según las claves de muestreo más pequeñas
Query
Response