公开/公告号CN103020280A
专利类型发明专利
公开/公告日2013-04-03
原文格式PDF
申请/专利权人 北京讯鸟软件有限公司;
申请/专利号CN201210580083.7
申请日2012-12-27
分类号
代理机构北京汲智翼成知识产权代理事务所(普通合伙);
代理人陈曦
地址 100086 北京市海淀区知春路113号银网中心A座302室
入库时间 2024-02-19 18:53:05
法律状态公告日
法律状态信息
法律状态
2016-03-16
授权
授权
2013-07-03
实质审查的生效 IPC(主分类):G06F17/30 申请日:20121227
实质审查的生效
2013-04-03
公开
公开
技术领域
本发明涉及一种SQL查询语句扩充方法,尤其涉及一种通过多维 度KPI(Kernel Programming Interface,内核编程接口)函数对SQL 查询语句进行扩充,从而提高海量数据查询效率的方法,属于数据库 技术领域。
背景技术
结构化查询语言(Structured Query Language,简称SQL)是一 种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理 关系数据库系统。它不要求用户指定对数据的存放方法,也不需要用 户了解具体的数据存放方式,所以具有不同底层结构的数据库系统可 以使用相同的SQL查询语句作为数据输入与管理的接口。
但是,传统的SQL查询语句在面临大数据量实时查询任务时,存 在明显的效率缺陷,使其不能直接适用于大量数据的实时监控处理。 为了解决这一技术问题,人们先后提出了多种技术解决方案。例如在 申请号为201210075512.5的中国专利申请中,公开了一种大数据量的 数据查询方法,包括如下步骤:S10:定义增量数据捕获方式;S11: 定义增量捕获调度执行计划;S12:执行增量数据定期归集;S13:执 行数据统计结果查询。该技术方案把复杂的数据统计查询过程包分解 成两个过程,统计计算归集和实时查询;将统计计算归集过程放在后 台运行,并且归集过程只归集增量数据,从而大大提高了大数据量统 计查询的执行效率。
另外,李宝莲等在论文《基于SQL Server应用的大数据量实时处 理》(刊载于《无线电工程》2007年03期)中,针对大数据量的实时 处理问题,结合SQL Server的功能特点,给出了3种应用技术和策略, 即统计分析与实时处理数据分开存储策略、临时表技术和数据库的发 布与订阅技术。通过对使用结果的分析,说明了这些技术和策略对完 成大数据量业务的实时处理有一定的作用。
发明内容
本发明所要解决的技术问题在于提供一种SQL查询语句扩充方 法。该方法通过多维度KPI函数对SQL查询语句进行扩充,弥补了传 统SQL查询语句在面临大数据量实时查询任务时的效率缺陷。
为实现上述的发明目的,本发明采用下述的技术方案:
一种通过多维度KPI函数对SQL查询语句进行扩充的方法,包括 如下步骤:
预先定义统计指标量的相关维度,以及通过各个维度计算统计指 标量值的规则,生成所述多维度KPI函数;
利用所述多维度KPI函数预先查询数据库,并将查询结果保存在 多维度KPI函数结果表中;
SQL查询语句调用所述多维度KPI函数,并提供传入参数值查询 相应的多维度KPI函数结果表,直接获取统计指标量。
其中较优地,所述SQL查询语句输入数据库之后,发送统计指标 维度值给所述多维度KPI函数。
其中较优地,所述多维度KPI函数将需要在同一时间处理的事务, 分散到各个时段进行处理。
本发明采用多维度KPI函数对SQL查询语句进行扩充,具有如下 的显著优势:
1.SQL查询语句通过简单的调用方式即可获取实时性的大量数据 处理结果,无需直接通过SQL查询处理大量数据;
2.可以自定义数据处理方式,并且定义数据处理方式的过程简单 方便。
附图说明
图1为基于SQL查询语句的实时监控统计流程图;
图2为基于多维度KPI函数对SQL查询语句进行扩充的方法流程 图。
具体实施方式
在目前大规模发展的数据应用中,尤其是金融、物流、保险等行 业,实时监控报表发挥着举足轻重的作用。实时监控报表主要是对当 前数据的量化数据反映。这些量化数据反映对深入洞察事实真相,快 速分析决策都很重要,例如:
1.成本实时监控报表是对项目收入与成本情况的总体反映,通过 该实时监控报表及时反映项目当期实际盈亏情况,使项目领导层及时 掌握成本信息,及时发现问题并采取应对措施。
2.收入费用实时监控报表,该实时监控报表可以按月、季、年反 映各期项目的收入情况,通过该实时监控报表可以及时反映当期的预 估收入,为项目决策提供及时分析数据。
为了生成上述的实时监控报表,通常会频繁使用SQL查询语句。 图1显示了基于SQL查询语句的实时监控统计流程。当SQL查询语句 输入数据库之后,在数据库中进行相应的查询处理,最终显示所需的 统计指标量。例如在查询统计指标量的一个示例中,常用的SQL查询 语句具体如下:
SELECT epp.bm_ name AS'组别',epp.user_id AS'工号', epp.user_name AS'姓名',count(DISTINCT CASE WHEN epp.status='A01'THEN epp.eppid ELSE NULL END)AS'签单成功 量',count(DISTINCT CASE WHEN epp.status='A02'THEN epp.eppid ELSE NULL END)AS'签单跟进量',count(DISTINCT CASE WHEN epp.reason='B02'THEN epp.eppid ELSE NULL END)AS'联系失败 量',count(DISTINCT CASE WHEN epp.reason='B03'THEN epp.eppid ELSE NULL END)AS'跟进失败量'FROM eppgroup by epp.bm_name, epp.user_id,epp.user_name
但是,传统SQL查询语句的查询效率不高,很难满足实时监控报表 对查询效率的要求。为此,本发明提出了一种基于多维度KPI函数对SQL 查询语句进行扩充的方法。该多维度KPI函数作为一个中间桥梁,从最 底层开始映射,通过预先定义的统计处理方式提前计算所需的统计指 标量。当SQL查询语句调用相应的多维度KPI函数接口,并提供相应的 接口参数时,即可直接获取相应的统计指标量。因此,利用该多维度 KPI函数可以很好地解决SQL查询语句在实时监控报表中的查询效率问 题。
本发明中的多维度KPI函数是计算用户自定义指标量值的内核编 程接口函数。该函数需要用户自己定义统计指标量的相关维度,以及 通过各个维度计算统计指标量值的规则。例如在本发明的一个实施例 中,需要统计不同部门在某个项目上的资源投入情况。相关数据在关 系型数据库中映射如下所示:
部门信息表:department
员工信息表:user
项目信息表:item
项目参与部门信息:item_department
项目资源投入表:cost_info
基于上述信息表和统计指标量的查询需求,定义相应的多维度KPI 函数如下:
1)各个部门的资源投入总量为统计指标量
2)维度:部门和项目,即KPI(`user`.`Department_id`,`cost_ info`.`Item_id`)
3)统计运算公式是sum(`cost_info`.`cost`)
4)设置统计运算涉及到的表关联关系:
`cost_info`.`user_id`=`user`.`Department_id`
当出现其它统计指标量的查询需求时,可以根据实际情况生成相 应的多维度KPI函数。这种多维度KPI函数的具体定义方式是数据库 领域一般技术人员都能掌握的常规技术,在此就不一一说明了。
根据所生成的多维度KPI函数定义,预先查询数据库并将查询结 果保存在相应的多维度KPI函数结果表中。当SQL查询语句需要借助 多维度KPI函数提高查询效率时,调用相应的多维度KPI函数接口, 并提供传入参数值查询相应的多维度KPI函数结果表,可以直接获取 相应的统计指标量。
图2为基于多维度KPI函数对SQL查询语句进行扩充的方法流程图。 SQL查询语句输入数据库之后,在数据库中进行相应的查询处理,然后 发送统计指标维度值给多维度KPI函数。多维度KPI函数预先向数据库 发出SQL查询请求,经数据库处理后产生相应的统计指标量,并保存在 相应的多维度KPI函数结果表中。当SQL查询语句的查询请求(统计指 标维度值)传给多维度KPI函数之后,该多维度KPI函数从数据库中获 得已经存储的统计指标量,并对外显示该统计指标量。
下面是一个使用多维度KPI函数扩充的SQL查询语句的示例:
SELECT user.bm_name AS'组别',user.user_id AS'工号', user.user_name AS'姓名',KPI(1,user.user_id)AS'签单成功 量',KPI(2,user.user_id)AS'签单跟进量',KPI(3, user.user_id)AS'联系失败量',KPI(4,user.user_id)AS' 跟进失败量'FROM user
如上所述,使用多维度KPI函数扩充的SQL查询语句,查询只有几 万数据量公司的员工表,将查询的员工ID值传给多维度KPI函数,该多 维度KP I函数会将提前计算好的统计指标量返回,SQL查询语句就类似 于查询了一个常量的统计指标值。而传统的SQL查询语句,需在几百万 数据量的业务流表上进行查询统计处理,自然查询效率要低很多。另 外,利用该多维度KP I函数还可以将需要在同一时间处理的事务,分散 到各个时段进行处理。因此相较于基于SQL查询的实时监控统计而言, 通过多维度KPI函数提供统计处理,有效分担了数据库的查询处理压 力。
表1显示了基于SQL查询进行的实时监控统计和基于多维度KPI 函数进行的实时监控统计的具体区别:
表1
从表1所示的比较结果来看,使用多维度KPI函数扩充的SQL查询语 句比传统的SQL查询语句的效率高,并且在资源利用率、复杂度等方面 都有明显的优势。因此,该方法更适合在实时监控报表中使用。
上面对本发明所提供的通过多维度KPI函数对SQL查询语句进行扩 充的方法进行了详细的说明。对本领域的一般技术人员而言,在不背离 本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对 本发明专利权的侵犯,将承担相应的法律责任。
机译: 用于扩展用于处理与SQL查询语句一起打包的控制语句的SQL编译器的系统,方法和程序
机译: SQL一种用于对SQL查询进行分类的方法一种用于检测异常发生的方法和一种计算设备
机译: 一种为动态SQL语句分配带有最佳项目描述符的SQL描述符的方法,并通过一个SQL语句获取列信息