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

Grafana中基于PromQL实现Project_Name变量的条件查询

解决方案

一、正确的PromQL条件查询写法

你可以利用Grafana的模板条件表达式(三元运算符)实现需求,同时使用:raw修饰符避免变量被不必要转义,最终查询语句如下:

${Project_Name:raw} == "ALL" ? 
sum(avg_over_time(composer_googleapis_com:environment_active_schedulers{monitored_resource='cloud_composer_environment'}[$__interval])) : 
sum by (project_id)(avg_over_time(composer_googleapis_com:environment_active_schedulers{monitored_resource='cloud_composer_environment',project_id=~"${Project_Name:raw}"}[$__interval]))

关键说明:

  • ${Project_Name:raw}:使用:raw修饰符确保变量值被直接代入,避免Grafana自动添加引号或转义字符,防止语法错误。
  • 三元运算符? ::实现分支逻辑,当变量值为ALL时执行第一个查询,否则执行第二个按project_id分组的查询。

二、根据变量值控制查询结果的显示/隐藏

可以通过Grafana查询面板的「Hide」选项结合变量条件实现:

  1. 创建两个独立查询:

    • 查询1(ALL场景):写入sum(avg_over_time(composer_googleapis_com:environment_active_schedulers{monitored_resource='cloud_composer_environment'}[$__interval]))
    • 查询2(指定项目场景):写入sum by (project_id)(avg_over_time(composer_googleapis_com:environment_active_schedulers{monitored_resource='cloud_composer_environment',project_id="$Project_Name"}[$__interval]))
  2. 设置隐藏条件:

    • 对查询1,在「Hide」选项中选择「Conditional」,输入条件${Project_Name} != "ALL",当变量不为ALL时,该查询结果自动隐藏。
    • 对查询2,在「Hide」选项中选择「Conditional」,输入条件${Project_Name} == "ALL",当变量为ALL时,该查询结果自动隐藏。

这样就能根据Project_Name变量的取值,自动切换显示对应的查询结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:03:12