著录项信息
专利名称 | 一种基于维度组合的指标计算方法和系统 |
申请号 | CN201510708683.0 | 申请日期 | 2015-10-28 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2016-02-24 | 公开/公告号 | CN105354272A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 中通服公众信息产业股份有限公司 | 申请人地址 | 新疆维吾尔自治区乌鲁木齐市黄河路191号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 中通服公众信息产业股份有限公司 | 当前权利人 | 中通服公众信息产业股份有限公司 |
发明人 | 魏晟坤;尚志强;尚超;王秀英 |
代理机构 | 济南智圆行方专利代理事务所(普通合伙企业) | 代理人 | 刘尔才 |
摘要
本发明实施例提出了一种基于维度组合的指标计算方法和系统,包括:获取所有数据的公共属性、维度、度量值,其中每一数据至少具有两个维度;统计出数据中所有的维度组合,维度组合的度量总值为维度组合所包括的所有数据的度量值之和;生成维度统计表,其中维度统计表中的每一行代表一个维度组合,维度统计表至少包括:代表维度的列、代表维度组合对应的度量总值的列、代表维度组合被指标统计的列;获取所有指标,其中每一指标是一个表示维度组合中若干维度的维度值范围限定的统计条件;确定每一指标所表示的维度组合,并将维度统计表中相应的维度组合添加标示;遍历维度统计表的每一行,并确定是否有被标示多于一次或是未被标示的行。
1.一种基于维度组合的指标计算方法,其特征在于,包括:
步骤1、获取所有数据的公共属性、维度、度量值,其中每一数据至少具有两个维度;
步骤2、统计所有数据,并将各维度列取值一致的数据合并为一条记录,作为一个维度组合,以统计出数据中所有的维度组合,且该维度组合的度量总值为所述这些维度列取值一致的数据的度量值之和;生成维度统计表,其中所述维度统计表中的每一行代表一个维度组合,且所述维度统计表至少包括:代表维度的列、代表维度组合对应的度量总值的列、代表维度组合被指标统计的列;
步骤3、获取所有指标,其中每一指标是一个表示维度组合中若干维度的维度值范围限定的统计条件;确定每一指标所表示的维度组合,并将所述维度统计表中相应的维度组合添加标示;遍历所述维度统计表的每一行,并确定是否有被标示多于一次或是未被标示的行;
其中,所述每一指标对应一唯一标示,且所述确定每一指标所表示的维度组合,并将所述维度统计表中相应的维度组合添加标示具体为:
确定每一指标所表示的维度组合,并将所述指标的唯一标示添加到所述维度统计表中相应的维度组合的代表维度组合被指标统计的列内。
2.根据权利要求1所述的基于维度组合的指标计算方法,其特征在于,所述遍历所述维度统计表的每一行,并确定是否有被标示多于一次或是未被标示的行具体为:
采用UPDATE语句遍历所述维度统计表的每一行中的代表维度组合被指标统计的列,并判断是否有一行的该列为空或具有两个以上的所述指标对应一唯一标示。
3.根据权利要求2所述的基于维度组合的指标计算方法,其特征在于,所述UPDATE语句具体为:
UPDATE DIMENSION SET
TARGET= TARGET||’,id1’,COUNT=COUNT+1
WHERE 维度1=预设值 AND 维度2=预设值;
其中所述DIMENSION为所述维度统计表;所述COUNT为代表维度组合被指标统计次数的列;
所述TARGET为代表维度组合被哪些指标统计的列。
4.根据权利要求1-3任一项所述的基于维度组合的指标计算方法,其特征在于,所述方法还包括:
步骤4、将通过步骤3稽核后的维度统计表与原数据进行关联以生成最终表,其中所述最终表至少包括:一个或多个公共属性的列;一个代表指标的列;一个代表维度组合对应的度量总值的列。
5.一种基于维度组合的指标计算系统,其特征在于,包括:
提取装置,用于获取所有数据的公共属性、维度、度量值,其中每一数据至少具有两个维度;
统计装置,用于统计具有数据的维度,统计所有数据,并将各维度列取值一致的数据合并为一条记录,作为一个维度组合,以统计出数据中所有的维度组合,且该维度组合的度量总值为所述这些维度列取值一致的数据的度量值之和;还用于生成维度统计表,其中所述维度统计表中的每一行代表一个维度组合,且所述维度统计表至少包括:代表维度的列、代表维度组合对应的度量总值的列、代表维度组合被指标统计的列;
稽核装置,用于获取所有指标,其中每一指标是一个表示维度组合中若干维度的维度值范围限定的统计条件;确定每一指标所表示的维度组合,并将所述维度统计表中相应的维度组合添加标示;还用于遍历所述维度统计表的每一行,并确定是否有被标示多于一次或是未被标示的行;
其中,所述每一指标对应一唯一标示,且所述确定每一指标所表示的维度组合,并将所述维度统计表中相应的维度组合添加标示具体为:
确定每一指标所表示的维度组合,并将所述指标的唯一标示添加到所述维度统计表中相应的维度组合的代表维度组合被指标统计的列内。
6.根据权利要求5所述的基于维度组合的指标计算系统,其特征在于,所述遍历所述维度统计表的每一行,并确定是否有被标示多于一次或是未被标示的行,如果是则报错具体为:
采用UPDATE语句遍历所述维度统计表的每一行中的代表维度组合被指标统计的列,并判断是否有一行的该列为空或具有两个以上的所述指标对应一唯一标示。
7.根据权利要求6所述的基于维度组合的指标计算系统,其特征在于,所述UPDATE语句具体为:
UPDATE DIMENSION SET
TARGET= TARGET||’,id1’,COUNT=COUNT+1
WHERE 维度1=预设值 AND 维度2=预设值;
其中所述DIMENSION为所述维度统计表;所述COUNT为代表维度组合被指标统计次数的列;
所述TARGET为代表维度组合被哪些指标统计的列。
8.根据权利要求5-7任一项所述的基于维度组合的指标计算系统,其特征在于,所述系统还包括:
关联模块,用于将稽核模块稽核后的维度统计表与原数据进行关联以生成最终表,其中所述最终表至少包括:一个或多个公共属性的列;一个代表指标的列;一个代表维度组合对应的度量总值的列。
一种基于维度组合的指标计算方法和系统\n技术领域\n[0001] 本发明涉及数据处理领域,特别是指可以应用在企业信息化领域的一种基于维度组合的指标计算方法和系统。\n背景技术\n[0002] 在企业进行数据统计时,通常是将各种数据汇总成一张宽表。以企业最重要的“收入”这一数据为例,通常是将各种来源的收入数据做轻粒度汇总整合成一张宽表,然后通过稽核以确保宽表的总收入与各种来源的收入合计一致。具体的,是将各种收入数据编写呈结构化查询语句(Structured Query Language以下简称SQL)以对各种收入数据一一进行运算;然后对所有数据的运算结果求和,并与总收入的数据进行对比,如果一致就说明数据是正确的。\n[0003] 如图1所示的是举例说明的一个各种数据汇总成的一张宽表,其中第一列、第二列(COL1、COL2)是每一数据的公共属性,而第三、第四、第五列(DIM1、DIM2、DIM3)是数据的3个维度,VALUE是该数据的数值(在本例中为该数据对应的“收入”)。现在的数据处理方式是直接对这个宽表进行数据处理,但是随着公共属性、维度的增加,很明显的该宽表将会变得极大。特别是连锁店等大型企业,其每一数据的公共属性经常是几百项甚至上千项。由此可以看出现有技术的方法存在着明显的缺陷,导致计算效率极低:\n[0004] 1、随着维度型字段的增多,宽表的数据量会变的很大,单个数据计算消耗的时间也会增加;其中维度是指数据的外部特性,例如时间、地域、类型等;\n[0005] 2、随着业务发展,数据的数量也会越来越多,数据计算消耗的总时间会增加;\n[0006] 3、当核对时发现数据收入与宽表收入不一致时,很难定位是哪个数据的SQL语句出了问题;只有将所有数据计算出来后,才能进行数据稽核。\n发明内容\n[0007] 为解决这些问题,本发明提供了一种基于维度组合的指标计算方法和系统,能够极大的提高降低数据表的复杂度以提高计算效率,并能够确保可以随时可以对数据进行稽核。\n[0008] 为达到上述目的,本发明实施例提出了一种基于维度组合的指标计算方法,包括:\n[0009] 步骤1、获取所有数据的公共属性、维度、度量值,其中每一数据至少具有两个维度;\n[0010] 步骤2、统计所有数据,并将各维度列取值一致的数据合并为一条记录,作为一个维度组合,以统计出数据中所有的维度组合,且该维度组合的度量总值为所述这些维度列取值一致的数据的度量值之和;生成维度统计表,其中所述维度统计表中的每一行代表一个维度组合,且所述维度统计表至少包括:代表维度的列、代表维度组合对应的度量总值的列、代表维度组合被指标统计的列;\n[0011] 步骤3、获取所有指标,其中每一指标是一个表示维度组合中若干维度的维度值范围限定的统计条件;确定每一指标所表示的维度组合,并将所述维度统计表中相应的维度组合添加标示;遍历所述维度统计表的每一行,并确定是否有被标示多于一次或是未被标示的行。\n[0012] 其中,所述每一指标对应一唯一标示,且所述确定每一指标所表示的维度组合,并将所述维度统计表中相应的维度组合添加标示具体为:\n[0013] 确定每一指标所表示的维度组合,并将所述指标的唯一标示添加到所述维度统计表中相应的维度组合的代表维度组合被指标统计的列内。\n[0014] 其中,所述遍历所述维度统计表的每一行,并确定是否有被标示多于一次或是未被标示的行具体为:\n[0015] 采用UPDATE语句遍历所述维度统计表的每一行中的代表维度组合被指标统计的列,并判断是否有一行的该列为空或具有两个以上的所述指标对应一唯一标示。\n[0016] 其中,所述UPDATE语句具体为:\n[0017] UPDATE DIMENSION SET\n[0018] TARGET= TARGET||’,id1’,COUNT=COUNT+1\n[0019] WHERE 维度1=预设值 AND 维度2=预设值;\n[0020] 其中所述DIMENSION为所述维度统计表;所述COUNT为代表维度组合被指标统计次数的列。所述TARGET为代表维度组合被哪些指标统计的列。\n[0021] 其中,所述方法还包括:\n[0022] 步骤4、将通过步骤3稽核后的维度统计表与原数据进行关联以生成最终表,其中所述最终表至少包括:一个或多个公共属性的列;一个代表指标的列;一个代表维度组合对应的度量总值的列。\n[0023] 同时,本发明实施例还提出了一种基于维度组合的指标计算系统,包括:\n[0024] 提取装置,用于获取所有数据的公共属性、维度、度量值,其中每一数据至少具有两个维度;\n[0025] 统计装置,用于统计具有数据的维度,统计所有数据,并将各维度列取值一致的数据合并为一条记录,作为一个维度组合,以统计出数据中所有的维度组合,且该维度组合的度量总值为所述这些维度列取值一致的数据的度量值之和;还用于生成维度统计表,其中所述维度统计表中的每一行代表一个维度组合,且所述维度统计表至少包括:代表维度的列、代表维度组合对应的度量总值的列、代表维度组合被指标统计的列;\n[0026] 稽核装置,用于获取所有指标,其中每一指标是一个表示维度组合中若干维度的维度值范围限定的统计条件;确定每一指标所表示的维度组合,并将所述维度统计表中相应的维度组合添加标示;还用于遍历所述维度统计表的每一行,并确定是否有被标示多于一次或是未被标示的行。\n[0027] 其中,所述每一指标对应一唯一标示,且所述确定每一指标所表示的维度组合,并将所述维度统计表中相应的维度组合添加标示具体为:\n[0028] 确定每一指标所表示的维度组合,并将所述指标的唯一标示添加到所述维度统计表中相应的维度组合的代表维度组合被指标统计的列内。\n[0029] 其中,所述遍历所述维度统计表的每一行,并确定是否有被标示多于一次或是未被标示的行,如果是则报错具体为:\n[0030] 采用UPDATE语句遍历所述维度统计表的每一行中的代表维度组合被指标统计的列,并判断是否有一行的该列为空或具有两个以上的所述指标对应一唯一标示。\n[0031] 其中,所述UPDATE语句具体为:\n[0032] UPDATE DIMENSION SET\n[0033] TARGET= TARGET||’,id1’,COUNT=COUNT+1\n[0034] WHERE 维度1=预设值 AND 维度2=预设值;\n[0035] 其中所述DIMENSION为所述维度统计表;所述COUNT为代表维度组合被指标统计次数的列。所述TARGET为代表维度组合被哪些指标统计的列。\n[0036] 其中,所述系统还包括:\n[0037] 关联模块,用于将稽核模块稽核后的维度统计表与原数据进行关联以生成最终表,其中所述最终表至少包括:一个或多个公共属性的列;一个代表指标的列;一个代表维度组合对应的度量总值的列。\n[0038] 本发明实施例的有益效果是:本发明实施例利用组合的思想来构建模型,把原有的宽表数据集抽象成为一个拥有所有维度组合的集合,之后把每个维度组合分配给各个指标,之后用宽表与这些维度组合关联直接获得各数据的结果。这样可以有效提升数据计算的性能,并提供了数据稽核的方法。经过实际数据验证,在拥有一亿条记录,9个维度,3个公共属性,1个度量值的宽表数据集,统计5000个指标,使用该方法计算,只需要10分钟,而传统方法需要运算5个小时以上,效率的提升达30倍以上。\n附图说明\n[0039] 图1为本发明实施例中一个宽表数据集的示意图;\n[0040] 图2为利用本发明实施例的方法和系统生成的维度统计表的示意图;\n[0041] 图3为稽核后的示意图;\n[0042] 图4为最终表的示意图;\n[0043] 图5为本发明实施例的方法流程图。\n具体实施方式\n[0044] 为了便于理解,现对于本发明实施例中提到的一些名词进行解释:\n[0045] 度量:是指在数据表中,可以计量的数值列,可以做SUM等汇聚操作。\n[0046] 维度:是指有分类意义的列,如方向,可以分为东、南、西、北,方向就可以作为一个维度,在表中对应一列。\n[0047] 维度值、维度取值:是一个意思,指维度对应的列中的取值范围,比如方向这个维度,他的取值范围是东、南、西、北,在具体的某一行中,该维度的值也是固定的,体现在表中就是某行的方向字段的取值是东,而另一行的方向字段取值为西。\n[0048] 维度组合(全称是维度取值的组合):当有2个或2个以上维度的时候,每个维度的不同取值,在实际业务场景中,会进行组合,比如有2个维度,一个是方向(东、南、西、北),一个是工具(车、船、飞机),在乘坐交通工具移动的业务场景中,维度的值会进行组合,比如坐车向东(车,东),坐飞机向北(飞机,北),这样的每一个元组(车,东),(飞机,北)等等,就是一个维度组合,在这个场景下,最大的维度组合的数量,是C(4,1)*C(3,1)=12个,C(N,1)这个是数学中的排列组合公式。如果有更多的维度,以此类推。而实际的数据中,可能有一些元组是不可能出现的,比如西边是海,那就不可能坐车向西,所以实际的维度组合数要比最大维度组合数小很多。\n[0049] 本发明实施例提出了一种基于维度组合的指标计算方法,其流程如图5所示的,包括:\n[0050] 步骤1、获取所有数据的公共属性、维度、度量值,其中每一数据至少具有两个维度;\n[0051] 步骤2、统计所有数据,并将各维度列取值一致的数据合并为一条记录,作为一个维度组合,以统计出数据中所有的维度组合,且该维度组合的度量总值为所述这些维度列取值一致的数据的度量值之和;生成维度统计表,其中所述维度统计表中的每一行代表一个维度组合,且所述维度统计表至少包括:代表维度的列、代表维度组合对应的度量总值的列、代表维度组合被指标统计的列;\n[0052] 步骤3、获取所有指标,其中每一指标是一个表示维度组合中若干维度的维度值范围限定的统计条件;确定每一指标所表示的维度组合,并将所述维度统计表中相应的维度组合添加标示;遍历所述维度统计表的每一行,并确定是否有被标示多于一次或是未被标示的行。\n[0053] 同时,本发明实施例还提出了一种基于维度组合的指标计算系统,包括:\n[0054] 提取装置,用于获取所有数据的公共属性、维度、度量值,其中每一数据至少具有两个维度;\n[0055] 统计装置,用于统计具有数据的维度,统计所有数据,并将各维度列取值一致的数据合并为一条记录,作为一个维度组合,以统计出数据中所有的维度组合,且该维度组合的度量总值为所述这些维度列取值一致的数据的度量值之和;还用于生成维度统计表,其中所述维度统计表中的每一行代表一个维度组合,且所述维度统计表至少包括:代表维度的列、代表维度组合对应的度量总值的列、代表维度组合被指标统计的列;\n[0056] 稽核装置,用于获取所有指标,其中每一指标是一个表示维度组合中若干维度的维度值范围限定的统计条件;确定每一指标所表示的维度组合,并将所述维度统计表中相应的维度组合添加标示;还用于遍历所述维度统计表的每一行,并确定是否有被标示多于一次或是未被标示的行。为了使上述方法更便于理解,本发明实施例中以背景技术部分提到的如图1所示的宽表为例对上述方法进行进一步说明。当然这种说明只是示例性质的,并不是对本发明所要求保护的范围的限定。\n[0057] 步骤1、获取所有数据的维度参数、数据值,其中每一数据至少具有两个维度。具体到图1,已经可以看到每一个数据对应的维度(DIM1、DIM2、DIM3)和参数值(VALUE)。\n[0058] 步骤2、统计所有维度组合,并生成维度统计表;所述维度统计表中至少包括包含每一维度组合以及该维度组合对应的总数据值,其中所述维度组合对应的总数据值为具有该维度组合的所有数据的数据值之和。\n[0059] 具体到图1,统计后生成的维度统计表如图2所示的。如图1所示,可以看出具有DIM1=1、DIM2=1、DIM3=1这种维度组合的是第一行(VALUE=79)、第九行(VALUE=88);因此在图2的维度统计表中,第一行的维度为DIM1=1、DIM2=1、DIM3=1的VALUE为79+88=167。具有DIM1=1、DIM2=1、DIM3=2的是第二行(VALUE为98)、第十行(VALUE=50);因此在图2的维度统计表中,第二行的维度为DIM1=1、DIM2=1、DIM3=2的VALUE为98+50=148。以此类推,穷举出所有维度组合并计算每一维度组合对应的总数据值,写入该维度统计表中。\n[0060] 步骤3、根据预设的指标确定每一维度组合被引用的次数,其中所述每一指标为一种特定的维度组合;确定是否有被引用次数不为1次的维度组合,如果有则输出报错信息。\n其中,指标是指根据需要设置的所需要的维度值。例如,配置了3个指标I1、I2、I3,这三个指标分别是:\n[0061] I1:DIM1=1,也就是指标I1是代表DIM1=1的所有数据;\n[0062] I2:DIM1=2 AND DIM2=1,也就是指标I2是代表DIM1=2且DIM2=1的所有数据;\n[0063] I3:DIM1=2 AND DIM3=2,也就是指标I3是代表DIM1=2且DIM3=2的所有数据。\n[0064] 由于图1中所示的例子中只有三个指标,因此可以很简单的看出DIM1=2这一维度被计算了两次,这样就说明至少有一个数据被重复计算了,导致最终统计数据错误。但是对于大型企业来说,有成千上万的数据且每一数据有非常多的维度,且根据业务需要会统计多种指标;这样就导致一旦指标所引用的一个维度被计算了两次就会导致最终的结果错误。\n[0065] 因此在计算完之后,还需要将计算出的结果赋给每个涉及的维度。例如图2所示的,I1代表DIM=1,因此需要将I1赋给多个行(每一行代表着一个维度组合)。\n[0066] 然后就需要记录每一个行中指标被引用的次数。作为实例性质的,在本发明实施例中可以采用以下语句来遍历维度统计表:\n[0067] UPDATE DIMENSION SET TARGET= TARGET||’,id1’,COUNT=COUNT+1\n[0068] WHERE DIM1=1\n[0069] AND DIM2=2\n[0070] AND DIM3=3\n[0071] 其中所述DIMENSION为所述维度统计表;所述COUNT为代表维度组合被指标统计的列。\n[0072] 即如图2所示的需要再维度统计表中增加了COUNT这一列,当然这只是实现统计的一个示例方式。上述利用UPDATE的方式可以统计表2中DIM1=1、DIM2=2、DIM3=3的行(每一行代表着一个维度组合),然后将改行对应的COUNT这一列的格子加1。\n[0073] 然后的稽核就会变得非常简单,如果一个行的COUNT值为1,则表明该维度组合被正确使用了。如图2所示的,DIM1=2、DIM2=2、DIM3=1的维度组合的COUNT数为0,表明这个维度组合没有被指标引用,这样就导致最终的结果缺少了一部分数据。而DIM1=2、DIM2=1、DIM3=2的维度组合的COUNT数为2,表明这个维度组合被两个指标所引用,意味着这部分数据被重复计算了,这样就导致最终的结果多了一部分数据。\n[0074] 这样只需要检查相应的指标I2,I3的配置我们发现是指标I3的配置出了问题:指标I3的正确组合应该是DIM1=2 AND DIM2=2,这样就可以及时发现问题并重新设计指标,获得正确的如图3所示的维度统计表。\n[0075] 这次COUNT值全为1,说明所有的维度组合有且仅被引用一次,不漏不重,是正确的。于是将维度统计表表与宽表做关联计算数据结果,最后得到的最终结果表如图4所示的。从图4中可以看出,在如图2所示的表中被省略掉的各种公共属性(COL1、COL2)被恢复到最终结果表中,而各种维度组合由于已经被统计过而失去了意义,无需再记录在如图4所示的最终结果表中。这样可以快捷的确定每一指标所代表的公式是否出现错误,并能够快捷的计算出各种需要的统计值(VALUE列)。\n[0076] 由上述例子可以看出,本发明实施例中利用GROUP BY将大宽表抽象为很小的维度组合表,大大降低了需要运算的数据量。并巧妙使用UPDATE,把这些组合分配到数据,再基于这些组合与宽表关联得到结果。这样,只需要对宽表做2次全表扫描,就完成了数据计算,相比每个数据都需要做一次全表扫描的传统计算方法要高效的多。\n[0077] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
法律信息
- 2018-08-28
- 2016-03-23
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201510708683.0
申请日: 2015.10.28
- 2016-02-24
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2013-03-27
|
2011-09-13
| | |
2
| |
2015-03-11
|
2014-12-15
| | |
3
| |
2014-09-24
|
2013-03-18
| | |
4
| |
2014-02-26
|
2013-08-28
| | |
5
| |
2015-02-11
|
2014-10-28
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |