You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于另一指标的最大值聚合PromQL指标?

基于关联指标最大值的跨指标聚合方案

需求说明

核心目标是:针对每个时间点,先定位Metric2最大值对应的实例,再提取该实例在同一时间点的Metric1数值,以此完成聚合。

给定的原始数据:

Metric 1

0:000:010:02
Instance 1111
Instance 2222
Instance 3333

Metric 2

0:000:010:02
Instance 111223
Instance 211414
Instance 3333

逐时间点映射计算

按时间节点依次匹配取值:

  • 0:00:Metric2最大值为3,对应Instance3,取Metric1中该实例的数值3
  • 0:01:Metric2最大值为14,对应Instance2,取Metric1中该实例的数值2
  • 0:02:Metric2最大值为23,对应Instance1,取Metric1中该实例的数值1

最终聚合结果为 (3, 2, 1)

通用实现逻辑(伪代码)

如果要在数据工具或监控系统中落地这类聚合,核心步骤如下:

  1. 按时间点分组,对每组Metric2数据求最大值并记录对应实例ID
  2. 将实例ID与同时间点的Metric1数据关联,提取对应数值
  3. 按时间顺序整理得到最终序列

伪代码示例:

# 模拟数据存储结构:key为时间点,value为{实例名: 指标值}
metric1 = {
    "0:00": {"Instance1":1, "Instance2":2, "Instance3":3},
    "0:01": {"Instance1":1, "Instance2":2, "Instance3":3},
    "0:02": {"Instance1":1, "Instance2":2, "Instance3":3}
}

metric2 = {
    "0:00": {"Instance1":1, "Instance2":1, "Instance3":3},
    "0:01": {"Instance1":12, "Instance2":14, "Instance3":3},
    "0:02": {"Instance1":23, "Instance2":14, "Instance3":3}
}

final_result = []
# 按时间顺序遍历处理
for time_point in sorted(metric1.keys()):
    # 找到当前时间点Metric2最大值对应的实例
    target_instance = max(metric2[time_point], key=metric2[time_point].get)
    # 提取对应实例的Metric1数值
    final_result.append(metric1[time_point][target_instance])

print(final_result)  # 输出: [3, 2, 1]

内容的提问来源于stack exchange,提问作者Chi Shin Hsu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 21:22:07