如何自定义划分预警时间粒度

观小智发表于:2020年08月26日 17:17:54更新于:2020年08月26日 18:48:15

产品背景:

预警本身是对数据进行校验,如果符合设置的预警阈值则推送消息给对应的用户。预警不可缺少的维度是时间范围,设置合适的预警监测范围是不可或缺的步骤。目前产品可以对时间范围做选择,最小的粒度为一天(如下图)。

image.png

实际场景:

在实际场景中,预警可能会跟随数据集触发多次,如果时间粒度没有划分好,会出现重复预警同一个异常点。那应该如何做到对数据按照更细的粒度划分?假设我们数据集设置的频率是一天四次均匀分布,也就是6小时预警一次,那么每次预警触发校验应该是取最近的时间的六小时范围的数据来做校验。

实现方法:

1,首先在数据集上新增一个字段来判断是否是属于最新6小时内的数据,首先取到所有数据里最近的时间为准(max([register_time])over(partition by null)),转换为时间戳格式(unix_timestamp函数),然后来判断,如果是属于六小时内的数据返回1否则为0。

注:直连数据集情况下,函数会有不同写法,请使用对应数据库函数。

image.png

2,设置预警,把该新建字段作为条件之一,如图:

image.png

这样就可以实现只取最新数据6小时内的数据来做校验。

注:这里示例为数据集预警,如果是卡片预警,必须要把该新建字段拖入到卡片中使用才能作为条件来配置。


    您需要登录后才可以回复