基于扩展预计算模型和SQL函数的超大集合分析方法及装置转让专利

申请号 : CN201911274982.2

文献号 : CN111125147B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 史少锋韩卿李扬

申请人 : 跬云(上海)信息科技有限公司

摘要 :

本发明公开一种基于扩展预计算模型和SQL函数的超大集合分析方法及装置,其中方法包括如下步骤:将OLAP预计算模型中Cube下的原子指标抽象为通用指标,该通用指标包括数值指标和集合指标;在原子指标抽象后的Cube中存储各个维度组合下的集合明细数据;采用包含UDF和UDAF的扩展SQL函数对集合明细数据进行查询解析,并返回解析结果。采用本发明,可以减少存储空间的占用,提高计算效率,实现灵活查询。

权利要求 :

1.一种基于扩展预计算模型和SQL函数的超大集合分析方法,其特征在于,包括:将OLAP预计算模型中Cube下的原子指标抽象为通用指标,所述通用指标包括数值指标和集合指标;

在原子指标抽象后的Cube中存储各个维度组合下的集合明细数据;

采用包含UDF和UDAF的扩展SQL函数对所述集合明细数据进行查询解析,并返回解析结果;

所述采用包含UDF和UDAF的扩展SQL函数对所述集合明细数据进行查询解析,并返回解析结果,包括:

采用UDF将所述集合明细数据转化为适合集合操作的数据结构;

采用UDAF对经过UDF解析的集合明细数据中的集合进行聚合运算,所述聚合运算包括合并、交集以及异或中的一个或多个;

识别SQL查询语句,并在UDF/UDAF运算后的集合中查找所述SQL查询语句对应的查询结果进行输出;

所述识别SQL查询语句,并在UDF/UDAF运算后的集合中查找所述SQL查询语句对应的查询结果进行输出,包括:

基于查询解析器验证所述UDF和所述UDAF执行过程的合法性;

识别SQL查询语句,生成对应的执行方案;

采用查询执行器按照所述执行方案执行所述查询语句,输出查询结果。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:定义所述通用指标下的指标返回参数。

3.根据权利要求1所述的方法,其特征在于,所述方法还包括:采用数组类型和/或位图数据结构实现所述集合指标的存储。

4.一种基于扩展预计算模型和SQL函数的超大集合分析装置,其特征在于,包括:OLAP模型扩展模块,用于将OLAP预计算模型中Cube下的原子指标抽象为通用指标,所述通用指标包括数值指标和集合指标;

明细数据存储模块,用于在原子指标抽象后的Cube中存储各个维度组合下的集合明细数据;

SQL函数查询解析模块,用于采用包含UDF和UDAF的扩展SQL函数对所述集合明细数据进行查询解析,并返回解析结果;

所述SQL函数查询解析模块包括:UDF操作单元,用于采用UDF将所述集合明细数据转化为适合集合操作的数据结构;

UDAF操作单元,用于采用UDAF对经过UDF解析的集合明细数据中的集合进行聚合运算,所述聚合运算包括合并、交集以及异或中的一个或多个;

SQL查询解析单元,用于识别SQL查询语句,并在UDF/UDAF运算后的集合中查找所述SQL查询语句对应的查询结果进行输出;

其中,所述识别SQL查询语句,并在UDF/UDAF运算后的集合中查找所述SQL查询语句对应的查询结果进行输出,包括:基于查询解析器验证所述UDF和所述UDAF执行过程的合法性;

识别SQL查询语句,生成对应的执行方案;

采用查询执行器按照所述执行方案执行所述查询语句,输出查询结果。

5.根据权利要求4所述的装置,其特征在于,所述装置还包括:参数定义模块,用于定义所述通用指标下的指标返回参数。

6.根据权利要求4所述的装置,其特征在于,所述装置还包括:集合指标存储实现模块,用于采用数组类型和/或位图数据结构实现所述集合指标的存储。

7.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至3任一项所述的基于扩展预计算模型和SQL函数的超大集合分析方法。

说明书 :

基于扩展预计算模型和SQL函数的超大集合分析方法及装置

技术领域

[0001] 本发明涉及大数据处理技术领域,尤其涉及一种基于扩展预计算模型和SQL函数的超大集合分析方法及装置。

背景技术

