CN107153651B - 一种多维交叉数据处理方法及装置 - Google Patents

一种多维交叉数据处理方法及装置 Download PDF

Info

Publication number
CN107153651B
CN107153651B CN201610121302.3A CN201610121302A CN107153651B CN 107153651 B CN107153651 B CN 107153651B CN 201610121302 A CN201610121302 A CN 201610121302A CN 107153651 B CN107153651 B CN 107153651B
Authority
CN
China
Prior art keywords
value
key
values
dimension
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610121302.3A
Other languages
English (en)
Other versions
CN107153651A (zh
Inventor
熊桥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201610121302.3A priority Critical patent/CN107153651B/zh
Publication of CN107153651A publication Critical patent/CN107153651A/zh
Application granted granted Critical
Publication of CN107153651B publication Critical patent/CN107153651B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2264Multidimensional index structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种多维交叉数据处理方法及装置,所述方法包括:对于待进行多维交叉计算的每条数据分别进行如下操作:对于维度取值的多种组合,按照维度取值组合和数值之间的一一对应关系分别将每种维度取值组合转换为对应的数值,所述维度取值的多种组合包括:该条数据中的维度取值组合、以及一或多个维度取值改为所有值时的维度取值组合;将转换成的数值分别作为不同键值对的键名,将该条数据的指标作为每个键值对的键值;对于待进行多维交叉计算的数据所生成的键值对,分别计算每个键名对应的键值的平均值。本申请能够提高处理效率。

Description

一种多维交叉数据处理方法及装置
技术领域
本发明涉及数据处理领域,尤其涉及一种多维交叉数据处理方法及装置。
背景技术
数据处理时经常要进行多维交叉计算,即对数据维度的不同取值的组合(包括维度取值为“所有”的情况)计算平均值,并存入数据库以方便查询。
一个例子如图1所示:每条原始数据包括四个维度和指标,四个维度分别为:省、运营商、网络制式、操作系统。每个维度都有一个或多个取值,比如网络制式这个维度的取值包括4个:2G、3G、4G、WIFI;在计算过程中还将增加取值为所有值,原始数据中并不会出现所有值这个取值;其它维度也会增加取值为所有值的情况。所述指标根据需求可以自行设置为某个参数的值或某几个参数的计算值,比如为网络质量等;在用于进行多维交叉计算的原始数据中,所述指标为具体的一个数字。
本例子中的计算是指求指标的平均值;多维交叉计算是指针对维度不同取值的每种组合,分别求出每个维度的取值都匹配该种组合的一条或多条原始数据中指标的平均值。当组合中一个维度的取值为所有值时,该维度为任一取值时都匹配。
假设原始数据只有图1中所示的5条,比如对于省为“湖北省”,运营商为“中国联通”,网络制式为“2G”,操作系统为“andriod”这一组合,指标的平均值为(106+67)/2=86.5,可以向下取整为86。再比如对于省的取值为所有值,即为:“所有省”,运营商为“中国移动”,网络制式为“2G”,操作系统为“ios”这一组合,是对每个省的中国移动、2G、ios的原始数据中的指标求平均值。再比如对于省为“所有省”,运营商为“所有运营商”,网络制式为“所有网络制式”,操作系统为“所有操作系统”这一组合,则是对四个维度的每种取值的数据中的指标求平均值,也就是将所有原始数据中的指标全部相加求平均值,得到79.2,取整为79。维度取值为其它组合时的计算可以类推,这里不再赘述。
多维交叉时,四个维度的不同取值的组合的总个数是每个维度的取值个数(包括取值为所有值的情况)的乘积,比如省的取值有a个,运营商的取值有b个、网络制式的取值有c个、操作系统的取值有d个,则维度取值的组合的总个数为a×b×c×d个。
多维交叉计算后,将计算结果(每种维度取值组合和对应的指标的平均值)存入数据库以方便查询;为了提升海量数据查询效率及方便扩展,本例子中选用nosql数据库。
如图2所示,现有的多维交叉数据处理的具体流程如下:
首先建立hashmap,开始为空。
然后针对每条数据分别生成键值对。对一条数据生成键值对时,以该数据中每个维度的值的组合(字符串形式)作为key(键名),并且增加维度中的一或多个取值为所有值的key;这些key均以指标作为value(键值);比如对于数据:“湖北省,中国联通,2G,andriod:106”这一数据,在建立键值对时,除了建立key为“湖北省,中国联通,2G,andriod”、value为“106”的键值对以外,还建立省、运营商、网络制式、操作系统中一或多个维度的取值为所有值的key,value均为106的键值对(共15个);比如只有省的取值为所有值时,key为“所有省,中国联通,2G,andriod”;再比如省和运营商的取值为“所有”时,key为“所有省,所有运营商,2G,andriod”;再比如四个维度的取值均为所有值时,key为“所有省,所有运营商,所有网络制式,所有操作系统”;以此类推。
对于每个键值对,在hashmap中查找是否有相同的key,如果没有,则增加该key和value;如有,则计算hashmap中相同key的value和该键值对中vlaue的平均值,并更新hashmap中所述相同key的value。
全部数据保存完成后,将最终的hashmap的所有记录写入数据库。
现有的计算方法主要有以下几个缺点:
(1)存储成本高
比如上例中,每条数据有4个维度,平均有35个字节;以34个省,4个运营商,4个网络制式,3个操作系统为例进行多维交叉计算,每个维度的取值包括所有值在内,则不同取值的组合的总个数为35×5×5×4=3500,即:向数据库写入计算结果时,平均一次要写入3500条记录,3500×35=122500字节,在海量实时分析中,以分钟粒度进行多维交叉计算,平均每月要写入5.3G到数据库,实现应用中,维度通常要远多于4个,带来的存储成本远高于此。
(2)计算成本高
hashmap实际为数组和链表的结合体,数组中的每一项是一个链表。针对每一个key,都需要根据hash(哈希)函数计算其对应的hashcode,找到数组中对应的元素后,再通过key的equals方法在对应位置的链表中找到需要的元素。由于两个不同的维度取值组合也有可能得到的hashcode相同,该情况下会造成hashmap中的数据冲突,明显影响效率。另外,在增加取值为所有值的维度取值组合对应的键值对时,需要重新构造大量字符串,并计算hashcode,也非常影响效率。再者,hashmap与MapReduce结合时需要进行额外的大量处理,将会增加计算成本。
发明内容
本申请提供了一种多维交叉数据处理方法及装置,能够提高处理效率。
本申请采用如下技术方案。
一种多维交叉数据处理方法,包括:
对于待进行多维交叉计算的每条数据分别进行如下操作:对于维度取值的多种组合,按照维度取值组合和数值之间的一一对应关系分别将每种维度取值组合转换为对应的数值,所述维度取值的多种组合包括:该条数据中的维度取值组合、以及一或多个维度取值改为所有值时的维度取值组合;将转换成的数值分别作为不同键值对的键名,将该条数据的指标作为每个键值对的键值;
对于待进行多维交叉计算的数据所生成的键值对,分别计算每个键名对应的键值的平均值。
可选地,所述按照维度取值组合和数值之间的一一对应关系分别将每种维度取值组合转换为对应的数值包括:
对于每种维度取值组合,分别进行下述操作:
按照预定顺序将每个维度的取值对应的预定位数的数值连接在一起,以连接结果作为该种维度取值组合对应的数值;其中,一个维度中,包含取值为所有值的情况在内的每个取值与数值之间的对应关系为一一对应。
可选地,全部维度中,取值为所有值时对应的数值为0;
所述对于一或多个维度取值改为所有值时的维度取值组合,所述按照预定顺序将每个维度的取值对应的数值连接在一起包括:
在根据数据中的维度取值组合得到的连接结果中,对取值改为所有值的维度对应的位进行置0操作。
可选地,所述对于待进行多维交叉计算的数据所生成的键值对,分别计算每个键名对应的键值的平均值包括:
在待进行多维交叉计算的数据所生成的键值对中,按照键名进行键值累加以及键值对个数的统计;对于每个键名,将该键名对应的累加结果除以对应的个数,得到该键名对应键值的平均值。
可选地,所述键名为整数;
所述按照键名进行键值累加以及键值对个数的统计包括:
对于每个键值对,分别以该键值对的键名为索引在二维数组中找到该键名对应的累加结果和个数;将所述个数加1;将键值对中的键值与所述累加结果相加,将相加的结果作为新的累加结果保存。
一种多维交叉数据处理装置,包括:
键值对生成模块,用于对于待进行多维交叉计算的每条数据分别进行如下操作:对于维度取值的多种组合,按照维度取值组合和数值之间的一一对应关系分别将每种维度取值组合转换为对应的数值,所述维度取值的多种组合包括:该条数据中的维度取值组合、以及一或多个维度取值改为所有值时的维度取值组合;将转换成的数值分别作为不同键值对的键名,将该条数据的指标作为每个键值对的键值;
计算模块,用于对于待进行多维交叉计算的数据所生成的键值对,分别计算每个键名对应的键值的平均值。
可选地,所述键值对生成模块按照维度取值组合和数值之间的一一对应关系分别将每种维度取值组合转换为对应的数值包括:
所述键值对生成模块对于每种维度取值组合,分别进行下述操作:
按照预定顺序将每个维度的取值对应的预定位数的数值连接在一起,以连接结果作为该种维度取值组合对应的数值;其中,一个维度中,包含取值为所有值的情况在内的每个取值与数值之间的对应关系为一一对应。
可选地,全部维度中,取值为所有值时对应的数值为0;
所述键值对生成模块对于一或多个维度取值改为所有值时的维度取值组合,所述按照预定顺序将每个维度的取值对应的数值连接在一起包括:
所述键值对生成模块在根据数据中的维度取值组合得到的连接结果中,对取值改为所有值的维度对应的位进行置0操作。
可选地,所述计算模块对于待进行多维交叉计算的数据所生成的键值对,分别计算每个键名对应的键值的平均值包括:
所述计算模块在待进行多维交叉计算的数据所生成的键值对中,按照键名进行键值累加以及键值对个数的统计;对于每个键名,将该键名对应的累加结果除以对应的个数,得到该键名对应键值的平均值。
可选地,所述键名为整数;
所述计算模块按照键名进行键值累加以及键值对个数的统计包括:
所述计算模块对于每个键值对,分别以该键值对的键名为索引在二维数组中找到该键名对应的累加结果和个数;将所述个数加1;将键值对中的键值与所述累加结果相加,将相加的结果作为新的累加结果保存。
本申请包括以下优点:
本申请至少一个备选方案通过将维度取值组合按照一一对应的关系转换为数值,转换结果可以保证和维度取值组合一一对应,不会出现因为数据冲突而影响处理效率的情况。
本申请的又一个备选方案将维度取值组合转换为整数,能够进一步提高处理效率,并且在存储到数据库时,可以大大减少存储所需要的空间。本备选方案的一种实施方式中,以整数作为索引保存数据,可以进一步减少存储空间,而且可以方便采用MapReduce进行并行处理。
本申请又一个备选方案将原始数据的维度取值组合先转换为整数,在针对每条数据构建一或多个维度取值为所有值的键值对时,由于整数在计算机中通常以二进制形式存在,因此不像现有技术中hashmap需要重新构建大量字符串,而是只需要简单的位运算(比如但不限于置0运算)即可完成,提高了处理效率,能够适应海量数据实时处理的需求。
当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有优点。
附图说明
图1是现有技术进行多维交叉计算的原理示意图;
图2是现有技术进行多维交叉计算的过程示意图;
图3是实施例一的多维交叉数据处理方法的流程示意图;
图4是实施例一的示例中进行多维交叉计算的示意图;
图5是实施例一的示例中采用MapReduce方式时的示意图;
图6是实施例二的多维交叉数据处理装置的示意图。
具体实施方式
下面将结合附图及实施例对本申请的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在一个典型的配置中,客户端或认证系统的计算设备可包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存(memory)。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。内存可能包括模块1,模块2,……,模块N(N为大于2的整数)。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM),快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
实施例一、一种多维交叉数据处理方法,如图3所示,包括步骤S110~S120:
S110、对于待进行多维交叉计算的每条数据分别进行如下操作:对于维度取值的多种组合,按照维度取值组合和数值之间的一一对应关系分别将每种维度取值组合转换为对应的数值,所述维度取值的多种组合包括:该条数据中的维度取值组合、以及一或多个维度取值改为所有值时的维度取值组合;将转换成的数值分别作为不同键值对的键名,将该条数据的指标作为每个键值对的键值;
S120、对于待进行多维交叉计算的数据所生成的键值对,分别计算每个键名对应的键值的平均值。
本实施例中,如果一或多个维度取值改为所有值的每种情况都包含在内,则对于一条待进行多维交叉计算的数据一共会得到2M个数值,M为维数的个数;也就是说,针对每条数据会生成2M个键值对。以三个维度的情况为例,比如一个条数据里三个维度的取值分别为a、b、c,则一或多个维度取值改为所有值时的维度取值组合包括:“所有,b,c”、“所有,所有,c”、“所有,b,所有”、“a,所有,c”、“a,所有,所有”、“a,b,所有”,“所有,所有,所有”,一共有7个,加上a,b,c”这一组合,最后一共可以转换成8个数值,将这8个数值作为key,将指标作为value,一共可以得到8个键值对。
本实施例中,取值为所有值时,具体的值的内容可以自行设置,比如可以为“所有”、可以为“all”,可以为“所有X(X为维度名,比如“省”)”。
本实施例中,数值和维度取值组合是一一对应的,即:每个key和维度取值组合是一一对应的;一个键名对应的键值的平均值即该键名对应的维度取值组合的多维交叉计算结果。
本实施例的一种备选方案中,所述按照维度取值组合和数值之间的一一对应关系分别将每种维度取值组合转换为对应的数值可以包括:
对于每种维度取值组合,分别进行下述操作:
按照预定顺序将每个维度的取值对应的预定位数的数值连接在一起,以连接结果对应的整数作为该种维度取值组合对应的数值;其中,一个维度中,包含取值为所有值的情况在内的每个取值与数值之间的对应关系为一一对应。
本备选方案中,一个维度中,每个取值对应的数值、连接结果的数据类型都可以为整数,在计算机中一般以二进制形式存在,即INT类型的数据。
本备选方案中,维度取值对应的数值的位数是预定值,连接时的顺序也是预定的,因此在所述连接结果中,每个维度各自对应于哪几位是预定的。
本备选方案的一种例子中,连接结果以二进制形式表示,假设“省”这个维度对应的数值的预定位数(即长度)为5位,预定顺序中“省”这个维度排在左边第一个,则连接结果中从左往右的前5位是“省”的取值对应的数值,比如维度“省”的取值“湖南省”对应数值“3”,则在连接结果中从左往右的前5位是“00011”。
其它备选方案中,也可以预先保存所有维度取值组合和数值之间的一一对应关系,根据该对应关系直接得到维度取值组合对应的数值。所述数值的数据类型也可以不是整数,而是类型。
本备选方案的一种实施方式中,全部维度中,取值为所有值时对应的数值为0;
本实施方式中,所述对于一或多个维度取值改为所有值时的维度取值组合,所述按照预定顺序将每个维度的取值对应的数值连接在一起包括:
在根据数据中的维度取值组合得到的连接结果中,对取值改为所有值的维度对应的位进行置0操作。
本实施方式中,只要先得到原始数据的维度取值组合对应的连接结果,再对相应的位进行置0的位运算,就可以得到其余2M-1个维度取值组合(一个或多个维度取值为所有值)对应的数值,处理效率高。c语言等开发语言均提供了对于整数进行位操作的运算符,因此当采用软件方式实现本实施方式也非常方便。
其它实施方式中,也可以只有部分维度取值为所有值时对应的数值为0;或者,每个维度取值为所有值时对应的数值均为1,这样位运算时就是对相应的位进行置1操作。
本实施例的一种备选方案中,所述对于待进行多维交叉计算的数据所生成的键值对,分别计算每个键名对应的键值的平均值包括:
在待进行多维交叉计算的数据所生成的键值对中,按照键名进行键值累加以及键值对个数的统计;对于每个键名,将该键名对应的累加结果除以对应的个数,得到该键名对应键值的平均值。
本备选方案中,如果在单机进行运算时,可以通过一次除运算得到平均值;如果采用MapReduce方式,则Reduce阶段可以将所有map阶段中得到的对应于一个键名的累加结果和个数分别求和后,在用累加结果之和除以个数之和,得到该键名对应键值的平均值。
不同数据有可能得到相同键名的键值对,也就是说,同一个键名可能出现在多个键值对中;至少包括如下两种情况:
一是两条或两条以上原始数据中维度取值组合相同,比如一条数据是“湖北省,中国联通,WIFI,android:89”,另一条数据是“湖北省,中国联通,WIFI,android:32”,那么这两条数据本身的维度取值组合对应的数值就是相同的,因此key相同。
二是即使原始数据本身的维度取值不同,但一或多个维度取值改为所有值的维度取值组合会出现相同的情况,比如一条数据是“湖北省,中国联通,WIFI,android:89”,将省这个维度的取值改为所有值后,得到的维度取值组合为“所有省,中国联通,WIFI,android”;另一条数据是“山东省,中国联通,WIFI,android:77”,将省这个维度的取值改为所有值后,得到的维度取值组合也同样为“所有省,中国联通,WIFI,android”,因此这两条数据将省的取值改为所有值时,维度取值相同,key相同。
本备选方案的一种实施方式中,所述键名可以为整数;所述按照键名进行键值累加以及键值对个数的统计可以包括:
对于每个键值对,分别以该键值对的键名为索引在二维数组中找到该键名对应的累加结果和个数;将所述个数加1;将键值对中的键值与所述累加结果相加,将相加的结果作为新的累加结果保存。
本实施方式中,可以预先建立以键名为索引的二维数组,一个键名在该二维数组中对应的元素包括累加结果和个数。
本实施方式可以但不限于采用MapReduce实现。
下面用一个示例说明上述实施例。
本示例中,首先根据每条数据生成2M个键值对,M为维数的个数;将该条数据的指标作为2M个键值对的value,将该条数据中原有的维度取值组合按照预定转换成连接结果,对该连接结果进行位运算得到一或多个维度取值改为所有值时的维度取值组合对应的连接结果。以连接结果作为key。比如数据为“湖北省,中国联通,WIFI,android:89”,则生成16个键值对,“89”为这16个键值对的value;将“湖北省,中国联通,WIFI,android”对应的连接结果作为key,将省、运营商、网络制式、操作系统中一或多个维度为所有值时的维度取值组合(共有15种)各自对应的连接结果也分别作为key。
将维度取值组合转换成连接结果的过程为:将每个维度的取值分别转换为预定位数的数值,然后按照预定顺序,将每个维度的取值转换得到的数值连接在一起,将连接结果看成一个整体,这个整体所表示的数值就是相应维度取值组合对应的数值。本示例中湖北省用1表示,所有省用0表示。中国联通用1表示,中国移动用2表示,所有运营商用0表示。2G用1表示,wifi用4(二进制形式为“100”)表示,所有网络制式用0表示。android用1表示,ios用2(二进制形式为“10”)表示,所有操作系统用0表示;在实际应用中,如果存在其他维度也依此类推。
所述预定位数(二进制形式)及预定顺序如下:从右到左第1~2位对应操作系统,第3~5位对应网络类型,第6~8位对应运营商,第9~13位对应省。
如图4所示,比如数据为“湖北省,中国联通,WIFI,android:89”,该条数据的维度取值组合对应的连接结果为:0000100110001,将该连接结果看成一个整体,表示整数305。
接下来针对上述数据添加维度中一或多个的取值改为所有值时维度取值组合对应的连接结果。对于一条数据,如果将每种组合形式都考虑到(相当于每个维度各自存在两种取值,该条数据中原先的值和所有值,比如省的取值是湖北省和所有省),则包括根据数据本身的维度取值组合对应的连接结果在内,对于该条数据将一共可以得到2M个连接结果。本示例中维度为4个,除了上面的连接结果:0000100110001以外,还可以得到15个连接结果。图4中仅给出省的取值改为所有值,以及省和运营商的取值改为所有值的情况。
添加时,通过位运算将取值为所有值的维度对应的位都置为“0”;比如省为所有省时,就是将从右到左的第9~13位的数值置为0,得到对应的连接结果:0000000110001,表示整数49;再比如省为所有省,运营商为所有运营商时,就是将从右到左的第9~13位置为0,将从右到左的第6~8位也置为0,得到对应的连接结果:0000000010001,表示整数17。
本示例中以34个省,4个运营商,4个网络制式,3个操作系统为例进行多维交叉计算,每个维度的取值包括取值为所有值的情况在内,需要建立大小为3500的二维数组,以维度取值组合对应的数值作为索引,即每个索引代表一种维度取值的组合。对于任何一种维度取值的组合均可直接通过高效的指针偏移来操作数组中对应的元素。
所述二维数组中,每个索引对应于“和”和“个数”两个元素;其中,一个索引对应的“和”与“个数”分别是指进行多维交叉计算的一批原始数据及根据这些原始数据添加的一个或多个维度取值为所有值的数据中,维度取值组合所对应的数值与该索引相同的数据中指标的累加结果、及原始数据的总条数;比如图4所示的二维数组中,索引305对应的和为34545,个数为23,意味着进行多维交叉计算的数据中,有23条数据的维度取值是“湖北省,中国联通,WIFI,android”,这23条数据中指标的总和为34545。维度取值是“湖北省,中国联通,WIFI,android”的指标平均值可以直接通过34545除以23得到。
在实际应用中,由于数据量太大,可以采用MapReduce的方式并行处理,由于本示例中以索引代表具体的维度取值组合建立二维数组,相当于直接得到了Map形式的统计数据,所以能完美地与MapReduce结合。在Reduce阶段,只需要将Map阶段得到的所有二维数组遍历一遍,将索引相同的求平均值,得到的结果就是对应维度取值组合的多维交叉计算结果。比如图5所示,Map后得到三个二维数组:Map1、Map2和Map3。图5中只给出了每个二维数组索引为0(即第一行)和索引为3499(即最后一行)时的元素值。以第一行为例,在Reduce阶段求平均值时,只需要将所有二维数组中索引为0的“和”相加,然后除以所有二维数组中索引为0的“个数”之和,将结果取整就可以得到索引为0对应的维度取值组合的指标平均值,即:(43454+4354+43154)/(23+233+232)=186.4;取整为186。
实施例二、一种多维交叉数据处理装置,如图6所示,包括:
键值对生成模块21,用于对于待进行多维交叉计算的每条数据分别进行如下操作:对于维度取值的多种组合,按照维度取值组合和数值之间的一一对应关系分别将每种维度取值组合转换为对应的数值,所述维度取值的多种组合包括:该条数据中的维度取值组合、以及一或多个维度取值改为所有值时的维度取值组合;将转换成的数值分别作为不同键值对的键名,将该条数据的指标作为每个键值对的键值;
计算模块22,用于对于待进行多维交叉计算的数据所生成的键值对,分别计算每个键名对应的键值的平均值。
本实施例中,所述键值对生成模块21是所述装置中负责生成键值对的部分,可以是软件、硬件或两者的结合。
本实施例中,所述计算模块22是所述装置中负责计算平均值的部分,可以是软件、硬件或两者的结合。
本实施例的一种备选方案中,所述键值对生成模块按照维度取值组合和数值之间的一一对应关系分别将每种维度取值组合转换为对应的数值包括:
所述键值对生成模块对于每种维度取值组合,分别进行下述操作:
按照预定顺序将每个维度的取值对应的预定位数的数值连接在一起,以连接结果作为该种维度取值组合对应的数值;其中,一个维度中,包含取值为所有值的情况在内的每个取值与数值之间的对应关系为一一对应
本备选方案的一种实施方式中,全部维度中,取值为所有值时对应的数值为0;
所述键值对生成模块对于一或多个维度取值改为所有值时的维度取值组合,所述按照预定顺序将每个维度的取值对应的数值连接在一起包括:
所述键值对生成模块在根据数据中的维度取值组合得到的连接结果中,对取值改为所有值的维度对应的位进行置0操作。
本实施例的一种备选方案中,所述计算模块对于待进行多维交叉计算的数据所生成的键值对,分别计算每个键名对应的键值的平均值可以包括:
所述计算模块在待进行多维交叉计算的数据所生成的键值对中,按照键名进行键值累加以及键值对个数的统计;对于每个键名,将该键名对应的累加结果除以对应的个数,得到该键名对应键值的平均值。
本备选方案的一种实施方式中,所述键名可以为整数;
所述计算模块按照键名进行键值累加以及键值对个数的统计可以包括:
所述计算模块对于每个键值对,分别以该键值对的键名为索引在二维数组中找到该键名对应的累加结果和个数;将所述个数加1;将键值对中的键值与所述累加结果相加,将相加的结果作为新的累加结果保存。
其它细节可参见实施例一。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
当然,本申请还可有其他多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请的权利要求的保护范围。

Claims (8)

1.一种多维交叉数据处理方法,包括:
对于待进行多维交叉计算的每条数据分别进行如下操作:对于维度取值的多种组合,按照维度取值组合和数值之间的一一对应关系分别将每种维度取值组合转换为对应的数值,所述维度取值的多种组合包括:该条数据中的维度取值组合、以及一或多个维度取值改为所有值时的维度取值组合;将转换成的数值分别作为不同键值对的键名,将该条数据的指标作为每个键值对的键值;
其中,所述按照维度取值组合和数值之间的一一对应关系分别将每种维度取值组合转换为对应的数值包括:
对于每种维度取值组合,分别进行下述操作:
按照预定顺序将每个维度的取值对应的预定位数的数值连接在一起,以连接结果作为该种维度取值组合对应的数值;其中,一个维度中,包含取值为所有值的情况在内的每个取值与数值之间的对应关系为一一对应;
对于待进行多维交叉计算的数据所生成的键值对,分别计算每个键名对应的键值的平均值。
2.如权利要求1所述的方法,其特征在于,全部维度中,取值为所有值时对应的数值为0;
对于一或多个维度取值改为所有值时的维度取值组合,所述按照预定顺序将每个维度的取值对应的预定位数的数值连接在一起包括:
在根据数据中的维度取值组合得到的连接结果中,对取值改为所有值的维度对应的位进行置0操作。
3.如权利要求1所述的方法,其特征在于,所述对于待进行多维交叉计算的数据所生成的键值对,分别计算每个键名对应的键值的平均值包括:
在待进行多维交叉计算的数据所生成的键值对中,按照键名进行键值累加以及键值对个数的统计;对于每个键名,将该键名对应的累加结果除以对应的个数,得到该键名对应键值的平均值。
4.如权利要求3所述的方法,其特征在于:所述键名为整数;
所述按照键名进行键值累加以及键值对个数的统计包括:
对于每个键值对,分别以该键值对的键名为索引在二维数组中找到该键名对应的累加结果和个数;将所述个数加1;将键值对中的键值与所述累加结果相加,将相加的结果作为新的累加结果保存。
5.一种多维交叉数据处理装置,其特征在于,包括:
键值对生成模块,用于对于待进行多维交叉计算的每条数据分别进行如下操作:对于维度取值的多种组合,按照维度取值组合和数值之间的一一对应关系分别将每种维度取值组合转换为对应的数值,所述维度取值的多种组合包括:该条数据中的维度取值组合、以及一或多个维度取值改为所有值时的维度取值组合;将转换成的数值分别作为不同键值对的键名,将该条数据的指标作为每个键值对的键值;
其中,所述键值对生成模块按照维度取值组合和数值之间的一一对应关系分别将每种维度取值组合转换为对应的数值包括:
所述键值对生成模块对于每种维度取值组合,分别进行下述操作:
按照预定顺序将每个维度的取值对应的预定位数的数值连接在一起,以连接结果作为该种维度取值组合对应的数值;其中,一个维度中,包含取值为所有值的情况在内的每个取值与数值之间的对应关系为一一对应;
计算模块,用于对于待进行多维交叉计算的数据所生成的键值对,分别计算每个键名对应的键值的平均值。
6.如权利要求5所述的装置,其特征在于,全部维度中,取值为所有值时对应的数值为0;
键值对生成模块对于一或多个维度取值改为所有值时的维度取值组合,所述按照预定顺序将每个维度的取值对应的预定位数的数值连接在一起包括:
所述键值对生成模块在根据数据中的维度取值组合得到的连接结果中,对取值改为所有值的维度对应的位进行置0操作。
7.如权利要求5所述的装置,其特征在于,所述计算模块对于待进行多维交叉计算的数据所生成的键值对,分别计算每个键名对应的键值的平均值包括:
所述计算模块在待进行多维交叉计算的数据所生成的键值对中,按照键名进行键值累加以及键值对个数的统计;对于每个键名,将该键名对应的累加结果除以对应的个数,得到该键名对应键值的平均值。
8.如权利要求7所述的装置,其特征在于:所述键名为整数;
所述计算模块按照键名进行键值累加以及键值对个数的统计包括:
所述计算模块对于每个键值对,分别以该键值对的键名为索引在二维数组中找到该键名对应的累加结果和个数;将所述个数加1;将键值对中的键值与所述累加结果相加,将相加的结果作为新的累加结果保存。
CN201610121302.3A 2016-03-03 2016-03-03 一种多维交叉数据处理方法及装置 Active CN107153651B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610121302.3A CN107153651B (zh) 2016-03-03 2016-03-03 一种多维交叉数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610121302.3A CN107153651B (zh) 2016-03-03 2016-03-03 一种多维交叉数据处理方法及装置

