我正在尝试执行复杂的promql查询。 基本上,我想将过去1小时的平均值与过去3天的同一小时(平均值)进行比较:
rate(processing_time_sum[1h]) / rate(processing_time_count[1h]) / (
rate(processing_time_sum[1h] offset 1d) / rate(processing_time_count[1h] offset 1d) +
rate(processing_time_sum[1h] offset 2d) / rate(processing_time_count[1h] offset 2d) +
rate(processing_time_sum[1h] offset 3d) / rate(processing_time_count[1h] offset 3d) +
)/3
我的问题是,在前几天(周六,周日和节假日)的一个(或多个)没有数据时,我在整个查询中都收到“找不到数据点”错误。 我想要么忽略丢失的日子,要么使用有数据点的最后一天。
答案 0 :(得分:0)
通常,在PromQL中执行类似a + b
的操作时,其中b
可能缺少a
的某些标签组合,您可以将其写为:
a + (b or a * 0)
或者,在您的情况下,因为您正在使用除法和多个b
指标(原样):
a / ((b1 or a) + (b2 or a) + (b3 or a)) * 3
但是缺少更多的b
指标,您的a
指标就越“正常”。 (例如,如果前3天中没有任何值,则结果为1
。)
或者,如果您只是想用数据点作为最后一天的话(同样,如果缺少所有a
,则退回到b
):
a / (b1 or b2 or b3 or a)