[0002] 随着互联网、移动App的迅速发展,用户量快速增长,网站、移动App的运营者们收集的数据量越来越大。运营人员需要对用户在网站、app上的行为进行统计分析,找出其中
的规律变化,从而帮助运营者进行决策。集合运算是解决上述问题的一种普遍的方法:例
如,找出昨天的用户集合,与今天的用户集合做并集(两天访问过的所有去重用户)或交集
(连续两天访问的用户),从这些数字的变化,业务人员能够计算出站点或App的留存率等指
标,其中留存率分析是用户行为分析中的一个重要方法,被普遍使用,例如1日留存、7日留
存、行为漏斗转化率等。
[0003] 集合运算的复杂度在于,不光要对当日或当下页面的访问用户集合进计算,还要跟另一日或另一个页面的用户集合做交、并、异或等计算。一旦集合中的元素很多,直接在
大量数据上进行集合计算需要耗费大量的计算资源,以及过长的查询耗时,从而导致很难
被使用。此外,由于需求多变,每次变动如果都从源数据进行计算的话,将产生大量的资源
浪费,也是难以被接受的。
[0004] 集合运算的常用方法是根据预先确定的需求,依次计算出每日或每个页面的用户/元素集合、然后对这些集合做进一步去重、交叉、合并等计算,计算出新的集合以及指
标。然而,上述运算过程略复杂、不灵活,而且效率低;一旦需求发生变化,各个集合都需要
重新计算,特别是交集的计算因为可能涉及到较大集合的join操作,效率尤其低。在面对如
今业务灵活变化的情况时,这样的做法越来越难以保证及时性,即使通过对数据进行采样
达到减少数据量的目的,但却不能提高灵活性,同时也降低了准确性。这对分析的实际应用
效果带来了巨大影响。

发明内容

[0005] 本发明实施例提供一种基于扩展预计算模型和SQL函数的超大集合分析方法及装置,可以提高分析的计算效率实现灵活查询,同时可以减少存储空间的占用。
[0006] 本发明实施例第一方面提供了一种基于扩展预计算模型和SQL函数的超大集合分析方法,可包括:
[0007] 将OLAP预计算模型中Cube下的原子指标抽象为通用指标,通用指标包括数值指标和集合指标;
[0008] 在原子指标抽象后的Cube中存储各个维度组合下的集合明细数据;
[0009] 采用包含UDF和UDAF的扩展SQL函数对集合明细数据进行查询解析,并返回解析结果。
[0010] 进一步的,上述方法还包括:
[0011] 定义通用指标下的指标返回参数。
[0012] 进一步的,上述方法还包括:
[0013] 采用数组类型和/或位图数据结构实现集合指标的存储。
[0014] 进一步的,采用包含UDF和UDAF的扩展SQL函数对集合明细数据进行查询解析,并返回解析结果,包括:
[0015] 采用UDF将集合明细数据转化为适合集合操作的数据结构;
[0016] 采用UDAF对经过UDF解析的集合明细数据中的集合进行聚合运算,聚合运算包括合并、交集以及异或中的一个或多个;
[0017] 识别SQL查询语句,并在UDF/UDAF运算后的集合中查找SQL查询语句对应的查询结果进行输出。
[0018] 进一步的,识别SQL查询语句,并在UDF/UDAF运算后的集合中查找SQL查询语句对应的查询结果进行输出,包括:
[0019] 基于查询解析器验证UDF和UDAF执行过程的合法性;
[0020] 识别SQL查询语句,生成对应的执行方案;
[0021] 采用查询执行器按照执行方案执行查询语句,输出查询结果。
[0022] 本发明实施例第二方面提供了一种基于扩展预计算模型和SQL函数的超大集合分析装置,可包括:
[0023] OLAP模型扩展模块,用于将OLAP预计算模型中Cube下的原子指标抽象为通用指标,通用指标包括数值指标和集合指标;
[0024] 明细数据存储模块,用于在原子指标抽象后的Cube中存储各个维度组合下的集合明细数据;
[0025] SQL函数查询解析模块,用于采用包含UDF和UDAF的扩展SQL函数对集合明细数据进行查询解析,并返回解析结果。
[0026] 进一步的,装置还包括:
[0027] 参数定义模块,用于定义通用指标下的指标返回参数。
[0028] 进一步的,装置还包括:
[0029] 集合指标存储实现模块,用于采用数组类型和/或位图数据结构实现集合指标的存储。
[0030] 进一步的,SQL函数查询解析模块包括:
[0031] UDF操作单元,用于采用UDF将集合明细数据转化为适合集合操作的数据结构;
[0032] UDAF操作单元,用于采用UDAF对经过UDF解析的集合明细数据中的集合进行聚合运算,聚合运算包括合并、交集以及异或中的一个或多个;
[0033] SQL查询解析单元,用于识别SQL查询语句,并在UDF/UDAF运算后的集合中查找SQL查询语句对应的查询结果进行输出。
[0034] 进一步的,SQL查询解析单元包括:
[0035] 合法性验证子单元,用于基于查询解析器验证UDF和UDAF执行过程的合法性;
[0036] SQL识别子单元,用于识别SQL查询语句,生成对应的执行方案;
[0037] 查询执行子单元,用于采用查询执行器按照执行方案执行查询语句,输出查询结果。
[0038] 本发明实施例第三方面提供了一种计算机设备,该设备包括处理器和存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程
序、代码集或指令集由处理器加载并执行以实现上述方面的基于扩展预计算模型和SQL函
数的超大集合分析方法。
[0039] 本发明实施例第四方面提供了一种计算机存储介质,该计算机存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、所述代码集
或指令集由处理器加载并执行以实现上述方面所述的基于扩展预计算模型和SQL函数的超
大集合分析方法。
[0040] 在本发明实施例中,通过扩展传统OLAP模型使用位图作为量度,在Cube中存储各种维度值下的集合,减少了存储空间的占用提高了计算效率,此外通过扩展SQL查询方法对
不同条件的集合在SQL执行期间动态进行跨行合并和交集计算,实现了灵活查询。

