基于类结构化查询语句的数据处理方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于类结构化查询语句的数据处理方法和装置。
背景技术
随着软硬件的飞速发展,新经济体逐渐的崛起,同时也促成了大数据实时计算的架构落地和应用,依托实时计算框架落地的各种人工智能技术也得到了迅猛发展。实时计算需要精准计算出截至到目前这个时刻向前N分钟、N小时或N天的时间段内的计算结果,或者当分钟、当小时、当天或当月的计算结果,所以选用的实时计算引擎起到关键性作用。
目前,比较常用的用于实时数据处理的开源的项目有storm(即,一种开源的分布式实时大数据处理框架)、spark streaming(即,一种实现高吞吐量的、具备容错机制的实时流数据处理框架)、flink(即,一种分布式大数据处理引擎)等。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:(1)storm、spark streaming和flink需要部署相应的环境才能够运行;(2)storm、spark streaming和flink的应用都是以软件程序包的形式提交到服务器上运行,如果程序有修改的话,就需要重新打包上传服务器,停掉老的程序,再运行新的程序,很难做到时间上无缝的上线;(3)storm、spark streaming和flink很难做成一套通用的程序,每次都要重新去开发代码实现;(4)storm需要缓存整个窗口的所有数据,窗口结束时一起计算,造成了计算的瓶颈、整体的吞吐较低,会造成数据不准;spark streaming是对流式数据进行批处理,难做到秒级甚至亚秒级的延迟。
发明内容
有鉴于此,本发明实施例提供一种基于类结构化查询语句的数据处理方法和装置,不需要部署额外的运行环境,并且可以达到时间上无缝上线的效果,加强了数据处理的通用性,提高了数据处理的计算速度。
为实现上述目的,根据本发明实施例的第一方面,提供了一种基于类结构化查询语句的数据处理方法。
本发明实施例的一种基于类结构化查询语句的数据处理方法,包括:获取至少一个数据处理参数,并根据所述至少一个数据处理参数生成数据处理任务;将所述数据处理任务转化为类结构化查询语句;判断目标数据是否符合所述类结构化查询语句中的选择条件,若是,则将所述目标数据插入所述数据处理任务的关键字对应的有序集中。
可选地,所述将所述目标数据插入所述数据处理任务的关键字对应的有序集中,包括:根据所述数据处理任务,从所述目标数据中选择第一存储数据和第二存储数据;确定所述数据处理任务的关键字,并将所述第一存储数据和所述第二存储数据插入所述关键字对应的有序集中。
可选地,在确定所述数据处理任务的关键字之前,所述方法还包括:获取所述数据处理任务的唯一标识,并确定所述至少一个数据处理参数中的任务维度参数;根据所述数据处理任务的唯一标识和所述任务维度参数,生成所述数据处理任务的关键字。
可选地,所述将所述第一存储数据和所述第二存储数据插入所述关键字对应的有序集中,包括:在所述至少一个数据处理参数中包括去重参数的情况下,判断所述关键字对应的有序集中是否包括所述第一存储数据,若是,则直接更新所述第二存储数据。
可选地,在将所述目标数据插入所述数据处理任务的关键字对应的有序集中之前,所述方法还包括:确定所述目标数据的目标时间,并根据所述至少一个数据处理参数中的时间参数和所述目标时间,判断所述数据处理任务的关键字对应的有序集中是否存在超期数据,若是,则将所述超期数据删除。
可选地,在判断目标数据是否满足所述类结构化查询语句中的选择条件之前,所述方法还包括:对原始数据集进行清洗,并对清洗后的原始数据集中的数据进行格式统一化处理,得到目标数据。
可选地,所述方法还包括:根据数据查询请求,确定当前时间和所述至少一个数据处理参数中的时间参数,对所述第二存储数据进行过滤,并按照所述至少一个数据处理参数中的执行参数对经过过滤的第二存储数据进行处理,得到数据查询结果。
为实现上述目的,根据本发明实施例的第二方面,提供了一种基于类结构化查询语句的数据处理装置。
本发明实施例的一种基于类结构化查询语句的数据处理装置,包括:生成模块,用于获取至少一个数据处理参数,并根据所述至少一个数据处理参数生成数据处理任务;转化模块,用于将所述数据处理任务转化为类结构化查询语句;插入模块,用于判断目标数据是否符合所述类结构化查询语句中的选择条件,若是,则将所述目标数据插入所述数据处理任务的关键字对应的有序集中。
可选地,所述插入模块还用于:根据所述数据处理任务,从所述目标数据中选择第一存储数据和第二存储数据;确定所述数据处理任务的关键字,并将所述第一存储数据和所述第二存储数据插入所述关键字对应的有序集中。
可选地,所述插入模块还用于:获取所述数据处理任务的唯一标识,并确定所述至少一个数据处理参数中的任务维度参数;根据所述数据处理任务的唯一标识和所述任务维度参数,生成所述数据处理任务的关键字。
可选地,所述插入模块还用于:在所述至少一个数据处理参数中包括去重参数的情况下,判断所述关键字对应的有序集中是否包括所述第一存储数据,若是,则直接更新所述第二存储数据。
可选地,所述装置还包括判断模块,用于:确定所述目标数据的目标时间,并根据所述至少一个数据处理参数中的时间参数和所述目标时间,判断所述数据处理任务的关键字对应的有序集中是否存在超期数据,若是,则将所述超期数据删除。
可选地,所述转化模块还用于:对原始数据集进行清洗,并对清洗后的原始数据集中的数据进行格式统一化处理,得到目标数据。
可选地,所述装置还包括查询模块,用于:根据数据查询请求,确定当前时间和所述至少一个数据处理参数中的时间参数,对所述第二存储数据进行过滤,并按照所述至少一个数据处理参数中的执行参数对经过过滤的第二存储数据进行处理,得到数据查询结果。
为实现上述目的,根据本发明实施例的第三方面,提供了一种电子设备。
本发明实施例的一种电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本发明实施例的基于类结构化查询语句的数据处理方法。
为实现上述目的,根据本发明实施例的第四方面,提供了一种计算机可读介质。
本发明实施例的一种计算机可读介质,其上存储有计算机程序,程序被处理器执行时实现本发明实施例的基于类结构化查询语句的数据处理方法。
上述发明中的一个实施例具有如下优点或有益效果:能够根据数据处理参数生成数据处理任务,然后将该数据处理任务转化为类结构化查询语句,从而可以直接利用转化的类结构化查询语句对目标数据进行验证判断,将符合选择条件的目标数据存储至数据处理任务的关键字对应的有序集中,克服了现有开源框架需要部署运行环境的技术问题,并且可以达到时间上无缝上线的效果,加强了数据处理的通用性,提高了数据处理的计算速度。此外,本发明实施例的基于类结构化查询语句的数据处理方法中,根据任务的关键字将符合选择条件的目标数据中的第一存储数据和第二存储数据插入关键字对应的有序集中,从而可以在有数据查询请求时,能够直接根据关键字进行查询,提高了数据查询的效率,进一步提高数据处理的计算速度。另外,本发明实施例的基于类结构化查询语句的数据处理方法中,还考虑了去重参数的情况,应用场景广泛,通用性强。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的基于类结构化查询语句的数据处理方法的主要步骤的示意图;
图2是根据本发明实施例的基于类结构化查询语句的数据处理系统的整体架构图;
图3是根据本发明实施例的基于类结构化查询语句的数据处理装置的主要模块的示意图;
图4是本发明实施例可以应用于其中的示例性系统架构图;
图5是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的基于类结构化查询语句的数据处理方法的主要步骤的示意图,如图1所示,本发明实施例的基于类结构化查询语句的数据处理方法的主要步骤可以包括步骤S101、S102和S103。
步骤S101:获取至少一个数据处理参数,并根据至少一个数据处理参数生成数据处理任务。
本发明实施例中的数据处理参数可以包括:时间参数、执行参数、去重参数、任务维度参数和条件参数等等。其中,时间参数是指时间窗口,执行参数是指count或者sum字段,去重参数是指是否将重复的数据去除,任务维度参数是指此次数据处理任务的统计维度,条件参数是指上游传递过来的一些参数和字段。例如,对于任务1“统计距现在1个小时,当type=1的时候,设备A上登录的用户的数量”,时间参数就是距当前时间1小时,去重参数为不去重,任务维度参数为设备A,执行参数为统计用户数量,条件参数为type=1。用户在管理界面上选择具体的数据处理参数,就可以生成一个实时数据处理任务,并且生成的任务实时生效,不用每次修改代码,重新上线。再比如,对于任务2“统计距现在1天,当type=1的时候,设备B上登录的去重后用户的数量”,时间参数就是距当前时间1天,去重参数为去重,任务维度参数为设备B,执行参数为统计去重后用户的数量,条件参数为type=1。去重后的用户不是指将重复的数据删除,比如,用户zhangsan在1个小时内在同一个设备上登录了三次,要统计1小时内同一设备登录的去重的用户数,那就是zhangsan只能算登录一次。
步骤S102:将数据处理任务转化为类结构化查询语句(StructuredQueryLanguage,简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统)。
本发明实施例中,在生成数据处理任务之后,将该数据处理任务转化为类SQL语句。例如,对于任务1“统计距现在1个小时,当type=1的时候,设备A上登录的用户的数量”,将这个任务转化为类SQL语句:select count(name)from table where type=1group bydevice,时间窗口为1小时。
步骤S103:判断目标数据是否符合类结构化查询语句中的选择条件,若是,则将目标数据插入数据处理任务的关键字对应的有序集中。本发明实施例中在将数据处理任务转化为类SQL语句之后,判断该类SQL语句中的where条件,看目标数据是否满足type=1,如果满足,继续往下进行,如果不满足,直接返回,处理下一条目标数据。
需要注意的是,作为本发明的一个可参考实施例,在判断目标数据是否满足类结构化查询语句中的选择条件之前,基于类结构化查询语句的数据处理方法还可以包括:对原始数据集进行清洗,并对清洗后的原始数据集中的数据进行格式统一化处理,得到目标数据。本发明中的原始数据可以是实时数据,也就是流式数据,比如kafka(即,一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据)等消息队列。在获取到原始数据之后,首先对原始数据进行清洗,去掉一些无用的或者错误的脏数据,此外由于数据格式是多种多样的,比如json、xml等,需要将不同格式的数据进行统一化处理。本发明实施例中可以将原始数据统一化为扁平化的Map<String,Object>格式,Map指的是一种存放键值的数据结构,扁平化是将所有元素放进这个数据结构中,没有嵌套。本发明实施例中还可以替换成其他的数据结构的,但是没有这种键值的数据结构简单,且操作方便。然后对时间进行统一处理成yyyy-mm-dd hh:mm:ss这种格式。比如对用户的信息数据进行统一化后,得到的Map结构为{"name":"zhangsan","device":"A","time":"2018-08-2911:35:16","money":"618","type":"1"}。本发明就是对其他字段数据属性进行实时计算的,因此将数据的时间设置为统一的格式,可以方便进行时间窗口的统计。
本发明实施例中,在目标数据符合类SQL语句中的选择条件的情况下,就将目标数据插入数据处理任务的关键字对应的有序集中。也就是说,如果目标数据满足类SQL语句中where条件,就可以将该目标数据存储至数据库redis的有序集(即,sorted set,允许用户使用指定值对放进去的元素进行排序)中。sorted set的最外层是关键字(key),因此本发明实施例中将目标数据存储至数据处理任务的关键字对应的sorted set中。
作为本发明的再一个可参考实施例,步骤S103中的将目标数据插入数据处理任务的关键字对应的有序集中,可以包括:根据数据处理任务,从目标数据中选择第一存储数据和第二存储数据;确定数据处理任务的关键字,并将第一存储数据和第二存储数据插入关键字对应的有序集中。从上述描述可以看出,本发明实施例是根据数据处理任务的关键字,插入第一存储数据和第二存储数据的,因此生成数据处理任务的关键字具有重要的意义。作为本发明实施例的又一个可参考实施例,在确定数据处理任务的关键字之前,基于类结构化查询语句的数据处理方法还可以包括:获取数据处理任务的唯一标识,并确定至少一个数据处理参数中的任务维度参数;根据数据处理任务的唯一标识和任务维度参数,生成数据处理任务的关键字。也就是说,根据数据处理任务的唯一标识和任务维度参数,生成数据处理任务的关键字。
本发明的第一存储数据和第二存储数据根据数据处理任务决定,举例说明,对于任务1“统计距现在1个小时,当type=1的时候,设备A上登录的用户的数量”,目标数据为{"name":"zhangsan","device":"A","time":"2018-08-29 11:35:16","money":"618","type":"1"},则key设置为1_device=A,第一存储数据可以是zhangsan拼接一个8位的uuid(即,一个防重字段,可以根据实际情况来修改位数),格式为zhangsan_{uuid},第二存储数据可以是将时间2018-08-2911:35:16转化为unixtime:1535513716000存入redis中,此处是将时间转化为unixtime,unixtime是从1970年1月1日开始所经过的秒数,不考虑闰秒。再比如说,对于任务5“在当前小时内,当type=1,用户zhangsan在设备A上花钱的总数”,目标数据为{"name":"zhangsan","device":"A","time":"2018-08-2911:35:16","money":"618",
"type":"1"},则将key设置为3_name=zhangsan&device=iphone123,第一存储数据可以是将时间2018-08-29 11:35:16转化为unixtime:1535513716000,第二存储数据可以是money的值618。
此外,还需要注意的是,本发明实施例针对数据处理参数中包括去重参数和不包括去重参数两种情况。在数据处理参数中不包括去重参数的情况下,则可以直接将数据处理任务转化为类SQL语句,然后判断目标数据是否符合类SQL语句中的选择条件,若符合,则直接将目标数据中的第一存储数据和第二存储数据插入至数据处理任务的关键字对应的有序集中。在数据处理参数中包括去重参数的情况下,本发明实施例中还需要判断关键字对应的有序集中是否包括第一存储数据,若是,则直接更新第二存储数据就可以,若否,则将第一存储数据和该第一存储数据对应的第二存储数据插入有序集中。也就是说,在存在去重参数的情况下,如果有序集中没有第一存储数据,则在有序集中新增第一存储数据,并存储该第一存储数据对应的第二存储数据,如果有序集中有第一存储数据,则在有序集中将该第一存储数据对应的第二存储数据更新为最新的第二存储数据。
还有,本发明实施例中在将目标数据插入数据处理任务的关键字对应的有序集中之前,基于类结构化查询语句的数据处理方法还可以包括:确定目标数据的目标时间,并根据至少一个数据处理参数中的时间参数和目标时间,判断数据处理任务的关键字对应的有序集中是否存在超期数据,若是,则将超期数据删除。也就是说,在向redis的有序集中插入第一存储数据和第二存储数据之前,需要查看redis的有序集中是否存在超期数据,即对于任务1“统计距现在1个小时,当type=1的时候,设备A上登录的用户的数量”,查看已有的第二存储数据是否有大于当前时刻1小时的,如果有,则删除这个第二存储数据和该第二存储数据对应的第一存储数据。
本发明实施例的基于类结构化查询语句的数据处理方法还可以包括:根据数据查询请求,确定当前时间和至少一个数据处理参数中的时间参数,对第二存储数据进行过滤,并按照至少一个数据处理参数中的执行参数对经过过滤的第二存储数据进行处理,得到数据查询结果。也就是说,本发明实施例的基于类结构化查询语句的数据处理方法还可以提供查询,举例说明,针对任务1“统计距现在1个小时,当type=1的时候,设备A上登录的用户的数量”,根据数据处理任务的唯一标识为1,设备为A,这时候序将这些参数转化为key:1_device=A,获取当前时间,并将当前时间转化为unixtime,然后根据key去查询redis,根据当前时间,和统计时间窗口过滤第二存储数据,并对第一存储数据进行统计,就可以得到实时统计的结果。
图2是根据本发明实施例的基于类结构化查询语句的数据处理系统的整体架构图。从图2可以看出,本发明实施例的基于类结构化查询语句的数据处理系统可以包括:实时数据、计算引擎、数据存储和API服务四个部分。
1)实时数据(流式):实时接收流式数据,比如kafka等消息队列,然后开始对消息队列进行数据预处理,可能消息队列的数据格式是多种多样的,比如json,xml等,这时候对数据进行清洗,去掉一些无用的或者错误的脏数据,然后将消息队列的数据统一化为扁平化的Map<String,Object>格式,接着对时间进行统一处理成yyyy-mm-ddhh:mm:ss这种格式。
2)计算引擎:按照任务维度对经过清洗并且格式统一化的实时数据进行实时统计。
比如用户的信息统一化后的Map结构为{"name":"zhangsan","device":"A","time":"2018-08-2911:35:16","money":"618","type":"1"}
任务1:统计距现在1个小时,当type=1的时候,设备A上登录的用户的数量。首先将这个任务转化为类SQL语句:select count(name)from table where type=1group bydevice,时间窗口为1小时。其次判断where条件,从目标数据中取出type看是否满足type=1,如果满足,继续往下进行,如果不满足,直接返回。再次,使用redis的sorted set来实现。sorted set的最外层是个key,里面是第一存储数据和第二存储数据组成的数据对,每个任务都会配置一个唯一的taskId,假定这次的taksId为1,这时候将key设置为1_device=A,第一存储数据是zhangsan拼接一个8位的uuid,格式为zhangsan_{uuid},第二存储数据是将时间2018-08-29 11:35:16转化为unixtime:1535513716000存入redis。因为时间窗口为1小时,因此设置key的过期时间为2小时。过期时间的设置,一般按照统计时间窗口的2倍来设置过期时间,比如统计窗口是1小时,那么设置过期时间为2小时。需要注意的是,在往redis里插入数据的之前,需要查看已有的第二存储数据是否有大于当前时刻1小时的,如果有,删除掉这个第二存储数据和该第二存储数据对应的第一存储数据。最后,当下一条目标数据来的时候,还按照以上的逻辑重新执行一遍。
任务2:统计距现在1天,当type=1的时候,设备A上登录的去重后用户的数量。首先将这个任务转化为类SQL语句:select count(distinctname)from table where type=1group by device,时间窗口为1天。其次要判断where条件,从目标数据中取出type看是否满足type=1,如果满足,继续往下进行,如果不满足,直接返回。再次,如果满足了where条件,使用redis的sorted set来实现。每个任务都会配置一个唯一的taskId,假定这次的taksId为2,这时候将key设置为2_device=A,第一存储数据为zhangsan,第二存储数据是将时间2018-08-29 11:35:16转化为unixtime:1535513716000存入redis。因为时间窗口为1天,此时设置key的过期时间为2天。需要注意的是,在往redis里插入数据的之前,需要查看已有的第二存储数据是否有大于当前时刻1天的,如果有,删除掉这个第二存储数据和该第二存储数据对应的第一存储数据。此外,还需要判断第一存储数据中是否存在,如果没有,则会新增一个,如果存在,则会把第二存储数据覆盖为最新的第二存储数据。最后,当下一条目标数据来的时候,还按照以上的逻辑重新执行一遍。
任务3:统计在当前小时内,当type=1,设备A上登录的用户的数量。同任务1,需要改变的是,在写入第二存储数据的时候,将unixtime转为小时x向下取整存储,也是就是1535513716000/1000/60/60=426531。
任务4:统计在当前小时内,当type=1,设备A上登录的去重后用户的数量。同任务2,需要改变的是,在写入第二存储数据的时候,将unixtime转为小时x向下取整存储,也是就是1535513716000/1000/60/60=426531。
任务5:统计在当前小时内,当type=1,用户zhangsan在设备A上花钱的总数。首先将这个任务转化为类SQL语句:select sum(money)from table where type=1group byname,device,时间是距现在1个小时。其次,要判断where条件,从目标数据中取出type看是否满足type=1,如果满足,继续往下进行,如果不满足,直接返回。再次,如果满足了where条件,使用redis的sorted set来实现。每个任务都会配置一个唯一的taskId,假定这次的taksId为5,这时候将key设置为5_name=zhangsan&device=A,第一存储数据是将时间2018-08-2911:35:16转化为unixtime:1535513716000存入redis,第二存储数据是money的值618。因为时间窗口为1个小时,设置key的过期时间为2个小时。同时在往redis里插入数据的之前,需要查看已有的第一存储数据是否有大于当前时刻1小时的,如果有,删除掉这个第二存储数据和该第二存储数据对应的第一存储数据。最后,当下一条目标数据来的时候,还按照以上的逻辑重新执行一遍,
3)数据存储:使用redis的sorted set来存储实时统计的结果。sortedset的最外层是个key,里面是第一存储数据和第二存储数据组成的数据对。每次插入操作都会重置key的过期时间,过期时间的策略跟时间窗口有关。每次往redis新插入数据的时候,查看里面的时间是否有大约配置的时间窗口的,如果有删除掉。还要注意的是,要设置redis中第一存储数据和第二存储数据组成的数据对的最大阀值,如果数据对的数量过多的话,会造成查询时候阻塞,造成redis的崩溃。
4)API服务:即应用服务,对外提供查询服务。
任务1:传入taskId为1,device为A,这时候将这些参数转化为key:1_device=A,获取当前时间,并将当前时间转化为unixtime,然后根据key去查询redis,根据当前时间,和统计时间窗口过滤第二存储数据,并对第一存储数据进行coun操作,即得到了实时统计的结果。
任务2:同任务1
任务3:同任务1,只是在过滤第二存储数据的时候,根据配置的时间窗口转化为相应的单位去过滤。
任务4:同任务3
任务5:传入taskId为5,name为zhangsan,device为A,这时候程序将这些参数转化为key:5_name=zhangsan&device=A,并获取当前时间,根据key查询redis,根据当前时间,和统计时间窗口去过滤第一存储数据,并对第二存储数据进行sum操作,即得到了实时统计的结果。
根据本发明实施例的基于类结构化查询语句的数据处理的技术方案可以看出,能够根据数据处理参数生成数据处理任务,然后将该数据处理任务转化为类结构化查询语句,从而可以直接利用转化的类结构化查询语句对目标数据进行验证判断,将符合选择条件的目标数据存储至数据处理任务的关键字对应的有序集中,克服了现有开源框架需要部署运行环境的技术问题,并且可以达到时间上无缝上线的效果,加强了数据处理的通用性,提高了数据处理的计算速度。此外,本发明实施例的基于类结构化查询语句的数据处理方法中,根据任务的关键字将符合选择条件的目标数据中的第一存储数据和第二存储数据插入关键字对应的有序集中,从而可以在有数据查询请求时,能够直接根据关键字进行查询,提高了数据查询的效率,进一步提高数据处理的计算速度。另外,本发明实施例的基于类结构化查询语句的数据处理方法中,还考虑了去重参数的情况,应用场景广泛,通用性强。
图3是根据本发明实施例的基于类结构化查询语句的数据处理装置的主要模块的示意图。如图3所示,本发明实施例的基于类结构化查询语句的数据处理装置300主要包括以下模块:生成模块301、转化模块302和插入模块303。其中,生成模块301可用于获取至少一个数据处理参数,并根据至少一个数据处理参数生成数据处理任务;转化模块302可用于将数据处理任务转化为类结构化查询语句;插入模块303可用于判断目标数据是否符合类结构化查询语句中的选择条件,若是,则将目标数据插入数据处理任务的关键字对应的有序集中。
本发明实施例中,插入模块303还可用于:根据数据处理任务,从目标数据中选择第一存储数据和第二存储数据;确定数据处理任务的关键字,并将第一存储数据和第二存储数据插入关键字对应的有序集中。
本发明实施例中,插入模块303还可用于:获取数据处理任务的唯一标识,并确定至少一个数据处理参数中的任务维度参数;根据数据处理任务的唯一标识和任务维度参数,生成数据处理任务的关键字。
本发明实施例中,插入模块303还可用于:在至少一个数据处理参数中包括去重参数的情况下,判断关键字对应的有序集中是否包括第一存储数据,若是,则直接更新第二存储数据。
本发明实施例中,基于类结构化查询语句的数据处理装置还可以包括判断模块(图中未示出)。其中,判断模块可以用于:确定目标数据的目标时间,并根据至少一个数据处理参数中的时间参数和目标时间,判断数据处理任务的关键字对应的有序集中是否存在超期数据,若是,则将超期数据删除。
本发明实施例中,转化模块302还可用于:对原始数据集进行清洗,并对清洗后的原始数据集中的数据进行格式统一化处理,得到目标数据。
本发明实施例中,基于类结构化查询语句的数据处理装置还可以包括查询模块(图中未示出)。其中,查询模块可以用于:根据数据查询请求,确定当前时间和至少一个数据处理参数中的时间参数,对第二存储数据进行过滤,并按照至少一个数据处理参数中的执行参数对经过过滤的第二存储数据进行处理,得到数据查询结果。
从以上描述可以看出,本发明实施例的基于类结构化查询语句的数据处理装置能够根据数据处理参数生成数据处理任务,然后将该数据处理任务转化为类结构化查询语句,从而可以直接利用转化的类结构化查询语句对目标数据进行验证判断,将符合选择条件的目标数据存储至数据处理任务的关键字对应的有序集中,克服了现有开源框架需要部署运行环境的技术问题,并且可以达到时间上无缝上线的效果,加强了数据处理的通用性,提高了数据处理的计算速度。此外,本发明实施例的基于类结构化查询语句的数据处理方法中,根据任务的关键字将符合选择条件的目标数据中的第一存储数据和第二存储数据插入关键字对应的有序集中,从而可以在有数据查询请求时,能够直接根据关键字进行查询,提高了数据查询的效率,进一步提高数据处理的计算速度。另外,本发明实施例的基于类结构化查询语句的数据处理方法中,还考虑了去重参数的情况,应用场景广泛,通用性强。
图4示出了可以应用本发明实施例的基于类结构化查询语句的数据处理方法或基于类结构化查询语句的数据处理装置的示例性系统架构400。
如图4所示,系统架构400可以包括终端设备401、402、403,网络404和服务器405(此架构仅仅是示例,具体架构中包含的组件可以根据申请具体情况调整)。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器405可以是提供各种服务的服务器,例如对用户利用终端设备401、402、403所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的基于类结构化查询语句的数据处理方法一般由服务器405执行,相应地,基于类结构化查询语句的数据处理装置一般设置于服务器405中。
应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图5,其示出了适于用来实现本发明实施例的终端设备的计算机系统500的结构示意图。图5示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,计算机系统500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括生成模块、转化模块和插入模块。其中,这些模块的名称在某种情况下并不构成对该单元本身的限定,例如,生成模块还可以被描述为“获取至少一个数据处理参数,并根据至少一个数据处理参数生成数据处理任务的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:获取至少一个数据处理参数,并根据至少一个数据处理参数生成数据处理任务;将数据处理任务转化为类结构化查询语句;判断目标数据是否符合类结构化查询语句中的选择条件,若是,则将目标数据插入数据处理任务的关键字对应的有序集中。
根据本发明实施例的技术方案,能够根据数据处理参数生成数据处理任务,然后将该数据处理任务转化为类结构化查询语句,从而可以直接利用转化的类结构化查询语句对目标数据进行验证判断,将符合选择条件的目标数据存储至数据处理任务的关键字对应的有序集中,克服了现有开源框架需要部署运行环境的技术问题,并且可以达到时间上无缝上线的效果,加强了数据处理的通用性,提高了数据处理的计算速度。此外,本发明实施例的基于类结构化查询语句的数据处理方法中,根据任务的关键字将符合选择条件的目标数据中的第一存储数据和第二存储数据插入关键字对应的有序集中,从而可以在有数据查询请求时,能够直接根据关键字进行查询,提高了数据查询的效率,进一步提高数据处理的计算速度。另外,本发明实施例的基于类结构化查询语句的数据处理方法中,还考虑了去重参数的情况,应用场景广泛,通用性强。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。