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

如何编写PromQL左连接查询以保留左侧指标向量全部数据?

解决PromQL关联向量时不丢失指标数据的问题

你的问题出在使用*运算符做关联时,本质是内连接——只有两边都存在匹配的consumergroup时,结果才会保留。要保留指标向量的所有数据,需要用左连接逻辑,同时确保右边向量能覆盖左边所有的consumergroup。

最终查询方案

方案1:保留缺失team标签的条目

如果接受缺失team标签的结果(仅对有匹配的条目添加team),可以用以下查询:

(sum(kafka_consumergroup_lag[1d]) by (consumergroup) >= 100)
* on(consumergroup) group_left(team) 
(
  catalog_entities_info
  or on(consumergroup)
  (sum(kafka_consumergroup_lag[1d]) by (consumergroup) >= 100) * vector(1)
)

方案2:给缺失的team标签设默认值

如果希望所有条目都有team标签,缺失时用占位符(比如unknown),可以在上面的基础上加上label_replace:

label_replace(
  (sum(kafka_consumergroup_lag[1d]) by (consumergroup) >= 100)
  * on(consumergroup) group_left(team) 
  (
    catalog_entities_info
    or on(consumergroup)
    (sum(kafka_consumergroup_lag[1d]) by (consumergroup) >= 100) * vector(1)
  ),
  "team", "unknown", "team", "^$"
)

逻辑说明

  • or on(consumergroup) 部分:将catalog_entities_info和左边指标向量转换的默认向量(仅含consumergroup标签、值为1)合并,确保左边每个consumergroup在右边都有匹配项。
  • group_left(team):强制保留左边所有条目,并将右边的team标签附加到结果中;右边没有team标签的条目,结果中就不会带该标签(方案1),或者通过label_replace给空值的team标签设置默认值(方案2)。

内容的提问来源于stack exchange,提问作者aiven

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 01:12:11