Record Generator

根据配置的条件产生新的数据(Record),具体功能如下:

  • 按固定的查询频率、计算频率、或按触发点,生成所需要的 Record。
  • 根据各种过滤条件(资产 ID、模型 ID、资产标签、资产树 ID、资产树标签),确定要计算的设备(Asset ID)及其测点(Point ID)的数据集合,即一个Map<assetId,Set<pointId>>
  • 根据以上数据集合,生成 record 的触发条件包括:
    • 按固定的查询频率和时间间隔,从 Redis 查询测点数据
    • 按固定的查询频率和查询时间区间,从 TSDB 查询测点数据
    • 按固定的计算频率,模拟生成指定类型的数据
    • 按固定的计算频率,模拟生成触发点数据

配置详情

该算子的配置包括 GeneralBasicInput/Output,和 Record Generate 的详细信息,各字段的配置如下:

General

名称 是否必须 描述
Name Yes 算子名称
Description No 算子描述
Stage Library Yes 算子所属的库
Required Fields No 数据必须包含的字段,如果未包含指定字段,则 record 将被过滤掉
Preconditions No 数据必须满足的前提条件,如果不满足指定条件,则 record 将被过滤掉。例如:${record:value('/value') > 0}。有关 EL 语句的使用方法,参考 Expression Language
On Record Error Yes

对错误数据的处理方式,可选:

  • Discard:直接丢弃
  • Send to Error:发送至错误中心
  • Stop Pipeline:停止流任务运行

Basic

名称 是否必须 描述
Trigger Type Yes 选择触发生成数据的方式,可选 By Fixed Frequency 或 By Input Point
Trigger Frequency Yes 当选择 By Fixed Frequency 触发方式时,选择触发产生新 record 的频率,将按频率触发生成数据
Trigger Point Yes 当选择 By Input Point 触发方式时,输入触发点(格式为 pointId ,非 modelId::pointId ),按前置 Record Generator 生成的触发点触发生成数据

Input/Output

名称 是否必须 描述
Generate Type Yes

选择产生数据集合的方式,可选:

  • By AssetIDs:通过资产 ID 匹配测点
  • By ModelIDs:通过模型 ID 匹配测点
  • By Asset Tags:通过资产标签匹配测点
  • By Asset Tree:通过资产树 ID 或资产树标签匹配测点
Output Asset No 当选择 By AssetIDs 条件时,输入asset ID;对应的 Output Point 中输入数据输出点名称,格式为:{测点标识}
Asset Tag No 当选择 By Asset Tags 条件时,输入资产标签键值对;对应的 Output Point 中输入数据输出点名称,格式为:{模型标识}::{测点标识} 或 {测点标识}
Tree Selector No 当选择 By Asset Tree 条件时,选择根据资产树 ID 或资产树标签搜索资产树
Tree ID No 输入资产树 ID;对应的 Output Point 中输入数据输出点名称,格式为:{模型标识}::{测点标识} 或 {测点标识}
Tree Tag No 输入资产树标签键值对;对应的 Output Point 中输入数据输出点名称,格式为:{模型标识}::{测点标识} 或 {测点标识}
Output Point Yes 当选择 By ModelIDs 条件时,输入数据输出点名称,格式为:{模型标识}::{测点标识}

Record Generate

生成 record 的方式包括:从 Redis 查询测点数据、从 TSDB 查询测点数据、模拟生成指定类型的数据、按指定数据类型生成设备数据作为触发点。各种方式的具体配置项说明如下:

Query From Redis

名称 是否必须 描述
Use LastUpdate Interval Filter No 选择是否按一定的时间间隔从 Redis 获取测点最新数据
LastUpdate Interval(Minutes) No 当选择按一定的时间间隔获取数据时,输入时间间隔的值
NotExistHandle Yes

当未获取到测点数据时,选择处理方式,可选:

  • Ignore this Point:忽略该测点值
  • Mock New Point:对于模型下所有设备,当指定测点在 Redis 中不存在最新值时,生成模拟数据

Query From TSDB

名称 是否必须 描述
Start Time Yes 输入查询测点数据的起始时间,格式为 2019-08-26T00:00:00+08:00
Time Interval Yes 输入查询测点数据的时间间隔
End Time Yes 输入查询测点数据的截止时间,格式为 2019-08-26T00:00:00+08:00

Generate New Point

名称 是否必须 描述
Date Format Yes

选择生成数据的日期格式,可选 SimpleDateFormat 或 TimeFunctions

  • SimpleDateFormat:按原有日期格式,生成时间戳
  • TimeFunctions:通过 StreamSets 表达式生成时间戳
Start Time Yes 输入新测点数据的起始时间戳(格式为 2019-08-26T00:00:00+08:00),或按 StreamSets 表达式生成时间戳
Time Interval Yes 输入产生新测点数据的时间间隔
Value Generator Yes

选择如何生成测点数据以及测点数据的类型,可选:

  • Random Number(Double):随机生成测点数值
  • Fixed Incremental as Value:按固定增量生成测点数值;并在 Beginning Number 字段中输入起始值,在 Fixed Incremental 字段中输入增量值
  • Random Number in Range:在指定区间内,随机生成测点数值;并在 MinMax Range 字段中输入区间的范围,在 Decimal Scale 字段中指定测点数值的小数点位数
  • Current System Time:使用生成测点时的系统时间作为测点数值
  • Input String as Value:输入字符串作为测点数值;并在 Input 字段中输入字符串,在 Data Type 菜单中选择字符串的类型

Generate Trigger Point

名称 是否必须 描述
Date Format Yes

选择生成数据的日期格式,可选 SimpleDateFormat 或 TimeFunctions

  • SimpleDateFormat:按原有日期格式,生成时间戳
  • TimeFunctions:通过 StreamSets 表达式生成时间戳
Start Time Yes 输入新测点数据的起始时间戳(格式为 2019-08-26T00:00:00+08:00),或按 StreamSets 表达式生成时间戳
Time Interval Yes 输入产生新测点数据的时间间隔
Value Generator Yes

选择如何生成测点数据以及测点数据的类型,可选:

  • Random Number(Double):随机生成测点数值

  • Fixed Incremental as Value:按固定增量生成测点数值;并在 Beginning Number 字段中输入起始值,在 Fixed Incremental 字段中输入增量值

  • Random Number in Range:在指定区间内,随机生成测点数值;并在 MinMax Range 字段中输入区间的范围,在 Decimal Scale 字段中指定测点数值的小数点位数

  • Current System Time:使用生成测点时的系统时间作为测点数值

  • Input String as Value:输入字符串作为测点数值;并在 Input 字段中输入字符串,在 Data Type 菜单中选择字符串的类型


输出结果

该算子的输出结果为新的 records,record 中包括:

  • 通用字段(如 assetId,pointId,modelId,time,value 等)
  • Stage配置属性字段:/attr/recordGenerator下所有字段,如下表:
名称 数据类型 描述
assetCfg String Generate Type配置对应的值,产生数据集合的方式
generateBy String 生成 record 的方式
queryStart/queryEnd String 当选择从 TSDB 查询数据时,查询区间的起始时间/结束时间
offset Long 当选择模拟生成数据时,pipeline 启动后,最新生成虚点数据的计数量
curQueryBatch Long 当选择模拟生成数据时,pipeline 启动后,实际触发查询的批次计数
triggerPoint Boolean 生成的数据是否为触发点
generatorKey String 当选择生成触发点数据时,Generate Type 对应的具体 Value

输出示例

按资产树 ID + 查询 Redis

../../../_images/record_generator_result_13.png

按设备标签 + 查询 TSDB

../../../_images/record_generator_result_23.png

模拟生成数据

../../../_images/record_generator_result3.png

模拟生成触发点

../../../_images/record_generator_result_32.png