语法
参数
db_name- TimeSeries 表所在的数据库名称。time_series_table- TimeSeries 表的名称。promql_query- 使用 PromQL 语法 编写的查询。evaluation_time- 求值时间戳,精度为毫秒或更高。要在当前时间对查询进行求值,请使用now()作为evaluation_time。
返回值
该函数会根据传给参数promql_query 的查询结果类型,返回不同的列:
无论 TimeSeries 表中的值是什么类型,返回的值始终为
Float64。时间戳的标度 S 与表中时间戳的标度相同,
但不小于 3 (毫秒) 。如果 evaluation_time 的类型是带时区的 DateTime 或 DateTime64,则时区 TZ 为其时区;
否则,时区 TZ 为表中时间戳的时区。
如果 TimeSeries 表的 version 为 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() 修饰符。