CN108388610B - 数据etl处理方法及装置 - Google Patents
数据etl处理方法及装置 Download PDFInfo
- Publication number
- CN108388610B CN108388610B CN201810122336.3A CN201810122336A CN108388610B CN 108388610 B CN108388610 B CN 108388610B CN 201810122336 A CN201810122336 A CN 201810122336A CN 108388610 B CN108388610 B CN 108388610B
- Authority
- CN
- China
- Prior art keywords
- data
- source
- target
- target table
- etl processing
- 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.)
- Active
Links
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/22—Indexing; Data structures therefor; Storage structures
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种数据ETL处理方法及装置。该方法包括:获取以目标表的主关键字作为外关键字的源表;判断所述源表中所述外关键字包括的数据是否都存在于所述目标表中;若所述源表中所述外关键字包括的至少一数据不存在于所述目标表中,则将所述外关键字不存在于所述目标表的数据存储至丢失记录表中,其中,所述丢失记录表与所述目标表的结构一致,由此能够通过丢失记录表中存储的数据确定哪些数据丢失或不准确,实现数据丢失率或不准确率等业务分析。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及一种数据ETL处理方法及装置。
背景技术
目前,在信息化建设的过程中,数据库建设可以有效解决信息孤岛带来的数据分离、业务分散、信息无法互通等问题。图1示出相关技术中数据库建设的示意图。如图1所示,数据库建设可以指将分离的各个业务系统的数据资源集成在一起,建设具有数据采集、加工、存储、分拨和共享等功能的系统。数据库建设能够实现数据系统化的管理,在信息化建设的过程中具有重要的意义。
ETL(Extract-Transform-Load,抽取-转换-加载)为数据库建设的核心环节。ETL可以指数据从源数据库的源表中,经过抽取、转换、加载到目标数据库的目标表中的过程。相关技术中,通常采用比较记录条数或比较关键字内容判断数据ETL处理过程准确与否。比较记录条数或比较关键字内容的准确度较低且适用范围较小,并且无法确定ETL处理不准确或处理有误的数据,造成目标数据库中的数据质量较差。
发明内容
有鉴于此,本公开提出了一种数据ETL处理方法及装置,以解决相关技术中数据ETL处理不准确或处理有误造成目标数据库中的数据质量较差的问题。
根据本公开的一方面,提供了一种数据ETL处理方法,包括:
获取以目标表的主关键字作为外关键字的源表;
判断所述源表中所述外关键字包括的数据是否都存在于所述目标表中;
若所述源表中所述外关键字包括的至少一数据不存在于所述目标表中,则将所述外关键字不存在于所述目标表的数据存储至丢失记录表中,其中,所述丢失记录表与所述目标表的结构一致。
在一种实现方式中,所述方法还包括:
若所述源表中所述外关键字包括的数据全部都存在于所述目标表中,则确定为数据ETL处理过程准确;或
若所述源表中所述外关键字包括的至少一数据不存在于所述目标表中,则确定为数据ETL处理过程不准确。
在一种实现方式中,获取以目标表的主关键字作为外关键字的源表,包括:
将所述目标表的主关键字与源数据库的全部源表进行比较;
从所述源数据库的全部源表中,获取以所述目标表的主关键字作为外关键字的源表。
在一种实现方式中,在将所述源表中所述外关键字不存在于所述目标表的数据存储至丢失记录表中后,所述方法还包括:
对所述丢失记录表中的数据进行ETL处理;
针对ETL处理后得到的每个结果,将所述结果与所述目标表进行比较,若所述结果不存在于所述目标表中,则将所述结果对应的记录存储至所述目标表中,并删除或标记所述丢失记录表中所述结果对应的记录。
在一种实现方式中,对所述丢失记录表中的数据进行ETL处理,包括:
通过形成所述目标表采用的ETL处理策略,对所述丢失记录表中的数据进行ETL处理。
在一种实现方式中,在将所述源表中所述外关键字不存在于所述目标表的全部数据存储至丢失记录表中后,所述方法还包括:
确定所述目标表中数据的总条数以及所述丢失记录表中数据的总条数;
根据所述目标表中数据的总条数以及所述丢失记录表中数据的总条数,计算数据ETL处理的丢失率。
根据本公开的另一方面,提供了一种数据ETL处理装置,包括:
获取模块,用于获取以目标表的主关键字作为外关键字的源表;
判断模块,用于判断所述源表中所述外关键字包括的数据是否都存在于所述目标表中;
记录模块,用于若所述源表中所述外关键字包括的至少一数据不存在于所述目标表中,则将所述外关键字不存在于所述目标表的数据存储至丢失记录表中,其中,所述丢失记录表与所述目标表的结构一致。
在一种实现方式中,所述装置还包括:
第一确定模块,用于若所述源表中所述外关键字包括的数据全部都存在于所述目标表中,则确定为数据ETL处理过程准确;或若所述源表中所述外关键字包括的至少一数据不存在于所述目标表中,则确定为数据ETL处理过程不准确。
在一种实现方式中,所述获取模块还用于:
将所述目标表的主关键字与源数据库的全部源表进行比较;
从所述源数据库的全部源表中,获取以所述目标表的主关键字作为外关键字的源表。
在一种实现方式中,所述装置还包括:
第一处理模块,用于对所述丢失记录表中的数据进行ETL处理;
第二处理模块,用于针对ETL处理后得到的每个结果,将所述结果与所述目标表进行比较,若所述结果不存在于所述目标表中,则将所述结果对应的记录存储至所述目标表中,并删除或标记所述丢失记录表中所述结果对应的记录。
在一种实现方式中,所述第一处理模块用于:
通过形成所述目标表采用的ETL处理策略,对所述丢失记录表中的数据进行ETL处理。
在一种实现方式中,所述装置还包括:
第二确定模块,用于确定所述目标表中数据的总条数以及所述丢失记录表中数据的总条数;
计算模块,用于根据所述目标表中数据的总条数以及所述丢失记录表中数据的总条数,计算数据ETL处理的丢失率。
本公开的数据ETL处理方法及装置,通过获取以目标表的主关键字作为外关键字的源表,判断源表中外关键字包括的数据是否都存在于目标表中,若源表中外关键字包括的至少一数据不存在于目标表中,则将外关键字不存在于目标表的数据存储至丢失记录表中,其中,丢失记录表与目标表的结构一致,由此能够记录ETL处理不准确或处理有误的数据,既能够实现数据丢失率或不准确率等业务分析,也能够实现查找ETL处理丢失的数据。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出相关技术中数据库建设的示意图。
图2示出相关技术中ETL的示意图。
图3示出相关技术中数据ETL处理方法的示意图。
图4示出根据本公开一实施例的数据ETL处理方法的流程图。
图5示出根据本公开一实施例的数据ETL处理方法的流程图。
图6示出根据本公开一实施例的数据ETL处理方法的流程图。
图7示出根据本公开一实施例的数据ETL处理方法的示意图。
图8示出根据本公开一实施例的数据ETL处理装置的框图。
图9示出根据本公开一实施例的数据ETL处理装置的框图。
图10是根据一示例性实施例示出的一种数据ETL处理装置900的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
相关技术中,ETL(Extract-Transform-Load,抽取-转换-加载)为数据库建设的核心环节。ETL可以指数据从源数据库的源表中,经过抽取、转换、加载到目标数据库的目标表中的过程。其中,源数据库包括各个业务系统的数据库,例如MySQL、Oracle、PostgreSQL、Hive、Hadoop、Excel、文本文件等各种类型的数据库,本公开对此不做限制。
ETL处理的目的是将业务系统中分散、零乱、标准不统一的数据整合到一起,为业务系统的决策提供分析依据。ETL处理包括以下阶段:数据的抽取、数据的清洗转换和数据的加载。在ETL处理的各个阶段中,花费时间最长为数据的清洗转换阶段。数据的清洗转换阶段包括数据清洗和数据转换。
其中,数据清洗的任务是过滤不符合要求数据。在数据清洗过程中,将过滤后的结果交给业务主管部门,由业务主管部门确认是否过滤掉或由业务主管部门修正后再进行抽取。不符合要求数据包括不完整数据、错误数据、重复数据等。数据转换的任务主要进行不一致数据的转换、数据粒度的转换,以及一些商务规则的计算。
图2示出相关技术中ETL的示意图。如图2所示,通过ETL进行数据采集和逻辑处理的过程包括:首先从存储在异构的源数据库的源表中将数据采集抽取出来,然后经过清洗、加工、转换等处理过程,最终将处理后的数据存储到目标数据库的目标表中。其中,业务系统数据源、文本文件和其他类型数据可以构成源数据库。
在数据进行ETL处理的过程中,可能会出现数据处理不准确,甚至会出现数据丢失等问题,将会造成目标数据库中的数据质量较差,从而影响到基于目标数据库的业务系统的业务逻辑,造成严重后果。
相关技术中,通常采用比较记录条数或比较关键字内容判断数据ETL处理过程准确与否。其中,比较记录条数是指每次做完全量或增量数据的ETL处理时,则比较源数据库的源表中与目标数据库的目标表中记录条数是否一致,若不一致,则需要重新对源表中的全部数据进行ETL处理,否则不处理。比较关键字内容是指每次做完全量或增量数据的ETL处理时,则将源数据库的源表中的每条数据找到目标数据库的目标表中对应数据,比较关键字是否一致,若不一致,则需要重新对源表中的全部数据进行ETL处理,否则不处理。
图3示出相关技术中数据ETL处理方法的示意图。如图3所示:
如图3所示,采用比较记录条数的流程如下:比较-重新ETL-存入。具体地,每次做完全量或增量数据的ETL处理时,计算源数据库中Table A1表的记录条数Count1,以及计算目标数据库中Table A2表的记录条数Count2。将Count1和Count2进行比较,若Count1和Count2相等,则认为数据ETL处理过程准确。否则,将Table A2表的数据清空,对Table A1表的数据重新进行ETL处理,包括对Table A1表的数据进行抽取、转换、加载等处理,并将ETL处理后的数据存储到目标数据库中Table A2表。
其中,全量数据可以指源数据库中全部的数据,增量数据可以指某一时间段内源数据库中增加的数据。
由此可以看出,比较记录条数无法确定ETL处理不准确或处理有误的数据,造成目标数据库中的数据质量较差。当确定数据ETL处理过程不准确时,需要对源表中的全部数据重新进行ETL处理,操作繁琐且浪费数据ETL处理资源。
需要说明的是,比较记录条数主要适用于单源数据库中单表到目标数据库中单表。对于单源数据库中多表到目标数据库中单表,或多源数据库中多表到目标数据库中单表,若源表中的数据存在重复的情况,则ETL处理后的数据将为去除重复后的数据,由此比较记录条数不适用。
如图3所示,采用比关键字内容的流程如下:比较-重新ETL-存入。具体地,每次做完全量或增量数据的ETL处理时,将源数据库中Table A1表的每条数据找到目标数据库中Table A2表的对应数据。将Table A1表的每条数据的关键字与Table A2表的对应数据的关键字进行比较,若Table A1表的每条数据的关键字与Table A2表的对应数据的关键字均相同,则认为数据ETL处理过程准确。否则,将Table A2表的数据清空,对Table A1表的数据重新进行ETL处理,包括对Table A1表的数据进行抽取、转换、加载等处理,并将ETL处理后的数据存储到目标数据库中Table A2表。
其中,全量数据可以指源数据库中全部的数据,增量数据可以指某一时间段内源数据库中增加的数据。
由此可以看出,比较关键字内容的操作繁琐且效率较低。此外,比较关键字内容无法确定ETL处理不准确或处理有误的数据,造成目标数据库中的数据质量较差。当确定数据ETL处理过程不准确时,需要对源表中的全部数据重新进行ETL处理,操作繁琐且浪费数据ETL处理资源。
针对上述相关技术中所存在的技术问题,图4示出根据本公开一实施例的数据ETL处理方法的流程图。如图4所示,该方法包括步骤S41至步骤S43。
在步骤S41中,获取以目标表的主关键字作为外关键字的源表。
在一种实现方式中,获取以目标表的主关键字作为外关键字的源表,包括:将目标表的主关键字与源数据库的全部源表进行比较;从源数据库的全部源表中,获取以目标表的主关键字作为外关键字的源表。
在步骤S42中,判断源表中外关键字包括的数据是否都存在于目标表中。
在步骤S43中,若源表中外关键字包括的至少一数据不存在于目标表中,则将外关键字不存在于目标表的数据存储至丢失记录表中,其中,丢失记录表与目标表的结构一致。
本公开的数据ETL处理方法,建立与目标表结构一致的丢失记录表,并通过建立的丢失记录表记录在ETL处理过程中丢失或处理不准确的数据,由此方便查找到在ETL处理过程中丢失或处理不准确的数据。当确定数据ETL处理过程不准确时,能够通过丢失记录表中存储的数据确定哪些数据丢失或不准确,实现数据丢失率或不准确率等业务分析。
在一种实现方式中,确定目标表的主关键字和ETL处理策略。根据所确定的目标表的主关键字和ETL处理策略,对源数据库的源表中的数据进行ETL处理。其中,ETL处理策略包括ETL处理至少可以是数据的抽取、数据的清洗转换和数据的加载,并将ETL处理后得到的数据存储至目标表,从而建立目标表。在建立目标表之后,根据目标数据表的结构建立丢失记录表。丢失记录表用于存储在建立目标表的ETL处理过程中丢失或处理不准确的数据。
可以理解的是,在数据进行ETL处理的过程中,目标表只有一个,源表可以有一个或多个。在存在多个源表的情况下,多个源表可以来自于同一数据库,多个源表也可以来自于不同数据库,本公开对此不做限制。目标数据库与源数据库为不同的数据库。
其中,主关键字(Primary Key,也称为主键)是表中的一个或多个字段,用于唯一标识表中的某一个记录。在两个表的关系中,主关键字可以用于在一个表中引用来自于另一个表中的特定记录。主关键字是一种唯一标识的关键字,属于表定义的一部分。一个表的主关键字可以为一个关键字,也可以由多个关键字共同组成,本公开对此不做限制。
例如,学生表(学号、姓名、性别、班级),学号能够唯一标识学生表中的一条记录,由此学号可以作为学生表的主关键字。课程表(课程编号、课程名、学分),课程编号能够唯一标识课程表中的一条记录,由此课程编号可以作为课程表的主关键字。成绩表(学号、课程编号、成绩),单一属性无法唯一标识成绩表中的一条记录,学号和课程编号的组合才能够唯一标识课程表中的一条记录,由此学号和课程编号的组合可以作为成绩表的主关键字。
其中,若关键字作为一个表的主关键字,而该关键字又存在另一个表中,则该关键字被称为另一个表的外关键字(Foreign Key,也称为外键)。一个表可以具有一个或多个外关键字。外关键字能够表示两个表之间的联系,由此外关键字可以用于和另一个表建立联系。以另一个表的外关键字作为主关键字的表被称为主表,具有该外关键字的表被称为主表的从表。
例如,学生表(学号、姓名、性别、班级),学号为学生表的主关键字。课程表(课程编号、课程名、学分),课程编号为课程表的主关键字。成绩表(学号、课程编号、成绩),学号和课程编号的组合为成绩表的主关键字。成绩表中的学号不是成绩表的主关键字,但其与学生表中的学号相对应,并且学生表中的学号是学生表的主关键字,则称成绩表中的学号为学生表的外关键字。同理,成绩表中的课程编号为课程表的外关键字。
在一种实现方式中,在将源表中外关键字不存在于目标表的全部数据存储至丢失记录表中后,该方法还包括:确定目标表中数据的总条数以及丢失记录表中数据的总条数;根据目标表中数据的总条数以及丢失记录表中数据的总条数,计算数据ETL处理的丢失率。
其中,丢失率=丢失条数÷数据总条数。在数据ETL处理过程准确的情况下,丢失条数即为零,数据总条数即为目标表中数据的总条数。在数据ETL处理过程不准确的情况下,若目标表对应的丢失记录表中数据不存在重复,则丢失条数即为目标表对应的丢失记录表中数据的总条数,数据总条数即为目标表中数据的总条数和目标表对应的丢失记录表中数据的总条数之和。
在实际的数据处理过程中,数据总量巨大,往往为百万、千万甚至过亿的海量数据,而丢失或错误的数据是少量。因而,在本公开的数据ETL处理方法,可以将目标表对应的丢失记录表中数据的总条数作为丢失条数,将目标表中数据的总条数,或目标表中数据的总条数和目标表对应的丢失记录表中数据的总条数之和作为数据总条数。
本公开的数据ETL处理方法,建立与目标表结构一致的丢失记录表,并通过建立的丢失记录表记录在ETL处理过程中丢失或处理不准确的数据,由此能够统计在ETL处理过程中丢失或处理不准确的数据的总条数,为计算数据ETL处理的丢失率提供支持。
图5示出根据本公开一实施例的数据ETL处理方法的流程图。如图5所示,该方法包括步骤S51至步骤S54。
在步骤S51中,获取以目标表的主关键字作为外关键字的源表。
在一种实现方式中,获取以目标表的主关键字作为外关键字的源表,包括:将目标表的主关键字与源数据库的全部源表进行比较;从源数据库的全部源表中,获取以目标表的主关键字作为外关键字的源表。
在步骤S52中,判断源表中外关键字包括的数据是否都存在于目标表中。
在步骤S53中,若源表中外关键字包括的至少一数据不存在于目标表中,则确定为数据ETL处理过程不准确。
作为一个示例,确定目标表的主关键字为ID0,并确定ETL处理策略。源数据库的全部源表包括Table 1表、Table 2表、Table 3表、Table 4表和Table 5表。根据主关键字ID0和ETL处理策略,对源数据库的源表中的数据进行ETL处理,并将ETL处理后得到的数据存储至目标表,从而建立目标表Table 0表。例如,从源数据库中Table 1表、Table 2表和Table3表采集数据,对采集的数据进行ETL处理,并将ETL处理后的数据存储到目标数据库中Table 0表。
本公开的数据ETL处理方法的流程如下:目标表Table 0表的主关键字为ID0,则从源数据库的全部源表中,获取以ID0为外关键字的源表,源表包括Table 1表、Table 2表和Table 3表。将源表Table 1表、Table 2表和Table 3表中ID0的包括数据逐个与目标表Table 0表进行比较。若源表Table 1表、Table 2表和Table 3表中ID0包括的至少一数据不存在于目标表Table 0表中,则确定为数据ETL处理过程不准确。
在步骤S54中,若源表中外关键字包括的数据全部都存在于目标表中,则确定为数据ETL处理过程准确。
本公开的数据ETL处理方法的流程如下:目标表Table 0表的主关键字为ID0,则从源数据库的全部源表中,获取以ID0为外关键字的源表,源表包括Table 1表、Table 2表和Table 3表。将源表Table 1表、Table 2表和Table 3表中ID0包括的数据逐个与目标表Table 0表进行比较。若源表Table 1表、Table 2表和Table 3表中ID0包括的全部数据都存在于目标表Table 0表中,则确定为数据ETL处理过程准确。
图6示出根据本公开一实施例的数据ETL处理方法的流程图。如图6所示,该方法包括步骤S61至步骤S64。
在步骤S61中,获取以目标表的主关键字作为外关键字的源表。
在一种实现方式中,获取以目标表的主关键字作为外关键字的源表,包括:将目标表的主关键字与源数据库的全部源表进行比较;从源数据库的全部源表中,获取以目标表的主关键字作为外关键字的源表。
在步骤S62中,判断源表中外关键字包括的数据是否都存在于目标表中。
在步骤S63中,若源表中外关键字包括的至少一数据不存在于目标表中,则将外关键字不存在于目标表的数据存储至丢失记录表中,其中,丢失记录表与目标表的结构一致。
在步骤S64中,对丢失记录表中的数据进行ETL处理;针对ETL处理后得到的每个结果,将结果与目标表进行比较,若结果不存在于目标表中,则将结果对应的记录存储至目标表中,并删除或标记丢失记录表中结果对应的记录。
其中,该记录至少包括ETL处理之前的数据、对该数据进行ETL处理之后的结果。由于目标表和丢失记录表的结构一致,因此可以直接将该记录存储到目标中。
其中,若丢失记录表中的某条记录被标记或被删除,则可以表示目标表中已经存在该条记录中ETL处理后得到的结果。
在一种实现方式中,对丢失记录表中的数据进行ETL处理,包括:通过形成目标表采用的ETL处理策略,对丢失记录表中的数据进行ETL处理。通过采用形成目标表时采用的ETL处理策略,能够使丢失记录表中的数据经ETL处理后的结果为形成目标表时应当得到的结果,由此提高了最终得到的目标表的准确性。
本公开的数据ETL处理方法,当确定数据ETL处理过程不准确时,不需要重新对源表中的全部数据进行ETL处理,而是通过形成目标表采用的ETL处理策略,对丢失记录表中的数据进行ETL处理,并针对ETL处理后得到的每个结果,若结果不存在于目标表中,则将结果对应的记录存储至目标表中,由此即能够得到数据ETL处理准确的目标表,既能够简化操作并节省数据ETL处理资源,又能够保证目标数据库中的数据质量,为基于目标数据库的业务系统的业务逻辑提供支持。
本公开的数据ETL处理方法,建立与目标表结构一致的丢失记录表,并通过建立的丢失记录表记录在ETL处理过程中丢失或处理不准确的数据,由此方便查找到在ETL处理过程中丢失或处理不准确的数据。当确定数据ETL处理过程不准确时,能够通过丢失记录表中存储的数据确定哪些数据丢失或不准确,并进一步地针对丢失记录表中的数据进行ETL处理,而不需要对源表中的全部数据重新进行ETL处理,简化操作并节省数据ETL处理资源。
图7示出根据本公开一实施例的数据ETL处理方法的示意图。作为一个示例,确定目标表的主关键字为ID0,并确定ETL处理策略。如图7所示,源数据库的全部源表包括Table1表、Table 2表、Table 3表、Table 4表和Table 5表。根据主关键字ID0和ETL处理策略,对源数据库的源表中的数据进行ETL处理,并将ETL处理后得到的数据存储至目标表,从而建立目标表Table 0表。例如,从源数据库中Table 1表、Table 2表和Table 3表采集数据,对采集的数据进行ETL处理,并将ETL处理后的数据存储到目标数据库中Table 0表。
其中,Table 0表为目标表,Table 0表包括数据1、数据3、数据4和数据7。Table 1表、Table 2表和Table 3表为源表,Table 1表包括数据1和数据2;Table 2表包括数据3和数据4;Table 3表包括数据5、数据6和数据7。数据5和数据1重复,ETL处理的过程中去重后保留数据1。
如图7所示,本公开的数据ETL处理方法的流程具体如下。
建立目标表Table 0表对应的丢失记录表Table 0’表。目标表Table 0表与其对应的丢失记录表Table 0’表具有相同的结构。目标表Table 0表的主关键字为ID0,则获取以ID0为外关键字的源表,源表包括Table 1表、Table 2表和Table 3表。其中,Table 0表包括数据1、数据3、数据4和数据7。Table 1表包括数据1和数据2;Table 2表包括数据3和数据4;Table 3表包括数据5、数据6和数据7。
步骤1、将Table 1表中的数据1与目标表Table 0表进行比较,若数据1存在于目标表Table 0表,则将Table 1表中的数据2与目标表Table 0表进行比较,若数据2不存在于目标表Table 0表,则将数据2存储至丢失记录表Table 0’表。针对Table 2表和Table 3表中的数据进行与Table 1表中的数据相同的处理,在此不再赘述。
步骤2、在将源表Table 1表、Table 2表和Table 3表中的每个数据与目标表Table0表进行比较后,可以得到丢失记录表Table 0’表。例如,丢失记录表Table 0’表包括数据2和数据6。
步骤3、然后再针对丢失记录表Table 0’中的数据进行ETL处理。
步骤4、针对ETL处理后得到的每个结果,将结果与目标表Table 0进行比较,若结果不存在于目标表Table 0中,则执行下述步骤5。
步骤5、将结果对应的记录存储至目标表Table 0中,并删除或标记丢失记录表Table 0’中结果对应的记录。其中ETL处理策略与生成目标表Table 0时采用的ETL处理策略一致,ETL处理策略包括的ETL处理至少可以是数据的抽取、数据的清洗转换和数据的加载。
例如,针对丢失记录表Table 0’表中的数据2和数据6进行ETL处理,得到ETL处理后的数据2和数据6(数据2与数据6不重复)。将数据2与目标表Table 0表进行比较,若数据2不存在于目标表Table 0中,则将数据2存储至目标表Table 0表中,并将丢失记录表Table0’中的数据2删除或标记。将数据6与目标表Table 0表进行比较,若数据6存在于目标表Table 0中,则将丢失记录表Table 0’中的数据6删除或标记。
再例如,针对丢失记录表Table 0’表中的数据2和数据6进行ETL处理,得到ETL处理后的数据2(数据2与数据6重复,ETL处理的过程中去重后保留数据2)。将数据2与目标表Table 0表进行比较,若数据2不存在于目标表Table 0中,则将数据2存储至目标表Table 0表中,并将丢失记录表Table 0’中的数据2删除或标记。
作为一个示例,表1示出根据本公开一实施例的目标表和丢失记录表的结构。目标表为自然人表,取表名为zrr。自然人表zrr的主关键字为自然人身份id。丢失记录表为自然人丢失记录表,取表名为zrr_lost。自然人丢失记录表zrr_lost与自然人表zrr的结构一致。
如表1所示,自然人表zrr用来存储自然人信息,自然人丢失记录表zrr_lost用于存储在ETL处理过程中丢失或处理不准确的自然人信息。其中,自然人信息可以包括自然人身份id、id类型、姓名、电话、地址、关系类型和关系代码等,本公开对此不作限制。
表1
自然人身份id | id类型 | 地址 | 姓名 | 电话 | 关系类型 | 关系代码 |
id | id_type | address | name | phone | relation | relation_code |
表2示出根据本公开一实施例的源表1。如表2所示,源表1为自然人投资表,取表名为zrrtz。自然人投资表zrrtz是源数据库中的表。本实施例中默认投资者和被投资者都是自然人,由此自然人投资表zrrtz与自然人表zrr对应的外关键字为:投资者id和被投资者id。如表2所示,自然人投资表zrrtz还包括投资者姓名、被投资者姓名、证件类型、地址、性别和电话等信息。
表2
被投资者id | 被投资姓名 | 证件类型 | 投资者id | 投资者姓名 | 地址 | 性别 | 电话 |
cerno_end | name_end | certype | cerno_start | name_start | address | sex | tel |
id1 | 王四 | 1 | id4 | 小红 | #### | #### | #### |
id2 | 王三 | 1 | id1 | 王四 | #### | #### | #### |
id3 | 王大 | 1 | id2 | 王三 | #### | #### | #### |
表3示出根据本公开一实施例的源表2。如表3所示,源表2为导游人员表,取表名为dyry。导游人员表dyry是源数据库中的表。一般情况下,导游人员都是自然人,由此导游人员表dyry与自然人表zrr对应的外关键字为:身份证号码。如表3所示,导游人员表dyry还包括姓名、导游卡号、性别、地址、语种名称、民族、学历和联系电话等信息。
表3
导游卡号 | 姓名 | 性别 | 身份证号码 | 地址 | 语种名称 | 民族 | 学历 | 联系电话 |
DYKH | name | sex | sfz | adress | yzmc | mz | xl | lxdh |
DYKH1 | 张三 | 1 | id5 | #### | #### | #### | #### | #### |
DYKH2 | 王五 | 1 | id6 | #### | #### | #### | #### | #### |
DYKH3 | 小红 | 0 | id4 | #### | #### | #### | #### | #### |
DYKH5 | 小明 | 1 | id7 | #### | #### | #### | #### | #### |
表4示出根据本公开一实施例的源表3。如表4所示,源表3为自然人任职表,取表名为zrrrz。自然人任职表zrrrz是源数据库中的表。自然人任职表zrrrz与自然人表zrr对应的外关键字为:证件号码。如表4所示,自然人任职表zrrrz还包括任职id、任职单位id、企业名称、姓名、家庭住址、移动电话和职位等信息。
表4
任职id | 任职单位id | 企业名称 | 姓名 | 家庭住址 | 证件号码 | 移动电话 | 职位 |
id | pri | ent_name | name | house_add | cerno | mob_tel | position |
P1 | 001 | 企业1 | 张三 | #### | id5 | #### | 总经理 |
P2 | 002 | 企业2 | 王五 | #### | id6 | #### | CEO |
可以理解的是,目标数据库中的自然人表zrr中的数据是从源数据库中的全部源表中以自然人身份id为外关键字的、有自然人信息的表通过某些复杂逻辑处理而来的,例如自然人投资表zrrtz中的投资者和被投资者、导游人员表dyry中的导游人员以及自然人任职表zrrrz中的任职人员。
作为一个示例,对源数据库中的数据进行ETL处理,得到目标表,即自然人表zrr。表5示出根据本公开一实施例的目标表。如表5所示,自然人表zrr包括自然人身份id为id1、id2、id3、id4、id5、id6的自然人信息。
表5
自然人身份id | id类型 | 地址 | 姓名 | 电话 | 关系类型 | 关系代码 |
id | id_type | address | name | phone | relation | relation_code |
id5 | 1 | #### | 张三 | #### | 行政处罚 | 050100, |
id6 | 1 | #### | 王五 | #### | 行政处罚 | 100,040,000 |
id4 | 3 | #### | 小红 | #### | 行政处罚 | 050100, |
id1 | 1 | #### | 王四 | #### | 行政处罚 | 050100, |
id2 | 1 | #### | 王三 | #### | 行政处罚 | 050100, |
id3 | 1 | #### | 王大 | #### | 行政处罚 | 050100, |
在ETL处理完成之后,从源数据库中确定以自然人表zrr的主关键字自然人身份id为外关键字的源表:自然人任职表zrrrz、导游人员表dyry和自然人投资表zrrtz。由此根据自然人任职表zrrrz、导游人员表dyry和自然人投资表zrrtz,查找数据是否都存在于自然人表zrr中。如果发现全部数据都存在于自然人表zrr中,则确定为数据ETL处理过程准确。如果发现部分数据不存在于自然人表zrr中,则确定为数据ETL处理过程不准确。
进一步地,如果发现有数据不存在于自然人表zrr中,则认为该数据属于丢失数据,将该数据存入自然人丢失记录表zrr_lost中。由此得到丢失记录表,即自然人丢失记录表zrr_lost。表6示出根据本公开一实施例的丢失记录表。如表6所示,自然人丢失记录表zrr_lost包括自然人身份id为id7的自然人信息。
表6
自然人身份id | id类型 | 地址 | 姓名 | 电话 | 关系类型 | 关系代码 |
id | id_type | address | name | phone | relation | relation_code |
id7 | 1 | #### | 小明 | #### | 行政处罚 | 050100, |
通过形成自然人表zrr采用的ETL处理策略,对自然人丢失记录表zrr_lost中的数据进行ETL处理,得到自然人身份id为id7的自然人信息。将自然人身份id为id7的自然人信息与自然人表zrr进行比较,其不存在于自然人表zrr中,则将自然人身份id为id7的自然人信息存储至自然人表zrr中,并删除或标记自然人丢失记录表zrr_lost中自然人身份id为id7的自然人信息。
由上可以看出:如果源数据库中的多个源表都是针对一个自然人,ETL处理后只能得到一条自然人信息。例如针对源表中的“小红”(即表2中的“小红”和表3中的“小红”),最终目标表只有一条“小红”的自然人信息。
因此本公开还可以针对复杂数据的采集、ETL处理后,降低记录数据不准确的情况。其中,复杂数据的采集、ETL处理可以是指多条数据采集后经过ETL处理合并成一条或多条数据的情况。
图8示出根据本公开一实施例的数据ETL处理装置的框图。如图8所示,该装置包括:
获取模块11,用于获取以目标表的主关键字作为外关键字的源表;判断模块12,用于判断所述源表中所述外关键字包括的数据是否都存在于所述目标表中;记录模块13,用于若所述源表中所述外关键字包括的至少一数据不存在于所述目标表中,则将所述外关键字不存在于所述目标表的数据存储至丢失记录表中,其中,所述丢失记录表与所述目标表的结构一致。
图9示出根据本公开一实施例的数据ETL处理装置的框图。如图9所示:
在一种实现方式中,所述装置还包括:第一确定模块14,用于若所述源表中所述外关键字包括的数据全部都存在于所述目标表中,则确定为数据ETL处理过程准确;或若所述源表中所述外关键字包括的至少一数据不存在于所述目标表中,则确定为数据ETL处理过程不准确。
在一种实现方式中,所述获取模块11还用于:将所述目标表的主关键字与源数据库的全部源表进行比较;从所述源数据库的全部源表中,获取以所述目标表的主关键字作为外关键字的源表。
在一种实现方式中,所述装置还包括:第一处理模块15,用于对所述丢失记录表中的数据进行ETL处理;第二处理模块16,用于针对ETL处理后得到的每个结果,将所述结果与所述目标表进行比较,若所述结果不存在于所述目标表中,则将所述结果对应的记录存储至所述目标表中,并删除或标记所述丢失记录表中所述结果对应的记录。
在一种实现方式中,所述第一处理模块15用于:通过形成所述目标表采用的ETL处理策略,对所述丢失记录表中的数据进行ETL处理。
在一种实现方式中,所述装置还包括:第二确定模块17,用于确定所述目标表中数据的总条数以及所述丢失记录表中数据的总条数;计算模块18,用于根据所述目标表中数据的总条数以及所述丢失记录表中数据的总条数,计算数据ETL处理的丢失率。
本公开的数据ETL处理装置,建立与目标表结构一致的丢失记录表,并通过建立的丢失记录表记录在ETL处理过程中丢失或处理不准确的数据,由此方便查找到在ETL处理过程中丢失或处理不准确的数据。当确定数据ETL处理过程不准确时,能够通过丢失记录表中存储的数据确定哪些数据丢失或不准确,由此能够实现数据丢失率或不准确率等业务分析。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可,这里不再复述。
图10是根据一示例性实施例示出的一种数据ETL处理装置900的框图。参照图10,该装置900可包括处理器901、存储有机器可执行指令的机器可读存储介质902。处理器901与机器可读存储介质902可经由系统总线903通信。并且,处理器901通过读取机器可读存储介质902中与异步通信逻辑对应的机器可执行指令以执行上文所述的异步通信方法。
本文中提到的机器可读存储介质902可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或类似的存储介质,或它们的组合。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (8)
1.一种数据ETL处理方法,其特征在于,包括:
获取以目标表的主关键字作为外关键字的源表;
判断所述源表中所述外关键字包括的数据是否都存在于所述目标表中;
若所述源表中所述外关键字包括的至少一数据不存在于所述目标表中,则将所述外关键字不存在于所述目标表的数据存储至丢失记录表中,其中,所述丢失记录表与所述目标表的结构一致;
在将所述源表中所述外关键字不存在于所述目标表的全部数据存储至丢失记录表中后,所述方法还包括:
确定所述目标表中数据的总条数以及所述丢失记录表中数据的总条数;
根据所述目标表中数据的总条数以及所述丢失记录表中数据的总条数,计算数据ETL处理的丢失率;
对所述丢失记录表中的数据进行ETL处理;
针对ETL处理后得到的每个结果,将所述结果与所述目标表进行比较,若所述结果不存在于所述目标表中,则将所述结果对应的记录存储至所述目标表中,并删除或标记所述丢失记录表中所述结果对应的记录。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述源表中所述外关键字包括的数据全部都存在于所述目标表中,则确定为数据ETL处理过程准确;或
若所述源表中所述外关键字包括的至少一数据不存在于所述目标表中,则确定为数据ETL处理过程不准确。
3.根据权利要求1所述的方法,其特征在于,获取以目标表的主关键字作为外关键字的源表,包括:
将所述目标表的主关键字与源数据库的全部源表进行比较;
从所述源数据库的全部源表中,获取以所述目标表的主关键字作为外关键字的源表。
4.根据权利要求1所述的方法,其特征在于,对所述丢失记录表中的数据进行ETL处理,包括:
通过形成所述目标表采用的ETL处理策略,对所述丢失记录表中的数据进行ETL处理。
5.一种数据ETL处理装置,其特征在于,包括:
获取模块,用于获取以目标表的主关键字作为外关键字的源表;
判断模块,用于判断所述源表中所述外关键字包括的数据是否都存在于所述目标表中;
记录模块,用于若所述源表中所述外关键字包括的至少一数据不存在于所述目标表中,则将所述外关键字不存在于所述目标表的数据存储至丢失记录表中,其中,所述丢失记录表与所述目标表的结构一致;
所述装置还包括:
第二确定模块,用于确定所述目标表中数据的总条数以及所述丢失记录表中数据的总条数;
计算模块,用于根据所述目标表中数据的总条数以及所述丢失记录表中数据的总条数,计算数据ETL处理的丢失率
第一处理模块,用于对所述丢失记录表中的数据进行ETL处理;
第二处理模块,用于针对ETL处理后得到的每个结果,将所述结果与所述目标表进行比较,若所述结果不存在于所述目标表中,则将所述结果对应的记录存储至所述目标表中,并删除或标记所述丢失记录表中所述结果对应的记录。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
第一确定模块,用于若所述源表中所述外关键字包括的数据全部都存在于所述目标表中,则确定为数据ETL处理过程准确;或若所述源表中所述外关键字包括的至少一数据不存在于所述目标表中,则确定为数据ETL处理过程不准确。
7.根据权利要求5所述的装置,其特征在于,所述获取模块还用于:
将所述目标表的主关键字与源数据库的全部源表进行比较;
从所述源数据库的全部源表中,获取以所述目标表的主关键字作为外关键字的源表。
8.根据权利要求5所述的装置,其特征在于,所述第一处理模块用于:通过形成所述目标表采用的ETL处理策略,对所述丢失记录表中的数据进行ETL处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810122336.3A CN108388610B (zh) | 2018-02-07 | 2018-02-07 | 数据etl处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810122336.3A CN108388610B (zh) | 2018-02-07 | 2018-02-07 | 数据etl处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108388610A CN108388610A (zh) | 2018-08-10 |
CN108388610B true CN108388610B (zh) | 2021-04-27 |
Family
ID=63075461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810122336.3A Active CN108388610B (zh) | 2018-02-07 | 2018-02-07 | 数据etl处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108388610B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109828889A (zh) * | 2019-01-31 | 2019-05-31 | 平安科技(深圳)有限公司 | 监控数据库的方法、装置、计算机设备和存储介质 |
CN111061740B (zh) * | 2019-12-17 | 2023-08-04 | 北京软通智慧科技有限公司 | 一种数据同步方法、设备和存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999009494A1 (en) * | 1997-08-14 | 1999-02-25 | Aoraki Corporation Limited | Relational database coexistence in object oriented environments |
US8065323B2 (en) * | 2009-02-23 | 2011-11-22 | Oracle International Corporation | Offline validation of data in a database system for foreign key constraints |
US8868484B2 (en) * | 2010-07-08 | 2014-10-21 | Oracle International Corporation | Efficiently updating rows in a data warehouse |
CN102411588A (zh) * | 2010-09-26 | 2012-04-11 | 金蝶软件(中国)有限公司 | 数据表的对比检验方法及系统 |
CN103309888A (zh) * | 2012-03-14 | 2013-09-18 | 北京四维图新科技股份有限公司 | 电子地图的数据的验证方法和验证装置 |
US9251179B2 (en) * | 2012-04-12 | 2016-02-02 | International Business Machines Corporation | Managing record location lookup caching in a relational database |
CN103164514B (zh) * | 2013-02-25 | 2017-05-03 | 用友网络科技股份有限公司 | 数据引用关系检测装置和数据引用关系检测方法 |
CN104679794A (zh) * | 2013-12-03 | 2015-06-03 | 中兴通讯股份有限公司 | 数据差异分析方法及装置 |
CN107103025B (zh) * | 2017-01-05 | 2020-08-14 | 亚信科技(中国)有限公司 | 一种数据处理方法及数据处理平台 |
-
2018
- 2018-02-07 CN CN201810122336.3A patent/CN108388610B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108388610A (zh) | 2018-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9129046B2 (en) | Systems and methods for managing a master patient index including duplicate record detection | |
JP5923307B2 (ja) | 分散化された自律的医療環境におけるアサーションベースレコードリンケージ | |
US10572461B2 (en) | Systems and methods for managing a master patient index including duplicate record detection | |
US20080120271A1 (en) | Tracking entities during identity resolution | |
US20180144061A1 (en) | Edge store designs for graph databases | |
MXPA04006390A (es) | Creacion de depositos de datos en tiempo real. | |
US11347719B2 (en) | Multi-table data validation tool | |
US11636078B2 (en) | Personally identifiable information storage detection by searching a metadata source | |
CN110019542B (zh) | 企业关系的生成、生成组织成员数据库及识别同名成员 | |
US20230205755A1 (en) | Methods and systems for improved search for data loss prevention | |
CN109918386A (zh) | 一种数据恢复方法和装置、计算机可读存储介质 | |
CN108388610B (zh) | 数据etl处理方法及装置 | |
CN101452556A (zh) | 一种客户信息处理系统及方法 | |
CN112463737A (zh) | 针对多格式数据智能匹配模板快速采集数据的系统及方法 | |
CN109902129B (zh) | 基于大数据分析的保险代理人归类方法及相关设备 | |
US10929441B1 (en) | System and techniques for data record merging | |
CN117313058A (zh) | 信息的识别方法、装置、计算机设备和存储介质 | |
CN104866603A (zh) | 元数据的调用方法和元数据管理系统 | |
US20180144060A1 (en) | Processing deleted edges in graph databases | |
US20090259659A1 (en) | Identifying entities of interest | |
CN112612818B (zh) | 一种数据处理方法及装置、计算设备和存储介质 | |
CN110851431B (zh) | 用于数据中台的数据处理方法及装置 | |
CN110502529B (zh) | 数据处理方法、装置、服务器及存储介质 | |
JP4869448B1 (ja) | 名寄せ管理システム | |
JP2002063363A (ja) | 保険契約情報管理システム及び顧客インデックス作成方法 |
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 |