实时分析
对于物联网、工业场景,实时分析 (Real Time Analysis) 极为重要。IDMP 容许您对每个元素进行实时分析,既可以对一个具体的设备的运行状态进行实时分析,也可以对整个集团的运营指标进行实时分析,以满足不同层次的分析需求。IDMP 的实时分析是完全建筑在 TDengine TSDB 的流式计算基础上的,但通过图形界面进行配置,以降低使用门槛。
实时分析是在 TDengine TSDB 上背景运行的,分析可以产生新的数据,写入到 TSDB,也可以产生事件,IDMP 将通知相关的负责人。创建的分析可以停止,也可以重启。分析本质上就是根据业务的需求,执行一条 SQL 查询语句,查询结果就是分析结果。对于实时分析而言,不是依赖手动执行 SQL 查询,而是依赖定义好的触发方式,自动执行 SQL 查询。TDengine 将触发方式与分析(计算)本身完全解耦分离,让分析具有足够的灵活性。下面对实时分析的创建做较为详细的介绍。
分析的基本配置
创建分析时,您可以配置分析的名字、类别、描述信息,还可以配置是否立即启动,是否对乱序数据进行重新计算。
触发方式
TDengine 提供多种实时分析的触发方式 (Trigger),除周期窗口之外,所有的触发都依赖于元素的属性。这些属性的数据引用必须是 TDengine Metric 类型。也就是说如果属性不是 TDengine Metric 类型,它无法触发周期窗口之外的任何实时分析。TDengine 支持如下触发方式:
- 滑动窗口 (Sliding Window):基于采集数据的事件时间,每隔固定的时长进行分析,您可以设置滑动时长。
- 周期窗口 (Periodic Time Window):基于 TDengine 的系统时间 (Wall Clock),每隔固定的周期进行分析,您可以设置周期的时长。但您还可以设置偏移的时间量,就是周期结束时,不马上启动分析,而是过设定的偏移量后启动分析。比如要生成日报,周期是一天,但时间偏移是 2 个小时,那么分析就会在 2:00am 启动。周期窗口与其他系统常见的定时分析任务没有区别。
- 数据输入 (Data Input):当元素的属性新的数据写入时,触发分析计算。您可以指定具体哪个属性有新的数据写入时触发。
- 状态窗口 (State Window):当元素的某个属性的值发生改变时触发分析计算。这个属性的数据类型必须是整型。
- 事件窗口 (Event Window):您需要指定事件开始的触发条件以及事件结束的触发条件。触发条件就是一元素属性的计算表达式。计算表达式结果大于 0,表示条件满足,如果小于 0,表示不满足。对于事件开始的触发条件,为防止数据异常抖动,您还可以设置条件满足的持续时长。如果条件满足,但条件满足的持续时长短于指定的持续时长,事件不会触发。
- 计数窗口 (Count Window):一个元素的属性在数据库里新增的记录条数达到指定的数字时,触发分析计算。您可以指定具体的属性名,否则这个计数包含所有属性新增的记录条数。
- 会话窗口 (Session Window):当一个元素所有属性没有新增的数据持续一段时间后,触发分析计算。
生成事件
当分析计算触发后,您可以设置是否生成事件 (Event)。如果设置生成事件,您可以设置是否需要确认,设置事件的严重程度。关于事件本身的更多介绍,将在事件管理里进行介绍。
具体的分析计算
当触发条件满足后,TDengine 将会启动分析计算 (Calculation)。IDMP 让您指定被计算分析的对象,是否进行时间窗口的聚合,输出结果的时间戳,输出结果的表达式和存储的位置。
计算分析的对象 (Calculation on)
分析计算可以是针对元素本身的属性进行的计算,也可以是针对该元素的子元素进行的聚合计算。当选择子元素聚合时,需要选择子元素模板,还可以设置子元素过滤条件,这个设计主要是便于做子元素采集量的统计分析。
时间窗口聚合 (Rollup on Window)
分析计算可以对一个时间窗口的数据进行聚合。这个窗口的开始、结束时间需要指定。具体进行的聚合计算在结果输出的表达式里指定。
对于周期窗口、事件窗口、状态窗口、会话窗口、计数窗口,他们自身已经定义了窗口,开始时间是 Window Start,结束时间是 Window End。在这个窗口基础上,您还可以指定时间偏移量,便于您个性化自己的窗口设置。
对于滑动窗口,您可以指定 interval。如果窗口结束、启动分析的时间是 T, 那么窗口就是从 T - interval 到 T。
输出结果的时间戳 (Output Timestamp)
对于分析计算结果,需要生成一个时间戳。时间戳怎么生成,可以在这里指定。
对于数据输入、滑动窗口触发类型,计算分析的触发时间就是结果的时间戳,但您还可以指定一个偏移量。
对于其他触发类型,都是窗口触发的,窗口的开始或结束时间可以指定为时间戳,但您还可以指定一个偏移量。
输出属性 (Output Attributes)
计算分析的结果需要保存到元素的属性里,如果创建了事件,计算结果还可以保存到事件的属性里。
点击+
,您就可以创建一条新的分析计算。对同一个触发,您可以创建多个分析计算。
点击表达式,您就可以构建您想要做的计算。点击元素属性,您可以决定把结果保存到哪个属性,也可以立即创建新的属性来保存。如果生成事件,您可以点击事件属性,将结果保存到事件属性。
其他
当计算是针对子元素进行时,计算是将符合条件的子元素进行聚合计算。这时有如下两种场景:
- 没有选择时间窗口聚合,这个时候是取触发时刻,符合条件的子元素的断面数据的聚合。比如获得某一时刻所有风机的最大发电功率,平均发电功率等。
- 选择了时间窗口聚合,这个时候是符合条件的子元素在同一时间窗口的数据聚合。比如获得过去十分钟所有风机的平均发电功率。 实时分析本身是在 TDengine TSDB 流式计算引擎里进行的,因此它并不消耗 IDMP 的计算资源,但您通过 IDMP 对它进行配置和管理。