
1.本发明涉及数据仓库建设技术领域,特别是涉及一种数据表的生成方法和一种数据表的生成装置。
背景技术:2.在数据仓库建设架构中,数据来源的系统每日都会有新增或更新的数据,如果在数据仓库中对每一条记录的变更都进行存储,则很容易带来大量的冗余数据,导致存储空间急剧增加。此外,在进行数据的etl(extract
‑
transform
‑
load,抽取
‑
转换
‑
加载)等处理过程中,由于需要处理的数据量增大,需要计算的数据资源也会随之增加,从而影响数据处理效率。然而,在数据仓库建设技术领域中,基于hive进行数据仓库架构建设的方式仍为主流,由于hive底层基于hdfs(hadoop distributed file system,hadoop分布式文件系统)进行数据存储,但hdfs并不支持更新操作,从而容易导致一方面无法记录数据变化的历史状态,另一方面需要对大量的数据进行存储,导致存储空间增加以及计算资源需求骤增的问题。
技术实现要素:3.鉴于上述问题,提出了本发明实施例提供一种数据表的生成方法、装置、电子设备以及计算机存储介质,以解决或部分解决现有技术中数据处理过程中无法记录数据变化的历史状态,存储空间需求大、计算资源需求增加以及数据处理效率低的问题。
4.本发明实施例公开了一种数据表的生成方法,包括:
5.获取与目标业务数据表对应的基础拉链数据表,以及与所述目标业务数据表对应的增量数据表,所述基础拉链数据表包括拉链数据记录,所述拉链数据记录至少包括目标标识字段、至少一个第一指定字段以及与所述第一指定字段对应的第一更新字段,所述增量数据表至少包括增量数据记录,所述增量数据记录包括至少一个第二指定字段以及所述第二指定字段对应的第二更新字段;
6.若所述增量数据表中存在与所述第一指定字段相同的第二指定字段,则根据所述第一更新字段与所述第二更新字段,建立所述基础拉链数据表中拉链数据记录与所述增量数据表中增量数据记录之间的数据映射关系;
7.根据所述数据映射关系对所述基础拉链数据表进行处理,生成针对所述业务数据表的全量拉链数据表。
8.可选地,所述根据所述第一更新字段与所述第二更新字段,建立所述基础拉链数据表中拉链数据记录与所述增量数据表中增量数据记录之间的数据映射关系,包括:
9.分别采用各条所述拉链数据记录的第一指定字段与第一更新字段,从所述增量数据表中查找第一增量数据记录,建立所述基础拉链数据表中各条拉链数据记录与所述增量数据表中对应的至少一条第一增量数据记录之间的数据映射关系;
10.其中,所述第一增量数据记录中的第二指定字段与所述拉链数据记录中的第一指
定字段对应,第二更新字段与所述第一更新字段对应。
11.可选地,所述根据所述数据映射关系对所述基础拉链数据表进行处理,生成针对所述业务数据表的全量拉链数据表,包括:
12.采用所述数据映射关系从所述增量数据表中,提取与所述基础拉链数据表中各所述拉链数据记录对应的至少一条第二增量数据记录,所述第二增量数据记录用于表示所述拉链数据记录中所述目标标识字段对应的历史数据变化;
13.采用所述第二增量数据记录对所述基础拉链数据表的拉链数据记录进行处理,生成针对所述业务数据表的全量拉链数据表。
14.可选地,还包括:
15.若所述增量数据表中不存在与所述第一指定字段相同的第二指定字段,则将所述第一指定字段对应的拉链数据记录作为第一拉链数据记录;
16.所述采用所述第二增量数据记录对所述基础拉链数据表的拉链数据记录进行处理,生成针对所述业务数据表的全量拉链数据表,包括:
17.采用所述第二增量数据记录对所述基础拉链数据表的拉链数据记录进行更新后,保留所述第一拉链数据记录,生成针对所述业务数据表的全量拉链数据表。
18.可选地,还包括:
19.若所述增量数据表中存在不能与所述基础拉链数据表中拉链数据记录建立映射关系的增量数据记录,则采用所述第一指定字段从所述增量数据表中获取第三增量数据记录,与所述第三增量数据记录的目标增量更新时间;
20.采用所述第三增量数据记录与对应的目标增量更新时间,生成第二拉链数据记录;
21.所述采用所述第二增量数据记录对所述基础拉链数据表的拉链数据记录进行处理,生成针对所述业务数据表的全量拉链数据表,包括:
22.采用所述第二增量数据记录对所述基础拉链数据表的拉链数据记录进行更新后,保留所述第二拉链数据记录,生成针对所述业务数据表的全量拉链数据表。
23.可选地,还包括:
24.获取目标业务数据表的业务数据记录,所述业务数据记录包括预设标识字段、至少一个预设指定字段以及与所述业务数据记录对应的业务更新时间;
25.按照所述至少一个预设指定字段,提取与所述预设标识字段对应的至少一条目标业务数据记录,获取所述目标业务数据记录的目标业务更新时间;
26.采用所述目标业务更新时间,确定针对所述目标业务数据记录的生效时间与失效时间;
27.采用所述生效时间、失效时间以及所述目标业务数据记录,建立针对所述业务数据表的第一基础拉链数据表。
28.可选地,还包括:
29.采用所述失效时间过滤失效的目标业务数据记录,获取有效的目标业务数据记录;
30.采用所述有效的目标业务数据记录、所述有效的目标业务数据记录对应的生效时间与失效时间,建立针对所述业务数据表的第二基础拉链数据表。
31.本发明实施例还公开了一种数据表的生成装置,包括:
32.数据表获取模块,用于获取与目标业务数据表对应的基础拉链数据表,以及与所述目标业务数据表对应的增量数据表,所述基础拉链数据表包括拉链数据记录,所述拉链数据记录至少包括目标标识字段、至少一个第一指定字段以及与所述第一指定字段对应的第一更新字段,所述增量数据表至少包括增量数据记录,所述增量数据记录包括至少一个第二指定字段以及所述第二指定字段对应的第二更新字段;
33.数据映射关系建立模块,用于若所述增量数据表中存在与所述第一指定字段相同的第二指定字段,则根据所述第一更新字段与所述第二更新字段,建立所述基础拉链数据表中拉链数据记录与所述增量数据表中增量数据记录之间的数据映射关系;
34.拉链表生成模块,用于根据所述数据映射关系对所述基础拉链数据表进行处理,生成针对所述业务数据表的全量拉链数据表。
35.可选地,所述数据映射关系建立模块具体用于:
36.分别采用各条所述拉链数据记录的第一指定字段与第一更新字段,从所述增量数据表中查找第一增量数据记录,建立所述基础拉链数据表中各条拉链数据记录与所述增量数据表中对应的至少一条第一增量数据记录之间的数据映射关系;
37.其中,所述第一增量数据记录中的第二指定字段与所述拉链数据记录中的第一指定字段对应,第二更新字段与所述第一更新字段对应。
38.可选地,所述拉链表生成模块具体用于:
39.采用所述数据映射关系从所述增量数据表中,提取与所述基础拉链数据表中各所述拉链数据记录对应的至少一条第二增量数据记录,所述第二增量数据记录用于表示所述拉链数据记录中所述目标标识字段对应的历史数据变化;
40.采用所述第二增量数据记录对所述基础拉链数据表的拉链数据记录进行处理,生成针对所述业务数据表的全量拉链数据表。
41.可选地,还包括:
42.拉链数据记录确定模块,用于若所述增量数据表中不存在与所述第一指定字段相同的第二指定字段,则将所述第一指定字段对应的拉链数据记录作为第一拉链数据记录;
43.所述拉链表生成模块具体用于:
44.采用所述第二增量数据记录对所述基础拉链数据表的拉链数据记录进行更新后,保留所述第一拉链数据记录,生成针对所述业务数据表的全量拉链数据表。
45.可选地,还包括:
46.更新时间获取模块,用于若所述增量数据表中存在不能与所述基础拉链数据表中拉链数据记录建立映射关系的增量数据记录,则采用所述第一指定字段从所述增量数据表中获取第三增量数据记录,与所述第三增量数据记录的目标增量更新时间;
47.拉链数据记录生成模块,用于采用所述第三增量数据记录与对应的目标增量更新时间,生成第二拉链数据记录;
48.所述拉链表生成模块具体用于:
49.采用所述第二增量数据记录对所述基础拉链数据表的拉链数据记录进行更新后,保留所述第二拉链数据记录,生成针对所述业务数据表的全量拉链数据表。
50.可选地,还包括:
51.业务数据记录获取模块,用于获取目标业务数据表的业务数据记录,所述业务数据记录包括预设标识字段、至少一个预设指定字段以及与所述业务数据记录对应的业务更新时间;
52.业务更新时间获取模块,用于按照所述至少一个预设指定字段,提取与所述预设标识字段对应的至少一条目标业务数据记录,获取所述目标业务数据记录的目标业务更新时间;
53.时间信息确定模块,用于采用所述目标业务更新时间,确定针对所述目标业务数据记录的生效时间与失效时间;
54.第一拉链表建立模块,用于采用所述生效时间、失效时间以及所述目标业务数据记录,建立针对所述业务数据表的第一基础拉链数据表。
55.可选地,还包括:
56.数据记录获取模块,用于采用所述失效时间过滤失效的目标业务数据记录,获取有效的目标业务数据记录;
57.第二拉链表建立模块,用于采用所述有效的目标业务数据记录、所述有效的目标业务数据记录对应的生效时间与失效时间,建立针对所述业务数据表的第二基础拉链数据表。
58.本发明实施例还公开了一种电子设备,包括:
59.一个或多个处理器;和
60.其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如上所述的方法。
61.本发明实施例还公开了一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如上所述的方法。
62.本发明实施例包括以下优点:
63.在本发明实施例中,通过获取与目标业务数据表对应的基础拉链数据表与增量数据表,并对两者所存储的数据记录进行比对,若增量数据表中存在与基础拉链数据表中第一指定字段对应的第二指定字段,判定增量数据表中存在对应的增量数据,则根据基础拉链数据表的拉链时间信息与增量数据表中的增量更新时间,建立基础拉链数据表中拉链数据记录与增量数据表中增量数据记录之间的数据映射关系,然后根据数据映射关系对基础拉链数据表进行更新,生成针对业务数据表的全量拉链数据表,从而一方面通过拉链数据表对业务数据的历史变化状态进行记录,有效降低数据存储的空间和减少计算资源,另一方面通过增量数据表与拉链数据表之间的映射关系对业务数据表进行全量拉链数据表的构建,实现复杂拉链数据表的构建,可以从多维度对数据进行记录,提高了数据处理的效率。
附图说明
64.图1是本发明实施例提供的一种数据表的生成方法的步骤流程图;
65.图2是本发明实施例提供的一种数据表的生成装置的结构框图。
具体实施方式
66.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
67.在数据仓库中可以包括全量数据表、增量数据表、快照表以及拉链数据表。其中,全量表中记录了数据仓库中每天的所有的最新状态的数据,对于全量表,每次上报的数据为所有的数据,包括发生变化的数据以及没有变化的数据;增量数据表中记录了新增的数据,且增量数据是上次导出之后的新数据,对于增量数据表,每次上报发生变化的数据,没有变化则不上报;快照表可以按时间段进行分区,记录截止数据日期的全量数据,对于快照表,每次上报的数据也为所有的数据,包括发生变化的数据以及没有变化的数据;拉链数据表可以为记录截止数据日期的全量数据,包括记录一个事物从开始,一直到当前状态的所有变化的数据,即记录在当前时刻的历史总量,是当前记录的是当前时间之前的所有历史记录的最后变化量(总量),对于拉链数据表,每次上报的为历史记录的最终状态。
68.业务数据表可以为存储需要构建为拉链数据表的数据表,可以包括业务数据记录,如业务数据表可以如下所示:
69.|id|name|tag|tmp_create_datetime|tmp_update_datetime|
70.|1|a|a1|2019
‑
01
‑
01 09:15:22|2019
‑
01
‑
01 11:15:22|
71.|2|b|b1|2019
‑
01
‑
01 10:00:00|2019
‑
01
‑
01 10:00:00|
72.|1|a|a2|2019
‑
01
‑
01 09:15:22|2019
‑
01
‑
01 12:43:45|
73.|1|a|a3|2019
‑
01
‑
01 09:15:22|2019
‑
01
‑
01 13:15:22|
74.|3|c|c1|2019
‑
01
‑
01 14:00:00|2019
‑
01
‑
01 14:00:00|
75.|4|d|d1|2019
‑
01
‑
01 14:20:02|2019
‑
01
‑
01 14:20:02|
76.|5|e|e1|2019
‑
01
‑
01 15:08:20|2019
‑
01
‑
01 15:08:20|
77.|6|f|f1|2019
‑
01
‑
01 17:20:00|2019
‑
01
‑
01 17:20:00|
78.|2|b|b2|2019
‑
01
‑
01 10:00:00|2019
‑
01
‑
01 19:35:21|
79.|5|e|e2|2019
‑
01
‑
01 15:08:20|2019
‑
01
‑
01 20:33:15|
80.|1|a|a4|2019
‑
01
‑
01 09:15:22|2019
‑
01
‑
02 11:15:22|
81.|2|b|b3|2019
‑
01
‑
01 10:00:00|2019
‑
01
‑
02 12:00:00|
82.|1|a|a5|2019
‑
01
‑
01 09:15:22|2019
‑
01
‑
02 12:43:45|
83.|1|a|a6|2019
‑
01
‑
01 09:15:22|2019
‑
01
‑
02 13:15:22|
84.|3|c|c2|2019
‑
01
‑
01 14:00:00|2019
‑
01
‑
02 14:00:00|
85.|4|d|d2|2019
‑
01
‑
01 14:20:02|2019
‑
01
‑
02 14:20:02|
86.|5|e|e3|2019
‑
01
‑
01 15:08:20|2019
‑
01
‑
02 15:08:20|
87.|7|g|g1|2019
‑
01
‑
03 17:20:00|2019
‑
01
‑
03 17:20:00|
88.|2|b|b4|2019
‑
01
‑
01 10:00:00|2019
‑
01
‑
03 19:35:21|
89.|7|g|g2|2019
‑
01
‑
03 17:20:00|2019
‑
01
‑
03 22:20:00|
90.|3|c|c3|2019
‑
01
‑
01 14:00:00|2020
‑
08
‑
02 14:00:00|
91.|4|d|d3|2019
‑
01
‑
01 14:20:02|2020
‑
11
‑
02 14:20:02|
92.|5|e|e4|2019
‑
01
‑
01 15:08:20|2020
‑
12
‑
02 15:08:20|
93.|7|g|g3|2019
‑
01
‑
03 17:20:00|2020
‑
12
‑
03 17:20:00|
94.|2|b|b5|2019
‑
01
‑
01 10:00:00|2020
‑
12
‑
03 19:35:21|
95.|7|g|g4|2019
‑
01
‑
03 17:20:00|2021
‑
01
‑
03 22:20:00|
96.其中,id可以表示用户的用户标识(如账户等),name可以为用户名称(如姓名、昵称、用户名等),tag可以表示用户对应标签,tmp_create_datetime可以表示注册时间,tmp_update_datetime可以表示更新时间等等。
97.拉链数据表,由于是针对数据仓库涉及中表存储数据的方式而定义的数据表,可以用于记录历史数据的每个状态,记录一个事物从开始一直到当前状态的所有变化的信息,通常可以是对应账户信息的历史变动进行处理保留的结果。
98.指定字段(uniquekeys),在一个数据表中可以包括多个字段,例如关系型数据库中主键/联合主键,可以根据至少一个指定字段锁定同一类数据,包括记录数据更新变化的历史状态信息等。例如,指定字段可以为“id”、“name”等,则对于电商网站中,一个用户a可以存在一系列行为(浏览、点击、收藏、下单、支付等),这些行为对应到业务数据表中为若干条数据记录,而通过“id”、“name”等可以锁定用户a对应的相关数据。
99.更新字段(updatekeys)可以是由至少一个字段组成,通过指定字段以及与更新字段可以判断数据是否发生变化,例如,若更新字段为手机号码,则可以为对应的手机号11111111111;若更新字段为注册日期,则可以为对应的20201224等等。
100.标识字段可以为根据指定字段确定的同一类数据,例如,对于一张用户数据表,可以根据用户的身份标识(身份证号等)唯一确定一个人,但由于该用户的信息发生了变化,则可以产生对应的多条数据记录,每一条数据记录都属于该用户的数据,例如,通过id、name可以锁定的标识字段在同一天产生的多条数据,并保留最后一条数据,即保留有效数据,则拉链数据表可以如下所示,此外还可以通过id与手机号码等组合方式锁定标识字段在同一天产生的多条数据等。
101.|id|name|tag|dw_start_date|dw_end_date|
102.|2|b|b2|2019
‑
01
‑
01|2019
‑
01
‑
02|
103.|2|b|b3|2019
‑
01
‑
02|2019
‑
01
‑
03|
104.|2|b|b4|2019
‑
01
‑
03|2020
‑
12
‑
03|
105.|2|b|b5|2020
‑
12
‑
03|9999
‑
12
‑
31|
106.|3|c|c1|2019
‑
01
‑
01|2019
‑
01
‑
02|
107.|3|c|c2|2019
‑
01
‑
02|2020
‑
08
‑
02|
108.|3|c|c3|2020
‑
08
‑
02|9999
‑
12
‑
31|
109.|4|d|d1|2019
‑
01
‑
01|2019
‑
01
‑
02|
110.|4|d|d2|2019
‑
01
‑
02|2020
‑
11
‑
02|
111.|4|d|d3|2020
‑
11
‑
02|9999
‑
12
‑
31|
112.|5|e|e2|2019
‑
01
‑
01|2019
‑
01
‑
02|
113.|5|e|e3|2019
‑
01
‑
02|2020
‑
12
‑
02|
114.|5|e|e4|2020
‑
12
‑
02|9999
‑
12
‑
31|
115.|6|f|f1|2019
‑
01
‑
01|9999
‑
12
‑
31|
116.|1|a|a3|2019
‑
01
‑
01|2019
‑
01
‑
02|
117.|1|a|a6|2019
‑
01
‑
02|9999
‑
12
‑
31|
118.|7|g|g2|2019
‑
01
‑
03|2020
‑
12
‑
03|
119.|7|g|g3|2020
‑
12
‑
03|2021
‑
01
‑
03|
120.|7|g|g4|2021
‑
01
‑
03|9999
‑
12
‑
31|
121.其中,dw_start_date可以表示生效时间,dw_end_date可以表示失效时间。
122.有效数据可以为数据表中最新状态所对应的数据记录,例如,对于用户表,某天记录了某个用户的多条记录信息,但只保存最后一条数据作为有效数据。
123.拉链时间可以包括拉链数据表中记录数据的变化状态的起始时间dw_start_date以及有效时间(或数据截止时间)dw_end_date。
124.作为一种示例,在数据仓库建设领域中,主要是基于hive进行数据仓架构建设,而拉链数据表也是基于hive进行构建,通过写hive sql(一种类sql语言),然后转化成mapreduce任务进行处理。但受限于sql本身,只能实现一些基础的拉链数据,往往不能满足日益增长的复杂业务需求。此外,mapreduce作为一种多进程模型离线计算引擎中,其数据处理的过程中会产生频繁的资源申请与释放、网络/磁盘io等问题,对于复杂场景,数据处理效率较差。
125.对此,本发明实施例的核心构思之一在于通过基于基础拉链数据表与增量数据表两者中的数据记录进行全量拉链数据表的构建,或基于业务数据表进行拉链表的构建,一方面实现多种拉链表的构建方式,能够有效记录数据变化历史情况,节约数据存储空间,另一方面实现复杂拉链数据表的构建,实现多维度的数据记录,实现不同功能的扩展,以及提高了数据处理的效率。
126.具体的,参照图1,示出了本发明实施例提供的一种数据表的生成方法的步骤流程图,具体可以包括如下步骤:
127.步骤101,获取与目标业务数据表对应的基础拉链数据表,以及与所述目标业务数据表对应的增量数据表,所述基础拉链数据表包括拉链数据记录,所述拉链数据记录至少包括目标标识字段、至少一个第一指定字段以及与所述第一指定字段对应的第一更新字段,所述增量数据表至少包括增量数据记录,所述增量数据记录包括至少一个第二指定字段以及所述第二指定字段对应的第二更新字段;
128.在具体实现中,可以为研发人员提供一个大数据开发环境,包括但不限于spark、hadoop集群等,其中,目标业务数据表可以为需要构建拉链数据表的数据表,基础拉链数据表可以为针对目标业务数据表构建的拉链数据表,增量数据表可以为与目标业务数据表对应的记录了对应增量数据的数据表。
129.在本发明的一种可选实施例中,在通过基础拉链数据表与增量数据表构建全量拉链数据表之前,可以先确定基础拉链数据表是否包括与目标业务数据表对应的拉链数据,若没有,则可以先根据用户的需求构建对应的基础拉链数据表。
130.在具体实现中,可以通过获取目标业务数据表的业务数据记录,业务数据记录包括预设标识字段、至少一个预设指定字段以及与业务数据记录对应的业务更新时间,按照至少一个预设指定字段,提取与预设标识字段对应的至少一条目标业务数据记录,接着获取目标业务数据记录的目标业务更新时间,采用目标业务更新时间,确定针对目标业务数据记录的生效时间与失效时间,然后采用生效时间、失效时间以及目标业务数据记录,建立针对业务数据表的第一基础拉链数据表。
131.此外,在得到包含标识字段对应时间段内全部状态变化的数据记录表(即第一基础拉链数据表)后,可以对其做进一步的筛选,只保留标识字段对应时间段内有效数据的数据记录,具体的,可以通过采用失效时间过滤失效的目标业务数据记录,获取有效的目标业务数据记录,接着采用有效的目标业务数据记录、有效的目标业务数据记录对应的生效时间与失效时间,建立针对业务数据表的第二基础拉链数据表。
132.此外,对于增量数据表的构建,可以在数据仓库设计之初在业务数据表中构建增量数据表,将每天的增量数据单独作为一个分区(比如hive表中的一个分区),从而可以根据分区时间确定某一时间范围内的增量数据,此外,若是业务数据表存储的是全量数据,则可以通过业务数据表中的更新时间信息,确定某一个时间段(如一天、一周以及一个月等)的增量数据,从而构建对应的增量数据表。
133.在一种示例中,业务数据表可以用户表,其表结构可以如下表1所示:
134.姓名手机号码sign_up_date(注册日期)modify_time(更新时间)
135.表1
136.用户表中包括用户的姓名、用户的手机号码、注册日期以及数据变化对应的更新时间,则在一定时间内,用户表的变化过程可以包括:
137.1、2019
‑
07
‑
01日用户a注册了对应的账户信息:
138.姓名手机号码sign_up_date(注册日期)modify_time(更新时间)a139xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
01 12:00:02
139.2、2019
‑
07
‑
02日用户b注册了对应的账户信息,但并未填写手机号码:
140.姓名手机号码sign_up_date(注册日期)modify_time(更新时间)a139xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
01 12:00:02b 2019
‑
07
‑
022019
‑
07
‑
02 09:32:12
141.3、2019
‑
07
‑
02日用户a修改了手机号码:
142.姓名手机号码sign_up_date(注册日期)modify_time(更新时间)a137xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
02 10:00:02b 2019
‑
07
‑
022019
‑
07
‑
02 09:32:12
143.4、2019
‑
07
‑
02日用户b填写了手机号码:
144.姓名手机号码sign_up_date(注册日期)modify_time(更新时间)a137xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
02 10:00:02b135xxxxxxxx2019
‑
07
‑
022019
‑
07
‑
02 18:12:12
145.则对于上述用户表的变化,罗列了每次修改后用户表的变化情况,在上述用户表变化的过程中,预设标识字段可以为“姓名”,预设指定字段包括“手机号码”以及“sign_up_date(注册日期)”。
146.对于需要保留全部变化状态的流水记录表,可以通过多个指定字段,确定标识字段对应的数据记录,并根据数据记录所对应的更新时间,构建流水记录表,即构建第一基础拉链数据表,用于表示用户表中历史数据变化的全部过程。
147.例如,可以得到截止7月1日的第一基础拉链数据表如表2所示:
148.姓名手机号码注册日期更新时间生效日期失效日期
a139xxxxxxxx2019
‑
07
‑
0122019
‑
07
‑
01 12:00:022019
‑
07
‑
012019
‑
07
‑
02
149.表2
150.当前只有用户a注册了账户信息,拉链表数据如上所示,其中,生效日期为记录插入的时间,同时由于这条数据记录是有效记录,所以失效时间用一个较大的日期占位。
151.截止7月2日的第一基础拉链数据表可以如表3所示:
152.姓名手机号码注册日期更新时间生效日期失效日期a139xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
01 12:00:022019
‑
07
‑
012019
‑
07
‑
02a137xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
02 10:00:022019
‑
07
‑
029999
‑
12
‑
31b135xxxxxxxx2019
‑
07
‑
022019
‑
07
‑
02 18:12:122019
‑
07
‑
029999
‑
12
‑
31
153.表3
154.用户a在7月2日更新过手机号码,此时拉链表会留下两条a的记录。一条是更新手机号之前(即2019
‑
07
‑
01日)的记录,并且失效时间更改为2019
‑
07
‑
02;一条是更新手机号码之后(即2019
‑
07
‑
02日)的记录,并且生效日期为2019
‑
07
‑
02,失效日期为9999
‑
12
‑
31;用户b在7月2日有两次操作,一次是注册,一次是更新手机号码,但是在拉链表中只保留当日最新的记录。
155.此外,若是只保留标识字段对应的一定时间段内有效数据的记录,则可以根据拉链表中的生效时间与失效时间进行筛选,例如,标识字段为用户的姓名,则在上述过程中,用户a存在对应的两条修改记录,其中,一条数据记录由于已经失效可以对其进行删除,从而得到截止7月2日的第二基础拉链数据表可以如表4所示:
156.姓名手机号码注册日期更新时间生效日期失效日期a137xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
02 10:00:022019
‑
07
‑
029999
‑
12
‑
31b135xxxxxxxx2019
‑
07
‑
022019
‑
07
‑
02 18:12:122019
‑
07
‑
029999
‑
12
‑
31
157.表4
158.对于增量数据表,当业务数据表发生变化时,则在增量数据表中记录对应的增量数据,例如用户a在7月1日进行了注册,则可以记录对应的用户信息;用户a在7月2日对手机号码进行了修改,则可以记录对应的手机号码,用户b在7月2日进行了注册但并未填写手机号码,则可以记录对应的用户信息,同日,用户b在注册后的一定时间内填写了手机号码,则可以记录对应的手机号码,从而可以得到如下表5所示的增量数据:
159.姓名手机号码sign_up_date(注册日期)modify_time(更新时间)a139xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
01 12:00:02 137xxxxxxxx 2019
‑
07
‑
02 10:00:02b 2019
‑
07
‑
022019
‑
07
‑
02 09:32:12 135xxxxxxxx 2019
‑
07
‑
02 18:12:12
160.表5
161.从而在获取了与目标业务数据表对应的基础拉链数据表和增量数据表之后,可以对两者进行数据合并,以便构建与目标业务数据表对应的全量拉链数据表。
162.步骤102,若所述增量数据表中存在与所述第一指定字段相同的第二指定字段,则根据所述第一更新字段与所述第二更新字段,建立所述基础拉链数据表中拉链数据记录与所述增量数据表中增量数据记录之间的数据映射关系;
163.在本发明实施例中,可以分别获取基础拉链数据表中的第一指定字段,以及增量数据表中的第二指定字段,并将两者进行比对,判断基础拉链数据表中的指定字段是否在增量数据表中存在对应的增量数据记录,若存在,则可以进一步根据基础拉链数据表中的第一更新字段与增量数据表中的第二更新字段,建立基础拉链数据表中拉链数据记录与增量数据表中增量数据记录之间的数据映射关系,以便根据数据映射关系,进行全量拉链表的构建。
164.在具体实现中,可以分别采用各条拉链数据记录的第一指定字段与第一更新字段,从增量数据表中查找第一增量数据记录,建立基础拉链数据表中各条拉链数据记录与增量数据表中对应的至少一条第一增量数据记录之间的数据映射关系。其中,第一增量数据记录中的第二指定字段与拉链数据记录中的第一指定字段相同,第二更新字段与第一更新字段相同。
165.需要说明的是,对于拉链数据记录,其可能是标识字段对应的在一定时间段内有效的数据记录,即其可以对应多次数据变化后最终保留的有效数据记录,而在增量数据表中,针对每次数据变化均存储有对应的增量数据记录,因此,对于一条拉链数据记录,在增量数据表中可以对应至少一条增量数据记录。
166.具体的,可以通过基础拉链数据表中拉链数据记录所对应的指定字段,从增量数据表中查找与标识字段对应的增量数据记录,然后根据更新字段确定增量数据表中与标识字段对应的发生状态变化的多条增量数据记录,从而通过基础拉链数据表中的指定字段与更新字段可以锁定增量数据表中增量数据记录与基础拉链数据表中拉链数据记录之间的数据映射关系。
167.在一种示例中,假设基础拉链数据表如下表6所示:
168.姓名手机号码注册日期更新时间生效日期失效日期a139xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
01 12:00:022019
‑
07
‑
012019
‑
07
‑
02a137xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
02 10:00:022019
‑
07
‑
029999
‑
12
‑
31b135xxxxxxxx2019
‑
07
‑
022019
‑
07
‑
02 18:12:122019
‑
07
‑
029999
‑
12
‑
31
169.表6增量数据表如下表7所示:
170.姓名手机号码sign_up_date(注册日期)modify_time(更新时间)a139xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
01 12:00:02 137xxxxxxxx 2019
‑
07
‑
02 10:00:02b 2019
‑
07
‑
022019
‑
07
‑
02 09:32:12 135xxxxxxxx 2019
‑
07
‑
02 18:12:12
171.表7
172.通过指定字段与更新字段进行数据映射,可以得到拉链数据记录
①
(对应于第一条用户a的操作记录)对应于增量数据记录ⅰ,拉链数据记录
②
(对应于第二条用户a的操作记录)对应于增量数据记录ⅰ、ⅱ,拉链数据记录
③
(对应于用户b的操作记录)对应于增量数据记录ⅲ、ⅳ。
173.若基础拉链数据表如下表8所示:
174.姓名手机号码注册日期更新时间生效日期失效日期a137xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
02 10:00:022019
‑
07
‑
029999
‑
12
‑
31
b135xxxxxxxx2019
‑
07
‑
022019
‑
07
‑
02 18:12:122019
‑
07
‑
029999
‑
12
‑
31
175.表8
176.则拉链数据记录
①
(对应于用户a的操作记录)对应于增量数据记录ⅰ、ⅱ,拉链数据记录
②
(对应于用户b的操作记录)对应于增量数据记录ⅲ、ⅳ,通过拉链数据记录的指定字段与更新字段实现拉链表与增量表之间的数据映射关系构建,实现了复杂拉链数据表的构建,以便对多维度的数据进行记录,提高了数据处理的效率。
177.步骤103,根据所述数据映射关系对所述基础拉链数据表进行处理,生成针对所述业务数据表的全量拉链数据表。
178.在具体实现中,可以采用数据映射关系从增量数据表中,提取与基础拉链数据表中每条拉链数据记录对应的至少一条第二增量数据记录,第二增量数据记录用于表示拉链数据记录中目标标识字段对应的历史数据变化,接着采用第二增量数据记录对基础拉链数据表的拉链数据记录进行处理,生成针对业务数据表的全量拉链数据表,从而一方面可以通过拉链数据表对业务数据的历史变化状态进行记录,有效降低数据存储的空间和减少计算资源,另一方面通过增量数据表与拉链数据表之间的映射关系对业务数据表进行全量拉链数据表的构建,实现复杂拉链数据表的构建,实现多维度的数据记录,提高了数据处理的效率。
179.例如,根据基础拉链数据表(表6)与增量数据表(表7)进行全量拉链数据表的构建,可以得到如下表9所示的全量拉链数据表:
180.姓名手机号码注册日期更新时间生效日期失效日期a139xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
01 12:00:022019
‑
07
‑
012019
‑
07
‑
02a137xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
02 10:00:022019
‑
07
‑
029999
‑
12
‑
31b135xxxxxxxx2019
‑
07
‑
022019
‑
07
‑
02 18:12:122019
‑
07
‑
029999
‑
12
‑
31
181.表9
182.在本发明的一种可选实施例中,若增量数据表中不存在与第一指定字段相同的第二指定字段,表示增量数据表中不存在对应的增量数据,基础拉链数据表中的拉链数据记录属于新增的数据,则将第一指定字段对应的拉链数据记录作为第一拉链数据记录,并在采用第二增量数据记录对基础拉链数据表的拉链数据记录进行全量拉取后,保留第一拉链数据记录,生成针对业务数据表的全量拉链数据表。
183.在一种示例中,假设基础拉链数据表中还包括新注册的用户c对应的拉链数据记录,如下表10所示:
184.姓名手机号码注册日期更新时间生效日期失效日期a139xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
01 12:00:022019
‑
07
‑
012019
‑
07
‑
02a137xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
02 10:00:022019
‑
07
‑
029999
‑
12
‑
31b135xxxxxxxx2019
‑
07
‑
022019
‑
07
‑
02 18:12:122019
‑
07
‑
029999
‑
12
‑
31c133xxxxxxxx2019
‑
07
‑
032019
‑
07
‑
03 11:12:122019
‑
07
‑
039999
‑
12
‑
31
185.表10
186.由于用户c对应的拉链数据记录在增量数据表中并未存在对应的增量数据,表明用户c所对应的拉链数据记录为新增数据记录,则可以对其进行标记,并在通过基础拉链数据表与增量数据表构建了全量拉链数据表后,可以将其记录于该全量拉链数据表中,得到
与目标业务数据表对应的拉链数据表,如基础拉链数据表(表10)与增量数据表(表7)构建全量拉链数据,如下表11所示的全量拉链数据表:
187.姓名手机号码注册日期更新时间生效日期失效日期a139xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
01 12:00:022019
‑
07
‑
012019
‑
07
‑
02a137xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
02 10:00:022019
‑
07
‑
029999
‑
12
‑
31b135xxxxxxxx2019
‑
07
‑
022019
‑
07
‑
02 18:12:122019
‑
07
‑
029999
‑
12
‑
31c133xxxxxxxx2019
‑
07
‑
032019
‑
07
‑
03 11:12:122019
‑
07
‑
039999
‑
12
‑
31
188.表11
189.在本发明的另一种可选实施例中,若增量数据表中存在不能与基础拉链数据表中拉链数据记录建立映射关系的增量数据记录,则采用第一指定字段从增量数据表中获取第三增量数据记录,与第三增量数据记录的目标增量更新时间;采用第三增量数据记录与对应的目标增量更新时间,生成第二拉链数据记录;采用第二增量数据记录对基础拉链数据表的拉链数据记录进行更新后,保留第二拉链数据记录,生成针对业务数据表的全量拉链数据表。
190.在一种示例中,假设增量数据表中存在不能与基础拉链数据表建立数据映射关系的数据,则通过第一指定子段获取该增量数据记录,并以及增量数据记录对应的增量更新时间,并生成增量拉链数据记录,在进行全量拉链数据表的构建过程中,添加进入,如增量数据表可以如下表12所示:
191.姓名手机号码sign_up_date(注册日期)modify_time(更新时间)a139xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
01 12:00:02 137xxxxxxxx 2019
‑
07
‑
02 10:00:02b 2019
‑
07
‑
022019
‑
07
‑
02 09:32:12 135xxxxxxxx 2019
‑
07
‑
02 18:12:12d131xxxxxxxx2019
‑
07
‑
032019
‑
07
‑
03 15:11:15
192.表12
193.则将基础拉链数据表(表10)与增量数据表(表12)构建全量拉链数据表,可以得到如下表13所示的全量拉链数据表:
194.姓名手机号码注册日期更新时间生效日期失效日期a139xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
01 12:00:022019
‑
07
‑
012019
‑
07
‑
02a137xxxxxxxx2019
‑
07
‑
012019
‑
07
‑
02 10:00:022019
‑
07
‑
029999
‑
12
‑
31b135xxxxxxxx2019
‑
07
‑
022019
‑
07
‑
02 18:12:122019
‑
07
‑
029999
‑
12
‑
31c133xxxxxxxx2019
‑
07
‑
032019
‑
07
‑
03 11:12:122019
‑
07
‑
039999
‑
12
‑
31d131xxxxxxxx2019
‑
07
‑
032019
‑
07
‑
03 15:11:152019
‑
07
‑
039999
‑
12
‑
31
195.表13
196.需要说明的是,本发明实施例包括但不限于上述示例,可以理解的是,本领域技术人员在本发明的思想指导下,还可以根据实际需要进行设置,本发明对此不作限制。
197.在本发明实施例中,通过获取与目标业务数据表对应的基础拉链数据表与增量数据表,并对两者所存储的数据记录进行比对,若增量数据表中存在与基础拉链数据表中第一指定字段对应的第二指定字段,判定增量数据表中存在对应的增量数据,则根据基础拉
链数据表的拉链时间信息与增量数据表中的增量更新时间,建立基础拉链数据表中拉链数据记录与增量数据表中增量数据记录之间的数据映射关系,然后根据数据映射关系对基础拉链数据表进行更新,生成针对业务数据表的全量拉链数据表,从而一方面通过拉链数据表对业务数据的历史变化状态进行记录,有效降低数据存储的空间和减少计算资源,另一方面通过增量数据表与拉链数据表之间的映射关系对业务数据表进行全量拉链数据表的构建,实现复杂拉链数据表的构建,实现多维度的数据记录,提高了数据处理的效率。
198.为了使本领域技术人员更好地理解本发明实施例的技术方案,下面通过一个示例进行说明。
199.在对业务数据表进行拉链数据的构建,得到基础拉链数据表,如下所示:
[0200][0201][0202]
以及得到增量数据表,如下所示:
[0203][0204]
可以将基础拉链数据表与增量数据表之间进行数据映射关系的建立,并在建立完毕后,进行全量拉链数据表的构建,得到如下所示的全量拉链数据表:
[0205][0206]
在上述构建过程中,包括增量数据表中存在与基础拉链数据表对应的数据记录,以及基础拉链数据表中存在增量数据表中没有的数据记录,增量数据表中存在基础拉链数据表中没有的数据记录,则可以根据不同的情况进行数据处理,包括建立数据映射关系、生成增量拉链数据记录、保留拉链数据记录等方式,构建复杂的拉链数据表。
[0207]
通过拉链数据表对业务数据的历史变化状态进行记录,有效降低数据存储的空间和减少计算资源,以及通过增量数据表与拉链数据表之间的映射关系对业务数据表进行全量拉链数据表的构建,实现复杂拉链数据表的构建,实现多维度的数据记录,提高了数据处理的效率。
[0208]
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0209]
参照图2,示出了本发明实施例提供的一种数据表的生成装置的结构框图,具体可以包括如下模块:
[0210]
数据表获取模块201,用于获取与目标业务数据表对应的基础拉链数据表,以及与所述目标业务数据表对应的增量数据表,所述基础拉链数据表包括拉链数据记录,所述拉链数据记录至少包括目标标识字段、至少一个第一指定字段以及与所述第一指定字段对应的第一更新字段,所述增量数据表至少包括增量数据记录,所述增量数据记录包括至少一个第二指定字段以及所述第二指定字段对应的第二更新字段;
[0211]
数据映射关系建立模块202,用于若所述增量数据表中存在与所述第一指定字段相同的第二指定字段,则根据所述第一更新字段与所述第二更新字段,建立所述基础拉链数据表中拉链数据记录与所述增量数据表中增量数据记录之间的数据映射关系;
[0212]
拉链表生成模块203,用于根据所述数据映射关系对所述基础拉链数据表进行处理,生成针对所述业务数据表的全量拉链数据表。
[0213]
在本发明的一种可选实施例中,所述数据映射关系建立模块202具体用于:
[0214]
分别采用各条所述拉链数据记录的第一指定字段与第一更新字段,从所述增量数据表中查找第一增量数据记录,建立所述基础拉链数据表中各条拉链数据记录与所述增量数据表中对应的至少一条第一增量数据记录之间的数据映射关系;
[0215]
其中,所述第一增量数据记录中的第二指定字段与所述拉链数据记录中的第一指定字段对应,第二更新字段与所述第一更新字段对应。
[0216]
在本发明的一种可选实施例中,所述拉链表生成模块203具体用于:
[0217]
采用所述数据映射关系从所述增量数据表中,提取与所述基础拉链数据表中各所述拉链数据记录对应的至少一条第二增量数据记录,所述第二增量数据记录用于表示所述拉链数据记录中所述目标标识字段对应的历史数据变化;
[0218]
采用所述第二增量数据记录对所述基础拉链数据表的拉链数据记录进行处理,生成针对所述业务数据表的全量拉链数据表。
[0219]
在本发明的一种可选实施例中,还包括:
[0220]
拉链数据记录确定模块,用于若所述增量数据表中不存在与所述第一指定字段相同的第二指定字段,则将所述第一指定字段对应的拉链数据记录作为第一拉链数据记录;
[0221]
所述拉链表生成模块203具体用于:
[0222]
采用所述第二增量数据记录对所述基础拉链数据表的拉链数据记录进行更新后,保留所述第一拉链数据记录,生成针对所述业务数据表的全量拉链数据表。
[0223]
在本发明的一种可选实施例中,还包括:
[0224]
更新时间获取模块,用于若所述增量数据表中存在不能与所述基础拉链数据表中拉链数据记录建立映射关系的增量数据记录,则采用所述第一指定字段从所述增量数据表中获取第三增量数据记录,与所述第三增量数据记录的目标增量更新时间;
[0225]
拉链数据记录生成模块,用于采用所述第三增量数据记录与对应的目标增量更新时间,生成第二拉链数据记录;
[0226]
所述拉链表生成模块203具体用于:
[0227]
采用所述第二增量数据记录对所述基础拉链数据表的拉链数据记录进行更新后,保留所述第二拉链数据记录,生成针对所述业务数据表的全量拉链数据表。
[0228]
在本发明的一种可选实施例中,还包括:
[0229]
业务数据记录获取模块,用于获取目标业务数据表的业务数据记录,所述业务数据记录包括预设标识字段、至少一个预设指定字段以及与所述业务数据记录对应的业务更新时间;
[0230]
业务更新时间获取模块,用于按照所述至少一个预设指定字段,提取与所述预设标识字段对应的至少一条目标业务数据记录,获取所述目标业务数据记录的目标业务更新时间;
[0231]
时间信息确定模块,用于采用所述目标业务更新时间,确定针对所述目标业务数据记录的生效时间与失效时间;
[0232]
第一拉链表建立模块,用于采用所述生效时间、失效时间以及所述目标业务数据记录,建立针对所述业务数据表的第一基础拉链数据表。
[0233]
在本发明的一种可选实施例中,还包括:
[0234]
数据记录获取模块,用于采用所述失效时间过滤失效的目标业务数据记录,获取
有效的目标业务数据记录;
[0235]
第二拉链表建立模块,用于采用所述有效的目标业务数据记录、所述有效的目标业务数据记录对应的生效时间与失效时间,建立针对所述业务数据表的第二基础拉链数据表。
[0236]
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0237]
本发明实施例还提供了一种电子设备,包括:
[0238]
一个或多个处理器;和
[0239]
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行本发明实施例所述的方法。
[0240]
本发明实施例还提供了一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行本发明实施例所述的方法。
[0241]
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0242]
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd
‑
rom、光学存储器、eeprom、flash以及emmc等)上实施的计算机程序产品的形式。
[0243]
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0244]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0245]
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0246]
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
[0247]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作
之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0248]
以上对本发明所提供的一种数据表的生成方法和一种数据表的生成装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。