数据过滤的方法和装置
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据过滤的方法和装置。
背景技术
如今几乎任何一家公司的经营都离不开数据。公司日常运营时在网络上生成的所有类型数据基本都会被捕捉和存储,对这些数据进行挖掘和分析后得出的结论,成为做出商务决策的重要依据。在进行数据分析时,稍具规模的公司通常需要从TB(TrillionByte,万亿字节)级别的原始数据中过滤出与某个具体的分析目标(如某项业务的某些指标)相关的数据记录,再对过滤出的数据进行统计和分析。
随着公司经营对数据的依赖日渐增加,对数据分析的时效性要求也越来越高。对不断产生的实时数据,需要在尽量短的时间内过滤出用于分析的数据记录。现有技术中,将来源于不同业务***的原始数据先存储到关系型数据库中,再采用SQL(Structured QueryLanguage,结构化查询语言)语句从关系型数据库中过滤出所需的数据记录。由于不同的业务***的数据通常有不同的结构,这种实现方式或者需要在存储到关系型数据库时进行数据结构的转换,或者需要对不同的数据结构采用不同的SQL语句,不论哪种都要由开发人员付出相当大的工作量。另外,在执行SQL语句时,将关系型数据库中的整条数据记录读入内存,然后将该条记录采用过滤的各个筛选条件,才能决定该条记录是否是目标数据,这种方式运行速度慢,难以满足在短时间内过滤大量数据的要求。
发明内容
有鉴于此,本申请提供一种数据过滤的方法,过滤规则由一个到多个标识以及对应于每个标识的筛选条件来表达,所述标识包括原始数据的至少一个列,所述方法包括:
从原始数据中提取所述过滤规则涉及的所有标识指定的列,得到源数据;
根据过滤规则的表达,依次采用各个标识对应的筛选条件对源数据的行记录进行过滤,得到目标数据。
本申请还提供了一种数据过滤的装置,过滤规则由一个到多个标识以及对应于每个标识的筛选条件来表达,所述标识包括原始数据的至少一个列,所述装置包括:
源数据提取单元,用于从原始数据中提取所述过滤规则涉及的所有标识指定的列,得到源数据;
源数据过滤单元,用于根据过滤规则的表达,依次采用各个标识对应的筛选条件对源数据的行记录进行过滤,得到目标数据。
由以上技术方案可见,本申请的实施例中,采用包括一个到多个原始数据列的标签、以及对应于标签的筛选条件来表达过滤规则,在从原始数据中提取出标签指定的列后,针对提取出的列逐个适用标识及其对应的筛选条件,过滤出目标数据。采用本申请的实施例后,改变标签所包括的列,即可适用于不同数据结构的原始数据,极大的简化了开发人员的工作;在进行数据过滤时,逐个针对标签指定的列适用对应的筛选条件,在简化处理运算的同时减少了处理的数据量,大大加快了数据过滤的速度。
附图说明
图1是本申请实施例中一种数据过滤的方法的流程图;
图2是本申请应用示例中一种标签组合、标签与标识的关系示意图;
图3是本申请应用示例中一种过滤方向的配置示例图;
图4是运行本申请实施例的设备的一种硬件结构图;
图5是本申请实施例中一种数据过滤的装置的逻辑结构图。
具体实施方式
本申请的实施例提出一种新的数据过滤的方法,通过标识来代表原始数据的一个到多个列,而采用一个到多个标识和对应于标识的筛选条件来构建过滤规则,在过滤数据时可以逐个应用筛选条件,来针对原始数据中对应的标识所指定的列来进行处理运算,使得运算得以简化,并且减少了参与运算的数据量;同时开发人员可以通过为标识指定列来匹配于原始数据的数据结构,而无需修改语句或者进行数据结构转换,从而解决现有技术中存在的问题。
本申请的实施例可以运行在任何具有计算和存储能力的设备上,如手机、平板电脑、PC(Personal Computer,个人电脑)、笔记本、服务器等设备;还可以由运行在两个或两个以上设备的逻辑节点来实现本申请实施例中的各项功能。
本申请的实施例中,数据的来源是一个到多个***的原始数据,不同***的原始数据可以具有相同或不同的数据结构。对原始数据的过滤规则针对原始数据的列来设置,即对一个原始数据的行记录而言,当该行记录的某个列或某些列的值满足既定条件时,该行记录通过筛选,成为目标数据。
过滤规则可以用一个到多个标识及其对应的筛选条件来表达,其中,每个标识包括至少一个列,所有标识包括的列的集合即是该过滤规则用到的所有的列;某个标识对应的筛选条件以该标识指定列(即该标识包括的列)的值来定义,是过滤规则的一个组成部分。可见,标识及其对应的筛选条件、两个或两个以上标识及其对应的筛选条件之间的运算关系(对包括两个及以上标识的过滤规则而言)可以用来表达所有的过滤规则。需要说明的是,应用在同一个过滤规则中的多个标识可以包括相同的列,一个过滤规则也可以多次使用一个标识,不做限定。
对不同数据结构的两种原始数据,开发人员可以通过为同一个标识指定匹配于数据结构的列,来使得过滤规则可以适用于每种原始数据,而无需更改实现过滤规则的程序,也无需进行数据结构的转换。
本申请的实施例中,数据过滤的方法的流程如图1所示。
步骤110,从原始数据中提取过滤规则涉及的所有标识指定的列,得到源数据。
对某个来源的原始数据,按照匹配于该来源的数据结构的标识指定的列,将过滤规则中使用到的每个标识指定的列都提取出来,构成步骤120中进行行记录过滤时使用的源数据。源数据通常是原始数据的一部分(也有可能是原始数据本身),或者说源数据的每行记录都是原始数据每行记录的一部分或者全部,源数据的每行记录中都包括用来表达过滤规则的任一标识所包括的列的值。
例如,过滤规则中用到了标识1和标识2,其中标识1由某个原始数据表的列A和列B组成,标识2由该原始数据表的列B和列C组成,则该过滤规则涉及的所有标识指定的列为列A、列B和列C,将这些列在原始数据表中各行记录提取出来,得到由列A、列B和列C组成的源数据。
步骤120,根据过滤规则,依次采用每个标识对应的筛选条件对源数据的行记录进行过滤,得到目标数据。
在根据标识指定的列提取出源数据后,按照过滤规则中使用的各个标识的筛选条件、以及不同标识的筛选条件之间的运算关系,逐个采用每个标识对应的筛选条件来过滤源数据的每行记录,将通过所有标识的筛选的行记录作为目标数据。
可以根据实际应用场景中过滤规则所涉及的标识的个数、以及当涉及两个或两个以上标识时标识的筛选条件之间的运算关系,来确定过滤源数据的行记录的具体过程,本申请的实施例不做限定。以下举例说明。
在第一个应用场景中,过滤规则涉及一个标识。对源数据中的每行记录,根据该标识指定列的值是否满足该标识对应的筛选条件,来确定筛选结果。如果筛选结果是通过该标识的筛选,则将该行记录作为目标数据,否则丢弃该行数据。
在第二个应用场景中,过滤规则中涉及两个或两个以上的标识,并且每个标识在过滤规则中不会被重复使用(即采用标识表达过滤规则时每个标识只使用一次)。假设过滤规则涉及的所有标识为N(N为大于1的自然数)个,设N个标识为标识1、标识2、直到标识N,则可以采用如下过程来得到目标数据:
将源数据作为标识1的待处理数据,对待处理数据中的每行记录,根据该行记录中标识1指定列的值、与标识1对应的筛选条件,确定该行记录是否通过标识1的筛选;按照是否通过的筛选结果和过滤规则将该行记录或者作为目标数据、或者作为已处理数据、或者被丢弃。当筛选结果为通过标识1的筛选时,该行记录是作为目标数据、已处理数据、还是被丢弃,与过滤规则中标识1的筛选条件与其他标识筛选条件的运算关系相关;
将标识1的已处理数据作为标识2的待处理数据,采用标识2重复进行上述筛选过程(即类似于采用标识1进行筛选时的上述处理过程),得到标识2的已处理数据;
直到标识(N-1)的已处理数据作为标识N的待处理数据,通过标识N的筛选后,得到目标数据。
以下举两个例子说明在第二个应用场景中,筛选条件之间的运算关系如何影响在按照某个标识进行筛选时对行记录的处理结果。
在例一中,过滤规则涉及第一标识和第二标识,并且过滤规则为:通过第一标识的筛选并且通过第二标识的筛选。在进行数据过滤时,首先将源数据作为第一标识的待处理数据,将这些待处理数据中通过第一标识筛选的行记录保存为已处理数据,将未通过第一标识筛选的行记录丢弃;其次,将第一标识的已处理数据作为第二标识的待处理数据,将通过第二标识筛选的行记录保存为目标数据,将未通过第二标识筛选的行记录丢弃。
在例二中,过滤规则涉及第三标识和第四标识,并且过滤规则为:通过第三标识的筛选或者通过第四标识的筛选。在进行数据过滤时,首先将源数据作为第三标识的待处理数据,将这些待处理数据中通过第三标识筛选的行记录保存为目标数据,将未通过第三标识筛选的行记录保存为第三标识的已处理数据;其次,将第三标识的已处理数据作为第四标识的待处理数据,将通过第四标识筛选的行记录保存为目标数据,将未通过第四标识筛选的行记录丢弃。
可以在过滤规则中对标识应用过滤方向,来指定所涉及的各个标识对应的筛选条件如何适用。过滤方向包括正向和反向,当某个标识的过滤方向为正向时,如果某个行记录中该标识指定列的值满足该标识对应的筛选条件,则该行记录通过该标识的筛选;当某个标识的过滤方向为反向时,如果某个行记录中该标识指定列的值不满足该标识对应的筛选条件,则该行记录通过该标识的筛选。
为了便于从业务的角度构建和应用过滤规则,可以采用一个到多个标签来表达过滤规则。标签用来描述具备一定特征的业务,由一个以上标识和对应于每个标识的筛选条件组成,其中每个标识的至少一个指定列与标签所描述业务的上述特征相关。
当标签包括两个及以上的标识时,标签还包括这些标识的筛选条件间的运算关系;类似的,当过滤规则采用两个及以上的标签时,也会指定这些标签之间的运算关系。可见,过滤规则本质上仍然由标识及其对应的筛选条件、筛选条件之间的运算关系确定,而标签只是从业务角度用来组织标识的一种形式,不会影响前述对源数据的实质过滤过程。
对采用标签来保存标识及其对应的筛选条件的应用场景,在进行数据过滤时,当要使用某个标识时,可以在该标识所属的标签中查找该标识对应的筛选条件,按照查找到的筛选条件对源数据的行记录进行过滤,在根据过滤规则遍历所有标识后得到目标数据。
在业务具有不同层级的应用场景中,可以采用标签来描述具备一定特征的细分业务,而采用标签组合来描述包括该细分业务和其他同类型细分业务(即与该细分业务共同具备某种业务共性的其他同层级的业务)的高层级业务。标签组合包括至少两个标签,每个标签都是标签组合的组成部分,换言之,属于同一个标签组合的标签之间是或的运算关系。例如,工行网银渠道、建行网银渠道、农行网银渠道是3个标签,而网银渠道则是包括这3个标签的标签组合。
在使用标签组合的应用场景中,过滤规则可以采用至少一个标签和/或至少一个标签组合来表达。在进行数据过滤时,当要使用某个标识时,可以在标识所属的标签或者标识所属的标签组合中查找该标识对应的筛选条件,按照查找到的筛选条件对源数据的行记录进行过滤;在根据过滤规则遍历所有标识后得到目标数据。
可见,本申请的实施例中,通过标识来代表原始数据的一个到多个列,采用标签以及对应于标签的筛选条件来表达过滤规则,在从原始数据中提取出标签指定列后,可以逐个应用筛选条件,来针对原始数据中对应的标识所指定的列来进行处理运算,在简化处理运算的同时减少了处理的数据量,加快了数据过滤的速度;同时,同时开发人员可以通过为标识指定列来匹配于原始数据的数据结构,而无需修改语句或者进行数据结构转换,减轻了开发人员的工作量。
在本申请的一个应用示例中,第三方支付平台上,多个商户之间、多个用户之间、以及商户与用户之间,通过第三方支付平台以及多个银行提供的若干渠道相互进行支付,负责处理不同支付业务的多个业务***生成各个业务的日志,这些日志将作为原始数据,根据银行、渠道(如快捷、网银)、资金流向(如流入、流出)等进行分类,动态的过滤出日志中相应的数据,展现到表格、饼图、柱状图等监控报表中。
在第三方支付平台上,按照对日志数据的统计需求,采用标识来描述原始数据中与某项或某些项业务的数据过滤和统计相关的列,也即将原始数据中的该列或这些列定义为标识指定的列。在将标识应用于某个数据过滤过程时,为该标识设定符合该数据过滤过程需求的筛选条件,并且将若干个与某项业务的特性相关联的标识及其筛选条件组合为标签。对应用场景中目标数据是由分别经过两个或两个以上标签过滤后的数据集合的情形,还可以将这些标签的集合生成标签组合。一种标签组合、标签与标识的关系如图2所示。
第三方支付平台采用标签和/或标签组合来表达数据过滤时的过滤规则,在表达过滤规则时,可以指定标签或标签组合的过滤方向,是将符合标签或标签组合中所有标识对应的筛选条件的行记录作为通过筛选的行记录(正向过滤),还是将不符合标签或标签组合中所有标识对的筛选条件的行记录作为通过筛选的行记录(反向过滤)。一种过滤方向的配置示例如图3所示。
第三方支付平台上负责进行数据过滤的服务器(以下称为过滤服务器)在收到来源于某个业务***的原始数据后,将过滤该原始数据采用的过滤规则的配置(包括所采用的标签、标签组合、标识及其对应的筛选条件、筛选条件间的运算关系等)写入缓存。
过滤服务器从缓存中读取该过滤规则用到的所有标识的指定列,将这些指定列从原始数据中提取出来,形成用于过滤的源数据。按照过滤规则中标识之间的运算关系,过滤服务器从第一个标识开始,将源数据作为该标识的待处理数据,在缓存中查询该标识所属标签或标签组合中其对应的筛选条件以及过滤方向,基于筛选条件和过滤方向逐行判断待处理数据的行记录是否通过本标识的筛选,再根据与其他标识的运算关系,决定将通过及未通过本标识筛选的行记录写入目标数据、写入已处理数据、还是丢弃;在采用第一个标识遍历待处理数据的所有行记录后,过滤服务器提取第二个标识,将第一个标识的已处理数据作为第二个标识的待处理数据,重复上述处理过程,直到经过最后一个标识的处理过程后,得到目标数据。
例如,对某一个标识,其处理过程可以是:根据该标识的指定列组成一个虚拟标识,在缓存中查找是否有与该虚拟标识一致的标识;如果没有,则可能缓存中的过滤规则可能已经更新过,退出过滤过程;如果有,则查找该标识属于哪个标签或哪个复杂标签,应用该标签或复杂标签中对应于该标识的筛选条件来进行待处理数据的行记录处理。
例如,从数据来源获取所有渠道的交易量数据的示例如表1所示,其中维度2为发生这些交易的关联机构:
维度1 |
维度2 |
交易量 |
Fininflux |
Icbc9011 |
100 |
Fininflux |
Icbc701 |
101 |
supergw |
ICBC51_ICBCSH010120 |
102 |
Fininflux |
CCb701 |
103 |
… |
… |
… |
表1
如果希望过滤出关联结构为工行的数据,则将维度1和维度2组成标识A,将标签A设置为包括标识1,并且标识1对应的筛选条件为维度2是工行渠道,则在对表1中的行记录进行处理时,按照标识1的定义,把维度1、维度2组装成虚拟指标,并在缓存中查找是否存在一致标识;在找到一致的标识1后,查找标识1所属标签A中标识1对应的筛选条件;应用对应于标识1的筛选条件,如果该行记录的维度2是工行渠道,则该行记录为目标数据。
与上述流程实现对应,本申请的实施例还提供了一种数据过滤的装置。该装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过所在设备的CPU(Central Process Unit,中央处理器)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了图4所示的CPU、内存以及非易失性存储器之外,数据过滤的装置所在的设备通常还包括用于进行无线信号收发的芯片等其他硬件,和/或用于实现网络通信功能的板卡等其他硬件。
图5所示为本申请实施例提供的一种数据过滤的装置,过滤规则由一个到多个标识以及对应于每个标识的筛选条件来表达,所述标识包括原始数据的至少一个列,所述装置包括源数据提取单元和源数据过滤单元,其中:源数据提取单元用于从原始数据中提取所述过滤规则涉及的所有标识指定的列,得到源数据;源数据过滤单元用于根据过滤规则的表达,依次采用各个标识对应的筛选条件对源数据的行记录进行过滤,得到目标数据。
一种实现方式中,所述过滤规则涉及的所有标识为N个并且每个标识在表达过滤规则时只使用一次,N为自然数;所述源数据过滤单元具体用于:将源数据作为标识1的待处理数据,根据待处理数据的每行记录中标识1指定列的值、与标识1对应的筛选条件确定所述行记录是否通过标识1的筛选,按照是否通过的结果和过滤规则将所述行记录或者作为目标数据、或者作为已处理数据、或者被丢弃;将上一个标识的已处理数据作为下一个标识的待处理数据,采用下一个标识重复上述筛选过程;直到经过标识N的筛选后,得到目标数据。
上述实现方式中,所述过滤规则包括:通过第一标识的筛选、并且通过第二标识的筛选;所述源数据过滤单元具体用于:将第一标识的待处理数据中通过第一标识筛选的行记录保存为已处理数据;将第一标识的已处理数据作为第二标识的待处理数据,将通过第二标识筛选的行记录保存为目标数据。
上述实现方式中,所述过滤规则包括:通过第三标识的筛选、或者通过第四标识的筛选;所述源数据过滤单元具体用于:将第三标识的待处理数据中通过第三标识筛选的行记录保存为目标数据,将未通过第三标识筛选的行记录保存为第三标识的已处理数据;将第三标识的已处理数据作为第四标识的待处理数据,将通过第四标识筛选的行记录保存为目标数据。
上述实现方式中,所述过滤规则还包括:过滤方向;当过滤方向为正向时,如果某个行记录中标识指定列的值满足所述标识对应的筛选条件,则所述行记录通过所述标识的筛选;当过滤方向为反向时,如果某个行记录中标识指定列的值不满足所述标识对应的筛选条件,则所述行记录通过所述标识的筛选。
一个例子中,所述过滤规则由至少一个标签来表达;所述标签用来描述具备一定特征的业务,包括一个以上标识和对应于每个标识的筛选条件,每个标识的至少一个指定列与所述特征相关;所述源数据过滤单元具体用于:对每个标识,在标识所属的标签中查找标识对应的筛选条件,按照所述筛选条件对源数据的行记录进行过滤;在根据过滤规则遍历所有标识后得到目标数据。
上述例子中,所述过滤规则由至少一个标签和/或至少一个标签组合来表达,所述标签组合包括至少两个标签;所述源数据过滤单元具体用于:对每个标识,在标识所属的标签或标签组合中查找标识对应的筛选条件,按照所述筛选条件对源数据的行记录进行过滤;在根据过滤规则遍历所有标识后得到目标数据。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。