timeSeriesQuantileToGrid
引入版本:v26.9.0 聚合函数,接收由时间戳和值组成的时间序列数据对,并在由起始时间戳、结束时间戳和步长定义的等间隔时间网格上计算 PromQLquantile_over_time 函数。对于网格上的每个点,会选取指定时间窗口内的样本来计算分位数。分位数采用 R-7 (包含边界) 方法计算,与 quantileExactInclusive 相同。但与 quantileExactInclusive 不同,NaN 样本不会被跳过:与 Prometheus 一致,这些样本会被保留,并排在所有实际值之前。因此,窗口 [1, NaN, 2] 的中位数为 1,而样本全为 NaN 的窗口结果为 NaN。
分位数级别作为最后一个参数,紧跟在样本之后:可以是适用于所有网格点的单个数值,也可以是一个数组,为每个网格点分别提供一个数值。该参数在每一行中都必须相同。与 Prometheus 一致,级别小于 0 时结果为 -Inf,大于 1 时结果为 +Inf;级别为 NaN 时,所有窗口内有样本的网格点结果均为 NaN。
此函数目前处于私有预览阶段,可通过设置
enable_time_series_aggregate_functions=true 启用。start_timestamp— 指定网格的起点。也可以是小数,或包含数字或日期时间文本的字符串。UInt32或DateTime或DateTime64或Float*或Decimal*或Stringend_timestamp— 指定网格的终点。也可以是小数,或包含数字或日期时间文本的字符串。UInt32或DateTime或DateTime64或Float*或Decimal*或Stringgrid_step— 指定网格的步长 (以秒为单位) 。也可以是小数,或包含数字或时长 (如 ’15s’ 或 ‘1m’) 的字符串。UInt32或Float*或Decimal*或Stringstaleness— 指定参与计算的样本的最大“陈旧时间” (以秒为单位) 。陈旧窗口为左开右闭区间。也可以是小数,或包含数字或时长 (如 ’15s’ 或 ‘1m’) 的字符串。UInt32或Float*或Decimal*或String
timestamp— 样本的时间戳。可以是单个值,也可以是数组。UInt32或DateTime或DateTime64或Array(UInt32)或Array(DateTime)或Array(DateTime64)value— 与时间戳对应的时间序列值。可以是单个值,也可以是数组。Float*或Array(Float*)samples— 时间序列样本,以 Tuple(timestamp, value)组成的数组形式传入,其中 Tuple 各元素的类型分别为上文所列的时间戳类型和值类型。可用于替代将时间戳和值作为两个独立参数传入的方式。Array(Tuple(T1, T2))phi— 分位数级别,通常取值范围为 [0, 1]:可以是适用于整个网格的单个数值,也可以是为每个网格点分别指定一个数值的数组。所有行中的取值必须相同。Float*或UInt8/16/32/64或Int8/16/32/64或Array(Float*)或Array(UInt8/16/32/64)或Array(Int8/16/32/64)
Array(Nullable(Float64))
示例