一种数据处理方法、装置、***、电子设备及存储介质
技术领域
本申请涉及互联网技术领域,尤其涉及一种数据处理方法、装置、***、电子设备及存储介质。
背景技术
目前,业务***批量导入操作,普遍是由业务***开发人员根据具体的业务场景,来设计完整的实现代码,例如:编写代码能够实现上传、读取、校验、保存数据库操作。但是,在实现发明的过程中,发明人发现仍然存在存在如下问题:
更换场景时,开发人员的工作量大,针对不同格式的文件,需要编写相应的读取文件内容的代码,以及与数据存储设施连接、通信、操作等代码,针对每个批量导入功能,都需要编写大量代码,另外,业务逻辑代码与文件读取、数据存储设施操作等代码混在一起,不易维护。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种数据处理方法、装置、***、电子设备及存储介质。
第一方面,本申请实施例提供了一种数据处理方法,包括:
确定目标业务类型;
根据所述目标业务类型确定目标模板;
获取待导入的第一数据,以及数据配置信息;
从所述第一数据中获取与所述数据配置信息相应的第二数据,将所述第二数据批量导入所述目标模板,得到数据报表。
可选的,所述确定目标业务类型,包括:
检测作用于预设控件的触发操作;
根据所述触发操作生成业务类型选项;
根据作用于所述业务类型选项的选中操作确定所述目标业务类型。
可选的,所述方法还包括:
确定所述第一数据对应的链接地址;
将所述链接地址存储于云服务器。
可选的,所述获取数据配置信息,包括:
接收输入信息;
当所述输入信息满足预设条件时,将所述输入信息作为所述数据配置信息;
或,所述获取数据配置信息,包括:
获取实时内存信息,以及预设最佳占存比率;
按照预设规则根据所述实时内存信息以及最佳占存比率进行计算,得到所述数据配置信息。
可选的,所述将所述第一数据批量导入所述目标模板,得到数据报表,包括:
获取所述目标模板中的数据项;
从所述第二数据中确定与所述数据项相关联的第三数据;
将所述第三数据导入所述目标模板,得到所述数据报表。
可选的,所述将所述第三数据导入所述目标模板,得到所述数据报表,包括:
当所述第三数据满足预设条件时,将所述第三数据导入所述目标模板,得到所述数据报表;
所述第三数据满足预设条件,包括:
所述第三数据中的数据为有效数据;
所述第三数据的文件格式为指定格式。
第二方面,本申请实施例还提供了一种数据处理装置,包括:
第一确定模块,用于确定目标业务类型;
第二确定模块,用于根据所述目标业务类型确定目标模板;
获取模块,用于获取待导入的第一数据,以及数据配置信息;
处理模块,用于从所述第一数据中获取与所述数据配置信息相应的第二数据,将所述第二数据批量导入所述目标模板,得到数据报表。
第三方面,本申请实施例还提供了一种数据处理***,包括:数据处理装置和云服务器;
所述数据处理装置,用于确定目标业务类型,根据所述目标业务类型确定目标模板,获取待导入的第一数据,将所述第一数据批量导入所述目标模板,得到数据报表,并将所述第一数据对应的链接地址发送至云服务器;
所述云服务器,用于存储所述链接地址。
第四方面,本申请提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行计算机程序时,实现上述方法步骤。
第五方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:本实施例提供的数据处理方法根据目标业务类型确定目标模板,实现了针对不同的业务类型能够选择相关联的模板,以此加快了导入数据的速度与效率。同时根据数据批量导入后得到的数据报表,能够确定导入成功的数据,导入失败的数据以及失败原因,便于后续处理。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种数据处理方法的流程图;
图2为本申请实施例提供的业务类型的选择界面;
图3为本申请实施例提供的目标模板界面;
图4为本申请实施例提供的数据上传界面;
图5为本申请另一实施例提供的一种数据处理方法的流程图;
图6为本申请实施例提供的一种数据处理装置的框图;
图7为本申请实施例提供的一种数据处理***的框图;
图8为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请提供了一种数据处理方法、装置、***、电子设备及存储介质。本发明实施例所提供的方法可以应用于任意需要的电子设备,例如,可以为服务器、终端等电子设备,在此不做具体限定,为描述方便,后续简称为电子设备。
下面首先对本发明实施例所提供的一种数据处理方法进行介绍。
图1为本申请实施例提供的一种数据处理方法的流程图。如图1所示,该方法包括以下步骤:
步骤S11,确定目标业务类型;
本实施例中,确定目标业务类型,具体通过以下方式实现:检测作用于预设控件的触发操作,根据触发操作生成业务类型选项,根据作用于业务类型选项的选中操作确定目标业务类型。
步骤S12,根据目标业务类型确定目标模板;
本实施例提供的数据处理方法根据目标业务类型确定目标模板,实现了针对不同的业务类型能够选择相关联的模板,以此加快了导入数据的速度与效率。同时根据数据批量导入后得到的数据报表,能够确定导入成功的数据,导入失败的数据以及失败原因,便于后续处理。
以汽车运营***为例,图2为本申请实施例提供的业务类型选择界面,如图2所示,当检测到用户基于预设控件的触发操作,触发操作包括但不限于点击或拉取,根据触发操作生成业务类型选项,业务类型选项包括:车型库、SPU(Standard Product Unit:标准化产品单元)等,然后根据作用于业务类型选项的选中操作确定目标业务类型,根据目标业务类型得到对应的模板(如图3所示)。或者,确定输入的关键词,以及与该关键词相关联的目标业务类型,根据关键词相关联的目标业务类型确定目标模板。
可以理解的,在通过在数据库中设定不同业务类型的模板。通过设置关键词,关键词包括数据名称、数据类型以及数据来源。关键词模板内含有多个排好序的关键词,且由开发人员事先输入至数据库中,作为筛选数据的依据。例如,一条指标数据中含有指标来源、指标编码以及指标名称等关键词,数据名称对应指标名称,数据类型对应指标编码,数据来源对应指标来源。采用数据名称作为关键词能够对目标数据进行初次的识别,数据类型则能提高目标数据的校验准确率,数据来源则能方便人工审核目标数据的可靠性。
步骤S13,获取待导入的第一数据,以及数据配置信息;
如图4所示,检测作用于当前界面中“浏览导入数据文件”按钮的触发操作,根据触发操作显示本地的文件列表,检测作用于文件列表中至少一本地文件的选中操作,根据选中操作确定待导入文件,将待导入文件中的数据作为第一数据。
同时,在获取第一数据之后,确定第一数据对应的链接地址,将链接地址存储于云服务器。本实施例通过将链接地址存储于云服务器,目的是为了在后续对导入的数据进行数据排查时,可以通过链接地址查看原始数据,即第一数据。且通过链接地址的存储方式能够减少云服务器的内存空间。
本实施例中,在将第一数据导入目标模板之前,还可以实现对导入数据的条数进行配置,具体的,获取数据配置信息,从第一数据中获取与数据配置信息相应的第二数据。其中数据配置信息基于开发人员手动进行配置,作为一个示例,通过接受输入信息,当输入信息中的数据条数小于或等于第一数据中的数据条数时,则将输入信息作为数据配置信息。其中,输入信息可以是由用户手动输入,数据配置信息中包括:配置key、标题、类型、导入数据的条数、分类等。
以汽车运营***为例,车型库的模板的数据项为五级联关系存储,第一数据中的数据如下:
1、厂商:一汽大众,品牌:奥迪,车系:奥迪A4L,年款2013,车型:2013款奥迪A4L30TFSI手动舒适型。
2、厂商:一汽奥迪,品牌:奥迪、车系:奥迪A4L,年款2013,车型:2013款奥迪A4L30TFSI自动舒适型。
3、厂商:一汽奥迪,品牌:奥迪、车系:奥迪A4L,年款2013,车型:2013款奥迪A4L30TFSI自动技术型。
4、厂商:一汽大众,品牌:奥迪、车系:奥迪A4L,年款2013,车型:2013款奥迪A4L30TFSI自动标准型。
5、厂商:一汽奥迪,品牌:奥迪、车系:奥迪A4L,年款2013,车型:2013款奥迪A4L30TFSI自动豪华型。
根据数据配置信息确定批量导入数据的条数为3条,则将第一数据中条数编号为1-3的数据作为第二数据。
通过对第一数据的条数进行配置,能够结合业务需求与服务器的性能进行配置,防止导入数据的条数太大超过服务器的压力,导致服务器宕机,或者导入数据条数太小不能满足业务需求。
在本实施例中,在通过人工配置信息之外,本申请实施例还提供了一种数据配置信息的获取方法。
具体的,在接收到数据导入请求后,确定待导入的第一数据,采集***当前的实时内存信息,可以理解的,内存实时信息至少携带有物理内存大小,实时占存以及实时占存比率,实时占存为***当前物理内存以及虚拟内存中所有占用的内存,实时占存比率为***当前进程占用所有内存的比率;
然后获取***预设的最佳占存比率,根据***当前的实时内存信息,通过预设规则获取与最佳占存比率相对应的最佳导入条数;然后在第一数据中分批次获取与最佳导入条数相对应的第四数据。其中,通过预设规则获取与最佳占存比率相对应的最佳导入条数,通过以下方式实现,根据最佳占存比率确定***当前的承载能力,根据承载能力确定最佳导入条数。
例如:***预设的最佳占存比率为80%,当采集到***当前的实时内存信息:物理内存大小为4096MB、实时占存为2880MB以及实时占存比率为70.31%,那么最佳占存比率(80%)大于实时占存比率(70.31%),则***当前的承载能力为:4096MB*80%-2880MB=396.8MB。
然后获取第一数据中每条数据的大小,比如:第一数据中包括:200条数据,每条数据为2.5MB,根据承载能力确定以及每条数据的大小计算最佳导入条数为:158条。则按照第一数据中的数据编号依次选取158条数据作为第二数据。
需要说明的是,当***每次获取待导入数据之前,会预先检测***当前内存的使用情况,从而获取与当前内存相对应的实时导入数据。例如,***的物理内存大小为512MB,最佳占存比率为80%,***此次的内存比率为50%,那么***当前的承载能力为153.6MB,获取的导入数据为153.6MB;当***下次的内存比率为60%时,***下次的承载能力为102.4MB,获取的导入数据则为102.4MB,应当理解的是,此处对分批次获取实时导入数据的举例仅为方便理解,即分批次获取的实时导入数据可根据***当前内存比率进行动态变化。
另外,在历史导入任务中获取预设时间段内的历史平均导入量以及满足历史平均导入量的导入记录,在导入记录中采集导入效率最高的高效导入量以及与高效导入量相对应的高效占存量,在根据***当前的实时内存信息,通过预设规则获取与最佳占存比率相对应的最佳导入条数的步骤之后,还需要进行下述步骤:
判断与物理内存大小相对应的最佳占存量是否大于高效占存量,若判断结果为否,则启用虚拟内存,并将每次获取的实时导入数据通过物理内存大小以及虚拟内存分批导入***数据库。
本实施例通过采集到的实时内存信息可以获知***当前的内存使用情况;获取***预设的最佳占存比率;根据***当前的实时内存信息,通过预设规则获取与最佳占存比率相对应的最佳导入条数,通过预设的最佳占存比率计算最佳导入条数,使得***在导入数据的过程中,程序应用可以保持高效、顺畅的运行状态,进而是导入条数最大化;在待导入数据中分批次获取与最佳导入条数相对应的实时导入数据;将每次获取的实时导入数据分批导入***数据库。
通过将每次获取的与最佳导入条数相对应的实时导入数据分批导入***数据库,实现大批量数据的导入操作,使得***在导入大型数据时,极大缩短数据导入时间,提高数据导入效率低,同时,***内存保持在最佳占存比率的状态下,从而保证应用程序可以高效、顺畅的运行,从而避免由于内存不足导致数据无法导入***的问题。
步骤S14,从第一数据中获取与数据配置信息相应的第二数据,将第二数据批量导入目标模板,得到数据报表。
本实施例中,在接收到数据导入请求,以及从第一数据中确定与数据配置信息相应的第二数据后,获取目标模板中的数据项,从第二数据中确定与数据项相关联的第三数据,将第三数据导入目标模板,得到数据报表。如上述示例,数据项包括:厂商、车系、品牌、年款、车型。或者,目标模板为SPU模板时,数据项包括:商户号、商户名称、车型ID、销售指导价、购置税等。
本实施例中,将第三数据导入目标模板时,还需要对第三数据进行数据校验,校验方式具体通过已下方式实现:对第三数据进行格式校验、对第三数据进行查重校验以及对第三数据进行有效性校验。
例如:数据项中的:厂商、车系、品牌、年款、车型为五级联关系,每级都会有排重校验,当第三数据满足预设条件时,将第三数据导入目标模板,得到数据报表。第三数据满足预设条件,包括:第三数据中的数据为有效数据,第三数据的文件格式为指定格式。
在解析校验过程中,发明人发现每个数据项关联的第三数据中会包括上百个数据,例如:与车型这一数据项相关联数据会有很多,所以当这些数据同时导入目标模板时,***在导入过程中解析校验时间会很长,无法即时给出相应结果,甚至会因为超时导致***报错,工作人员无法确认是否导入成功及是否对上传文件全部解析校验完成,不仅用户体验差,且运算压力也较大。
为了解决上述问题,在有多个数据同时导入时,可以将多个导入数据缓存并形成一个解析校验列队,例如可将多个导入数据存储在一个临时数据库中,多个导入数据可以是对应同一个数据项的数据。
在本实施方式中,按照解析校验队列的队列顺序逐一读取导入数据,并调用相应的解析校验规则对导入数据进行解析校验。在本实施方式中,可逐一对导入数据进行解析校验,即是一个导入数据解析校验完成后,再对另一个导入数据进行解析校验。
同时,还可以在解析校验时配置定时任务,定时任务配置为每间隔一预定周期即按照解析校验队列的队列顺序读取一个导入数据进行解析校验,当接收到多个导入数据后,可以在后台根据定时任务开始解析校验上传文件中的数据,如此,可避免解析校验过程出现混乱。
图5为本申请另一实施例提供的一种数据处理方法的流程图。如图5所示,该方法还包括以下步骤:
步骤S51,根据数据报表确定第三数据的导入失败类型;
步骤S52,根据导入失败类型执行对应的处理操作。
本实施例中,根据数据报表能够确定第三数据中哪些数据导入失败,哪些数据导入成功,以及数据导入失败类型。根据导入失败类型执行相应的处理操作,节约了开发人员处理失败数据的时间。
作为一个示例,当第三数据中的至少一个数据在导入过程中导入失败时,调用预置的逻辑回归模型法查找导入失败的数据,将导入失败的数据对应的条数编号进行记录,将条数标号以及导入失败类型生成数据报表,然后根据导入失败类型执行处理操作,处理操作可以是:将导入失败的数据删除,或者将导入失败的数据发送至预设终端,由开发人员对该数据进行修改。
例如,当第三数据中的某一条数据某个字段超长,就出现在这个导入的过程中,这个时候导入就会失败,即遇到异常,就引入了一套处理机制,需要先确定是哪一条数据出现了问题,并且记录下来,调用预置的二分法算法来定位异常数据,继续进行数据导入,每次二分的时候,将没有问题的那一半数据提交掉,对有问题的那一半数据继续二分,找到该目标数据之后将其记录下来,并从中剔除,直到所有待导入数据导入完毕。
需要说明的是,本实施例中,可能遇到的异常包括:违反唯一约束(某些字段值要求不能和数据库已有数据重复),违反外键约束(某个字段的值必须是另外一张表中的某个字段值的集合中的一个),数据库连接失败,字段超长,字段的数据类型和数据项的类型不匹配等等。
可以理解的是,如果数据库出现异常,***是能抛出exception的,抛出后未被捕获处理,操作会停止,无法继续进行,如果捕获异常,而不进行处理,就会导致明明没导入目标模板成功,工作人员却因为没有接受到任何异常提示而误以为都导入成功了。因此本实施例中找出导入失败的数据,并且记录失败原因,其实就是在捕获了这个异常之后进行了处理,从而能让工作人员知道哪些数据导入成功,哪些数据导入失败。
通过上述方式,在批量导入的数据发生异常时,剔除异常数据并将同批次数据的正常数据重新导入,避免同一批数据全部回滚,提高了数据导入效率。
图6为本申请实施例提供的一种数据处理装置的框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图6所示,该数据处理装置包括:
第一确定模块61,用于确定目标业务类型;
第二确定模块62,用于根据目标业务类型确定目标模板;
获取模块63,用于获取待导入的第一数据,以及数据配置信息;
处理模块64,用于从第一数据中获取与数据配置信息相应的第二数据,将第二数据批量导入所述目标模板,得到数据报表。
本实施例中的第一确定模块61,具体用于检测作用于预设控件的触发操作;根据触发操作生成业务类型选项;根据作用于业务类型选项的选中操作确定目标业务类型。
本实施例中的装置还包括第三确定模块,第三确定模块,具体用于确定第一数据对应的链接地址,将链接地址存储于云服务器。
本实施例中的装置还包括筛选模块,筛选模块,用于获取数据配置信息;从第一数据中获取与数据配置信息相应的第二数据。
本实施例中的处理模块64,具体用于获取目标模板中的数据项;从第二数据中确定与数据项相关联的第三数据;将第三数据导入目标模板,得到数据报表。
其中,当第二数据满足预设条件时,将第二数据导入目标模板,得到数据报表;第二数据满足预设条件,包括:第二数据中的数据为有效数据;第二数据的文件格式为指定格式。
图7为本申请实施例提供的一种数据处理***的框图,本实施例提供的一种数据处理***,包括:数据处理装置71和云服务器72;
数据处理装置71,用于确定目标业务类型,根据目标业务类型确定目标模板,获取待导入的第一数据,将第一数据批量导入目标模板,得到数据报表,并将第一数据对应的链接地址发送至云服务器;
云服务器72,用于存储链接地址。
本申请实施例还提供一种电子设备,如图8所示,电子设备可以包括:处理器1501、通信接口1502、存储器1503和通信总线1504,其中,处理器1501,通信接口1502,存储器1503通过通信总线1504完成相互间的通信。
存储器1503,用于存放计算机程序;
处理器1501,用于执行存储器1503上所存放的计算机程序时,实现上述实施例的步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例的步骤。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令进行***、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于进行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上进行、部分地在用户设备上进行、作为一个独立的软件包进行、部分在用户计算设备上部分在远程计算设备上进行、或者完全在远程计算设备或服务器上进行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
需要说明的是,对于上述装置、电子设备及计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
进一步需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。