在PromQL中,我想写
If metric_a>=bool 3:
return metric_b
else:
return 1
我想写成
(metric_b and metric_a>=3) or metric_a<bool 3
但是我发现当我切换度量顺序时,例如A或B,B或A,查询结果会改变,也不确定我所拥有的是否意味着我的if-else 为什么或/与运算符会给出不一致的结果?另外,在这里呈现 if-else 语句的最佳方式是什么?
我检查了您提出的解决方案:
(metric_b and metric_a>=3) or metric_a<bool 3
它的工作方式与预期一致,当 metric_a >= 3 时返回 metric_b 的值,否则返回 1。
需要注意的是,“VECTOR1 和 VECTOR2”并不一定等于“VECTOR2 和 VECTOR1”。看一下 Prometheus 相关文档:
向量 1 和向量 2 产生一个由以下元素组成的向量 矢量 1 中的矢量 2 中存在完全匹配的元素 标签集。其他元素被删除。
结果始终来自“and”子句的第一个向量。
例如以下查询:
给出与以下结果不同的结果: