宝坻区预警信息发布平台查询统计工具的设计与实现
2023-03-08张江斌张春莉
张江斌 ,张春莉
(1.天津市宝坻区突发公共事件预警信息发布中心 天津301899;2.天津市突发公共事件预警信息发布中心 天津 300074)
0 引 言
天津市突发公共事件预警信息发布系统(以下简称天突系统)业务化运行于2016年,宝坻区突发公共事件预警信息发布平台(以下简称宝突平台)业务化运行于2017年。尽管在天突系统业务化运行初期已集成了查询统计模块,但早期集成的查询统计功能过于简单,只能初步检索预警信息数量,各接入单位发布的重要通知信息、街镇转发的预警信息无法进行统计,在做预警信息评估及防灾减灾数据分析等方面无法满足日常业务需求。针对业务需要,只能由人工手动进行分类统计,耗时费力,稍不注意也会出现计数错误,此类方式也不符合当前信息化工作要求。通过查阅文献资料,部分省份有基于国家突发事件预警信息发布平台(以下简称国突平台)预警信息统计工具简介[1],给本工具的设计研发带来了思路和启迪。因天突系统为天津地区自建系统,与外省整体预警业务工作不尽相同,故基于国突平台设计的统计工具在天津地区不具备完全通用性。为弥补天突系统在查询统计功能方面的不足,以宝突平台发布的信息为基础,对天突系统数据库内数据进行分析,建立统计查询数据库表,将天突系统相关数据表进行数据同步并分类入库,并基于业务需要,设计查询统计算法,提供较为方便快捷、准确可视化的查询统计功能,以此提升数据统计能力,为业务中所需报表提供数据基础。
1 宝突平台查询统计工具的设计思路
1.1 分析天突系统数据库
天突系统数据繁多,针对不同业务内容建立了众多数据表,由于建设较早,故数据字典文档并未随之更新。针对本项目,首先需熟悉天突系统数据库,掌握各类表结构及表中各字段含义,挖掘出对查询统计工作有效的表及字段,为下一步搭建查询统计数据库、建立数据表奠定基础。
1.2 搭建查询统计数据库
由于对数据库进行频繁读写操作会对服务器性能造成影响[2],为了在查询统计时不给天突系统数据库带来负担,并保证天突系统安全稳定运行,根据查询统计业务需要,建立独立的查询统计数据库,在需要进行统计时连接天突系统数据库并一次同步所需库表字段数据,同步完成后即可断开与天突系统数据库链接,通过查询统计数据库进行数据查询统计。
1.3 设计算法及结果展示
查询统计数据库搭建完成后,基于业务需要,需进行算法设计及结果展示。如按天气过程统计预警信息及重要通知、按发布单位统计重要通知数量等,进而为各类预警服务产品提供数据支撑。
2 宝突平台查询统计工具的设计方案
2.1 梳理查询统计主要的业务需求
基于业务需要,通过认真梳理发现,在制作各类月报表、天气过程报表中主要需按如下方式进行分类统计:在相应时间段,统计各接入单位短信群组受众用户数量;按预警事件类型、预警信息级别统计信息发布条数;按街镇统计转发预警信息及重要通知发布条数;按委办单位统计预警信息发布数量;按委办单位统计重要通知发布数量;按事件过程(如天气过程)统计预警及重要通知信息发布数量等。
2.2 搭建查询统计数据库
通过对天突平台数据库表及存储字段结构分析,支撑查询需求的库表主要为:①PUB_USER_RELATION_TAB 受众用户及关联群组关系表;②AEAP_ALERT_ALERTINFO 预警信息发布表;③AEAP_ALERT_NOTICATION 重要通知信息发布表;④AEAP_BASE_EVENTTYPE 预警事件类型基础表;⑤SYS_ORG组织机构代码表。其中前3个数据表可依信息发布数据实时更新,而后2个数据表完成一次同步后,如无事件类型增删、无预警信息发布单位增减,则无需更新。
在本地建立SQL查询统计数据库,并按需分别建立数据表,通过自主研发的C/S模式数据同步程序,将上述数据库表中查询必须字段直接从天突系统数据库写入本地查询统计数据库表中,供后续查询统计数据使用。
2.3 根据需求设计数据查询算法
2.3.1 统计短信群组受众用户数量
基础语句:
SELECT ‘气 象 局’,COUNT(USERID),COUNT(DISTINCT USERID)
FROM PUB_USER_RELATION_TAB
WHERE SYNC_STATUS=‘2’
AND GROUPID LIKE ‘ZC_120115000000_416%’
本语句以统计宝坻区气象局短信群组受众用户数量为例,介绍各接入单位短信群组受众用户人数统计功能。COUNT(USERID)代表统计该单位短信群组总人数;COUNT(DISTINCT USERID)代表统计该单位短信群组实际人数,为去重后的结果,即某个人在不同群组则只统计一次;SYNC_STATUS代表同步状态,2代表成功;GROUPID代表组名编号,120115代表宝坻区,416代表气象局;统计宝坻区其他接入的委办单位只需遍历其单位编码即可,如应急局450、生态环境局467等,统计接入的街镇单位只需遍历其街镇编码即可,如海滨街道120115001、宝平街道120115002等。各接入单位名称及编码存储于SYS_ORG表中,在遍历时可按需调用。
2.3.2 统计预警信息发布数量
①按发布时间范围统计预警信息发布总数量。
基础语句:
SELECT COUNT(INFOID) FROM AEAP_ALERT_ALERTINFO
WHERE PUBLICCODE=‘120115000000’
AND CONVERT(DATETIME,ONSET, 23) >=‘2022-06-01’
AND CONVERT(DATETIME,ONSET, 23) < ‘2022-07-01’
AND HEADLINE NOT LIKE ‘%解除%’
AND HEADLINE NOT LIKE ‘%更新%’
AND DESCRIPTION NOT LIKE ‘%测试%’
本语句以统计2022年6月宝坻区首发预警信息总条数为例,介绍预警信息发布总数量统计功能。PUBLICCODE字段代表发布区域,120115代表宝坻区;ONSET字段代表预警生效时间,该字段存储类型为DATETIME,为了方便传参使用,在查询时先将其转为“年-月-日”的时间格式,可按月或按天给定时间范围;通过划定时间范围,即可按事件发生时间范围,统计该事件过程中发布的预警信息数量;HEADLINE字段代表预警信息标题;DESCRIPTION字段代表预警信息内容;通过对HEADLINE字段及DESCRIPTION字段组合控制可分别得到首发预警、更新预警、解除预警、测试预警等不同信息类型相应的条数。
为了按照预警级别统计信息发布总条数,在上述语句最后增加SEVERITY字段限定,如统计首发蓝色预警信息总条数,则在上述语句最后加入AND SEVERITY=‘Blue’即可。
②按时间范围、预警事件类型、预警事件级别,统计预警信息发布总条数。
基础语句:
SELECT NAME,SEVERITY,COUNT(EVENTTYPE)
FROM AEAP_ALERT_ALERTINFO t,AEAP_BASE_EVENTTYPE x
WHERE t. EVENTTYPE=x.CODE
AND PUBLICCODE=‘120115000000’
AND CONVERT(DATETIME,onset,23)>=‘ 2022-06-01’
AND CONVERT(DATETIME,onset, 23)<‘2022-07-01’
AND DESCRIPTION NOT LIKE ‘%测试%’
GROUP BY NAME,SEVERITY
本语句以按预警事件类型、级别统计2022年6月宝坻区预警信息发布总数为例,介绍预警信息发布数据分类统计功能。NAME 代表预警事件类型的名称;t 表记录预警信息,其中包含预警事件类型编码;x表记录预警事件类型及对应编码,通过预警类型编码,即 x 表中的 code 字段,将t表与x表进行连接查询,并按照事件类型的名称和事件级别进行分组,得到不同预警类型、不同预警级别预警信息总条数。
为了更加清晰地了解单独某一种预警级别的信息条数,我们仍可使用SEVERITY字段限定。若再配合HEADLINE字段对“发布、更新、解除”等信息类型所作限定,可分别得到在某个时间范围内某预警级别、某信息类型的各事件类型信息发布数量。如统计信息类型为更新,预警级别为黄色的预警事件信息条数,则在上述GROUP BY语句前加入AND SERVERITY =‘Yellow’ AND HEADLINE LIKE ‘%更新%’即可。
2.3.3 统计重要通知信息发布数量
①统计街镇以重要通知形式转发预警信息数量。基础语句:
SELECT ‘宝平街道’,COUNT(NOTICEID)
FROM AEAP_ALERT_NOTICATION
WHERE CONVERT(DATETIME,SENDTIME,23)>=‘2022-06-01’
AND CONVERT(DATETIME,SENDTIME, 23)<‘2022-07-01’
AND SENDERUNIT = ‘宝平街道’
AND CONTENT LIKE ‘%宝坻%色预警%’
AND (CONTENT NOT LIKE ‘%测 试%’ OR TITLE NOT LIKE ‘%测试%’)
本语句以宝坻区宝平街道为例,统计该街道2022年6月以重要通知形式转发委办单位发布的预警信息数量。CONTENT 字段代表信息内容,TITLE 字段代表信息标题,结合业务格式要求,综合数据库表中历史数据分析,我们限定内容中包含“宝坻*色预警”字样即视为转发的预警信息。如在标题、内容中包含“测试”字样则视为测试信息,在统计时需去除。
SENDERUNIT字段代表发布单位名称,通过对SENDERUNIT字段赋值遍历,我们可以逐个得到宝坻区24个街镇转发的预警信息数量。
②统计各接入单位发布的重要通知数量。
基础语句:
SELECT ‘气象局’,COUNT(NOTICEID)
FROM AEAP_ALERT_NOTICATION
WHERE CONVERT(DATETIME,SENDTIME,23)>=‘2022-06-01’
AND CONVERT(DATETIME,SENDTIME,23)<‘2022-07-01’
AND SENDERUNIT=‘气象局’
AND (CONTENT NOT LIKE ‘%测 试%’ OR TITLE NOT LIKE ‘%测试%’)
本语句以宝坻区气象局为例,统计该单位2022年6月发布重要通知的总条数。SENDERUNIT字段代表发布单位名称,通过对 SENDERUNIT 字段遍历委办单位名称,我们可以逐个得到宝坻区接入的15家委办单位重要通知发布数量。同时,我们在上述语句的最后加入AND CONTENT NOT LIKE ‘%宝坻%色预警%’,并对SENDERUNIT字段遍历街镇名称,同样可逐个得到宝坻区24个街镇自主发布的重要通知数量。街镇自主发布的重要通知信息主要是指除预警信息转发外的街镇发布的重要提示、科普宣传等通知类信息。
2.4 研发统计工具展示统计结果
基于查询统计数据库,通过数据查询统计算法,研发B/S模式的查询统计工具并展示统计结果。根据时间范围统计街镇发布的信息条数结果如图1所示;根据时间范围按预警事件类型、预警级别、信息类型统计查询预警信息发布条数结果如图2所示。
图1 重要通知统计查询结果展示Fig.1 Display of important notice statistics query results
图2 预警信息统计查询结果展示Fig.2 Display of alert information statistics query results
3 应用情况小结
①通过查询统计工具的设计与实现,在查询统计时,减轻了天突系统平台及数据库负载,弥补了天突系统随业务发展查询统计功能的不足。在天津预警信息发布系统业务应用中率先实现了重要通知的自动化统计,预警信息数量、短信群组受众用户人数的自动化统计更加切合业务需求。
②通过自动化统计减轻了业务人员工作负担,为有效应对各类突发事件、提升各级政府应急管理水平提供了技术支撑[3],也为后续天津预警信息发布系统建设、优化预警信息发布业务、考量接入单位对预警信息发布系统应用情况提供了更加直观的数据化基础。