附图说明

[0041] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。
[0042] 图1是本发明实施例提供的一种基于扩展预计算模型和SQL函数的超大集合分析方法的流程示意图;
[0043] 图2是本发明实施例提供的传统OLAP模型的结构示意图;
[0044] 图3是本发明实施例提供的扩展OLAP模型的结构示意图;
[0045] 图4是本发明实施例提供的一种基于扩展预计算模型和SQL函数的超大集合分析装置的结构示意图;
[0046] 图5是本发明实施例提供的SQL函数查询解析模块的结构示意图;
[0047] 图6是本发明实施例提供的SQL查询解析单元的结构示意图;
[0048] 图7是本发明实施例提供的一种计算机设备的结构示意图。

具体实施方式

[0049] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
[0050] 本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含,术语“第一”和“第二”仅是为了区别命名,并不代表数
字的大小或者排序。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限
定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对
于这些过程、方法、产品或设备固有的其他步骤或单元。
[0051] 本发明实施例提供的基于扩展预计算模型和SQL函数的超大集合分析方法可以应用于超大集合灵活分析的应用场景中。
[0052] 本发明实施例中,基于扩展预计算模型和SQL函数的超大集合分析方法可以应用于计算机设备中,该计算机设备可以是电脑,也可以是其它具备计算处理能力的终端设备。
[0053] 如图1所示,基于扩展预计算模型和SQL函数的超大集合分析方法至少可以包括以下几个步骤:
[0054] S101,将OLAP预计算模型中Cube下的原子指标抽象为通用指标。
[0055] 需要说明的是,传统的OLAP模型中Cube下的原子指标如图2所示通常只包括数值指标,如integer、double和decimal等,因此传统OLAP模型中Cube只存储单纯某种类型的数
据,而不保存数组或者位图结构的复杂结构数据。
[0056] 在本申请实施例中,可以通过接口将普通的原子指标抽象成通用指标如图3所示,该通用指标除了包括上述数值指标,还包括集合等复杂指标。设备可以在集合指标下存储
数组(Array)或位图(Bitmap)等结构的数据,也就是说,集合指标既可以使用简单的数组类
型进行存储(例如元素不多的情况),也可以使用空间紧凑的位图(Bitmap)数据结构(例如
元素很多的情况),以达到节省空间的目的;如下所示:
[0057] {010001110001001001110}代表集合[1,5,6,7,11,14,15,16]。
[0058] 需要说明的是,本申请扩展了指标的定义,还可以定义通用指标下的指标返回参数,例如,在接口上只定义几个必须的指标返回参数:
[0059] dataType():返回此指标的度量类型。
[0060] getValue():返回此指标对象。
[0061] getSerializer():返回对value对象进行序列化/反序列化的序列化器。
[0062] 可以理解的是,在通用指标接口下,用户可以自行扩展其实现方法,前提是保证实现的语义准确。
[0063] S102,在原子指标抽象后的Cube中存储各个维度组合下的集合明细数据。
[0064] 可以理解的是,上述各个维度组合下的集合明细数据既可以包括integer、double和decimal等类型的数据,也可以包括数组或者位图结构的数据,也可以包括任一两个或多
个类型数据的组合。
[0065] 在可选实施例中,Cube可以对上述数据按不同的维度组合进行预聚合,并可以把结果保存下来,以便后续查询。
[0066] S103,采用包含UDF和UDAF的扩展SQL函数对集合明细数据进行查询解析,并返回解析结果。
[0067] 在本申请实施例中,可以利用SQL引擎通常支持用户自定义函数和用户自定义聚合函数这一特性,引入UDF和UDAF对集合进行运算。需要说明的是,引入的UDF和UDAF需要事
先注册集合表达式解析和集合操作。
[0068] 在一种实现方式中,UDF函数可以特定用于解析集合操作的输入表达,以提供灵活解析的能力,并可以将原始信息即上述OLAP中保存的集合明细数据转化成适合集合操作的
数据结构,比如位图。需要说明的是,UDF不仅能识别常见的表达式,如与、或操作,而且可以
方便扩展以支持更多形式。它的接口可以是但不仅限于:
[0069] Function(ID_COLUMN,DIM_COLUMN,DIM_VALUE_EXPRESSION)
[0070] 其中:ID_COLUMN是一个列名,表示以该列的值来计算集合(集合元素);DIM_COLUMN是一个维度列名,表明将以此维度来聚合成多个集合;DIM_VALUE_EXPRESSION是一
个表达式,它可以是一个值、一组值,或描述一组值的表达式;例如“北京”代表维度值是北
京的ID集合;“北京|上海”代表维度值是北京或上海的ID集合。这里的表达式不仅限于一种
具体格式,还可以是各种表达式。
[0071] 在一种实现方式中,UDAF可以是一个或一组能对集合进行聚合操作的函数。它可以对经过UDF解析的集合明细数据中的集合进行聚合运算,例如进行合并、交集、异或等操
作。此处以并集COLLECTION_UNION(集合A,集合B,集合C……)为例,UDAF可以将集合A、B、C
联合在一起,形成一个新的大集合,具体实现中使用集合数据结构的对应算法进行实现;以
交集COLLECTION_JOIN(集合A,集合B,集合C)为例,UDAF可以将集合A、B、C取交集,形成一个
新的集合。
[0072] 进一步的,设备可以采用查询解析器对用户输入的SQL查询语句进行识别,并判定其合法性,然后采用查询执行器执行上述查询语句得到查询结果并输出。
[0073] 具体实现中,在注册UDF/UDAF之后,查询解析器可以验证二者的合法性,并在识别出查询语句后,形成执行方案。进一步的,查询执行器按照该方案执行查询语句,输出查询
结果,达到在SQL中执行集合操作的目的。
[0074] 在本发明实施例中,通过扩展传统OLAP模型使用位图作为量度,在Cube中存储各种维度值下的集合,减少了存储空间的占用提高了计算效率,此外通过扩展SQL查询方法对
不同条件的集合在SQL执行期间动态进行跨行合并和交集计算,实现了灵活查询。
[0075] 下面将结合附图4‑图6,对本发明实施例提供的基于扩展预计算模型和SQL函数的超大集合分析装置进行详细介绍。需要说明的是,附图4‑图6所示的超大集合分析装置,用
于执行本发明图1‑图3所示实施例的方法,为了便于说明,仅示出了与本发明实施例相关的
部分,具体技术细节未揭示的,请参照本发明图1‑图3所示的实施例。
[0076] 请参见图4,为本发明实施例提供了一种超大集合分析装置的结构示意图。如图4所示,本发明实施例的超大集合分析装置1可以包括:OLAP模型扩展模块11、明细数据存储
模块12、SQL函数查询解析模块13、参数定义模块14和集合指标存储实现模块15。其中,SQL
函数查询解析模块13如图5所示,包括UDF操作单元131、UDAF操作单元132和SQL查询解析单
元133,SQL查询解析单元133如图6所示,包括合法性验证子单元1331、SQL识别子单元1332
和查询执行子单元1333。
[0077] OLAP模型扩展模块11,用于将OLAP预计算模型中Cube下的原子指标抽象为通用指标,通用指标包括数值指标和集合指标。
[0078] 明细数据存储模块12,用于在原子指标抽象后的Cube中存储各个维度组合下的集合明细数据。
[0079] SQL函数查询解析模块13,用于采用包含UDF和UDAF的扩展SQL函数对集合明细数据进行查询解析,并返回解析结果。
[0080] 参数定义模块14,用于定义通用指标下的指标返回参数。
[0081] 集合指标存储实现模块15,用于采用数组类型和/或位图数据结构实现集合指标的存储。
[0082] 在可选实施例中,SQL函数查询解析模块13包括:
[0083] UDF操作单元131,用于采用UDF将集合明细数据转化为适合集合操作的数据结构。
[0084] UDAF操作单元132,用于采用UDAF对经过UDF解析的集合明细数据中的集合进行聚合运算,聚合运算包括合并、交集以及异或中的一个或多个。
[0085] SQL查询解析单元133,用于识别SQL查询语句,并在UDF/UDAF运算后的集合中查找SQL查询语句对应的查询结果进行输出。
[0086] 进一步的,SQL查询解析单元133包括:
[0087] 合法性验证子单元1331,用于基于查询解析器验证UDF和UDAF执行过程的合法性。
[0088] SQL识别子单元1332,用于识别SQL查询语句,生成对应的执行方案。
[0089] 查询执行子单元1333,用于采用查询执行器按照执行方案执行查询语句,输出查询结果。
[0090] 需要说明的是,本实施例中各模块和单元的执行过程可以参见上述方法实施例中的描述,此处不再赘述。
[0091] 在本发明实施例中,通过扩展传统OLAP模型使用位图作为量度,在Cube中存储各种维度值下的集合,减少了存储空间的占用提高了计算效率,此外通过扩展SQL查询方法对
不同条件的集合在SQL执行期间动态进行跨行合并和交集计算,实现了灵活查询。
[0092] 本发明实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图1‑图3所示实施例的方法步骤,具体执
行过程可以参见图1‑图3所示实施例的具体说明,在此不进行赘述。
[0093] 本申请实施例还提供了一种计算机设备。如图7所示,计算机设备20可以包括:至少一个处理器201,例如CPU,至少一个网络接口204,用户接口203,存储器205,至少一个通
信总线202,可选地,还可以包括显示屏206。其中,通信总线202用于实现这些组件之间的连
接通信。其中,用户接口203可以包括触摸屏、键盘或鼠标等等。网络接口204可选的可以包
括标准的有线接口、无线接口(如WI‑FI接口),通过网络接口204可以与服务器建立通信连
接。存储器205可以是高速RAM存储器,也可以是非不稳定的存储器(non‑volatile 
memory),例如至少一个磁盘存储器,存储器205包括本发明实施例中的flash。存储器205可
选的还可以是至少一个位于远离前述处理器201的存储系统。如图7所示,作为一种计算机
存储介质的存储器205中可以包括操作系统、网络通信模块、用户接口模块以及程序指令。
[0094] 需要说明的是,网络接口204可以连接接收器、发射器或其他通信模块,其他通信模块可以包括但不限于WiFi模块、蓝牙模块等,可以理解,本发明实施例中计算机设备也可
以包括接收器、发射器和其他通信模块等。
[0095] 处理器201可以用于调用存储器205中存储的程序指令,并使计算机设备20执行以下操作:
[0096] 将OLAP预计算模型中Cube下的原子指标抽象为通用指标,通用指标包括数值指标和集合指标;
[0097] 在原子指标抽象后的Cube中存储各个维度组合下的集合明细数据;
[0098] 采用包含UDF和UDAF的扩展SQL函数对集合明细数据进行查询解析,并返回解析结果。
[0099] 在一些实施例中,设备20还用于:
[0100] 定义通用指标下的指标返回参数。
[0101] 在一些实施例中,设备20还用于:
[0102] 采用数组类型和/或位图数据结构实现集合指标的存储。
[0103] 在一些实施例中,设备20在采用包含UDF和UDAF的扩展SQL函数对集合明细数据进行查询解析,并返回解析结果时,具体用于:
[0104] 采用UDF将集合明细数据转化为适合集合操作的数据结构;
[0105] 采用UDAF对经过UDF解析的集合明细数据中的集合进行聚合运算,聚合运算包括合并、交集以及异或中的一个或多个;
[0106] 识别SQL查询语句,并在UDF/UDAF运算后的集合中查找SQL查询语句对应的查询结果进行输出。
[0107] 在一些实施例中,设备20在识别SQL查询语句,并在UDF/UDAF运算后的集合中查找SQL查询语句对应的查询结果进行输出时,具体用于:
[0108] 基于查询解析器验证UDF和UDAF执行过程的合法性;
[0109] 识别SQL查询语句,生成对应的执行方案;
[0110] 采用查询执行器按照执行方案执行查询语句,输出查询结果。
[0111] 在本发明实施例中,通过扩展传统OLAP模型使用位图作为量度,在Cube中存储各种维度值下的集合,减少了存储空间的占用提高了计算效率,此外通过扩展SQL查询方法对
不同条件的集合在SQL执行期间动态进行跨行合并和交集计算,实现了灵活查询。
[0112] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质
中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁
碟、光盘、只读存储记忆体(Read‑Only Memory,ROM)或随机存储记忆体(Random Access 
Memory,RAM)等。
[0113] 以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。