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/queryStart

String

当选择从TSDB查询数据时,查询区间的起始时间/结束时间

offset

String

当选择模拟生成数据时,pipeline启动后,最新生成虚点数据的计数量

curQueryBatch

String

当选择模拟生成数据时,pipeline启动后,实际触发查询的批次计数

triggerPoint

Boolean

生成的数据是否为触发点

generatorKey

String

当选择生成触发点数据时,Generate Type对应的具体Value

输出示例

按资产树ID + 查询Redis

../../../_images/record_generator_result_11.png

按设备标签 + 查询TSDB

../../../_images/record_generator_result_21.png

模拟生成数据

../../../_images/record_generator_result1.png

模拟生成触发点

../../../_images/record_generator_result_31.png