Вычисляет запрос Prometheus, используя данные из таблицы TimeSeries в заданном диапазоне моментов вычисления.
Синтаксис
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)Аргументы
db_name- Имя базы данных, в которой находится таблица TimeSeries.time_series_table- Имя таблицы TimeSeries.promql_query- Запрос, записанный в синтаксисе PromQL.start_time- Время начала интервала вычисления.end_time- Время окончания интервала вычисления.step- Шаг, с которым перебирается время вычисления отstart_timeдоend_time(включительно).
Возвращаемое значение
Функция может возвращать разные столбцы в зависимости от типа результата запроса, переданного в параметр promql_query:
| Тип результата | Возвращаемые столбцы | Пример |
|---|---|---|
| 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"') |
Поддерживаемые возможности PromQL
Селекторы
Мгновенные селекторы, селекторы диапазона, сопоставители меток (=, !=, =~, !~), модификаторы offset, модификаторы временной метки @ и подзапросы.
Функции
| Категория | Функции |
|---|---|
| Диапазон | rate, irate, delta, idelta, increase, last_over_time, deriv, changes, resets |
| Математические | abs, sgn, floor, ceil, sqrt, exp, ln, log2, log10, rad, deg, round, clamp, clamp_min, clamp_max |
| Тригонометрические | sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh |
| Дата и время | day_of_week, day_of_month, days_in_month, day_of_year, minute, hour, month, year |
| Метка | label_replace, label_join |
| Тип | scalar, vector |
| Гистограмма | histogram_quantile |
| Другое | time, pi |
Note: histogram_quantile использует линейную интерполяцию для классических бакетов гистограммы (определяемых по метке le). Нативные гистограммы не поддерживаются. Аргумент phi (уровень квантиля) должен быть константным скаляром. Выражения, меняющиеся от шага к шагу, такие как histogram_quantile(time() / 1000, ...), отклоняются с исключением NOT_IMPLEMENTED.
Операторы
Бинарные арифметические (+, -, *, /, %, ^, atan2) и сравнительные (==, !=, <, >, <=, >= с необязательным bool) операторы с модификаторами on()/ignoring() и group_left()/group_right().
Логические операторы множеств and, or и unless с модификаторами on()/ignoring().
Унарные операторы + и -.
Операторы агрегации
sum, avg, min, max, count, stddev, stdvar, group, quantile, topk, bottomk, limitk — с необязательными модификаторами by() и without().
Пока не поддерживается
- Оператор агрегации
count_values - Функции диапазона
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 - Функция
absent
Пример
SELECT * FROM prometheusQueryRange(mytable, 'rate(http_requests{job="prometheus"}[10m])[1h:10m]', now() - INTERVAL 10 MINUTES, now(), INTERVAL 1 MINUTE)