prometheus - PromQL if/else like 表达式
问题描述
我正在尝试使用高斯的复活节算法在 PromQL 中计算复活节星期日(我需要在公共假期忽略一些警报规则)。
我可以计算日期,但是我遇到了月份的问题,因为我需要一个 if/else 表达式。我的记录规则 easter_sunday_in_april 如果东部是四月返回 1,如果是三月返回 0。
(如何)我可以在 PromQL 中表达以下内容吗?
if(easter_sunday_in_april > 0)
return 4
else
return 3
为了完整起见,我在这里附上我的录制规则:
- record: a
expr: year(europe_time) % 4
- record: b
expr: year(europe_time) % 7
- record: c
expr: year(europe_time) % 19
- record: d
expr: (19*c + 24) % 30
- record: e
expr: (2*a + 4*b + 6*d + 5) % 7
- record: f
expr: floor((c + 11*d + 22*e)/451)
- record: easter_sunday_day_of_month_temp
expr: 22 + d +e - (7*f)
- record: easter_sunday_day_of_month_in_april
expr: easter_sunday_day_of_month_temp > bool 31
- record: easter_sunday_day_of_month
expr: easter_sunday_day_of_month_temp % 31
解决方案
想我找到了一种方法:
((easter_sunday_day_of_month_temp > bool 31 ) +3)
Easter_sunday_day_of_month_temp 返回复活节星期天的“原始”日期(1-31:三月的一天,> 四月的 31 天,我们必须计算模 31 才能得到四月的一天)。
所以如果easter_sunday_day_of_month_temp > bool 31
为真,它返回 1,我加 3 得到 4(4 月),否则,我返回 3 的 3 月。
编辑:请证明我错了或告诉我一个更好的解决方案:-) 否则我会在两天内接受我的。
推荐阅读
- c# - 为什么在给定原点坐标和目标坐标时,Unity 会以错误的方向绘制光线?
- r - 如何根据分隔符之前的值对R中的向量元素进行排序
- excel - 如何在打开的共享点上打开启用宏的电子表格时识别共享点的登录用户
- android - 无法解决依赖 Android Studio
- alignment - 如何让编辑器通过选定文本中的单个字符垂直对齐?
- sharepoint - 迁移 sharepoint web 应用程序 sharepoint 2013 到 sharepoint 在线
- yii - 在 Yii2 进入管理页面之前如何获取登录页面?
- angular - 剑道输入文本框未将只读属性动态设置为真假
- c# - 在调试期间,我注意到在加载资产或在 for 循环中实例化 gameObject 时我的代码中断。代码没有错误
- unix - 后台 Julia TCP 服务器