【TDengine 使用环境】测试环境
【TDengine 版本】3.4.1
【操作系统以及版本】centos-7
【部署方式】容器
【集群节点数】1
【集群副本数】1
【描述业务影响】创建的流, 在插入数据时会重复插入多条数据.
【问题复现路径/shan】
【遇到的问题:问题现象及影响】
s1_5w 是超级表, 我希望实现的流创建子表上, 每次写入数据的时候,将数据写入一张普通表alarm_s1_5w_sub_0_v1。现在在我创建流, 插入数据流在执行的时候都会有错误发生. 最终的结果时结果表中的数据会重复的插入.
在创建流的时候报错:
05/06 17:27:58.912138 00000126 C MND WARN stream:1.test.notify_stream_s1_5w_0_v2 not exist, ignore not exist is set, drop stream exec done with success
05/06 17:27:58.913538 00000419 C QRY ERROR vgId:14, get table alarm_s1_5w_sub_0_v2 meta with 0 failed cause of Table does not exist
05/06 17:27:58.913545 00000419 C QRY WARN vnodeGetBatchMeta failed, msgType:523
执行流的时候:
05/06 17:28:27.418397 00000479 C STM ERROR TYPE: Runner, NODE:1, STREAM:5d5d8b63fa8b8412, TASK:f8,SID:1778059679695658873, SESSION:1 submitRes err:Insert table info not found, code:80007004 lino:2389
05/06 17:28:27.418399 00000477 C STM ERROR TYPE: Runner, NODE:1, STREAM:aae970f4b5c5970d, TASK:198,SID:1778059680201893418, SESSION:1 submitRes err:Insert table info not found, code:80007004 lino:2389
05/06 17:28:27.418401 00000479 C STM ERROR TYPE: Runner, NODE:1, STREAM:5d5d8b63fa8b8412, TASK:f8,SID:1778059679695658873, SESSION:1 [runner calc]faild gid:0, lino:1035 code:Insert table info not found
05/06 17:28:27.418403 00000477 C STM ERROR TYPE: Runner, NODE:1, STREAM:aae970f4b5c5970d, TASK:198,SID:1778059680201893418, SESSION:1 [runner calc]faild gid:0, lino:1035 code:Insert table info not found
创建表的语句:
CREATE STABLE IF NOT EXISTS s1_5w (
ts TIMESTAMP,
v1 FLOAT,
v2 FLOAT,
v3 FLOAT,
v4 FLOAT
) TAGS (
id INT
);
CREATE TABLE IF NOT EXISTS s1_5w_sub_0 USING s1_5w TAGS (0);
创建流的语句:
CREATE STREAM notify_stream_s1_5w_0_v1
COUNT_WINDOW(1)
FROM s1_5w_sub_0
STREAM_OPTIONS(PRE_FILTER(v1 >= 110 OR v1 < 90))
INTO alarm_s1_5w_sub_0_v1 NODELAY_CREATE_SUBTABLE AS
SELECT
cast(_tlocaltime / 1000 AS TIMESTAMP) AS ts,
TBNAME AS device_name,
'v1' AS field_name,
v1 AS val,
CASE
WHEN v1 < 80 THEN -2
WHEN v1 >= 80 AND v1 < 90 THEN -1
WHEN v1 >= 90 AND v1 < 110 THEN 0
WHEN v1 >= 110 AND v1 < 120 THEN 1
WHEN v1 >= 120 THEN 2
ELSE NULL
END AS alarm_level
FROM %%trows;
测试数据:
INSERT INTO s1_5w (tbname, ts, v1, v2, v3, v4) VALUES ('s1_5w_sub_0', 1778046808726000, 130.00, 90.00, 90.00, 90.00);





