CN112559641A - 拉链表的处理方法及装置、可读存储介质及电子设备 - Google Patents
拉链表的处理方法及装置、可读存储介质及电子设备 Download PDFInfo
- Publication number
- CN112559641A CN112559641A CN202011437545.0A CN202011437545A CN112559641A CN 112559641 A CN112559641 A CN 112559641A CN 202011437545 A CN202011437545 A CN 202011437545A CN 112559641 A CN112559641 A CN 112559641A
- Authority
- CN
- China
- Prior art keywords
- time
- sub
- data record
- preset basic
- preset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 7
- 238000000034 method Methods 0.000 claims abstract description 66
- 238000012545 processing Methods 0.000 claims abstract description 40
- 238000001914 filtration Methods 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 230000008859 change Effects 0.000 abstract description 19
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 6
- 230000008520 organization Effects 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 101100517648 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) NUM1 gene Proteins 0.000 description 3
- 101100129590 Schizosaccharomyces pombe (strain 972 / ATCC 24843) mcp5 gene Proteins 0.000 description 3
- 230000003203 everyday effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 101100517651 Caenorhabditis elegans num-1 gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000002354 daily effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 230000001012 protector Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000012958 reprocessing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及数据处理技术领域,提供了一种拉链表的处理方法及装置、计算机可读存储介质和电子设备。其中,上述方法包括:获取与基础拉链表关联的信息表;基于关联字段标识相同的数据记录,根据信息表中的数据记录的开始时间和结束时间与预设基础拉链表中对应的数据记录的时间段的包含关系,将预设基础拉链表中对应的数据记录的时间段划分为多个子时间段;根据多个子时间段,得到目标拉链表。本方案基于信息表中的时间段对拉链表中的各时间段进行划分,从而找到拉链表中信息发生变化的变化时间点,以实现对拉链表的更新,可以提高拉链表的更新速度。
Description
技术领域
本公开涉及数据处理技术领域,具体而言,涉及一种拉链表的处理方法、拉链表的处理装置、计算机可读存储介质及电子设备。
背景技术
数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。拉链表作为数据仓库常见的数据更新方式之一,其可以记录一个事物从开始,一直到当前状态的所有变化的信息。
相关技术中,在对拉链表进行更新时,通过MD5(Message-Digest Algorithm,消息摘要算法)与已有的拉链表中的数据记录进行比较,如果数据发生变化,则原来的数据记录闭链,将变化后的是护具作为一条新的数据记录插入数据库中。
然而,这种通过闭链、开链更新拉链表的方式,由于运算量较大,因此更新速度较慢。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种拉链表的处理方法及装置、计算机可读存储介质及电子设备,进而至少在一定程度上改善拉链表更新速度较慢的问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的第一方面,提供了一种拉链表的处理方法,包括:
获取与预设基础拉链表关联的信息表;
基于关联字段标识相同的数据记录,将所述信息表中开始时间大于所述预设基础拉链表的开始时间且小于或等于所述预设基础拉链表中的结束时间的数据记录确定为第一数据记录,将所述信息表中结束时间大于或等于所述预设基础拉链表中的开始时间且小于所述预设基础拉链表的结束时间的数据记录确定为第二数据记录;
根据各所述第一数据记录和各所述第二数据记录,将预设基础拉链表中对应的数据记录的时间段划分为多个子时间段,以使预设基础拉链表中各对象的信息在各子时间段中保持不变;
根据多个所述子时间段,得到目标拉链表。
在本公开的一种示例性实施例中,基于前述方案,在根据多个所述子时间段,得到目标拉链表之前,所述方法还包括:
根据多个所述子时间段,更新所述预设基础拉链表;
其中,所述根据多个所述子时间段,更新所述预设基础拉链表包括:
将所述预设基础拉链表中对应的数据记录的开始时间和结束时间更新为各所述子时间段对应的开始时间和结束时间。
在本公开的一种示例性实施例中,基于前述方案,所述预设基础拉链表预先关联有至少一个信息表,所述预设基础拉链表左关联于所述信息表;
更新所述预设基础拉链表后,所述获取与预设基础拉链表关联的信息表包括:
根据预先关联顺序依次获取与预设基础拉链表关联的另一信息表。
在本公开的一种示例性实施例中,基于前述方案,所述根据各所述第一数据记录和各所述第二数据记录将预设基础拉链表中对应的数据记录的时间段划分为多个子时间段,包括:
获取目标数据记录所对应的时间段,其中,所述目标数据记录包括各所述第一数据记录和各所述第二数据记录;
根据所述目标数据记录所对应的时间段,确定预设基础拉链表中对应的各数据记录的第一子时间段的集合。
在本公开的一种示例性实施例中,基于前述方案,所述开始时间和所述结束时间以日为时间单位;
所述根据各所述第一数据记录和各所述第二数据记录将预设基础拉链表中对应的数据记录的时间段划分为多个子时间段,还包括:
根据预设基础拉链表中的对象标识、开始时间和结束时间,对各所述目标数据记录进行分组;
根据各分组中的子目标数据记录的开始时间对各子目标数据记录进行排序,得到各分组的各子目标数据记录的第一排序值;
将排序后的各子目标数据记录的结束时间增加一个所述时间单位,以确定第一时间表;
根据各分组中的子目标数据记录的开始时间对各子目标数据记录进行排序,得到各分组的各子目标数据记录的第二排序值;
将排序后的各子目标数据记录的开始时间减少一个所述时间单位,以确定第二时间表;
根据预设关联条件,将所述第一时间表和所述第二时间表进行错位全外关联,以根据所述关联结果确定预设基础拉链表中对应的各数据记录的第二子时间段的集合;
其中,所述预设关联条件为所述第一时间表和所述第二时间表的关联字段标识、开始时间和结束时间相同,且所述述第一排序值小于所述第二排序值,所述第一排序值和所述第二排序值的差值为1。
在本公开的一种示例性实施例中,基于前述方案,所述根据各所述第一数据记录和各所述第二数据记录将预设基础拉链表中对应的数据记录的时间段划分为多个子时间段,包括:
合并所述第一子时间段的集合和所述第二子时间段的集合;
根据合并后的结果,将所述预设基础拉链表中对应的数据记录的时间段划分为多个子时间段;
其中,所述合并所述第一子时间段的集合和所述第二子时间段的集合后包括:
若子时间段的开始时间小于预设基础拉链表中其对应的数据记录的开始时间或为空值,则利用所述预设基础拉链表中其对应的数据记录的开始时间替换所述子时间段的开始时间;
若子时间段的结束时间大于其对应的预设基础拉链表中的数据记录的结束时间或为空值,则利用所述预设基础拉链表中其对应的数据记录的结束时间替换所述子时间段的结束时间。
若子时间段的开始时间为拉链表的时间的最大值或子时间段的开始时间大于其结束时间,则过滤掉所述子时间段。
在本公开的一种示例性实施例中,基于前述方案,所述根据多个所述子时间段,得到目标拉链表,包括:
将所述预设基础表中的各数据记录的对象标识和各数据记录对应的所述多个子时间段配置为主键,生成信息关联表;
基于关联字段标识相同的数据记录,若所述信息关联表中任意子时间段包含在任意信息表所对应的时间段内,则将所述信息表和所述信息关联表进行关联;
根据关联结果从所述信息表中提取信息数据,以对所述预设基础拉链表进行更新。
根据本公开的第二方面,提供了一种数据处理装置,包括:
信息表获取模块,被配置为获取与预设基础拉链表关联的信息表;
目标数据记录确定模块,被配置为基于关联字段标识相同的数据记录,将所述信息表中开始时间大于所述预设基础拉链表的开始时间且小于或等于所述预设基础拉链表中的结束时间的数据记录确定为第一数据记录,将所述信息表中结束时间大于或等于所述预设拉链基础表中的开始时间且小于所述预设基础拉链表的结束时间的数据记录确定为第二数据记录;
子时间段划分模块,被配置为根据各所述第一数据记录和各所述第二数据记录,将预设基础拉链表中对应的数据记录的时间段划分为多个子时间段,以使预设基础拉链表中各对象的信息在各子时间段中保持不变;
目标拉链表确定模块,被配置为根据多个所述子时间段,得到目标拉链表。
根据本公开的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中第一方面所述的拉链表的处理方法。
根据本公开实施例的第四方面,提供了一种电子设备,包括:处理器;以及,存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中第一方面所述的拉链表的处理方法。
由上述技术方案可知,本公开示例性实施例中的拉链表的处理方法、拉链表的处理装置,以及实现所述拉链表的处理方法的计算机可读存储介质及电子设备,至少具备以下优点和积极效果:
在本公开的一些实施例所提供的技术方案中,首先,通过获取与预设基础拉链表关联的信息表;其次,基于关联字段标识相同的数据记录,将信息表中开始时间大于预设基础拉链表的开始时间且小于或等于预设基础表中的结束时间的数据记录确定为第一数据记录,将信息表中结束时间大于或等于预设基础表中的开始时间且小于预设基础拉链表的结束时间的数据记录确定为第二数据记录;然后,根据各第一数据记录和各第二数据记录,将预设基础拉链表中对应的数据记录的时间段划分为多个子时间段,以使预设基础拉链表中各对象的信息在各子时间段中保持不变;最后,根据多个所述子时间段,得到目标拉链表。与相关技术相比,一方面,本公开基于第一数据记录和第二数据记录,可以确定预设基础拉链表中各对象的信息发生变化的变化时间点,从而将预设基础拉链表中发生信息变化的数据记录划分为多个子时间段,以实现对拉链表的更新,由于避免了大量的计算,进而提高了拉链表的更新速度;另一方面,本公开的预设基础拉链表可以根据业务场景需求进行自定义配置,从而提高了拉链表更新的灵活性。
本公开应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本公开一示例性实施例中拉链表的处理方法的流程示意图;
图2示出本公开一示例性实施例中确定第二子时间段的方法的流程示意图;
图3示出本公开一示例性实施例中根据第一数据记录和第二数据记录的开始时间和结束时间划分预设基础表的时间段的示意图;
图4示出本公开一示例性实施例中对预设基础拉链表进行更新的方法的流程示意图;
图5示出本公开一示例性实施例中拉链表全量更新方法的流程示意图;
图6示出本公开一示例性实施例中拉链表处理装置的结构示意图;
图7示出本公开示例性实施例中计算机存储介质的结构示意图;以及,
图8示出本公开示例性实施例中电子设备的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
本说明书中使用用语“一个”、“一”、“该”和“所述”用以表示存在一个或多个要素/组成部分/等;用语“包括”和“具有”用以表示开放式的包括在内的意思并且是指除了列出的要素/组成部分/等之外还可存在另外的要素/组成部分/等;用语“第一”和“第二”等仅作为标记使用,不是对其对象的数量限制。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。
数据仓库,英文名称为Data Warehouse。其是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。
拉链表可以记录一个事物从开始,一直到当前状态的所有变化的信息,其可以避免按每一天存储所有记录造成的海量存储问题,同时也是数据仓库中处理缓慢变化数据的一种常见方式。
拉链表通常适合于,数据量较大,表中的某些字段会被更新操作,且更新变化不是很大,同时需要查看历史快照信息的数据存储场景中。
相关技术中,在进行拉链表更新时,每天从源数据库中全量抽取前一天的数据,数据更新时只计算前一天的数据,通过MD5与已有的拉链表记录进行比较,如果数据发生变化,则原来的记录闭链,将新的数据作为一条新的记录插入数据库。
如果源数据库中的数据因为数据治理发生更新,则数据仓库中的数据需要通过重新获取历史数据进行修正,重新修正的方式即为选择一个开始日期,按照每日增量更新的方式闭链、开链。
但这种闭链、开链增量更新拉链表的方式,更新时的运算量非常大,更新速度较慢,无法满足一些对更新速度有较高要求的业务场景中。
本公开的发明人考虑到拉链表更新的实质是如果在某一天数据发生变化,则需要新增一条记录。每一条记录都有一个BEGDA和ENDDA,分别代表该数据记录的开始时间和结束时间。在开始时间和结束时间这个闭区间内信息是不变的。
因此,拉链表的更新问题可以转化为寻找信息发生变化的时间,即变化时间点,从而在提取更新数据之前可以先将需要更新的拉链表的时间段进行扩充,以将各数据记录的时间段切分为多个更小的子时间段。根据需要,每关联一个信息表需要扩充一次,最终获得最小的时间段,在这个最小的时间段里各信息保持不变。
基于此,在本公开的实施例中,首先提供了一种拉链表的更新方法,至少在一定程度上克服上述相关技术中存在的缺陷。
图1示出本公开一示例性实施例中拉链表的处理方法的流程示意图,。参考图1,该方法包括:
步骤S110,获取与预设基础拉链表关联的信息表;
步骤S120,基于关联字段标识相同的数据记录,将信息表中开始时间大于预设基础拉链表的开始时间且小于或等于预设基础拉链表中的结束时间的数据记录确定为第一数据记录,将信息表中结束时间大于或等于预设基础拉链表中的开始时间且小于预设基础拉链表的结束时间的数据记录确定为第二数据记录;
步骤S130,根据各第一数据记录和各所述第二数据记录,将预设基础拉链表中对应的数据记录的时间段划分为多个子时间段,以使预设基础拉链表中各对象的信息在各子时间段中保持不变;
步骤S140,根据多个子时间段,得到目标拉链表。
在图1所示实施例所提供的技术方案中,首先,通过获取与预设基础拉链表关联的信息表;其次,基于关联字段标识相同的数据记录,将信息表中开始时间大于预设基础拉链表的开始时间且小于或等于预设基础表中的结束时间的数据记录确定为第一数据记录,将信息表中结束时间大于或等于预设基础表中的开始时间且小于预设基础拉链表的结束时间的数据记录确定为第二数据记录;然后,根据各第一数据记录和各第二数据记录,将预设基础拉链表中对应的数据记录的时间段划分为多个子时间段,以使预设基础拉链表中各对象的信息在各子时间段中保持不变;最后,根据多个所述子时间段,得到目标拉链表。与相关技术相比,一方面,本公开基于第一数据记录和第二数据记录,可以确定预设基础拉链表中各对象的信息发生变化的变化时间点,从而将预设基础拉链表中发生信息变化的数据记录划分为多个子时间段,以实现对拉链表的更新,由于避免了大量的计算,进而提高了拉链表的更新速度;另一方面,本公开的预设基础拉链表可以根据业务场景需求进行自定义配置,从而提高了拉链表更新的灵活性。
以下对图1所示实施例中各个步骤的具体实施方式进行详细阐述:
在步骤S110中,获取与预设基础拉链表关联的信息表。
其中,预设基础拉链表可以包括任何的需要进行更新的拉链表,其可以根据用户的实际业务需求进行自定义。每个预设基础表所关联的信息表也可以根据实际需求进行自定义和预先关联。
在示例性的实施方式中,预设基础拉链表预先关联有至少一个信息表,其中,预设基础拉链表左关联于各信息表,即预设基础拉链表在关联后形成的宽表的左边。信息表可以包括任何的预设基础拉链表需要从中提取信息数据的拉链表。
预设基础拉链表和各信息表中的各数据记录都有对应的开始时间和结束时间,每个数据记录的开始时间和结束时间组成一个时间段,其开始时间和结束时间以日为时间单位。
在进行关联的时候,关联字段可以包括预设基础拉链表和信息表中能区分不同数据记录的字段,如可以是预设基础拉链表中的对象标识所对应的字段OBJID,其中,对象标识可以包括任何的需要更新的信息所对应的对象的标识,例如,需要对员工的相关信息进行更新时,对象标识可以是员工编号。
当然,也可以通过另外的一个或者多个字段进行关联,例如SOBID,即也可以将预设基础拉链表中的各对象的属性信息所对应的字段作为关联字段进行关联。
示例性的,获取与预设基础拉链表关联的信息表的具体实施方式可以是,根据预先的关联顺序依次与获取预设基础拉链表关联的信息表。
为了保证更新结果的准确性,在获取预设基础拉链表关联的信息表之前,可以对预设基础拉链表进行预处理,以使得预设基础拉链表中对象标识相同的各数据记录的时间段不重叠。
举例而言,可以根据需求将需要更新的拉链表配置为预设基础拉链表,然后定时从源数据库中获取包含预设基础拉链表的全量数据到数据仓库,以根据获取的全量数据对预设基础拉链表进行处理。其中,源数据库可以是业务系统对应的数据库。
以员工的组织分配表为预设基础拉链表为例,员工A在1月1日至1月3日对应一个组织,在1月4日至1月5日对应另一个组织,而不可能出现员工A在1月1日至1月3日在一个组织,1月2日至1月5日在另一个组织的情况。同一个员工的不同数据记录对应的时间段是不会重叠的。
但在业务系统中可能由于操作人员失误,将信息输入错误,而出现同一个员工的不同数据记录对应的时间段重叠的情况。因此,为了保证后续处理结果的准确性,在获取预设基础拉链表之前,可以对预设基础拉链表进行预处理,以避免出现同一对象标识的不同数据记录对应的时间段重叠的情况。
具体的预处理实施方式可以是,当对象标识相同的数据记录的时间段重叠时,可以根据开始时间从大到小的顺序对各数据记录进行排序,把上一条(排序值小)数据记录的结束时间修改为下一条(排序值大)的数据记录的开始时间减去1天,以使得对象标识相同的各数据记录的时间段不重叠。
通过强制约束基础拉链表中的时间段不重叠,可以保证后续处理结果的准确性。此外,还可以根据业务的需求,如果预设基础拉链表有时间段不能中断的需求的,还可以在从源数据库中获取到全量数据后,对预设基础拉链表中的相关数据进行预处理,以保证预设基础拉链表的对象标识相同的数据记录的时间段不中断。
接下来,继续参考图1,在步骤S120中,基于关联字段标识相同的数据记录,将信息表中开始时间大于预设基础拉链表的开始时间且小于或等于预设基础拉链表中的结束时间的数据记录确定为第一数据记录,将信息表中结束时间大于或等于预设基础拉链表中的开始时间且小于预设基础拉链表的结束时间的数据记录确定为第二数据记录。
示例性的,步骤S120的具体实施方式可以是,对于关联字段标识相同的数据记录,如果信息表中数据记录的开始时间出现在左开右闭区间“(预设基础拉链表的开始时间,预设基础拉链表的结束时间]”中,则将信息表中的该数据记录确定为第一数据记录;对于关联字段标识相同的数据记录,如果信息表中数据记录的结束时间出现在右开左闭区间“[预设基础拉链表的开始时间,预设基础拉链表的结束时间)”中,则将信息表中的该数据记录确定为第二数据记录。
这样的第一数据记录和第二数据记录可以用于确定预设基础拉链表中关联字段标识相同的数据记录在信息表中的信息的变化时间点。
其中,变化时间点可能是第一数据记录或第二数据记录的开始时间、第一数据记录或第二数据记录的结束时间、第一数据记录或第二数据记录的开始时间减去1天,第一数据记录或第二数据记录的结束时间加1天。
举例而言,预设基础拉链表和信息表中各对象标识OBJID、开始时间BEGDA和结束时间ENDDA可以唯一确定预设基础表中的数据记录,获取预设基础拉链表,可以将预设基础拉链表的对象标识、开始时间和结束时间所对应的字段确定为主键。预设基础拉链表和信息表可以通过关联字段OBJID左关联。
为了实现对所有预设基础拉链表和信息表的统一处理,可以将获取的预设基础拉链表的开始时间BEGDA和结束时间ENDDA分别重命名为BEGDA0和ENDDA0。同样的,获取与预设基础拉链表关联的信息表后,可以将信息表的开始时间BEGDA和结束时间ENDDA分别重命名为BEGDA1和ENDDA1。在此基础上,确定第一数据记录和第二数据记录,以及进行后续的统一处理。
以预设基础拉链表中“OBJID=1,BEGDA0=2020-11-13,ENDDA0=2020-11-23”的数据记录为例,如果在信息表中存在OBJID=1的数据记录的BEGDA1出现在预设基础拉链表中左开右闭区间(BEGDA0=2020-11-13,ENDDA0=2020-11-23]中,那么,信息表中的该数据记录则为第一数据记录1,如果信息表中存在OBJID=1的数据记录的ENDDA1出现在右开左闭区间[BEGDA0=2020-11-13,ENDDA0=2020-11-23)中,那么,信息表中的该数据记录则为第二数据记录1。同时,该第一数据记录和第二数据记录在预设基础拉链表中对应的数据记录为由“OBJID=1,BEGDA0=2020-11-13,ENDDA0=2020-11-23”所确定的数据记录。
即,上述的第一数据记录1和第二数据记录1可以用于确定预设基础拉链表中“OBJID=1,BEGDA0=2020-11-13,ENDDA0=2020-11-23”所对应的数据记录在信息表中的信息的变化时间点。
具体的,对于预设基础拉链表的各数据记录而言,有的数据记录可能存在多个变化时间点,有的数据记录可能没有变化时间点。即,有的数据记录可能存在至少一个第一数据记录和/或第二数据记录,有的可能不存在第一数据记录和第二数据记录。
确定第一数据记录和第二数据记录后,在步骤S130中,根据各第一数据记录和各第二数据记录,将预设基础拉链表中对应的数据记录的时间段划分为多个子时间段,以使预设基础拉链表中各对象的信息在各子时间段中保持不变。
如前所述,信息表中的第一数据记录和第二数据记录可以用于确定预设基础拉链表中关联字段标识相同的数据记录在信息表中的信息发生变化的变化时间点。其中,信息变化时间点可能是第一数据记录或第二数据记录的开始时间、第一数据记录或第二数据记录的结束时间、第一数据记录或第二数据记录的开始时间减去1天,第一数据记录或第二数据记录的结束时间加1天。
因此,就是要通过这4种变化时间点将预设基础拉链表中对应的数据记录的时间段划分为多个子时间段。这多个子时间段可以包括两种情况,第一种情况是,子时间段的开始时间和结束时间中至少有一个等于第一数据记录或第二数据记录的开始时间或结束时间,另一种情况是,子时间段的开始时间和结束时间中至少有一个等于第一数据记录或第二数据记录的开始时间减1天或结束时间加1天。
示例性的,可以先确定第一子时间段和第二时间段,然后对第一子时间段和第二子时间段进行过滤和不合理情况的合理化处理,以确定上述两种情况下的子时间段。
具体的,确定第一子时间段的具体实施方式可以是,获取目标数据记录所对应的时间段,其中,目标数据记录包括各第一数据记录和各第二数据记录;根据目标数据记录所对应的时间段,确定预设基础拉链表中对应的各数据记录的第一子时间段的集合。
在示例性的实施方式中,可以获取信息表中第一数据记录和第二数据记录对应的时间段,将各第一数据记录的时间段和各第二数据记录的时间段确定为预设基础拉链表中对应的各数据记录的第一子时间段。也就是说各数据记录的第一子时间段的数量与第一数据记录和第二数据记录之和相等。
具体的,第一数据记录和第二数据记录的开始时间BEGDA1的值赋值给新的字段NEWBEGDA,第一数据记录和第二数据记录的结束时间ENDDA1的值赋值给新的字段NEWENDDA,从而确定预设基础拉链表中对应的各数据记录的第一子时间段的集合。
继续以上述的预设基础拉链表中的数据记录“OBJID=1,BEGDA0=2020-11-13,ENDDA0=2020-11-23”为例,预设基础拉链表中的该数据记录的第一子时间段的集合中可以包括2个第一子时间段,分别是上述的第一数据记录1和第二数据记录2所对应的时间段。
当然,当预设基础拉链表中的某个数据记录不存在对应的第一数据记录和第二数据记录时,其自然也不存在对应的第一子时间段和第二子时间段。
示例性的,图2示出本公开一示例性实施例中确定第二子时间段的方法的流程示意图。参考图2,该方法可以包括步骤S210-步骤S260。
在步骤S210中,根据预设基础拉链表中的对象标识、开始时间和结束时间,对各所述目标数据记录进行分组。
示例性的,在实际处理过程中,根据矩阵运算可以直接输出预设基础拉链表中所有数据记录在信息表中所对应的目标数据记录,即第一数据记录和第二数据记录。输出预设基础拉链表中所有数据记录所对应的目标数据记录后,为了确定出预设基础拉链表中每个数据记录所对应的目标数据记录,可以根据各目标数据记录在预设基础拉链表中所对应的对象标识、开始时间和结束时间,对各目标数据记录进行分组。
具体的,将在预设基础拉链表中对应的对象标识、开始时间和结束时间这3者相同的目标数据记录确定为同一组。将所有的目标数据记录进行分组后,可以为不同的组别配置对应的分组标识,例如第一组、第二组、第三组等。
对所有的目标数据记录完成分组后,在步骤S220中,根据各分组中的子目标数据记录的开始时间对各子目标数据记录进行排序,得到各分组的各子目标数据记录的第一排序值。
在示例的实施方式中,子目标数据记录包括各分组中所对应的目标数据记录。在进行排序的时候,可以按照开始时间从小到大的顺序对各分组中的子目标数据记录进行排序,得到第一排序值。
接下来,在步骤S230中,将排序后的各子目标数据记录的结束时间增加一个所述时间单位,以确定第一时间表。在示例性的实施方式中,预设基础拉链表和信息表中的开始时间和结束时间以日为时间单位。
举例而言,各子目标数据记录的开始时间对应的字段可以为BEGDA1,结束时间对应的字段可以为ENDDA1,对各子目标数据记录按照BEGDA1从小到大的顺序进行排序后,可以根据各第一排序值得到字段NUM1所对应的值,然后,将排序后的各子目标数据记录的结束时间增加一个时间单位,即将ENDDA1+1日得到新的字段NEWBEGDA所对应的值,根据新的字段NEWBEGDA和NUM1得到第一时间表。同时,第一时间表中的字段还包括预设基础拉链表中的主键,如上述的OBJID,BEGDA0,ENDDA0。
需要说明的是,由于拉链表中的结束时间具有最大值,例如,最大的ENDDA1为99991231,在将ENDDA1+1日得到新的字段NEWBEGDA时,如果某个子目标数据记录的ENDDA1为99991231,则直接将99991231作为该数据记录在字段NEWBEGDA所对应的值。
同样的,在步骤S240中,根据各分组中的子目标数据记录的开始时间再次对各子目标数据记录进行排序,得到各分组的各子目标数据记录的第二排序值。步骤S240的具体实施方式和步骤S220的具体实施方式完全相同,此处不再进行赘述。
接下来,在步骤S250中,将排序后的各子目标数据记录的开始时间减少一个所述时间单位,以确定第二时间表。
举例而言,对各子目标数据记录按照BEGDA1从小到大的顺序进行排序后,可以根据各第二排序值得到字段NUM2所对应的值,然后,将排序后的各子目标数据记录的开始时间减少一个时间单位,即将BEGDA1-1日得到新的字段NEWENDDA所对应的值,根据新的字段NEWENDDA和NUM2得到第一时间表。同时,第二时间表中的字段还包括预设基础拉链表中的主键,如上述的OBJID,BEGDA0,ENDDA0。
接下来,在步骤S260中,根据预设关联条件,将第一时间表和第二时间表进行错位全外关联,以根据关联结果确定预设基础拉链表中对应的各数据记录的第二子时间段的集合。
其中,所述预设关联条件为第一时间表和所述第二时间表的关联字段标识、开始时间和结束时间相同,且第一排序值小于所述第二排序值,第一排序值和第二排序值的差值为1。
具体的,得到第一时间表和第二时间表后,可以根据OBJID,BEGDA0,ENDDA0将第一时间表和第二时间表进行错位全外关联(FULL OUTER JOIN),其中,通过第一时间表中的第一排序值NUM1等于第二时间表中的第二排序值NUM2减去1实现错位。
将第一时间表和第二时间表错位全外关联后,关联后的第一时间表中的字段NEWBEGDA和第二时间表中的字段NEWENDDA就可以生成预设基础拉链表中对应的各数据记录的第二子时间段的集合。
需要说明的是,在上述的步骤S220和步骤S240中,使用相同的方式分别进行了2次排序,这是因为步骤S220和步骤S240的两次分组排序可以同时进行,以分别生成第一时间表和第二时间表,从而更进一步的提高对拉链表的处理速度。例如,开启多个子线程,子线程1和子线程2分别排序生成第一时间表和第二时间表。当然,也可以只进行一次分组排序,将排序值分别赋值给第一时间表中的字段NUM1和第二时间表中的字段NUM2,本示例性实施方式对此不做任何限定。通过上述的步骤S210-步骤S260,可以在第一数据记录和第二数据记录的基础上,确定预设基础拉链表中对应的数据记录的第二子时间段,由于其在实际计算中,可以使用矩阵运算,快速的直接确定出预设基础拉链表中所有数据记录所对应的第二子时间段的集合,因此,降低了计算量,极大的提高拉链表的处理速度。
同时,在上述的步骤S120中,也可以通过矩阵运算,快速的直接确定出预设基础拉链表中所有数据记录的所对应的第一数据记录和第二数据记录,进而可以在步骤S130中快速的确定出所有数据记录所对应的第一子时间段的集合,提高拉链表的处理速度。
确定预设基础拉链表中对应的各数据记录的第一子时间段的集合和第二子时间段的集合后,合并第一子时间段的集合和所述第二子时间段的集合;根据合并后的结果,将预设基础拉链表中对应的数据记录的时间段划分为多个子时间段。
示例性的,可以通过行堆叠连接的方式,将预设基础拉链表中各数据记录的第一子时间段的集合所对应的数据表和上述的关联后的第一时间表和第二时间表进行关联,以合并第一子时间段的集合和第二子时间段的集合。
这样,合并后的数据表中的字段NEWBEGDA和字段NEWENDDA所确定的时间段为预设基础拉链表中各数据记录的子时间段。其中,通过字段OBJID、NEWBEGDA和NEWENDDA可以确定唯一的子时间段。
进一步的,合并第一子时间段的集合和所述第二子时间段的集合包括:若子时间段的开始时间小于预设基础拉链表中其对应的数据记录的开始时间或为空值,则利用预设基础拉链表中其对应的数据记录的开始时间替换子时间段的开始时间;若子时间段的结束时间大于其对应的预设基础拉链表中的数据记录的结束时间或为空值,则利用预设基础拉链表中其对应的数据记录的结束时间替换子时间段的结束时间。
举例而言,由于上述的第一时间表和第二时间表使用的是全外关联(FULL OUTERJOIN),所以第一时间表和第二时间表都不可避免的会出现一条值都为空(NULL)的记录,因此需要对这种情况进行处理。另外,因为第一子时间段和第二子时间段包含在预设基础拉链表对应的[开始时间BEGDA0,结束时间ENDDA0]内,如果信息表中开始时间BEGDA1和结束时间ENDDA1超出这个范围,需要使用预设基础拉链表中的开始时间BEGDA0和结束时间ENDDA0进行替换。
具体的,如果子时间段的开始时间字段NEWBEGDA的值小于对应的预设基础拉链表中的数据记录的开始时间BEGDA0的值或者子时间段的开始时间字段NEWBEGDA的值为NULL,则将对应的BEGDA0的值赋值给NEWBEGDA,同样地,如果子时间段的结束字段NEWENDDA的值大于对应的预设基础拉链表中的数据记录的结束时间ENDDA0的值或者子时间段的结束时间字段NEWENDDA的值为NULL,则将对应的ENDDA0的值赋值给NEWENDDA。
示例性的,若子时间段的开始时间为拉链表的时间的最大值或子时间段的开始时间大于其结束时间,则过滤掉该子时间段;根据过滤后的各子时间段,将预设基础拉链表中对应的数据记录的时间段划分为多个子时间段。
举例而言,在确定的第一子时间段和第二子时间段中,可能会出现开始时间为拉链表中的时间的最大值99991231的情况,或者开始时间大于结束时间的情况。这两种情况都是拉链表中不合理的情况,所以将这两种情况的子时间段过滤掉,例如删除,根据剩下的各子时间段将预设基础拉链表中对应的数据记录的时间段划分为多个子时间段。
图3示出本公开一示例性实施例中根据第一数据记录和第二数据记录的开始时间和结束时间划分出的预设基础表的时间段的示意图。
参考图3,以数据记录A为预设基础拉链表中“OJBID=5、开始时间BEGDA0=2月1日、结束时间ENDDA0=5月1日”的数据记录;数据记录A1为信息表中“OBJID=5,开始时间BEGDA1=1月1日、结束时间ENDDA1=3月1日”的数据记录;数据记录A2为信息表中“OBJID=5,开始时间BEGDA1=4月1月、结束时间ENDDA1=6月1日”的数据记录为例。
在图3中,预设基础拉链表中的数据记录A的时间段“2月1日到5月1日”被信息表中的数据记A1的结束时间3月1日和数据记录A2的开始时间4月1日划分成了3个子时间段。分别是2月1日到3月1日,3月2日到3月31日,4月1日到5月1日。
继续参考图1,在步骤S140中,根据多个子时间段,得到目标拉链表。示例性的,在根据多个所述子时间段,得到目标拉链表之前,可以根据多个子时间段,更新预设基础拉链表。
具体的,更新预设基础拉链表的实施方式可以是,将预设基础拉链表中对应的数据记录的开始时间和结束时间更新为各子时间段对应的开始时间和结束时间。
更新预设基础拉链表后,上述的步骤S110的具体实施方式可以是,根据预先的关联顺序依次获取与预设基础拉链表关联的另一信息表。根据获取的另一信息表和更新后的预设基础拉链表执行上述的步骤S120至步骤S130,以对预设基础拉链表格数据记录的开始时间和结束时间不断的进行划分,直到所有的信息表到执行完上述的步骤S120至步骤S130。则可以确定预设基础拉链表最终被划分的多个子时间段。在这对个子时间段中,预设基础拉链表中的各对象在各信息表中的信息都保持不变。
举例而言,当预设基础拉链表先后关联了信息表1、信息表2、信息表3时,在步骤S110中先获取与预设基础表关联的信息表为信息表1,然后执行后面的步骤S120-步骤S130,以根据信息表1将预设基础表中相关数据记录的开始时间和结束时间所对应的时间段划分为多个子时间段。
之后,根据信息表1划分的多个子时间段对预设基础拉链表进行第一次更新,即将预设基础拉链表中对应的数据记录的开始时间和结束时间更新为根据信息表1划分的多个子时间段所对应的开始时间和结束时间。
对预设基础拉链表进行第一次更新后,再在步骤S110中,获取信息表2,然后继续执行后续的步骤S120-步骤S130,此时,在步骤S120中,预设基础拉链表为第一次更新后的预设基础拉链表,即步骤S120中的预设基础拉链表的开始时间和结束时间为第一次更新后的预设基础拉链表的开始时间和结束时间,在此基础上确定第一数据记录和第二数据记录。在步骤S130中,根据确定的第一数据记录和第二数据记录,将第一次更新后的预设基础拉链表对应的数据记录的时间段划分为多个子时间段。
之后,根据信息表2划分的多个子时间段对第一次更新后的预设基础拉链表进行第二次更新,即将第一次更新后的预设基础拉链表中对应的数据记录的开始时间和结束时间再次更新为根据信息表2划分的多个子时间段所对应的开始时间和结束时间。
对预设基础拉链表进行第二次更新后,再在步骤S110中,获取信息表3,然后继续执行后续的步骤S120-步骤S130,此时,在步骤S120中,预设基础拉链表为第二次更新后的预设基础拉链表,即步骤S120中的预设基础拉链表的开始时间和结束时间为第二次更新后的预设基础拉链表的开始时间和结束时间,在此基础上确定第一数据记录和第二数据记录。在步骤S130中,根据确定的第一数据记录和第二数据记录,将第二次更新后的预设基础拉链表对应的数据记录的时间段划分为多个子时间段。
之后,根据信息表3划分的多个子时间段对第二次更新后的预设基础拉链表进行第三次更新,即将第二次更新后的预设基础拉链表中对应的数据记录的开始时间和结束时间再次更新为根据信息表3划分的多个子时间段所对应的开始时间和结束时间。
同时,根据信息表3划分的多个子时间段,可以得到目标拉链表,以对初始的预设基础拉链表中进行更新。
示例性的,图4示出本公开一示例性实施例中对预设基础拉链表进行更新的方法的流程示意图。参考图4,该方法可以包括步骤S410-步骤S430。其中:
在步骤S410中,将预设基础表中的各数据记录的对象标识和各数据记录对应的多个子时间段配置为主键,生成信息关联表。
举例而言,可以将上述的数据表中的字段OBJID、NEWBEGDA、NEWENDDA配置为新的主键,以生成信息关联表。
在步骤S420中,基于关联字段标识相同的数据记录,若信息关联表中任意子时间段包含在任意信息表所对应的时间段内,则将信息表和信息关联表进行关联。
经过上述的子时间段划分过程,信息关联表中的各数据记录的开始时间和结束时间所对应的闭区间“[NEWBEGDA,NEWENDDA]”所确定的时间段均严格包含在每个信息表所对应的时间段中。所以,基于关联字段标识相同的数据记录,如果信息关联表中的任意子时间段包含在任意信息表所对应的时间段内,则表明预设基础拉链表的该对象的该信息在该时间段内保持不变,则将信息表和信息关联表进行关联。
接下来,在步骤S430中,根据关联结果从信息表中提取信息数据,以对预设基础拉链表进行更新。
示例性的,将信息表和信息关联表进行关联后,可以根据关联信息从信息表中提取信息数据,如前所述,通过上述步骤S420的关联方式,可以保证预设基础拉链表的各对象的各信息数据在子时间段内保持不变,进而可以实现对预设基础拉链表的更新。
通过上述的步骤S110-步骤S140,可以实现对拉链表的更新。同时,如前所述,在上述的处理过程中,基于矩阵运算,可以降低运算量,快速的确定出各子时间段,避免了传统拉链表更新过程中的闭链、开链的复杂计算,进而可以提高拉链表的更新速度。
进一步的,图5示出本公开一示例性实施例中拉链表全量更新方法的流程示意图。参考图5,该方法可以包括步骤S510-步骤S560。
在步骤S510中,获取源数据库中的全量数据到数据仓库。
在示例性的实施方式中,可以在数据接口层,采用T+1的模式,通过ETL(Extract-Transform-Load,数据抽取-转换-加载)调度工具,例如Infamatica,定时从源数据库中抽取全量数据到数据仓库,例如每天凌晨1点从源数据库中抽取全量数据到数据仓库。其中,全量数据可以包括源数据库中从开始到抽取时刻的所有数据。
接下来,在步骤S520中,根据预设规则对获取的全量数据进行预处理。示例性的,预处理可以包括:对数据进行标准化,比如表和字段重命名,以方便后续的统一处理;利用预设数据,例如默认值对数据记录的空值进行填充,比如数据表中性别为空的都补0;对超出预设数据范围的数据进行再处理,例如,年龄小于0,大于150的数据进行剔除,或者利用默认值对其进行强制替换等。
预处理还可以包括对每个基础拉链表的拉链进行强约束,保证拉链表的时间段不重叠。此外,对于需要数据记录不断档的基础拉链表,还可以对其进行强约束,保证数据记录的时间段连续。
需要说明的是,可以根据自身需求,对数据进行不同的预处理,以保证数据质量,确保后续更新结果的准确性。
在步骤S530中,根据业务目标,进行指标加工,以使各指标的值在各数据记录对应的时间段内保持不变。
举例而言,可以根据最终的报表的需要,进行业务指标的业务逻辑加工,关联必要的码值表。在指标加工后,每个指标的值在某个数据记录对应的时间段内保持不变。其中,关联必要的码值可以是,例如,原始数据是1、2、3、4,但在码值表中,1代表优秀,2代表良好,3代表中等,4代表合格,类似这样的数据记录,可以根据业务需求,是否需要关联必要的码值表,以在最终的更新结果中可以获取到原始数据的实际描述。
根据最终的业务需求,对于原表中没有的字段,可以进行自定义添加,原表中有的字段可以直接获取,以生成自定义的业务指标逻辑。
在步骤S540中,对预设基础拉链表中的各对象的时间段进行扩充,以确定预设基础拉链表中各数据记录的多个子时间段。其中,步骤S540与上述的步骤S110-步骤S140的具体实施方式完全相同,此处不再赘述。
在步骤S550中,在缓冲层进行扩充校验。
举例而言,可以根据上述的步骤S540中的信息关联表的关联信息,从信息表中提取信息数据加载到缓冲层。然后,在缓冲层对信息数据进行校验。具体的,校验可以包括,校验各信息数据的时间戳是不是最近一次进行更新时的时间戳。当然,也可以在缓冲层中进行其他的相关校验,以保证更新数据的正确性。
通过添加缓冲层,可以确保即便因为从源数据库获取的数据质量较差导致更新失败也不影响后端应用,从而提升系统的鲁棒性、容错度。
在步骤S560中,校验通过后,根据关联结果从信息表中提取信息数据,生成更新后的预设基础拉链表,以实现对预设基础拉链表的全量更新。
举例而言,当在缓冲层的各种校验通过后,可以根据上述的步骤S540中的信息关联表的关联信息,从信息表中提取信息数据,将更新后的预设基础拉链表存储到数据仓库中,以实现对预设基础拉链表的全量更新。
本领域技术人员可以理解实现上述实施方式的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本发明提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
此外,需要注意的是,上述附图仅是根据本发明示例性实施方式的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
进一步的,图6示出本公开示例性实施例中拉链表的处理装置的结构示意图。参考图6,装置600可以包括信息表获取模块610、目标数据记录确定模块620、子时间段划分模块630、目标拉链表确定模块640。其中:
上述信息表获取模块610,被配置为获取与预设基础拉链表关联的信息表;
上述目标数据记录确定模块620,被配置为基于关联字段标识相同的数据记录,将所述信息表中开始时间大于所述预设基础拉链表的开始时间且小于或等于所述预设基础拉链表中的结束时间的数据记录确定为第一数据记录,将所述信息表中结束时间大于或等于所述预设拉链基础表中的开始时间且小于所述预设基础拉链表的结束时间的数据记录确定为第二数据记录;
上述子时间段划分模块630,被配置为根据各所述第一数据记录和各所述第二数据记录,将预设基础拉链表中对应的数据记录的时间段划分为多个子时间段,以使预设基础拉链表中各对象的信息在各子时间段中保持不变;
上述目标拉链表确定模块640,被配置为根据多个所述子时间段,得到目标拉链表。
在本公开的一种示例性实施例中,基于前述实施例,上述的拉链表处理装置600还包括更新模块,所述更新模块被配置为:在得到目标拉链表之前,根据多个子时间段,更新预设基础拉链表。
在本公开的一种示例性实施例中,基于前述实施例,上述的信息表获取模块610还被具体配置为:更新所述预设基础拉链表后,根据预先关联顺序依次获取与预设基础拉链表关联的另一信息表。
在本公开的一种示例性实施例中,基于前述实施例,上述的子时间段划分模块630包括第一子时间段确定单元,该单元被配置为:
获取目标数据记录所对应的时间段,其中,所述目标数据记录包括各所述第一数据记录和各所述第二数据记录;
根据所述目标数据记录所对应的时间段,确定预设基础拉链表中对应的各数据记录的第一子时间段的集合。
在本公开的一种示例性实施例中,基于前述实施例,上述的子时间段划分模块630还包括第二子时间段确定单元,该单元被配置为;
根据预设基础拉链表中的对象标识、开始时间和结束时间,对各所述目标数据记录进行分组;根据各分组中的子目标数据记录的开始时间对各子目标数据记录进行排序,得到各分组的各子目标数据记录的第一排序值;将排序后的各子目标数据记录的结束时间增加一个所述时间单位,以确定第一时间表;根据各分组中的子目标数据记录的开始时间对各子目标数据记录进行排序,得到各分组的各子目标数据记录的第二排序值;将排序后的各子目标数据记录的开始时间减少一个所述时间单位,以确定第二时间表;根据预设关联条件,将第一时间表和第二时间表进行错位全外关联,以根据所述关联结果确定预设基础拉链表中对应的各数据记录的第二子时间段的集合;
其中,预设关联条件为所述第一时间表和所述第二时间表的关联字段标识、开始时间和结束时间相同,且第一排序值小于第二排序值,所述第一排序值和所述第二排序值的差值为1。
在本公开的一种示例性实施例中,基于前述实施例,上述的子时间段划分模块630还包括合并单元,该单元被配置为:
合并所述第一子时间段的集合和所述第二子时间段的集合;
根据合并后的结果,将所述预设基础拉链表中对应的数据记录的时间段划分为多个子时间段。
在本公开的一种示例性实施例中,基于前述实施例,上述的子时间划分模块630还包括替换单元和过滤单元,其中,所述替换单元被配置为:若子时间段的开始时间小于预设基础拉链表中其对应的数据记录的开始时间或为空值,则利用所述预设基础拉链表中其对应的数据记录的开始时间替换所述子时间段的开始时间;若子时间段的结束时间大于其对应的预设基础拉链表中的数据记录的结束时间或为空值,则利用所述预设基础拉链表中其对应的数据记录的结束时间替换所述子时间段的结束时间;所述过滤单元被配置为:若子时间段的开始时间为拉链表中时间的最大值或子时间段的开始时间大于其结束时间,则过滤掉子时间段。
在本公开的一种示例性实施例中,基于前述实施例,上述的目标拉链表确定单元还被具体配置为:
将预设基础表中的各数据记录的对象标识和各数据记录对应的所述多个子时间段配置为主键,生成信息关联表;
基于关联字段标识相同的数据记录,若所述信息关联表中任意子时间段包含在任意信息表所对应的时间段内,则将信息表和信息关联表进行关联;根据关联结果从信息表中提取信息数据,以对预设基础拉链表进行更新。
上述拉链表的处理装置中各单元的具体细节已经在对应的拉链表的处理方法中进行了详细的描述,因此此处不再赘述。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
在本公开示例性实施方式中,还提供了一种能够实现上述方法的计算机存储介质。其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施例中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
参考图7所示,描述了根据本公开的实施方式的用于实现上述方法的程序产品700,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图8来描述根据本公开的这种实施方式的电子设备800。图8显示的电子设备800仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图8所示,电子设备800以通用计算设备的形式表现。电子设备800的组件可以包括但不限于:上述至少一个处理单元810、上述至少一个存储单元820、连接不同系统组件(包括存储单元820和处理单元810)的总线830以及显示单元840。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元810执行,使得所述处理单元810执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,所述处理单元810可以执行如图1中所示的:步骤S110,获取与预设基础拉链表关联的信息表;步骤S120,基于关联字段标识相同的数据记录,将信息表中开始时间大于预设基础拉链表的开始时间且小于或等于预设基础拉链表中的结束时间的数据记录确定为第一数据记录,将信息表中结束时间大于或等于预设基础拉链表中的开始时间且小于预设基础拉链表的结束时间的数据记录确定为第二数据记录;步骤S130,根据各第一数据记录和各所述第二数据记录,将预设基础拉链表中对应的数据记录的时间段划分为多个子时间段,以使预设基础拉链表中各对象的信息在各子时间段中保持不变;步骤S140,根据多个子时间段,得到目标拉链表。
存储单元820可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)8201和/或高速缓存存储单元8202,还可以进一步包括只读存储单元(ROM)8203。
存储单元820还可以包括具有一组(至少一个)程序模块8205的程序/实用工具8204,这样的程序模块8205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备800也可以与一个或多个外部设备900(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备800交互的设备通信,和/或与使得该电子设备800能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口850进行。并且,电子设备800还可以通过网络适配器860与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器860通过总线830与电子设备800的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
Claims (10)
1.一种拉链表的处理方法,其特征在于,包括:
获取与预设基础拉链表关联的信息表;
基于关联字段标识相同的数据记录,将所述信息表中开始时间大于所述预设基础拉链表的开始时间且小于或等于所述预设基础拉链表中的结束时间的数据记录确定为第一数据记录,将所述信息表中结束时间大于或等于所述预设基础拉链表中的开始时间且小于所述预设基础拉链表的结束时间的数据记录确定为第二数据记录;
根据各所述第一数据记录和各所述第二数据记录,将所述预设基础拉链表中对应的数据记录的时间段划分为多个子时间段,以使所述预设基础拉链表中各对象的信息在各子时间段中保持不变;
根据多个所述子时间段,得到目标拉链表。
2.根据权利要求1所述的拉链表的处理方法,其特征在于,在根据多个所述子时间段,得到目标拉链表之前,所述方法还包括:
根据多个所述子时间段,更新所述预设基础拉链表;
其中,所述根据所述多个子时间段,更新所述预设基础拉链表包括:
将所述预设基础拉链表中对应的数据记录的开始时间和结束时间更新为各所述子时间段对应的开始时间和结束时间。
3.根据权利要求2所述的拉链表的处理方法,其特征在于,所述预设基础拉链表预先关联有至少一个信息表,所述预设基础拉链表左关联于所述信息表;
更新所述预设基础拉链表后,所述获取与预设基础拉链表关联的信息表包括:
根据预先关联顺序依次获取与预设基础拉链表关联的另一信息表。
4.根据权利要求1至3中任一项所述的拉链表的处理方法,其特征在于,所述根据各所述第一数据记录和各所述第二数据记录将预设基础拉链表中对应的数据记录的时间段划分为多个子时间段,包括:
获取目标数据记录所对应的时间段,其中,所述目标数据记录包括各所述第一数据记录和各所述第二数据记录;
根据所述目标数据记录所对应的时间段,确定预设基础拉链表中对应的各数据记录的第一子时间段的集合。
5.根据权利要求4所述的拉链表的处理方法,其特征在于,所述开始时间和所述结束时间以日为时间单位;
所述根据各所述第一数据记录和各所述第二数据记录将预设基础拉链表中对应的数据记录的时间段划分为多个子时间段,还包括:
根据预设基础拉链表中的对象标识、开始时间和结束时间,对各所述目标数据记录进行分组;
根据各分组中的子目标数据记录的开始时间对各子目标数据记录进行排序,得到各分组的各子目标数据记录的第一排序值;
将排序后的各子目标数据记录的结束时间增加一个所述时间单位,以确定第一时间表;
根据各分组中的子目标数据记录的开始时间对各子目标数据记录进行排序,得到各分组的各子目标数据记录的第二排序值;
将排序后的各子目标数据记录的开始时间减少一个所述时间单位,以确定第二时间表;
根据预设关联条件,将所述第一时间表和所述第二时间表进行错位全外关联,以根据所述关联结果确定预设基础拉链表中对应的各数据记录的第二子时间段的集合;
其中,所述预设关联条件为所述第一时间表和所述第二时间表的关联字段标识、开始时间和结束时间相同,且所述述第一排序值小于所述第二排序值,所述第一排序值和所述第二排序值的差值为1。
6.根据权利要求5所述的拉链表的处理方法,其特征在于,所述根据各所述第一数据记录和各所述第二数据记录将预设基础拉链表中对应的数据记录的时间段划分为多个子时间段,包括:
合并所述第一子时间段的集合和所述第二子时间段的集合;
根据合并后的结果,将所述预设基础拉链表中对应的数据记录的时间段划分为多个子时间段;
其中,所述合并所述第一子时间段的集合和所述第二子时间段的集合包括:
若子时间段的开始时间小于预设基础拉链表中其对应的数据记录的开始时间或为空值,则利用所述预设基础拉链表中其对应的数据记录的开始时间替换所述子时间段的开始时间;
若子时间段的结束时间大于其对应的预设基础拉链表中的数据记录的结束时间或为空值,则利用所述预设基础拉链表中其对应的数据记录的结束时间替换所述子时间段的结束时间;
若子时间段的开始时间为拉链表的时间的最大值或子时间段的开始时间大于其结束时间,则过滤掉所述子时间段。
7.根据权利要求1所述的拉链表的处理方法,其特征在于,所述根据多个所述子时间段,得到目标拉链表,包括:
将所述预设基础表中的各数据记录的对象标识和各数据记录对应的所述多个子时间段配置为主键,生成信息关联表;
基于关联字段标识相同的数据记录,若所述信息关联表中任意子时间段包含在任意信息表所对应的时间段内,则将所述信息表和所述信息关联表进行关联;
根据关联结果从所述信息表中提取信息数据,以对所述预设基础拉链表进行更新。
8.一种拉链表处理装置,其特征在于,包括:
信息表获取模块,被配置为获取与预设基础拉链表关联的信息表;
目标数据记录确定模块,被配置为基于关联字段标识相同的数据记录,将所述信息表中开始时间大于所述预设基础拉链表的开始时间且小于或等于所述预设基础拉链表中的结束时间的数据记录确定为第一数据记录,将所述信息表中结束时间大于或等于所述预设拉链基础表中的开始时间且小于所述预设基础拉链表的结束时间的数据记录确定为第二数据记录;
子时间段划分模块,被配置为根据各所述第一数据记录和各所述第二数据记录,将所述预设基础拉链表中对应的数据记录的时间段划分为多个子时间段,以使所述预设基础拉链表中各对象的信息在各子时间段中保持不变;
目标拉链表确定模块,被配置为根据多个所述子时间段,得到目标拉链表。
9.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至7中任一项所述的拉链表的处理方法。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至7中任一项所述的拉链表的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011437545.0A CN112559641B (zh) | 2020-12-07 | 2020-12-07 | 拉链表的处理方法及装置、可读存储介质、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011437545.0A CN112559641B (zh) | 2020-12-07 | 2020-12-07 | 拉链表的处理方法及装置、可读存储介质、电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112559641A true CN112559641A (zh) | 2021-03-26 |
CN112559641B CN112559641B (zh) | 2024-02-06 |
Family
ID=75060531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011437545.0A Active CN112559641B (zh) | 2020-12-07 | 2020-12-07 | 拉链表的处理方法及装置、可读存储介质、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112559641B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117251448A (zh) * | 2023-09-18 | 2023-12-19 | 北京数方科技有限公司 | 一种宽表拉链表数据处理方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060184563A1 (en) * | 2005-02-14 | 2006-08-17 | Potter David H | Method and apparatus for temporal database |
CN103678392A (zh) * | 2012-09-20 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种数据增量合并的方法及其装置 |
CN107526733A (zh) * | 2016-06-20 | 2017-12-29 | 咪咕互动娱乐有限公司 | 一种拉链表数据存储方法和装置 |
CN109299093A (zh) * | 2018-09-17 | 2019-02-01 | 平安科技(深圳)有限公司 | Hive数据库中拉链表的更新方法、装置和计算机设备 |
CN110196758A (zh) * | 2018-05-10 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置、存储介质及电子装置 |
CN110442578A (zh) * | 2019-07-30 | 2019-11-12 | 新华三大数据技术有限公司 | 拉链表更新方法、装置、服务器及计算机可读存储介质 |
CN111459946A (zh) * | 2020-04-08 | 2020-07-28 | 深圳市今天国际物流技术股份有限公司 | 一种数据表快速汇总方法、装置、计算机设备及存储介质 |
-
2020
- 2020-12-07 CN CN202011437545.0A patent/CN112559641B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060184563A1 (en) * | 2005-02-14 | 2006-08-17 | Potter David H | Method and apparatus for temporal database |
CN103678392A (zh) * | 2012-09-20 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种数据增量合并的方法及其装置 |
CN107526733A (zh) * | 2016-06-20 | 2017-12-29 | 咪咕互动娱乐有限公司 | 一种拉链表数据存储方法和装置 |
CN110196758A (zh) * | 2018-05-10 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置、存储介质及电子装置 |
CN109299093A (zh) * | 2018-09-17 | 2019-02-01 | 平安科技(深圳)有限公司 | Hive数据库中拉链表的更新方法、装置和计算机设备 |
CN110442578A (zh) * | 2019-07-30 | 2019-11-12 | 新华三大数据技术有限公司 | 拉链表更新方法、装置、服务器及计算机可读存储介质 |
CN111459946A (zh) * | 2020-04-08 | 2020-07-28 | 深圳市今天国际物流技术股份有限公司 | 一种数据表快速汇总方法、装置、计算机设备及存储介质 |
Non-Patent Citations (4)
Title |
---|
HZP666: "拉链表", pages 1 - 2, Retrieved from the Internet <URL:https://blog.csdn.net/hzp666/article/details/108129970> * |
WENDY123456: "根据开始时间、结束时间查询数据", pages 1, Retrieved from the Internet <URL:https://help.fanruan.com/finereport/edition-view-33337-19.html> * |
WZY0623: "重叠时间段问题优化算法详解", pages 7 - 8, Retrieved from the Internet <URL:https://blog.csdn.net/wzy0623/article/details/99682965> * |
爪哇日记: "SQL两个时间段交集查询", pages 1, Retrieved from the Internet <URL:https://blog.csdn.net/zfs_zs/article/details/100519457> * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117251448A (zh) * | 2023-09-18 | 2023-12-19 | 北京数方科技有限公司 | 一种宽表拉链表数据处理方法及装置 |
CN117251448B (zh) * | 2023-09-18 | 2024-04-30 | 北京数方科技有限公司 | 一种宽表拉链表数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112559641B (zh) | 2024-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230065572A1 (en) | System and method for performing automated api tests | |
CN101135989B (zh) | 一种Web应用系统的自动化测试的方法和装置 | |
US11651272B2 (en) | Machine-learning-facilitated conversion of database systems | |
US8190578B2 (en) | Migration of versioned data between configuration management systems | |
US20080010535A1 (en) | Automated and configurable system for tests to be picked up and executed | |
CN113326247B (zh) | 云端数据的迁移方法、装置及电子设备 | |
CN103514223A (zh) | 一种数据仓库数据同步方法和系统 | |
CN110781231A (zh) | 基于数据库的批量导入方法、装置、设备及存储介质 | |
US11954123B2 (en) | Data processing method and device for data integration, computing device and medium | |
US20240037084A1 (en) | Method and apparatus for storing data | |
US8335759B2 (en) | Work analysis device and recording medium recording work analysis program | |
CN112559641A (zh) | 拉链表的处理方法及装置、可读存储介质及电子设备 | |
US8392892B2 (en) | Method and apparatus for analyzing application | |
CN115345600B (zh) | 一种rpa流程的生成方法和装置 | |
CN112181951B (zh) | 一种异构数据库数据迁移方法、装置及设备 | |
CN113934595A (zh) | 数据分析方法及系统、存储介质及电子终端 | |
US9471569B1 (en) | Integrating information sources to create context-specific documents | |
CN112051987B (zh) | 业务数据处理方法、装置及设备、程序生成方法及装置 | |
CN112347095B (zh) | 数据表的处理方法、装置和服务器 | |
US11816112B1 (en) | Systems and methods for automated process discovery | |
CN111897886A (zh) | 模型管理方法、装置、电子设备和存储介质 | |
CN116361386A (zh) | 基于数仓的数据存储方法、装置、计算机设备及存储介质 | |
CN112925697A (zh) | 作业差异监控方法、装置、设备及介质 | |
CN115729809A (zh) | 基于低代码开发平台的高效自动化测试方法 | |
CN117608536A (zh) | 缺口数据在线模版定制补录系统及其方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |