创建流,指定delete_recalc,实际测试,删除子表数据,汇聚表数据没有自动删除

【TDengine 使用环境】
测试环境

【TDengine 版本】

3.4.1.13.community

【操作系统以及版本】

“Debian GNU/Linux 12 (bookworm)”

【部署方式】容器部署

【集群节点数】

3

【集群副本数】

3

【描述业务影响】

【问题复现路径/shan】

创建流语句:

CREATE STREAM IF NOT EXISTS db_pm_perf_td_uedm_agg.device_battery_upsbattery_stream_1
INTERVAL(5m) SLIDING(5m)
from db_pm_perf_td_uedm.r32_uedm_device_battery_upsbattery_1min
PARTITION BY TBNAME
STREAM_OPTIONS(DELETE_RECALC|DELETE_OUTPUT_TABLE|WATERMARK(5m)|EXPIRED_TIME(20m))
INTO db_pm_perf_td_uedm_agg.battery_upsbattery_5min_1
AS
SELECT
_TWSTART AS ts,
TBNAME AS device_id,
AVG(cell_failed_alarm) AS avg_alarm,
MAX(cell_failed_alarm) AS max_alarm,
MIN(cell_failed_alarm) AS min_alarm,
LAST(cell_failed_alarm) AS last_alarm
FROM %%tbname
WHERE begintime >= _twstart and begintime < _twend;

delete from device_battery_upsbattery_stream_1 ;删除子表数据

查看battery_upsbattery_5min_1汇聚表,仍然有数据,没有同步删除

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

除【资源配置】

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

from db_pm_perf_td_uedm.r32_uedm_device_battery_upsbattery_1min:这个是子表吗?
delete from device_battery_upsbattery_stream_1 ;删除子表数据: 这个是删除的什么表数据呢?与上面流中的 from 触发表是什么关系?

请将数据删除前后的 流结果表 显示出来看看。

我们也验证一下,看看是否能够复现这个问题。

验证了一下,对于 DELETE_RECALC 这个参数:

如果将触发表的数据全部删除了,那么对应的结果表是不会有什么变化的。因为流感知到数据被删除后,重新计算,但没有数据了,不会有输出结果,所以也就不会更新结果表。

只有还存在数据(被删除了部分),触发窗口重新计算后,且有结果输出,才会去更新结果表。

收到,删除部分数据,我试一下