Refactor SQL script creation in ReportScript.sql for improved readability and performance. Update DatabaseManager to enhance connection handling with detailed documentation. Add a new method in DataProcessor to parse SQL scripts, ensuring reliable extraction of valid SQL statements.

This commit is contained in:
2026-01-19 10:43:12 +08:00
parent b23be8bc55
commit ee50230907
3 changed files with 79 additions and 126 deletions
+15 -117
View File
@@ -91,14 +91,7 @@ ADD INDEX `TC`(`日期时间`, `NCGI`),
ADD INDEX `DC`(`日期`, `NCGI`);
CREATE TEMPORARY TABLE IF NOT EXISTS `CCE_MAX_IDX`(
SELECT
`日期`,
CGI,
MAX( `PDCCH资源利用率`) AS `PDCCH资源利用率_忙时`
FROM 4G
GROUP BY `日期`, CGI
);
CREATE TEMPORARY TABLE IF NOT EXISTS `CCE_MAX_IDX` AS SELECT `日期`, CGI, MAX(`PDCCH资源利用率`) AS `PDCCH资源利用率_忙时` FROM 4G GROUP BY `日期`, CGI;
ALTER TABLE `CCE_MAX_IDX`
ADD COLUMN `日期时间` datetime,
@@ -114,23 +107,11 @@ SET
`CCE_MAX_IDX`.`日期时间`=4G.`日期时间`;
CREATE TEMPORARY TABLE IF NOT EXISTS `CCE_MAX` (
SELECT 4G.*
FROM `CCE_MAX_IDX` LEFT JOIN 4G
ON `CCE_MAX_IDX`.CGI=4G.CGI AND
`CCE_MAX_IDX`.`日期时间`=4G.`日期时间`
);
CREATE TEMPORARY TABLE IF NOT EXISTS `CCE_MAX` AS SELECT 4G.* FROM `CCE_MAX_IDX` LEFT JOIN 4G ON `CCE_MAX_IDX`.CGI=4G.CGI AND `CCE_MAX_IDX`.`日期时间`=4G.`日期时间`;
DROP TABLE IF EXISTS `CCE_MAX_IDX`;
CREATE TEMPORARY TABLE IF NOT EXISTS `ULPRB_MAX_IDX`(
SELECT
`日期`,
CGI,
MAX( `上行PUSCH利用率`) AS `上行PUSCH利用率_忙时`
FROM 4G
GROUP BY `日期`, CGI
);
CREATE TEMPORARY TABLE IF NOT EXISTS `ULPRB_MAX_IDX` AS SELECT `日期`, CGI, MAX(`上行PUSCH利用率`) AS `上行PUSCH利用率_忙时` FROM 4G GROUP BY `日期`, CGI;
ALTER TABLE `ULPRB_MAX_IDX`
ADD COLUMN `日期时间` datetime,
@@ -154,14 +135,7 @@ CREATE TABLE IF NOT EXISTS `ULPRB_MAX` (
DROP TABLE IF EXISTS `ULPRB_MAX_IDX`;
CREATE TEMPORARY TABLE IF NOT EXISTS `DLPRB_MAX_IDX`(
SELECT
`日期`,
CGI,
MAX( `下行PDSCH利用率`) AS `下行PDSCH利用率_忙时`
FROM 4G
GROUP BY `日期`, CGI
);
CREATE TEMPORARY TABLE IF NOT EXISTS `DLPRB_MAX_IDX` AS SELECT `日期`, CGI, MAX(`下行PDSCH利用率`) AS `下行PDSCH利用率_忙时` FROM 4G GROUP BY `日期`, CGI;
ALTER TABLE `DLPRB_MAX_IDX`
ADD COLUMN `日期时间` datetime,
@@ -176,12 +150,7 @@ ON
SET
`DLPRB_MAX_IDX`.`日期时间`=4G.`日期时间`;
CREATE TEMPORARY TABLE IF NOT EXISTS `DLPRB_MAX` (
SELECT 4G.*
FROM `DLPRB_MAX_IDX` LEFT JOIN 4G
ON `DLPRB_MAX_IDX`.CGI=4G.CGI AND
`DLPRB_MAX_IDX`.`日期时间`=4G.`日期时间`
);
CREATE TEMPORARY TABLE IF NOT EXISTS `DLPRB_MAX` AS SELECT 4G.* FROM `DLPRB_MAX_IDX` LEFT JOIN 4G ON `DLPRB_MAX_IDX`.CGI=4G.CGI AND `DLPRB_MAX_IDX`.`日期时间`=4G.`日期时间`;
DROP TABLE IF EXISTS `DLPRB_MAX_IDX`;
@@ -191,35 +160,11 @@ ALTER TABLE `ULPRB_MAX` ADD INDEX `DC`(`日期`, `CGI`);
CREATE TEMPORARY TABLE IF NOT EXISTS `4G_Date` (
SELECT `日期`, CGI FROM 4G GROUP BY `日期`, CGI
);
CREATE TEMPORARY TABLE IF NOT EXISTS `4G_Date` AS SELECT `日期`, CGI FROM 4G GROUP BY `日期`, CGI;
ALTER TABLE `4G_Date` ADD INDEX `DC`(`日期`, CGI);
CREATE TEMPORARY TABLE IF NOT EXISTS `4G_MAX_IDX` (
SELECT
4G_Date.`日期`,
4G_Date.CGI,
GREATEST(`ULPRB_MAX`.`上行PUSCH利用率`, DLPRB_MAX.`下行PDSCH利用率`,CCE_MAX.`PDCCH资源利用率`) AS `最大值`
FROM
4G_Date
INNER JOIN
DLPRB_MAX
ON
4G_Date.`日期` = DLPRB_MAX.`日期` AND
4G_Date.CGI = DLPRB_MAX.CGI
INNER JOIN
CCE_MAX
ON
4G_Date.`日期` = CCE_MAX.`日期` AND
4G_Date.CGI = CCE_MAX.CGI
INNER JOIN
ULPRB_MAX
ON
4G_Date.`日期` = ULPRB_MAX.`日期` AND
4G_Date.CGI = ULPRB_MAX.CGI
);
CREATE TEMPORARY TABLE IF NOT EXISTS `4G_MAX_IDX` AS SELECT 4G_Date.`日期`, 4G_Date.CGI, GREATEST(`ULPRB_MAX`.`上行PUSCH利用率`, DLPRB_MAX.`下行PDSCH利用率`,CCE_MAX.`PDCCH资源利用率`) AS `最大值` FROM 4G_Date INNER JOIN DLPRB_MAX ON 4G_Date.`日期` = DLPRB_MAX.`日期` AND 4G_Date.CGI = DLPRB_MAX.CGI INNER JOIN CCE_MAX ON 4G_Date.`日期` = CCE_MAX.`日期` AND 4G_Date.CGI = CCE_MAX.CGI INNER JOIN ULPRB_MAX ON 4G_Date.`日期` = ULPRB_MAX.`日期` AND 4G_Date.CGI = ULPRB_MAX.CGI;
DROP TABLE IF EXISTS `4G_Date`;
ALTER TABLE `4G_MAX_IDX` ADD INDEX `DC`(`日期`, CGI), ADD INDEX (`最大值`);
@@ -275,9 +220,7 @@ DROP TABLE IF EXISTS `4G_MAX_IDX`;
CREATE TEMPORARY TABLE IF NOT EXISTS `日流量`(SELECT `日期`,CGI, SUM(`上下行总流量_GB`) AS `日流量` FROM 4G GROUP BY `日期`,CGI);
ALTER TABLE `日流量` ADD INDEX (`CGI`);
DROP TABLE IF EXISTS `4G日均流量`;
CREATE TEMPORARY TABLE IF NOT EXISTS `4G日均流量` (
SELECT CGI, AVG(`日流量`) AS `日均流量`, COUNT(`日期`) AS `流量有效天数` FROM `日流量` WHERE `日流量` > 0 GROUP BY CGI
);
CREATE TEMPORARY TABLE IF NOT EXISTS `4G日均流量` AS SELECT CGI, AVG(`日流量`) AS `日均流量`, COUNT(`日期`) AS `流量有效天数` FROM `日流量` WHERE `日流量` > 0 GROUP BY CGI;
@@ -313,14 +256,7 @@ DROP TABLE IF EXISTS `4G`;
# 5G脚本
CREATE TEMPORARY TABLE IF NOT EXISTS `ULPRB_MAX_IDX`(
SELECT
`日期`,
NCGI,
MAX(`上行PRB平均利用率`) AS `上行PRB平均利用率_忙时`
FROM 5G
GROUP BY `日期`, NCGI
);
CREATE TEMPORARY TABLE IF NOT EXISTS `ULPRB_MAX_IDX` AS SELECT `日期`, NCGI, MAX(`上行PRB平均利用率`) AS `上行PRB平均利用率_忙时` FROM 5G GROUP BY `日期`, NCGI;
ALTER TABLE `ULPRB_MAX_IDX`
ADD COLUMN `日期时间` datetime,
@@ -335,22 +271,10 @@ ON
SET
`ULPRB_MAX_IDX`.`日期时间`=5G.`日期时间`;
CREATE TEMPORARY TABLE IF NOT EXISTS `ULPRB_MAX` (
SELECT 5G.*
FROM `ULPRB_MAX_IDX` LEFT JOIN 5G
ON `ULPRB_MAX_IDX`.NCGI=5G.NCGI AND
`ULPRB_MAX_IDX`.`日期时间`=5G.`日期时间`
);
CREATE TEMPORARY TABLE IF NOT EXISTS `ULPRB_MAX` AS SELECT 5G.* FROM `ULPRB_MAX_IDX` LEFT JOIN 5G ON `ULPRB_MAX_IDX`.NCGI=5G.NCGI AND `ULPRB_MAX_IDX`.`日期时间`=5G.`日期时间`;
# 下行PRB MAX表
CREATE TEMPORARY TABLE IF NOT EXISTS `DLPRB_MAX_IDX`(
SELECT
`日期`,
NCGI,
MAX( `下行PRB平均利用率`) AS `下行PRB平均利用率_忙时`
FROM 5G
GROUP BY `日期`, NCGI
);
CREATE TEMPORARY TABLE IF NOT EXISTS `DLPRB_MAX_IDX` AS SELECT `日期`, NCGI, MAX(`下行PRB平均利用率`) AS `下行PRB平均利用率_忙时` FROM 5G GROUP BY `日期`, NCGI;
ALTER TABLE `DLPRB_MAX_IDX`
ADD COLUMN `日期时间` datetime,
@@ -365,12 +289,7 @@ ON
SET
`DLPRB_MAX_IDX`.`日期时间`=5G.`日期时间`;
CREATE TEMPORARY TABLE IF NOT EXISTS `DLPRB_MAX` (
SELECT 5G.*
FROM `DLPRB_MAX_IDX` LEFT JOIN 5G
ON `DLPRB_MAX_IDX`.NCGI=5G.NCGI AND
`DLPRB_MAX_IDX`.`日期时间`=5G.`日期时间`
);
CREATE TEMPORARY TABLE IF NOT EXISTS `DLPRB_MAX` AS SELECT 5G.* FROM `DLPRB_MAX_IDX` LEFT JOIN 5G ON `DLPRB_MAX_IDX`.NCGI=5G.NCGI AND `DLPRB_MAX_IDX`.`日期时间`=5G.`日期时间`;
DROP TABLE IF EXISTS `DLPRB_MAX_IDX`;
ALTER TABLE `DLPRB_MAX` ADD INDEX `DC`(`日期`, `NCGI`);
@@ -379,29 +298,10 @@ ALTER TABLE `ULPRB_MAX` ADD INDEX `DC`(`日期`, `NCGI`);
# 5G 统计MAX数据
DROP TABLE IF EXISTS `5G_Date`;
CREATE TEMPORARY TABLE IF NOT EXISTS `5G_Date` (
SELECT `日期`, NCGI FROM 5G GROUP BY `日期`, NCGI
);
CREATE TEMPORARY TABLE IF NOT EXISTS `5G_Date` AS SELECT `日期`, NCGI FROM 5G GROUP BY `日期`, NCGI;
ALTER TABLE `5G_Date` ADD INDEX `DC`(`日期`, NCGI);
CREATE TEMPORARY TABLE IF NOT EXISTS `5G_MAX_IDX` (
SELECT
5G_Date.`日期`,
5G_Date.NCGI,
GREATEST(ULPRB_MAX.`上行PRB平均利用率`, DLPRB_MAX.`下行PRB平均利用率`) AS `最大值`
FROM
5G_Date
INNER JOIN
DLPRB_MAX
ON
5G_Date.`日期` = DLPRB_MAX.`日期` AND
5G_Date.NCGI = DLPRB_MAX.NCGI
INNER JOIN
ULPRB_MAX
ON
5G_Date.`日期` = ULPRB_MAX.`日期` AND
5G_Date.NCGI = ULPRB_MAX.NCGI
);
CREATE TEMPORARY TABLE IF NOT EXISTS `5G_MAX_IDX` AS SELECT 5G_Date.`日期`, 5G_Date.NCGI, GREATEST(ULPRB_MAX.`上行PRB平均利用率`, DLPRB_MAX.`下行PRB平均利用率`) AS `最大值` FROM 5G_Date INNER JOIN DLPRB_MAX ON 5G_Date.`日期` = DLPRB_MAX.`日期` AND 5G_Date.NCGI = DLPRB_MAX.NCGI INNER JOIN ULPRB_MAX ON 5G_Date.`日期` = ULPRB_MAX.`日期` AND 5G_Date.NCGI = ULPRB_MAX.NCGI;
DROP TABLE IF EXISTS `5G_Date`;
ALTER TABLE `5G_MAX_IDX` ADD INDEX `DC`(`日期`, NCGI), ADD INDEX (`最大值`);
@@ -440,9 +340,7 @@ DROP TABLE IF EXISTS `5G_MAX_IDX`;
CREATE TEMPORARY TABLE IF NOT EXISTS `日流量`(SELECT `日期`,NCGI, SUM(`5G上下行总流量_GB`) AS `日流量` FROM 5G GROUP BY `日期`,NCGI);
ALTER TABLE `日流量` ADD INDEX (`NCGI`);
CREATE TEMPORARY TABLE IF NOT EXISTS `5G日均流量` (
SELECT NCGI, AVG(`日流量`) AS `日均流量`, COUNT(`日期`) AS `流量有效天数` FROM `日流量` WHERE `日流量` > 0 GROUP BY NCGI
);
CREATE TEMPORARY TABLE IF NOT EXISTS `5G日均流量` AS SELECT NCGI, AVG(`日流量`) AS `日均流量`, COUNT(`日期`) AS `流量有效天数` FROM `日流量` WHERE `日流量` > 0 GROUP BY NCGI;
CREATE TABLE IF NOT EXISTS `5G_结果表` (
SELECT NCGI, `CU小区配置名称`,