历史数据流计算

【TDengine 使用环境】
生产环境 /测试

【TDengine 版本】

3.4.0.0

【操作系统以及版本】

centos7.9

【部署方式】容器/非容器部署

容器

【集群节点数】

1

【集群副本数】

1

【描述业务影响】

历史数据没有10分钟聚合数据

【问题复现路径/shan】做过哪些操作出现的问题

创建了流计算

【遇到的问题:问题现象及影响】

历史数据只计算了部分数据,没有完整的把历史数据都聚合出来

【资源配置】

16核64g

【报错完整截图】(不要大段的粘贴报错代码,论坛直接看报错代码不直观)

秒级数据有:

聚合数据只有6条

流计算语句:

create stream e2000.M801PT10M INTERVAL(10m) SLIDING(10m)
FROM e2000.M801 PARTITION BY stationCode, deviceCode
STREAM_OPTIONS(MAX_DELAY(5m) | FILL_HISTORY_FIRST | IGNORE_NODATA_TRIGGER)
into e2000m.M801PT10M OUTPUT_SUBTABLE(CAST(deviceCode AS BINARY(64)))
as
select _twstart as _ts,count(*) as cs
,AVG(QZ001) as QZ001_Avg,LAST(QZ001) as QZ001_Last,MAX(QZ001) as QZ001_Max,min(QZ001) as QZ001_Min,STDDEV(QZ001) as QZ001_Std
,AVG(QZ003) as QZ003_Avg,LAST(QZ003) as QZ003_Last,MAX(QZ003) as QZ003_Max,min(QZ003) as QZ003_Min,STDDEV(QZ003) as QZ003_Std
,FIRST(QZ002) as QZ002_First,LAST(QZ002) as QZ002_Last,last(QZ002)-first(QZ002) as QZ002_Dif
,FIRST(QZ004) as QZ004_First,LAST(QZ004) as QZ004_Last,last(QZ004)-first(QZ004) as QZ004_Dif
,FIRST(QZ005) as QZ005_First,LAST(QZ005) as QZ005_Last,last(QZ005)-first(QZ005) as QZ005_Dif
,FIRST(QZ006) as QZ006_First,LAST(QZ006) as QZ006_Last,last(QZ006)-first(QZ006) as QZ006_Dif
from e2000.M801 where _ts >= _twstart and _ts < _twend and deviceCode=%%2

另外能只算某个时间段内的历史数据吗?比如

create stream e2000.M801PT10M-test INTERVAL(10m) SLIDING(10m)
FROM e2000.M801 PARTITION BY stationCode, deviceCode
STREAM_OPTIONS(MAX_DELAY(5m) | FILL_HISTORY_FIRST(2025-06-17))
into e2000m.M801PT10M OUTPUT_SUBTABLE(CAST(deviceCode AS BINARY(64)))
as
select _twstart as _ts,count(*) as cs
,AVG(QZ001) as QZ001_Avg,LAST(QZ001) as QZ001_Last,MAX(QZ001) as QZ001_Max,min(QZ001) as QZ001_Min,STDDEV(QZ001) as QZ001_Std
,AVG(QZ003) as QZ003_Avg,LAST(QZ003) as QZ003_Last,MAX(QZ003)

因为你没提供 M801 的信息,不了解是一个超级表,还是一个子表。
如果是超级表,那这个 stream 是有问题的。相当于在每一个 paritition 里,都对 M801 这个表计算(select from 的对象是 M801)。
如果是子表,则应该打开 stDebugFlag 143 ,查看运行日志观看计算过程。

对于只计算某个时间段内的历史数据,可以手动进行,请参考文档: