具体实施方式
数据仓库通常采用维度来描述和组织其中存储的原始数据。维度用来反映原始数据的一类属性,这类属性的集合或者细分可以用来构成不同级别的维度。例如,国家、省、城市可以作为地理上不同级别的维度;年、季、月、周、日可以作为时间上不同级别的维度。
在采用指定的维度值筛选出感兴趣的原始数据,并将这些原始数据用于既定的一系列运算过程后,即可得出某个数据指标的值。可见,对于通过指定的若干个维度值筛选出的原始数据,采用单一运算方式计算得出的指标可以作为构建不同数据指标的基础。将这样的指标作为底层指标来构建不同层次的高层指标,在计算指标时采用由底层至高层的方式,较低层次的指标只需计算一次就可以用于不同的较高层次的指标。
因此,本申请的实施例提出一种新的计算数据指标的方法,将由具有至少一个确定维度值的原始数据经过一种运算方式计算得出的指标作为底层指标,以底层指标为基础构建其上的各层高层指标,而数据指标则由至少一个底层指标和/或至少一个高层指标来构建,使得底层指标可以复用于多个高层指标和数据指标中;在进行指标计算时,采用由底层指标开始逐层向高层计算的方式,这样每个较低层次的指标只需计算一次,即可用于多个较高层次的指标和数据指标,避免了对原始数据的重复运算,以解决现有技术中存在的问题。
本申请的实施例可以运行在任何具有计算和存储能力的设备上,包括但不限于手机、平板电脑、PC(Personal Computer,个人电脑)、笔记本、单台服务器、由数个服务器构成的逻辑服务器等。
本申请的实施例中,在数据仓库中建立层级结构的指标体系,指标体系包括两层到多层指标,分别为底层指标和高层指标,其中,底层指标由具有确定的一个到多个维度值的原始数据经过单一运算方式计算得出,底层指标之上的高层指标由一个到多个底层指标、和/或一个到多个较低层次的高层指标来表达。数据开发人员根据业务需求设计的数据指标由至少一个底层指标和/或至少一个高层指标来表达;换言之,数据指标可以由一个到多个底层指标基于既定的算法计算得到,也可以由一个到多个高层指标基于既定的算法计算得到,还可以由一个到多个底层指标和一个到多个高层指标一起采用既定的算法计算得到;其中也包括数据指标本身就是一个底层指标或者一个高层指标的情形。
具体而言,底层指标是将通过指定一个到多个维度值筛选出的原始数据,应用于采用单一运算方式的统计过程后得出的基础指标。单一运算方式的含义是对筛选出原始数据的运算只能采用一种算法,而不能采用多种算法。例如,单一运算方式可以计数(统计筛选出多少条原始数据)、求和(计算筛选出原始数据的总和)、最大值(查找筛选出原始数据的最大值)、最小值(查找筛选出原始数据的最小值)、不同种类数据之间的映射、加、减、乘、除(将筛选出的原始数据与某个值相加、相减、相乘、相除)等算法中的某一种。其中,不同种类数据之间的映射用来将筛选出的原始数据映射为另外一种类型的数据,例如,手机号码所属的移动服务运营商(将手机号码映射为移动服务运营商名称)、IP地址所属的城市(将IP地址映射为城市名称)等。
高层指标可以是一层到多层,由较低层次的高层指标和/或底层指标来构建,而不会直接使用数据仓库中存储的原始数据。较高层次的高层指标可以由一个到多个底层指标来表达,可以由一个到多个较低层次(可以是相同或不同层次)的高层指标来表达,也可以由一个到多个底层指标与一个到多个较低层次(可以是相同或不同层次)的高层指标共同来表达。
以前述“最近180天购买飞机票的交易次数占比”、和“最近180天预定酒店的交易占比”两个数据指标为例,表达这两个数据指标需要三个底层指标,分别是:“最近180天的交易次数”(假设为Trans-180,时间维度值在最近180天内的交易,运算方式为统计交易次数)、“最近180天购买飞机票的交易次数”(假设为Trans-Airline-180,时间维度值在最近180天内、交易内容维度值为购买飞机票的交易,运算方式为统计交易次数)和“最近180天预定酒店的交易次数”(假设为Trans-Hotel-180,时间维度值在最近180天内、交易内容维度值为预定酒店的交易,运算方式为统计交易次数),则数据指标“最近180天购买飞机票的交易次数占比”可以表达为:Trans-Airline-180/Trans-180,数据指标“最近180天预定酒店的交易占比”可以表达为Trans-Hotel-180/Trans-180。
可以根据实际应用场景的需求,决定在构建高层指标时是否限制其采用单一运算方式。方便起见,将底层指标称为一度指标,高层指标分为多个层次,在一度指标之上的各层指标依次为二度指标、三度指标、四度指标等等。
在第一种实现方式中,限定每个高层指标都只能由一个到多个更低层次的指标采用单一运算方式来计算得出。这样,二度指标由一个到多个一度指标基于一种算法来表达,三度指标由一个到多个一度指标和/或一个到多个二度指标基于一种算法来表达。这种实现方式细化了指标层次之间的粒度,增加了各层指标的复用程度,但对于较为复杂的指标,往往需要很多个层次才能表达,使得数据开发人员的工作量较大。
在第二种实现方式中,不限定在构建高层指标时采用的运算方式。这样,高层指标可以基于较低层次的指标,采用任意数量和种类的算法来表达。这种方式使得数据开发人员在定义指标时更为简单灵活,但降低了高层指标的可供复用的可能性,不利于对系统性能的提升。
在第三种实现方式中,限定二度指标由一个到多个一度指标基于一种算法来表达,而不限定表达三度及三度以上的指标时采用的运算方式。也就是说,二度指标由至少一个一度指标采用单一运算方式计算得出,三度及三度以上的指标采用一度指标、和/或至少一个较低层次的高层指标计算得出。这样,N(N为大于2的自然数)度指标可以由一个到多个一度指标、一个到多个二度指标、直到一个到多个(N-1)度指标,采用任意数量和种类的算法来表达。这种实现方式可以在指标定义的灵活性与指标的可复用度之间达到良好的平衡。
例如,对数据指标“单个用户账户最近180天交易次数最大的IP(互联网协议)地址所属的城市”,可以采用如下的指标层:
一度指标:“IP地址所属的城市”、“单个用户账户单个IP地址最近180天的交易次数”;
二度指标:“单个用户账户最近180天的交易次数最大的IP地址”可以通过对一度指标“单个用户账户单个IP地址最近180天的交易次数”求取对于相同用户不同IP地址的最大值来表达;
则数据指标“单个用户账户最近180天的交易次数最大的IP地址所属的城市”可以通过二度指标“单个用户账户最近180天的交易次数最大的IP地址”和一度指标“IP地址所属的城市”来表达;另外,该数据指标可以作为该指标层中的三度指标。
本申请的实施例中,计算数据指标的方法的流程如图1所示。
在步骤110,获取所述数据指标涉及的底层指标的值。数据指标涉及的底层指标包括表达该数据指标的底层指标、和/或用于计算表达该数据指标的高层指标时所需的底层指标。
本申请的实施例中,高层指标实际上由一个到多个底层指标直接或间接构建而成。可以将高层指标基于其表达方式逐层向下拆解,直至完全采用底层指标来表达该高层指标时用到的所有底层指标,即是计算该高层指标时所需的底层指标。以前述例子中的三度指标“单个用户账户最近180天的交易次数最大的IP地址所属的城市”为例,该三度指标由二度指标“单个用户账户最近180天的交易次数最大的IP地址”和一度指标“IP地址所属的城市”来表达,而二度指标“单个用户账户最近180天的交易次数最大的IP地址”可继续拆解为由一度指标“单个用户账户单个IP地址最近180天的交易次数”来表达,这样用来计算三度指标“单个用户账户最近180天的交易次数最大的IP地址所属的城市”所需的底层指标包括“IP地址所属的城市”和“单个用户账户单个IP地址最近180天的交易次数”两个一度指标。
如果数据指标由一个到多个底层指标来构建,则其涉及的底层指标是用来表达该数据指标的所有底层指标。如果数据指标由一个到多个高层指标来构建,则其涉及的底层指标是计算每个高层指标所需的所有底层指标的集合。如果数据指标由一个到多个底层指标和一个到多个高层指标来构建,则其涉及的底层指标是用来表达该数据指标的所有底层指标、和计算每个用来表达该数据指标的每个高层指标所需的所有底层指标的集合。
可以参照现有技术中得到指标的值的方法来获取底层指标的值,本申请的实施例不做限定。例如,根据底层指标的定义,从存储的数据中通过该底层指标的确定维度值筛选出的原始数据,并应用于该底层指标的单一运算方式,来得到该底层指标的值;再如,读取已经计算完毕、保存在数据仓库中的该底层指标的值。
步骤120,采用所获取的底层指标的值,逐层向上算得该数据指标的值。
如果数据指标由一个到多个底层指标来构建,则可以按照该数据指标的表达方式,采用这些底层指标的值计算得到该数据指标的值。如果数据指标由一个到多个高层指标、或由一个到多个底层指标和一个到多个高层指标来构建,则可以采用所获取的底层指标的值,从较低层次到较高层次逐层计算这些高层指标所使用的各层指标的值,直至计算得出每个高层指标的值,再采用这些高层指标的值得到该数据指标的值。
可见,本申请的实施例中,由具有至少一个确定维度值的原始数据经过一种运算方式计算得出的指标作为底层指标,以底层指标为基础构建一层到多层的高层指标,数据指标则由至少一个底层指标和/或至少一个高层指标来构建,使得较低层次的指标能够复用于不同的数据指标,在计算数据指标时采用从底层指标逐层向上的计算方式,每个较低层次的指标只需计算一次即可用于多个较高层次的指标和数据指标,避免了对原始数据的重复运算,在加快指标计算速度的同时节省了数据仓库系统的运算资源消耗。
在本申请的一个应用示例中,第三方支付平台的数据仓库中存储有交易明细数据,其指标池采用层次化结构,如图2所示,一度指标层包括指标池中的所有一度指标,每个一度指标由通过确定的维度值筛选出的明细数据采用单一运算方式计算得出;二度指标层包括指标池中所有二度指标,每个二度指标由一个或一个以上的一度指标采用单一运算方式计算得出;三度及以上指标层包括指标池中的所有三度指标、四度指标以及更高层指标,这些指标由较低层次的指标(包括一度指标、二度指标、以及层次低于该指标的其他指标)计算得出。
第三方支付平台的数据开发人员采用指标池中各个层次的指标来构建具体业务所需的数据指标,在计算数据指标时,先分别按照每个一度指标的定义,筛选出明细数据算得各个一度指标的值;再按照每个二度指标的表达方式,由一度指标的值计算出各个二度指标的值;再计算三度及三度以上的指标值;并最终计算出若干个数据指标的值。这样,较低层次的指标值可以重复用于计算较高层次的指标。
以前述两个数据指标:“最近180天购买飞机票的交易次数占比”、和“最近180天预定酒店的交易占比”为例,可以由三个一度指标:“最近180天的交易次数”、“最近180天购买飞机票的交易次数”和“最近180天预定酒店的交易次数”来表达这两个数据指标。在计算数据指标时,“最近180天的交易次数”这个一度指标只需计算一次,即可用于两个数据指标的计算,加快了计算速度,避免了运算资源的浪费。
与上述流程实现对应,本申请的实施例还提供了一种计算数据指标的装置。该装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过所在设备的CPU(Central Process Unit,中央处理器)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了图3所示的CPU、内存以及非易失性存储器之外,计算数据指标的装置所在的设备通常还包括用于进行无线信号收发的芯片等其他硬件,和/或用于实现网络通信功能的板卡等其他硬件。
图4所示为本申请实施例提供的一种计算数据指标的装置,所述数据指标采用至少一个底层指标和/或至少一个高层指标来表达,所述底层指标由具有一个到多个确定维度值的原始数据采用单一运算方式计算得出,所述高层指标由至少一个底层指标、和/或至少一个较低层次的高层指标来表达,所述装置包括底层指标值获取单元和逐层计算单元,其中:底层指标值获取单元用于获取所述数据指标涉及的底层指标的值;所述数据指标涉及的底层指标包括表达所述数据指标的底层指标,和/或用于计算表达所述数据指标的高层指标时所需的底层指标;逐层计算单元用于采用所获取的底层指标的值,逐层向上算得所述数据指标的值。
可选的,所述数据指标采用至少一个高层指标来表达;所述用于计算表达所述数据指标的高层指标时所需的底层指标,包括:基于所述高层指标的表达方式逐层向下拆解,直至完全采用底层指标来表达所述高层指标时所使用的所有底层指标;所述逐层计算单元具体用于:采用所获取的底层指标的值,从较低层次到较高层次逐层计算所述高层指标所使用的各层指标的值,直至计算得出所述高层指标的值,再采用所述高层指标的值得到所述数据指标的值。
可选的,所述单一运算方式包括:计数、求和、最大值、最小值、加、减、乘、除、或不同种类数据之间的映射。
可选的,所述底层指标为一度指标;所述高层指标包括二度指标、和三度及以上指标,所述二度指标由至少一个一度指标采用单一运算方式计算得出,所述三度及以上指标采用一度指标、和/或至少一个较低层次的高层指标计算得出。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。