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