Evalúa una consulta de Prometheus con datos de una tabla TimeSeries en un intervalo de tiempos de evaluación.
Sintaxis
prometheusQueryRange('db_name', 'time_series_table', 'promql_query', start_time, end_time, step)
prometheusQueryRange(db_name.time_series_table, 'promql_query', start_time, end_time, step)
prometheusQueryRange('time_series_table', 'promql_query', start_time, end_time, step)Argumentos
db_name- El nombre de la base de datos donde se encuentra la tabla TimeSeries.time_series_table- El nombre de una tabla TimeSeries.promql_query- Una consulta escrita en sintaxis PromQL.start_time- La hora de inicio del intervalo de evaluación.end_time- La hora de finalización del intervalo de evaluación.step- El paso utilizado para iterar el tiempo de evaluación desdestart_timehastaend_time(ambos inclusive).
Valor devuelto
La función puede devolver distintas columnas según el tipo de resultado de la consulta proporcionada en el parámetro promql_query:
| Tipo de resultado | Columnas de resultado | Ejemplo |
|---|---|---|
| vector | tags Array(Tuple(String, String)), timestamp TimestampType, value ValueType | prometheusQuery(mytable, 'up') |
| matrix | tags Array(Tuple(String, String)), time_series Array(Tuple(TimestampType, ValueType)) | prometheusQuery(mytable, 'up[1m]') |
| scalar | scalar ValueType | prometheusQuery(mytable, '1h30m') |
| string | string String | prometheusQuery(mytable, '"abc"') |
Características de PromQL compatibles
Selectores
Selectores instantáneos, selectores de rango, comparadores de etiquetas (=, !=, =~, !~), modificadores offset, modificadores de marca temporal @ y subconsultas.
Funciones
| Categoría | Funciones |
|---|---|
| Rango | rate, irate, delta, idelta, increase, last_over_time, deriv, changes, resets |
| Matemáticas | abs, sgn, floor, ceil, sqrt, exp, ln, log2, log10, rad, deg, round, clamp, clamp_min, clamp_max |
| Trigonometría | sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh |
| DateTime | day_of_week, day_of_month, days_in_month, day_of_year, minute, hour, month, year |
| Etiqueta | label_replace, label_join |
| Tipo | scalar, vector |
| Histograma | histogram_quantile |
| Otros | time, pi |
Nota: histogram_quantile usa interpolación lineal en los buckets de histogramas clásicos (identificados por la etiqueta le). Los histogramas nativos no son compatibles. El argumento phi (nivel de cuantil) debe ser un escalar constante. Las expresiones que varían en cada paso, como histogram_quantile(time() / 1000, ...), se rechazan con una excepción NOT_IMPLEMENTED.
Operadores
Operadores binarios aritméticos (+, -, *, /, %, ^, atan2) y de comparación (==, !=, <, >, <=, >= con bool opcional), junto con los modificadores on()/ignoring() y group_left()/group_right().
Operadores lógicos de conjuntos and, or y unless, con modificadores on()/ignoring().
Operadores unarios + y -.
Operadores de agregación
sum, avg, min, max, count, stddev, stdvar, group, quantile, topk, bottomk, limitk — con los modificadores opcionales by() o without().
Aún no admitido
- Operador de agregación
count_values - Funciones de rango
predict_linear,avg_over_time,min_over_time,max_over_time,sum_over_time,count_over_time,quantile_over_time,stddev_over_time,stdvar_over_time,present_over_time,absent_over_time,mad_over_time,first_over_time,ts_of_min_over_time,ts_of_max_over_time,ts_of_last_over_time,ts_of_first_over_time - Función
absent
Ejemplo
SELECT * FROM prometheusQueryRange(mytable, 'rate(http_requests{job="prometheus"}[10m])[1h:10m]', now() - INTERVAL 10 MINUTES, now(), INTERVAL 1 MINUTE)