跳到主要内容


组件名称实时数据采样组件
工具集实时数据交互
组件作者雪浪云 - 杭波
文档版本3.0
功能该组件用于降低输入实时数据的采样率,并且有不同的采样方式。
镜像名称suanpan-rtdata-filter:0.6
开发语言C

组件原理

组件提供3种不同的采样模式,旨在降低输入数据的采样率。也就是说部分数据会被丢弃,这样可以满足后续组件的使用需求,因为部分组件运行的时间为分钟级或者小时级,若一秒钟发送一个数据过去,数据会大量堆积在消息队列里面,所以这里将其采样,来降低数据源的采样率。

模式1:每m个提取前n个模式

sscy1.png 组件每次的CSV输出只有1行(不含表头)。举个例子,按照m=10,n=3的配置,若一次性输入一个20行的csv文件(不含表头),这里会提取6次1行的数据发出。如果一直输入一个1行的csv文件(不含表头),那么会以每10次csv文件输出3次1行CSV的模式工作。如下表的样例,对于m=10,n=3的情况,一次输入会输出6次1行的数据。

  • 输入样例 | name | value | timestamp | | --- | --- | --- | | para1 | 2500.321 | 1635919551314000000 | | para2 | 2501.321 | 1635919551314000000 | | para3 | 2502.321 | 1635919551314000000 | | para4 | 2503.321 | 1635919551314000000 | | para5 | 2504.321 | 1635919551314000000 | | para6 | 2505.321 | 1635919551314000000 | | para7 | 2506.321 | 1635919551314000000 | | para8 | 2507.321 | 1635919551314000000 | | para9 | 2508.321 | 1635919551314000000 | | para10 | 2509.321 | 1635919551314000000 | | para11 | 2510.321 | 1635919551314000000 | | para12 | 2511.321 | 1635919551314000000 | | para13 | 2512.321 | 1635919551314000000 | | para14 | 2513.321 | 1635919551314000000 | | para15 | 2514.321 | 1635919551314000000 | | para16 | 2515.321 | 1635919551314000000 | | para17 | 2516.321 | 1635919551314000000 | | para18 | 2517.321 | 1635919551314000000 | | para19 | 2518.321 | 1635919551314000000 | | para20 | 2519.321 | 1635919551314000000 |
  • 输出样例

这里输出了6次数据。

namevaluetimestamp
para12500.3211635919551314000000
namevaluetimestamp
para22501.3211635919551314000000
namevaluetimestamp
para32502.3211635919551314000000
namevaluetimestamp
para112510.3211635919551314000000
namevaluetimestamp
para122511.3211635919551314000000
namevaluetimestamp
para132512.3211635919551314000000

模式2:每n毫秒发出一个数据的模式。

sscy2.png

组件内置一个定时器,只有当定时器到期的时候,csv数据才会被允许通过一行(只输出数据表的第一行,如果输入一个20行的数据(不含表头),后面的19行会被丢弃)。输出数据样例如下:

namevaluetimestamp
para112510.3211635919551314000000

模式3:变量组

sscy3.png

在模板运行起来之后,就有很多变量数据输入此组件并且被解析出来,这里点击刷新就可以按行解析出多个输入的变量名。这里将变量名称输入变量选择(一个一行),就可以选择缓存哪些变量。当达到缓存设定的间隔,比如2000ms,就会把这些缓存的变量发送出去。

输出数据样例如下(这里选择了2个变量):

namevaluetimestamp
para112510.3211635919551314000000
para122511.3211635919551314000000

输入桩

输入端子1

组件有1个输入

  • 端口名称:输入数据
  • 输入类型:CSV文件
  • 功能描述:输入所需采样的CSV文件
  • 示例:如下所示: | name | value | timestamp | | --- | --- | --- | | Test1 | 123 | 2021-01-22 12:12:33 | | Test2 | 456 | 2021-01-22 12:12:34 | | Test3 | 789 | 2021-01-22 12:12:35 |

对于组件原理中的模式1和模式2,输入的CSV表头包含哪几列并没有限制,对于模式3,必须包含name,value和timestamp三列。

输出桩

组件有1个输出

输出端子1

  • 端口名称:输出数据
  • 输出类型:CSV文件
  • 功能描述:  输出采样得到的CSV文件
  • 示例:如下所示: | name | value | timestamp | | --- | --- | --- | | Test1 | 123 | 2021-01-22 12:12:33 | | Test2 | 456 | 2021-01-22 12:12:34 | | Test3 | 789 | 2021-01-22 12:12:35 |

数据接收方式

异步模式同步模式都支持

参数配置

右面板无参数设置

执行调优

建议不进行特别配置,按照平台的默认分配运行。

使用方法

未部署状态下的操作

后面板连接

实时数据采样上游接入CSV上传。CSV上传由定时触发发起,这里默认是5秒的定时触发间隔。当用户上传了CSV之后,CSV文件以5s的间隔输入到实时数据采样组件。

Snipaste_2022-01-19_14-54-12.png 实时采样组件采样的结果被数据转换(Csv2Json)转为JSON,发送到前面板显示结果。同时定时触发的输出也会覆盖Csv2Json的输出,防止前面板上的数据一直没发生变化。

部署后,CSV上传组件的示例文件如下,其中id列是算盘CSV默认需要加入的一列。Snipaste_2022-01-19_14-55-34.png

部署状态下的操作

在弹出的设置界面上,包含了数据统计和过滤模式两大模块。

数据统计实时显示了当前通过此组件的数据包数量(csv文件每一行算一个数量),已过滤代表已经被过滤器过滤的数据包数量。

过滤模式功能可以让用户设置3种不同的模式,点击提交之后会立刻生效,但会把数据统计给清零。

sscy6.png