具体实施方式
下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
请一并参阅图1、图2、图3和图4。本说明书实施例提供一种数据处理方法。所述数据处理方法以客户端为执行主体。典型的客户端例如可以为智能手机、平板电子设备、便携式计算机、个人数字助理(PDA)、服务器、工控机(工业控制计算机)、个人计算机(PC机)、或一体机等。所述数据处理方法可以包括以下步骤。
步骤S10:获取用户操作对应的行为数据。
在本实施例中,所述客户端可以提供有显示页面。所述显示页面可以包括至少一个页面元素。所述页面元素可以为页面中的一个UI(User Interface)单元。典型的页面元素例如可以包括标签控件、文本控件、按钮控件、文本框控件、和图片控件等。所述客户端可以在检测到所述显示页面中的页面元素被触发时,便认为检测到针对该页面元素的用户操作;进而可以获取所述用户操作对应的行为数据。所述页面元素被触发包括但不限于所述页面元素被按下、点击、双击、划过、按下时间超过预定时间等。
在本实施例中,所述行为数据可以用于描述所述用户操作。所述行为数据可以包括埋点标识、时间数据和用户标识等。所述客户端中可以运行有应用程序。为了便于在所述应用程序的特定流程中收集数据,以用于跟踪所述应用程序的使用状况,为后续进一步优化所述应用程序提供数据支撑,可以在所述应用程序中进行埋点。所述应用程序中的埋点可以对应有埋点标识,所述埋点标识可以用于标识埋点。例如,所述应用程序可以提供有显示页面。所述显示页面可以包括至少一个页面元素。那么,可以在所述页面元素的代码位置处进行埋点。如此,所述行为数据中的埋点标识可以用于标识所述用户操作对应的埋点。所述时间数据可以用于描述所述用户操作对应的时间。所述时间数据的精度可以根据实际需要灵活设定,例如可以为天、小时、或分钟等。所述时间数据例如可以为2018年5月10日等。所述用户标识可以用于标识实施所述用户操作的用户。典型的用户标识例如可以包括用户账户、用户手机号、和用户电子邮箱地址等。
步骤S12:基于所述时间数据和所述用户标识获取目标数据序列。
在本实施例中,所述客户端可以提供数据序列集合。所述数据序列集合可以包括至少一个数据序列。所述数据序列可以对应有时间数据和用户标识,且可以包括对应有索引值的多个数据元素。典型的所述数据序列例如可以包括布隆过滤器中的二进制位向量。当然,这里所述布隆过滤器中的二进制位向量仅为示例,事实上所述数据序列还可以为其它的形式,例如数组等。数据序列与时间数据和用户标识相对应的表现形式可以为任意形式。例如,数据序列可以直接分别与时间数据和用户标识相对应;或者,数据序列可以与配置数据相对应,所述配置数据可以基于时间数据和用户标识得到。所述配置数据例如可以为时间数据和用户标识拼接后形成的数据。
所述客户端可以每间隔预设时间周期更新所述数据序列对应的时间数据,以及初始化所述数据序列中的数据元素。所述预设时间周期可以根据实际需要灵活设定,例如可以为一天、5个小时、或10个小时等。例如,所述客户端可以每间隔预设时间周期将所述数据序列对应的时间数据更新为当前日期,以及将所述数据序列中的数据元素更新为指定数据元素。所述指定数据元素可以根据实际需要灵活设定,例如可以为0等。
在本实施例中,所述客户端可以基于所述行为数据中的时间数据和用户标识,从所述数据序列集合中获取目标数据序列。
步骤S14:使用多个哈希函数计算所述埋点标识对应的多个索引值。
在本实施例中,所述哈希函数能够将任意长度的字符串映射为散列值。为了在后续过程中能够将所述行为数据中的埋点标识映射至所述数据序列集合中的数据序列,所述散列值的大小通常小于或等于所述数据序列集合中数据序列的长度。所述哈希函数可以是开发人员在所述客户端预先设定的。所述哈希函数的数量可以根据实际需要灵活设定,例如可以为10、12、或15等。在本实施例中,所述客户端可以分别使用每个哈希函数对所述行为数据中的埋点标识进行计算,得到散列值;可以将得到的散列值作为索引值。
步骤S16:从所述目标数据序列中获取所述多个索引值对应的多个目标数据元素。
步骤S18:在所述多个目标数据元素满足预设条件时,将所述行为数据上传给服务器。
在本实施例中,所述客户端可以从所述目标数据序列中,分别获取每个索引值对应的目标数据元素,得到多个目标数据元素。所述客户端可以检测所述多个目标数据元素是否满足预设条件。在所述多个目标数据元素满足预设条件时,所述客户端便认为所述行为数据是首次获取到的;可以将所述行为数据上传给服务器。所述预设条件例如可以包括:多个数据元素中包括有所述指定数据元素。这里多个数据元素中包括有所述指定数据元素可以理解为:多个数据元素全部为所述指定数据元素;或者,多个数据元素中的部分数据元素为所述指定数据元素。
在本实施例的一个实施方式中,所述客户端可以将所述行为数据作为日志数据;可以为所述日志数据添加用于标识日志数据类型的属性值;可以将添加了属性值的所述日志数据上传给服务器。这样,通过日志数据的属性值,所述服务器能够确定日志数据的上传途径。例如,基于某一日志数据的属性值,所述服务器能够确定该日志数据是基于本实施例的数据处理方法上传的。
在本实施例的一个实施方式中,所述客户端可以直接将所述行为数据上传给服务器。或者,所述客户端还可以将所述行为数据作为日志数据集合中的日志数据;可以将所述日志数据集合上传给服务器。
在本实施例的一个实施方式中,在所述多个目标数据元素满足预设条件时,所述客户端还可以使用所述多个哈希函数,将所述行为数据中的埋点标识映射至所述目标数据序列。具体地,所述客户端可以分别使用每个哈希函数对所述行为数据中的埋点标识进行计算,得到该哈希函数对应的散列值;可以将该散列值作为索引值;可以将该索引值在所述目标数据序列中对应的数据元素,更新为特定数据元素。这里特定数据元素与所述指定数据元素不同。例如,所述特定数据元素可以为1,所述指定数据元素可以为0。这样,在下次获取到包含有相同时间数据、相同用户标识、和相同埋点标识的行为数据时,所述客户端便认为该行为数据不是首次获取到的;可以使用其它方式对该行为数据进行处理。例如,所述客户端可以使用后续图5对应的数据处理方法来处理该行为数据。
在本实施例的一个实施方式中,在所述多个目标数据元素不满足预设条件时,所述客户端便认为所述行为数据不是首次获取到的;可以使用其它方式对所述行为数据进行处理。例如,所述客户端可以使用后续图5对应的数据处理方法来处理所述行为数据。
在本实施例的一个实施方式中,所述行为数据还可以包括业务类型标识和设备标识中的至少一个。所述业务类型标识可以用于标识业务类型。典型的业务类型例如可以包括转账、支付、和登录等。所述设备标识可以用于标识所述客户端。所述设备标识具体可以为所述客户端的属性信息,所述属性信息例如可以包括MAC地址、和硬件设备型号等。当然,所述设备标识还可以为基于特定算法生成的能够标识所述客户端的信息。
在本实施例中,所述客户端可以获取用户操作对应的行为数据;可以基于所述时间数据和所述用户标识获取目标数据序列;可以使用多个哈希函数计算所述埋点标识对应的多个索引值;可以从所述目标数据序列中获取所述多个索引值对应的多个目标数据元素;可以在所述多个目标数据元素满足预设条件时,将所述行为数据上传给服务器。这样,所述客户端可以将用户操作产生的行为数据至少上传一次;从而保证了服务器统计分析结果的正确性。
例如,所述服务器的统计分析结果可以包括UV(Unique Visitor,独立访问量)。所述UV可以为在一个时间周期内的独立访问量。同一用户在一个时间周期内的多次访问不被累计。本实施例中的客户端可以将用户操作产生的行为数据在一个时间周期内至少上传一次;从而保证了服务器UV统计分析结果的正确性。
请一并参阅图1和图5。本说明书实施例提供一种数据处理方法。所述数据处理方法以客户端为执行主体。典型的客户端例如可以为智能手机、平板电子设备、便携式计算机、个人数字助理(PDA)、服务器、工控机(工业控制计算机)、个人计算机(PC机)、或一体机等。所述数据处理方法可以包括以下步骤。
步骤S20:获取用户操作对应的行为数据。
在本实施例中,所述行为数据可以包括业务类型标识、设备标识和时间信息。所述客户端获取行为数据的过程可以参见前述实施例,在此不再赘述。
步骤S22:获取所述业务类型标识对应的目标抽样率。
在本实施例中,所述客户端可以提供抽样率集合。所述抽样率集合可以包括至少一个抽样率。所述抽样率可以为0至1之间的任意实数。所述抽样率可以对应有业务类型标识。
所述抽样率集合可以是服务器下发的。具体地,所述服务器可以向所述客户端主动推送抽样率集合。所述客户端可以接收所述抽样率集合。或者,所述客户端可以向所述服务器发送抽样率获取请求。所述服务器可以接收所述抽样率获取请求;可以向所述客户端反馈抽样率集合。所述客户端可以接收所述抽样率集合。
在本实施例中,所述客户端可以基于所述行为数据中的业务类型标识,从所述数据序列集合中获取目标抽样率。
步骤S24:基于所述目标抽样率和预置的桶数量,确定采集条件。
在本实施例中,所述桶数量的大小可以根据实际需要灵活设定,例如可以为1000、1500、或2000等。需要说明的是,这里的桶数量仅为一个数值,是用于确定采集条件的;并不代表所述客户端在实质上分配了所述桶数量个存储区域。
在本实施例中,所述客户端可以基于所述目标抽样率和预置的桶数量,计算得到参考桶标识;可以基于所述参考桶标识确定采集条件。所述采集条件例如可以包括:行为数据对应的桶标识小于或等于参考桶标识。例如,所述客户端可以使用公式BucketR=N×Rate来计算参考桶标识。其中,BucketR可以表示参考桶标识;N可以表示预置的桶数量;Rate可以表示目标抽样率。当然,本领域技术人员应当能够理解,上述参考桶标识计算公式仅为示例,在实际上还可以有其它的公式或方法来计算参考桶标识。
步骤S26:基于所述设备标识和所述时间数据,计算所述行为数据对应的桶标识。
在本实施例中,所述客户端可以基于所述目标抽样率、所述时间数据、和预置的桶数量,计算桶偏移量;可以基于所述桶偏移量、所述设备标识、和预置的桶数量,计算所述行为数据对应的桶标识。
具体地,所述客户端可以使用公式来计算桶偏移量。其中,Offset可以表示桶偏移量;D可以为根据时间数据计算得到的数据;mod可以表示取余数运算。数据D具体可以为时间数据与1970年01月01日之间的差值。例如,时间数据可以为2018年05月10日,数据D可以为480409。此处数据D的计算方法仅为示例,在实际上还可以有其它的方法根据时间数据来计算数据D。另外,本领域技术人员应当能够理解,上述桶偏移量计算公式也仅为示例,在实际上还可以有其它的公式或方法来计算桶偏移量。
具体地,所述客户端可以使用公式BucketID=((UmodN)+Offset)modN来计算所述行为数据对应的桶标识。其中,BucketID可以表示所述行为数据对应的桶标识;U可以为基于设备标识计算得到的数据。所述客户端具体可以将所述设备标识的后两位数据作为一个64进制数,进而可以将所述设备标识的后两位数据转换为10进制数,可以将转换得到的数据作为数据U。例如,所述设备标识可以为ABCDEFG,所述设备标识的后两位数据可以为FG,数据U可以为326。此处数据U的计算方法仅为示例,在实际上还可以有其它的方法根据设备标识来计算数据U。另外,本领域技术人员应当能够理解,上述桶标识计算公式也仅为示例,在实际上还可以有其它的公式或方法来计算桶标识。
步骤S28:在所述桶标识满足所述采集条件时,将所述行为数据上传给服务器。
在本实施例中,在所述桶标识满足所述采集条件时,所述客户端可以将所述行为数据上传给服务器;在所述桶标识不满足所述采集条件时,所述客户端可以放弃所述行为数据。所述客户端可以采用任意方式放弃所述行为数据,例如可以忽略或删除所述行为数据。
在本实施例的一个实施方式中,所述客户端可以直接将所述行为数据上传给服务器。或者,所述客户端还可以将所述行为数据作为日志数据集合中的日志数据;可以将所述日志数据集合上传给服务器。
在本实施例的一个实施方式中,所述行为数据还可以包括埋点标识和用户标识中的至少一个。所述埋点标识可以用于标识所述用户操作对应的埋点。所述用户标识可以用于标识实施所述用户操作的用户。
在本实施例中,所述客户端可以获取用户操作对应的行为数据;可以获取所述业务类型标识对应的目标抽样率;可以基于所述目标抽样率和预置的桶数量,确定采集条件;可以基于所述设备标识和所述时间数据,计算所述行为数据对应的桶标识;可以在所述桶标识满足所述采集条件时,将所述行为数据上传给服务器。这样,所述客户端可以对用户操作产生的行为数据进行抽样上传,从而减少了向服务器发送的行为数据的数量。
另外在本实施例中,所述客户端可以基于设备标识和时间数据来确定采集条件;可以在所述行为数据对应的桶标识满足所述采集条件时,将所述行为数据上传给服务器。这样,所述客户端可以使得用户操作产生的行为数据在一个时间周期内要么全部上传,要么全部不上传。即,所述客户端可以使上传的行为数据保持连续性;从而保证了服务器统计分析结果的正确性。
例如,所述服务器的统计分析结果可以包括PV(Page View,页面访问量)。所述PV可以为在一个时间周期内的页面访问量。同一用户在一个时间周期内的多次访问被累计。本实施例中的客户端可以将用户操作产生的行为数据在一个时间周期内全部上传;从而保证了服务器PV统计分析结果的正确性。
请参阅图6。本说明书实施例提供一种客户端。所述客户端可以包括以下单元模块。
行为数据获取单元30,用于获取用户操作对应的行为数据;所述行为数据包括埋点标识、时间数据和用户标识;
数据序列获取单元32,用于基于所述时间数据和所述用户标识获取目标数据序列;
索引值计算单元34,用于使用多个哈希函数计算所述埋点标识对应的多个索引值;
数据元素获取单元36,用于从所述目标数据序列中获取所述多个索引值对应的多个目标数据元素;
行为数据上传单元38,用于在所述多个目标数据元素满足预设条件时,将所述行为数据上传给服务器。
请参阅图7。本说明书实施例提供一种客户端。所述客户端可以包括通信组件和处理器。
在本实施例中,所述通信组件可以按任何适当的方式实现,例如,有线网卡、无线网卡、蓝牙模块、红外收发模块、超宽带通信模块、以及紫蜂协议通信模块等。所述通信组件可以用于建立通信连接并进行数据传输;
在本实施例中,所述处理器可以按任何适当的方式实现。例如,所述处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。所述处理器可以用于获取用户操作对应的行为数据;所述行为数据包括埋点标识、时间数据和用户标识;基于所述时间数据和所述用户标识获取目标数据序列;使用多个哈希函数计算所述埋点标识对应的多个索引值;从所述目标数据序列中获取所述多个索引值对应的多个目标数据元素;在所述多个目标数据元素满足预设条件时,将所述行为数据上传给服务器。
请参阅图8。本说明书实施例提供一种客户端。所述客户端可以包括以下单元模块。
行为数据获取单元40,用于获取用户操作对应的行为数据;所述行为数据包括业务类型标识、设备标识和时间数据;
抽样率获取单元42,用于获取所述业务类型标识对应的目标抽样率;
采集条件确定单元44,用于基于所述目标抽样率和预置的桶数量,确定采集条件;
桶标识计算单元46,用于基于所述设备标识和所述时间数据,计算所述行为数据对应的桶标识;
行为数据上传单元48,用于在所述桶标识满足所述采集条件时,将所述行为数据上传给服务器。
请参阅图7。本说明书实施例提供一种客户端。所述客户端可以包括通信组件和处理器。
在本实施例中,所述通信组件可以按任何适当的方式实现,例如,有线网卡、无线网卡、蓝牙模块、红外收发模块、超宽带通信模块、以及紫蜂协议通信模块等。所述通信组件可以用于建立通信连接并进行数据传输;
在本实施例中,所述处理器可以按任何适当的方式实现。例如,所述处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。所述处理器可以用于获取用户操作对应的行为数据;所述行为数据包括业务类型标识、设备标识和时间数据;获取所述业务类型标识对应的目标抽样率;基于所述目标抽样率和预置的桶数量,确定采集条件;基于所述设备标识和所述时间数据,计算所述行为数据对应的桶标识;在所述桶标识满足所述采集条件时,将所述行为数据上传给服务器。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其对于客户端实施例而言,由于其基本相似于数据处理方法实施例,所以描述的比较简单,相关之处参见数据处理方法实施例的部分说明即可。
另外,可以理解的是,所属领域技术人员在阅读本说明书文件之后,可以无需创造性劳动想到本说明书文件中列举的部分或全部实施例之间可以组合,这些组合也在本说明书公开和保护的范围内。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片2。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
本说明书可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。