数据仓库驱动的多维度值勤数据统计分析方法
作者: 李波 高骁
摘要:值勤是各类小区、校园等大型场所安保任务中最重要的组成部分。对执勤数据的有效分析对于了解工作动态、辅助领导决策方面具有重要意义。针对该业务数据的多源、有序、多维度、非静态等特点,本文基于数据仓库技术提出了一种面向多源、多维度的业务数据统计分析方法。通过综合运用渐变维度、配置化物化视图生成、物化视图的增量变更以及物化视图动态选择技术,实现统计数据的高效查询。对某单位历史勤务数据的分析验证结果表明,该方法在该类业务数据统计分析的准确性、高效性、可扩展性等方面均取得了良好效果,在掌握整体工作态势、进行业务管理决策上提供了良好的技术支撑。
关键词:值勤;安保;数据仓库;渐变维度;物化视图选择算法
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2024)32-0048-04 开放科学(资源服务)标识码(OSID) :
0 引言
日常值勤是安保任务中最重要的组成部分。对业务类数据进行准确、高效分析,在辅助领导层进行管理决策上具有重要意义。该类数据存在多源、多维度、有序、非静态等特点,其中,多源是指勤务数据来自多个单位多种业务系统,需要对不同来源的数据进行汇聚整合;多维度指勤务数据存在多种不同的关键特征,对不同特征进行动态组合可定义出多种分析业务场景;有序性指同类型业务数据遵从客观时间顺序,其分析场景与时间高度关联;非静态性指业务数据在持续、实时动态产生,其对应的统计分析结果将持续、实时地发生变化。以上特点要求针对数据的分析方法能够支持动态可扩展的多种类的分析维度,以适应数据在时间上的持续性,以及来源、属性变化上的灵活性。
本文针对业务数据的多源、有序、多维度、非静态等特点,提出了一种基于数据仓库技术的多维度统计分析方法。通过引入渐变维度、物化视图的配置化生成、增量变更及动态选择技术,实现了统计数据的高效查询和分析。
1 数据仓库模型设计
数据仓库的设计分为事实表设计和维度表设计两部分。在完成事实表、维度表逻辑模型设计之后,还需要针对不同维度属性的变化特征使用不同的应对策略,调整实体模型,得到最终的物理模型。本节通过对安保人员执勤和领导查岗数据的建模过程进行举例说明,阐述值勤安保系统数据仓库的模型设计。
1.1 逻辑模型设计
售额、数量等。“维度”用于描述事实的背景信息,例如时间、地点、人员等。事实表中每一行对应一个度量事件,度量事件的级别称为事实的粒度,在同一个事实表中,每一行必须具有相同的粒度。各个维度均拥有一系列属性,且属性间具有层次级别,如地点维度具有省、市、区、县等属性。维度可以按照不同的层次级别进行分组,每个级别对应于不同的粒度[1]。而数据仓库应用中的“上钻”(显示上一级的概览数据)和“下钻”(显示下一级的更详细数据)就是在这些粒度的基础上实现的[2]。本文以典型的安保人员执勤和领导查岗场景中生成的换班和查岗数据作为基本事实,进行分析和论述。
换班和查岗事件维度包括地点(哨位)、类型、人员、时间、结果等类型,每一类维度又有不同层次的多个维度属性,见表 1。数据仓库的设计模型主要有星型模型和雪花模型等。其中,星型模型将同一类维度属性放在同一张表的各个字段中,雪花模型则将同一维度进一步规范化,将其拆分为子表,从而消除数据冗余[3-4]。雪花模型符合数据库理论中的第三范式,没有冗余数据,避免了数据的不一致。但是,雪花模型在数据仓库应用中具有查询语句转换困难、查询性能不佳等问题,因此该模型更适用于对数据一致性要求较高的场景。根据日常执勤数据的特点,本文采用星型模型,其数据仓库逻辑设计如图1和图2所示。
1.2 对渐变维度的处理
在数据仓库中,维度可能会随时间变化。按照维度更新频率不同,数据仓库的维度可以分为三类:常规维度、渐变维度(Slowly Changing Dimensions,简记为SCD) 和速变维度(Rapidly Changing Dimensions,简记为RCD) [3,5-6]。常规维度的成员身份和数据属性不可变,实际发生变化时必须重建整个数据仓库。渐变维度又称为慢速变化维、缓慢变化维,其成员身份和数据属性可能会更改,但更改不频繁或仅在有限范围内进行更改[7]。渐变维度的处理方式主要有类型1、类型2、类型3等[2],类型1(重写)是指直接更新维度表中的属性值,不保留历史记录;类型2(增加新行)是在维度表中新增一行,保留历史记录;类型3(增加新属性)是在维度表中增加新字段,记录当前和历史属性值。速变维度的成员身份或数据属性是频繁变化的,可以通过将维度属性拆分为若干子维度,使每个子维度变化稳定,或将频繁变化属性列入事实表中。
本文中,日期、时间、地点、类型等维度在增加之后不会发生变化,是常规维度。而人员的职位、级别和单位等属性可能会因为授衔及工作调动等原因发生变化,由于变化发生并不频繁,被归类为渐变维度。如果使用类型1方式进行重写,人员的历史属性会被丢失,数据分析结果不能如实反映对应事件发生时人员的真实情况;而如果使用类型3增加属性的方式处理,需要添加大量的属性字段来追踪历史变更,使维度表结构和分析逻辑变得复杂。基于上述分析,本文使用类型2方式设计人员维度表处理人员维度变更,见表 2。
如表 3所示,张三的职位在2023年11月10日由文员变更为主管。维度表中保留变更日期之前的原始记录,设置记录中的失效日期,并新增一条记录保存人员的更新属性值。在相关的事实表中,2023年11 月10日及更早前的记录关联历史的维度键,其后的记录关联新增的维度键。与类型1和类型3相比,该处理方式能够保留事件发生时的维度属性,并能使事实表清晰地关联正确维度属性,保持分析结果的准确。
1.3 小结
通过数据仓库逻辑模型设计和对渐变的人员维度特殊化处理之后,可以定义出实体模型,并在对应数据库中得到最终的数据仓库物理模型。该物理模型可为相关业务的数据挖掘和数据分析提供基础。
2 物化视图设计和选择算法
本节将介绍物化视图技术及数据分析查询性能的优化方法。通过引入物化视图定义模型来提升物化视图的定义灵活性,并通过设计选择算法来找出最佳的物化视图,可以利用物化视图技术来获得较好的查询性能。使用本节介绍的方法,可以根据数据来源和查询场景的不同灵活地配置物化视图,并由预先编写的选择算法充分利用这些物化视图加速查询,兼顾了配置灵活性和查询效率。
2.1 事实表的分类和物化视图的应用
事实表可以分为四种基本类型:事务、周期快照、累计快照和聚合事实表[2]。事务事实表是最基本的类型,每条数据表示发生在某个时间点上的一个事件,前文中提到的换哨和查勤事件事实表就属于事务事实表;周期快照事实表用于观察某个业务在某个固定可预测的时间间隔内的累计性能,比如月度汇总数据等,通常在周期性的汇总分析业务中使用;累计快照事实表不太常见,用于汇总一系列相关步骤的总结果,适用于工作流或者流水线的数据分析;聚合事实表用来优化提升查询性能,不提供业务功能,其通过预先定义的聚合事实表将数据按照各个维度的不同粒度进行聚合保存,可以节约查询时的计算量。
事务、周期快照和累计快照事实表通常以在数据库中定义实体业务模型的方式来实现。数据保存在数据库中,使用查询语句直接从中查询出分析结果。聚合事实表通常通过物化视图(Materialized View)技术实现,由一个或几个基本表(或视图)导出,自动维护数据,并将实际内容直接储存在数据库里。利用聚合事实表,程序可以把从事务、周期快照和累计快照事实表中的查询转换为从聚合事实表中的查询,提高查询性能。基于此,本文设计了一种物化视图定义和更新方案,并针对查询代价这一指标设计了一种查询选择算法。
2.2 配置物化视图模型
为了便于使用,本文基于配置化思想,设计了一种物化视图定义模型。简述如下:
1) 事务信息business_info
业务属性配置用于指定业务类型记录表属性。包括:业务数据表名称、主键和统计进度表。具体事务信息表属性如表 4所示。
2) 维度定义dimension_info
维度信息配置记录维度信息和粒度信息以及默认粒度转换规则。具体维度定义表的属性如表 5 所示。
3) 物化视图配置cube_table_config
通过统计表配置自定义维度粒度组合的统计数据。通过该配置实现自动创建物化视图、统计数据定时维护、统计数据自动分析等功能。具体物化视图配置表如表 6所示。
本文中的方法可以动态的修改这些定义。在新增事务事实或者发现统计查询性能不佳时,可以便捷地添加物化视图,灵活地适应业务变化。
2.3 物化视图的更新策略
数据仓库的数据来自业务数据库。在仓库数据首次构建之后,从业务数据库更新数据的过程称为数据追加。数据追加的内容仅限于上次向数据仓库输入后在业务数据库中变化了的数据,因此需要一种捕获业务数据库数据变化的方法。常用的捕获方法有时间戳方法、DELTA方法、前后映像文件的方法、日志文件及基于触发器的抽取方法等[8-10]。
2.4 物化视图选择算法
为hu了 G对upt物a 化视图问题进行定量的研究求解,Hi⁃ 、Jian Yang 和Harinarayan 分别给出了AND-OR View Graph模型、MVPP模型和多维数据格模型,它们是至今最为流行的三种物化视图模型【6,11】。这三种模型试图针对通用数据仓库定义数据查询代价和物化视图维护代价这两个指标。针对物化视图模型人们提出了各种物化视图选择算法,大体可以分为贪心算法和遗传算法两类。
本文针对该安保业务数据的特点,提出了一种基于效用函数的贪心选择算法,流程如图3所示。
图3 给出了物化视图选择算法流程,分为四个步骤。
步骤1:粒度元数据维护。服务启动后,遍历所有物化视图,记录各维度粒度的数据量。
步骤2:物化视图过滤。根据用户查询的维度和粒度,过滤出符合条件的物化视图。
步骤3:效用函数计算。计算每个物化视图对用户查询的效用值。
步骤4:物化视图选择。选择效用值最高的物化视图,执行优化查询。
本文把效用函数U定义为:
其中:k 为物化视图中对应的维度,lk 为用户请求的维度等级在维度表中的数据量,ck 为物化视图中该维度等级在维度表中的数据量。物化视图中各个维度的等级与数据量的比值称为这个物化视图对该请求的效用函数。
举例说明:假设两个维度类型“维度1”和“维度2”,其不同维度等级的数据量,如表 7所示。
用户请求的查询在维度1上粒度等级为2,在维度2上的等级为1,如表 8所示。
物化视图1在维度1上粒度等级为2,在维度2上的等级为2,如表 9所示。
计算得到物化视图1效用函数:
U1 = 36/36 × 4/20 = 0.2
物化视图2在维度1上粒度等级为3,在维度2上的等级为1:
计算得到物化视图2效用函数:
U1 = 36/1095 ×44/≈ 0.032
物化视图1的效用函数更大,算法选择物化视图1进行优化查询。
3 方法验证实验
为了验证本文方法的结果准确性,分析场景可扩展性以及数据查询性能,进行了如下实验。
实验环境:
CPU:4 × Intel(R) Xeon(R) E-2124 CPU @ 3.30GHz
内存:16GB
硬盘容量:1TB
操作系统:Ubuntu 20.04.2 LTS
数据库:MySQL 5.6.31
数据源:某单位2018-2021年共302万条查岗记录
使用前文描述的物化视图模型配置方法,配置物化视图粒度等级表如表 11所示。
查询场景设置如表 12所示。
场景1,按查岗人员所在片区和查岗结果类型对每年各小区的查岗数量进行查询;场景2,按查岗人员所在小区和查岗结果子类型对每年各片区的查岗数量进行查询;场景3,按查岗人员所在小区和查勤结果子类型对每年各小区的查岗数量进行查询。
针对表 12的3个查询场景,采用表9的3种物化视图以及事务事实表分别对各场景的查岗记录数量进行查询,所得的数据分析结果如图4所示。
如图4所示,在三个查询场景中,使用效用函数选择的视图均能获得最短耗时。实验结果表明,采用物化视图1的查询性能最优,验证了效用函数计算和选择算法的有效性。
4 总结
本文针对业务数据的多源、多维度、有序、非静态等特点,提出了一种基于数据仓库的多维度统计分析方法。通过引入渐变维度、物化视图的配置化生成、增量变更和动态选择技术,实现了对勤务数据的高效查询和分析。实验结果表明,该方法在准确性、高效性和可扩展性方面均取得了良好效果,为辅助领导决策和业务管理提供了有力的技术支持。
【通联编辑:唐一东】
基金项目:教育部产学合作协同育人项目(编号:231002345263245) ;广东省高职教育教学改革研究与实践项目(GDJG2021092、GDJG2021094)