Publications (2)

Publication Number Publication Date
CN107153651A CN107153651A (zh) 2017-09-12
CN107153651B true CN107153651B (zh) 2021-04-02

Family

ID=59792460

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610121302.3A Active CN107153651B (zh) 2016-03-03 2016-03-03 一种多维交叉数据处理方法及装置

Country Status (1)

Country Link
CN (1) CN107153651B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107945016B (zh) * 2017-11-01 2021-04-30 招商银行股份有限公司 变量的取值升维方法、装置及计算机可读存储介质
CN109840080B (zh) * 2018-12-28 2022-08-26 东软集团股份有限公司 字符属性比较方法、装置、存储介质及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6801908B1 (en) * 2002-01-28 2004-10-05 Supplychainge Inc System and method for selectively presenting multi-dimensional data in two-dimensional form
CN103605651A (zh) * 2013-08-28 2014-02-26 杭州顺网科技股份有限公司 一种基于olap多维分析的数据处理展现方法
CN104376020A (zh) * 2013-08-16 2015-02-25 腾讯科技(深圳)有限公司 多维数据的处理方法及装置
CN104424251A (zh) * 2013-08-28 2015-03-18 腾讯科技(深圳)有限公司 一种多维度拆分的计算方法以及系统
CN105279219A (zh) * 2015-07-07 2016-01-27 北京挺软科技有限公司 一种多级维度动态切换分级及汇总的实现方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9009709B2 (en) * 2010-03-16 2015-04-14 Salesforce.Com, Inc. Asynchronous rollup numbers forecasting methods and systems
CN104424229B (zh) * 2013-08-26 2019-02-22 腾讯科技(深圳)有限公司 一种多维度拆分的计算方法及系统
CN104424339B (zh) * 2013-09-11 2019-02-22 腾讯科技(深圳)有限公司 数据分析的方法、装置及系统
CN103559413B (zh) * 2013-11-15 2016-11-02 北京搜房科技发展有限公司 一种数据处理方法和装置
CN103617205A (zh) * 2013-11-15 2014-03-05 北京奇虎科技有限公司 一种识别ip地址的区域归属地信息的方法和装置
CN105446991B (zh) * 2014-07-07 2018-10-30 阿里巴巴集团控股有限公司 数据存储方法、查询方法及设备
CN104408188B (zh) * 2014-12-15 2018-07-13 北京国双科技有限公司 数据处理方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6801908B1 (en) * 2002-01-28 2004-10-05 Supplychainge Inc System and method for selectively presenting multi-dimensional data in two-dimensional form
CN104376020A (zh) * 2013-08-16 2015-02-25 腾讯科技(深圳)有限公司 多维数据的处理方法及装置
CN103605651A (zh) * 2013-08-28 2014-02-26 杭州顺网科技股份有限公司 一种基于olap多维分析的数据处理展现方法
CN104424251A (zh) * 2013-08-28 2015-03-18 腾讯科技(深圳)有限公司 一种多维度拆分的计算方法以及系统
CN105279219A (zh) * 2015-07-07 2016-01-27 北京挺软科技有限公司 一种多级维度动态切换分级及汇总的实现方法

Also Published As

Publication number Publication date
CN107153651A (zh) 2017-09-12

Similar Documents

Publication Publication Date Title
US8935575B2 (en) Test data generation
US9619492B2 (en) Data migration
WO2015124042A1 (zh) 分布式文件系统列式存储的元数据更新方法、装置、主机
CN108334609B (zh) Oracle中实现JSON格式数据存取的方法、装置、设备及存储介质
CN108875077B (zh) 数据库的列存储方法、装置、服务器及存储介质
US20190034467A1 (en) Optimal sort key compression and index rebuilding
CN109885614B (zh) 一种数据同步的方法和装置
CN110727702B (zh) 数据查询方法、装置、终端和计算机可读存储介质
WO2017097159A1 (zh) 一种随机字符串生成方法及装置
CN106849956B (zh) 压缩方法、解压缩方法、装置和数据处理系统
CN111400387A (zh) 导入导出数据的转换方法、装置、终端设备及存储介质
CN112214472A (zh) 气象格点数据的存储及查询方法、装置及存储介质
CN111159329A (zh) 敏感词检测方法、装置、终端设备和计算机可读存储介质
CN110554878A (zh) 数据转换方法、游戏数据的处理方法、装置和服务器
CN112559606A (zh) 用于json格式数据的转换方法及转换装置
CN107153651B (zh) 一种多维交叉数据处理方法及装置
CN112860802B (zh) 数据库操作语句的处理方法、装置及电子设备
CN109697234B (zh) 实体的多属性信息查询方法、装置、服务器和介质
CN112749157A (zh) 数据表的处理方法、装置、存储介质和设备
US11991290B2 (en) Associative hash tree
CN112395276B (zh) 一种数据比对方法及相关设备
CN113138761A (zh) 一种界面编程方法及系统
CN110825747B (zh) 一种信息存取方法、装置和介质
CN108228604B (zh) 基于内存对象的模型构建方法、信息查询方法及装置
CN112487032A (zh) 数据查询的方法、装置、存储介质及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant