流计算无结果输出

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

【TDengine 版本】

3.3.7.5

【操作系统以及版本】

centos7

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

docker容器部署

【集群节点数】

1

【集群副本数】

1

【描述业务影响】

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

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

10.27日新增了一个流计算,sql如下:

create stream sm2 interval(5m) sliding(5m) from `ori_data`.`ori_eq_realtime_data` partition by psid,eqtype,eqid,datapoint,tbname stream_options(max_delay(30s)|watermark(3s)) into `lnzh_data_cloud`.`eq_realtime_data` as select _twstart as ts, first(doublevalue) as doublevalue, first(strvalue) as strvalue, avg(doublevalue) as avgvalue, max(doublevalue) as maxvalue, min(doublevalue) as minvalue from %%tbname where ts >= _twstart and ts <= _twend;

今天查看数据发现,`lnzh_data_cloud`.eq_realtime_data表中的数据停留在了10.30日,

查看发现流计算依旧处于运行中,

手动将流计算停止后,再次启动,数据正常存入

【资源配置】

【报错完整截图】

我也遇到了这样的问题 流计算的开始时间延迟非常高

3.3.8 版本优化了流计算的性能问题,建议升级。

3.3.8 版本目前使用稳定不?

我用的最新版本3.3.8.1 数据量也不多

能不能具体解释一下你遇到的延迟问题?这个图表示什么含义?

我的问题好像不是计算延迟,像是计算停止了一样,手动停止流,再启动流,数据才正常被计算

我的每一天计算一次上一天温度贴的平均温度最高温度最低温度 如果是基于0时区的话应该在北京时间8点就开始计算但是我的语法如下

create stream if not exists lute_iot_device.t31_daily_stats_stream_min_max_avg interval(1d) sliding (1d) from lute_iot_device.product_property_3yhuya partition by tbname stream_options (watermark (2m) | fill_history (1)) into lute_iot_device.t31_daily_stats output_subtable (concat(‘t31_daily_’, lower(tbname))) ( ts, uid composite key, calculate_time, window_end, avg_temperature, max_temperature, min_temperature ) tags ( device_name varchar(64) as replace (tbname, ‘device_property_’, ‘’) ) as select _twstart as ts, uid as uid, cast(_tlocaltime / 1000000 as timestamp) as calculate_time, _twend as window_end, round(avg(temperature), 2) as avg_temperature, max( case when identifier = ‘high_temperature_alarm’ then temperature else null end ) as max_temperature, min( case when identifier = ‘low_temperature_alarm’ then temperature else null end ) as min_temperature from %%tbname where ts >= _twstart and ts <= _twend partition by device_name, uid;

表结构如下:

上面那个截图calculate_time的时间延迟非常高

这个延迟取决于触发表的数据写入频率,如果写入频率低比如每个小时写入一条数据,那么有可能直到最后一条数据写入完成才能够满足触发条件,如果需要每天定时计算而跟写入频率无关,可以采用period触发方式。

如果再出现这种情况,可以在taos shell 中执行alter dnode 1 ‘stdebugflag 135’,然后过10分钟后保存备份一下taosd日志,我们可以分析一下日志

我还是需要滑动窗口 可以指定

MAX_DELAY(delay_time):这个参数来进行触发吗 假如第一天有数据 后续一直没有数据 我还是希望可以触发上一天的窗口

可以,作用是类似的,也是定时计算