如何编写PromQL查询获取M1与M2指标的最大值时间序列?
PromQL实现每个时间点max(M1, M2)的查询
由于M1和M2的标签集不一致(M2多了L4标签),直接使用max()无法跨序列比较,需要先对齐标签再聚合:
核心查询语句
max by (L1, L2, L3) ( M1 or max by (L1, L2, L3) (M2) )
逻辑说明
- 标签对齐:通过
max by (L1, L2, L3)(M2)去除M2的L4标签,让它的标签维度和M1完全一致,确保两个序列能在相同的标签分组下匹配。 - 合并与取最大值:用
or合并M1和处理后的M2序列,再通过max by (L1, L2, L3)在每个时间点、每个标签分组内取两者的最大值,生成目标序列N。
注:如果同一组(L1,L2,L3)对应多个不同L4的M2数据,
max by (L1, L2, L3)(M2)会先取该分组下M2的最大值,再和M1比较;若每组(L1,L2,L3)仅对应唯一L4的M2数据,该操作仅去除多余标签,不改变M2的数值。
内容的提问来源于stack exchange,提问作者Amy_Josh
相关产品推荐
相关产品推荐

