如何精简操作过程

现场通过mqtt上传的数据格式是
{“447300392653423880”:16.56,“447300392632452360”:0,“447300392871527688”:-300.69,“447300392850556168”:1.33,“447300393089631496”:0.45,…},现在要对其中部分数据做小时平均值计算,我现在的操作过程如下:
1, 创建stream源,通过mqtt接收原始数据
2, 创建rule,通过模板将第1步的stream源数据格式转换为
[
{
“id”: “447300392653423880”,
“v”: 16.56
},
{
“id”: “447300392632452360”,
“v”: 0
},
{
“id”: “447300392871527688”,
“v”: -300.69
},
{
“id”: “447300392850556168”,
“v”: 1.33
},
{
“id”: “447300393089631496”,
“v”: 0.45
}

]
并通过mqtt发送出去
3, 创建stream源,接收步骤2发送的mqtt
4, 创建scantable源,数据来自MySQL
5, 创建rule,将第3步和第4步的源进行inner join筛选出需要做平均值计算的数据,然后通过mqtt发出
6, 创建stream源,接收步骤5发送的mqtt
7, 创建rule,计算第6步stream源的平均值,并插入mysql

虽然这样也可以计算出平均值,但是感觉操作略显复杂,请问下针对我的需求有没有更简洁有效的操作方式,或者我做的7步操作怎么去做精简

5,6,7步应该可以合成一个规则

你说的这种方式我尝试过,但是把5、6、7合并后一直没有输出,也没有报错

以下是我分步执行所使用的语句
第5步,筛选需要计算平均值的变量
select StreamSouce_RealData.id as id,StreamSouce_RealData.v as v ,StreamSouce_RealData.t as t
from StreamSouce_RealData INNER JOIN LookupSource_Variable on StreamSouce_RealData.id =LookupSource_Variable.F_Id
where LookupSource_Variable.F_StatisticsType=‘279834827945936133’ and LookupSource_Variable.F_Factory=‘447228517042619653’

第6步的stream源名称:StreamSource_AvgFilter
第7步,计算平均值
select id,avg(v) as v ,window_start() as ts from StreamSource_AvgFilter group by TUMBLINGWINDOW(HH ,1),id
这种写法会有数据输出。

但把5、6、7合并后,就没有输出了,如下
select StreamSouce_RealData.id as id,avg(StreamSouce_RealData.v) as v ,window_start() as ts
from StreamSouce_RealData INNER JOIN LookupSource_Variable on StreamSouce_RealData.id =LookupSource_Variable.F_Id
where LookupSource_Variable.F_StatisticsType=‘279834827945936133’ and LookupSource_Variable.F_Factory=‘447228517042619653’
group by TUMBLINGWINDOW(HH,1),StreamSouce_RealData.id

合并规则的指标是什么样的?可以根据 如何调试规则 | eKuiper 文档 调试一下。

问题已定位,是 SQL 优化器的问题,计划在下个版本 1.11.5 解决。