流计算失败

【TDengine 使用环境】
测试环境

【TDengine 版本】

3.3.8.8

【操作系统以及版本】

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

容器

【集群节点数】

【集群副本数】

【描述业务影响】

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

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

【资源配置】

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

电表超级表是:

create stable super_meter_data(ts timestamp,voltage float,currents float,energy float)tags(meter_id nchar(30))

根据meter_id(表号)创建子表

现在需要每10分钟统计一次生成:

create stable super_meter_stat(ts timestamp,window_start timestamp,window_end timestamp,ts_count int,max_energy float,min_energy float,used_energy float)tags(meter_id nchar(30));

ts_count:是周期内数据数,max_energy 最大度数,min_energy 最小度数, used_energy是窗口期内的能耗数

通过select选择是:

select

\_wstart **as** *ts*,

\_wstart **as** *window_start*,

\_wend **as** *window_end*,

**COUNT**(\*) **as** *ts_count*,

**first**(energy_total) **as** *start_energy*,

**last**(energy_total) **as** *end_energy*,

(**last**(energy_total) - **first**(energy_total)) **as** *used_energy*

from

jiayao_energy_2025.super_meter_data

where ts>‘2025-12-30 00:00:00’

interval(10m)

返回值是正常的。

我写的流计算是:

CREATE STREAM jiayao_energy_2025.sm1

TRIGGER WINDOW_CLOSE

WATERMARK 60s

INTO jiayao_energy_2025.test_meter_stat

AS

SELECT

\_wstart **as** ts,

\_wstart **as** window_start,

\_wend **as** window_end,

**COUNT**(\*) **as** ts_count,

**FIRST**(energy_total) **as** start_energy,

**LAST**(energy_total) **as** end_energy,

(**LAST**(energy_total) - **FIRST**(energy_total)) **as** used_energy,

meter_id

FROM jiayao_energy_2025.super_meter_data

PARTITION BY meter_id

INTERVAL(10m) SLIDING(10m);

结果是错误的,请大拿指教

能提供 jiayao_energy_2025.super_meter_data的示例数据吗,,我们复现下,谢谢。

字段很多,我select了几个关键字段信息,meter_id是tag中的一个

描述中的建流语句是旧版本的建流语法,从 v3.3.7.0 开始,我们推出了新版本的流计算,新的语法清参考官网文档:流式计算 | TDengine 文档 | 涛思数据

根据描述中的需求,我写了一个新版流计算的例子,以供参考:

CREATE STREAM jiayao_energy_2025.sm1
    INTERVAL(10m) SLIDING(10m)
FROM
    super_meter_data PARTITION BY tbname, meter_id
INTO
    super_meter_stat
    TAGS(meter_id nchar(30) as meter_id)
AS
SELECT
    _twstart AS ts,
    _twstart AS window_start,
    _twend AS window_end,
    COUNT(*) AS ts_count,
    FIRST(energy_total) AS start_energy,
    LAST(energy_total) AS end_energy,
    (LAST(energy_total) - FIRST(energy_total)) AS used_energy
FROM
    %%tbname
WHERE
    _c0 >= _twstart and _c0 < _twend;