Last Record Appender*

支持将同一设备、同一点的前一个符合条件的 record ,附加到当前 record 的 attr 字段中。该算子的处理逻辑如下:

  • 第一步,将 LastRecord 附加到 record 的 attr 字段中。如果某个设备的某个点第一次经过该算子,则还没有 LastRecord。如果该设备的该点已经经过该算子,则会将 LastRecord 附加到 attr 字段中。
  • 将当前 record 根据 Conditions 进行判断,如果符合 Conditions,则用当前 record 更新 LastRecord;如果不符合条件,则不更新。Conditions 如果为*,则任意的 record 都满足条件,更新 LastRecord
  • 因任何原因导致的失败重试,比如集群节点异常,不能保证计算结果幂等。
  • 与旧数据格式不兼容,即无法按 ModelId::PointId 进行数据过滤

配置详情

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

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

名称 是否必须 描述
Quality Filter No 根据数据质量过滤处理数据,只有符合质量条件的 record 才会进行此次处理

Input/Output

名称 是否必须 描述
Input Measurement Yes 数据输入点。同一行的输入点和输出点之间的 MeasurementId 必须不同。
Conditions Yes 输入处理Record的条件。写法为 * 或者 StreamSets 的 EL表达式 (EL 表达式应为条件语句,结果为 Boolean 类型)
Output Measurement Yes 数据输出点。同一行的输入点和输出点之间的 MeasurementId 必须不同。

CacheConfig

名称 是否必须 描述
Cache Type Yes

选择缓存数据的类型,可选 Redis 存储或 Local 存储。

  • Redis:优点是任务暂停、重启、或重试后,缓存数据不会丢失;缺点是数据处理速度慢,对网络比较敏感。建议网络延迟小于 1ms,否则会影响处理性能。
  • Local:优点是数据处理速度快;缺点是任务暂停、重启、或重试时,缓存数据会丢失。

输出结果

经过该算子的 record ,会根据数据属性和设置的条件,确定是否会将 LastRecord 附加到 record 的 attr 字段中。

输出示例

没有 LastRecord

../../../_images/last_record_result_111.png

有 LastRecord

../../../_images/last_record_result_211.png