跳转到主要内容
使用 TimeSeries 表中的数据,在一段评估时间范围内对 prometheus 查询求值。

语法

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 的查询结果类型,返回不同的列:
结果类型结果列示例
vectortags Array(Tuple(String, String)), timestamp TimestampType, value ValueTypeprometheusQuery(mytable, ‘up’)
matrixtags Array(Tuple(String, String)), time_series Array(Tuple(TimestampType, ValueType))prometheusQuery(mytable, ‘up[1m]‘)
scalarscalar ValueTypeprometheusQuery(mytable, ‘1h30m’)
stringstring StringprometheusQuery(mytable, ‘“abc”‘)

支持的 PromQL 特性

选择器

即时选择器、范围选择器、标签匹配器 (=!==~!~) 、偏移修饰符、@ 时间戳修饰符,以及子查询。

函数

类别函数
范围rate, irate, delta, idelta, last_over_time
数学abs, sgn, floor, ceil, sqrt, exp, ln, log2, log10, rad, deg
三角函数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
类型scalar, vector
直方图histogram_quantile
其他time, pi
注意histogram_quantile 在经典直方图桶 (由 le 标签标识) 上使用线性插值。原生直方图暂不受支持,并且 phi (分位数级别) 参数目前必须是常量标量——像 histogram_quantile(time() / 1000, ...) 这样在每个 step 上都会变化的表达式,会因 NOT_IMPLEMENTED 错误而被拒绝。

运算符

所有算术 (+-*/%^) 、比较 (==!=<><=>=,可选 bool) 和逻辑 (andorunless) 二元运算符,以及 on()/ignoring()group_left()/group_right() 修饰符。 一元运算符 +-

聚合运算符

sum, avg, min, max, count, stddev, stdvar, group, quantile, topk, bottomk, limitk —— 可选搭配 by()without() 修饰符。 暂不支持:count_values

示例

SELECT * FROM prometheusQueryRange(mytable, 'rate(http_requests{job="prometheus"}[10m])[1h:10m]', now() - INTERVAL 10 MINUTES, now(), INTERVAL 1 MINUTE)
最后修改于 2026年6月25日