为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:
【CPU】:
【问题描述】:
用下面的存储过程来补小时数据,来源于分钟,有200台设备,所以补一天的小时数据就是 20024*60=288000条,可以补数成功;时间范围一旦选几天,就不能成功补小时数据了,怎么解决????
下面是存储过程:
/Manager/CREATE OR REPLACE PROCEDURE "NASHA_DB"."bu_hour_data"("START_TIME" IN DATETIME(6),"END_TIME" IN DATETIME(6))
AUTHID DEFINER
AS
/变量说明部分/
/执行体/
DECLARE
BEGIN
merge into NANSHAN_DB.KPR_DEVICE_HOUR as a
USING (SELECT
T.DEVICE_NUMBER,
T.DEPLOY_ID,
T.PUBTIME
FROM (
SELECT
MAX(B.DEVICE_NUMBER) AS DEVICE_NUMBER,
MAX(B.DEPLOY_ID) AS DEPLOY_ID,
FROM NASHA_DB.DEVICE_MINUTE_2024 B
WHERE
B.PUBTIME >= DATEADD( HH,-1,FROM_UNIXTIME(CEIL(UNIX_TIMESTAMP( START_TIME )/3600)*3600))
AND B.PUBTIME <= DATEADD( HH,1,FROM_UNIXTIME(CEIL(UNIX_TIMESTAMP( END_TIME )/3600)*3600))
AND B.DEPLOY_ID IS NOT NULL
GROUP BY B.DEVICE_NUMBER, FROM_UNIXTIME(CEIL(UNIX_TIMESTAMP( B.PUBTIME )/3600)*3600)
) T
) T
on (a.PUBTIME = T.PUBTIME and a.DEVICE_NUMBER=T.DEVICE_NUMBER)
when matched then
update set
a.DEPLOY_ID=T.DEPLOY_ID,
a.TOTAL_COUNT=T.TOTAL_COUNT
when not MATCHED then
INSERT
(
a.DEVICE_NUMBER,
a.DEPLOY_ID,
a.PUBTIME
)
values
( T.DEVICE_NUMBER,
T.DEPLOY_ID,
T.PUBTIME
);
-- 聚合小时noise数据
update nanshan_db.kpr_device_hour a join
(
SELECT MAX(a.pubtime) pubtime,
MAX(a.device_number) device_number,
FROM
(
select device_number,
leq,
from NASHA_DB.DEVICE_MINUTE_2024
where
pubtime>=DATEADD( HH,-1,FROM_UNIXTIME(CEIL(UNIX_TIMESTAMP( START_TIME )/3600)*3600))
and pubtime<= DATEADD( HH,1,FROM_UNIXTIME(CEIL(UNIX_TIMESTAMP( END_TIME )/3600)*3600))
) as a
GROUP BY a.device_number,FROM_UNIXTIME(CEIL(UNIX_TIMESTAMP( a.pubtime )/3600)*3600)
) t
on a.device_number=t.device_number and a.pubtime=t.pubtime
set
a.Lq=if(t.lq,t.lq,0.0),
;
commit;
END;

执行失败有报错信息吗?