Skip to main content
使用 TimeSeries 表中的数据,在一段评估时间范围内对 prometheus 查询求值。

语法

参数

  • db_name - TimeSeries 表所在的数据库名称。
  • time_series_table - TimeSeries 表的名称。
  • promql_query - 按 PromQL 语法 编写的查询。
  • start_time - 评估范围的起始时间,精度为毫秒或更高。
  • end_time - 评估范围的结束时间,精度为毫秒或更高。
  • step - 用于将评估时间从 start_time 逐步推进到 end_time (含两端) 的步长。

返回值

该函数返回的列取决于传给参数 promql_query 的查询的结果类型: 无论 TimeSeries 表中值的类型是什么,返回的值始终为 Float64。时间戳的标度 S 与表中时间戳的标度一致, 但最小为 3 (毫秒) 。如果 start_time 和 end_time 的类型为 DateTime 或 DateTime64 且二者时区相同,则时区 TZ 取二者的时区, 否则取表中时间戳的时区。 如果 TimeSeries 表的版本为 2 或更早,则 samples 列的名称为 time_series。

支持的 PromQL 特性

选择器

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

函数

注意:histogram_quantile 在经典直方图桶 (由 le 标签标识) 上使用线性插值。不支持原生直方图。phi (分位数级别) 参数必须是常量标量。像 histogram_quantile(time() / 1000, ...) 这样在每个步长上都会变化的表达式,会因 NOT_IMPLEMENTED 异常而被拒绝。 注意:min_of(a, b) 和 max_of(a, b) 分别返回两个标量值中较小或较大的一个。两个参数都必须是标量。 注意:min_of、max_of、ts_of_min_over_time、ts_of_max_over_time、ts_of_last_over_time、first_over_time、ts_of_first_over_time 和 mad_over_time 是 Prometheus 中的 Experimental 函数 (在该系统中通过 --enable-feature=promql-experimental-functions 启用);ClickHouse 无需该标志即可对其进行计算。

运算符

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

聚合运算符

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

示例