CN106202110B - 数据质量检测的方法和装置 - Google Patents
数据质量检测的方法和装置 Download PDFInfo
- Publication number
- CN106202110B CN106202110B CN201510227798.8A CN201510227798A CN106202110B CN 106202110 B CN106202110 B CN 106202110B CN 201510227798 A CN201510227798 A CN 201510227798A CN 106202110 B CN106202110 B CN 106202110B
- Authority
- CN
- China
- Prior art keywords
- data
- value
- tables
- input data
- increment input
- 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
Abstract
本发明提供了一种数据质量检测的方法和装置,属于数据处理技术领域。所述方法包括:获取增量输入数据;获取检测规则;根据检测规则检测获取的增量输入数据的质量。所述装置包括:第一获取模块、第二获取模块和质量检测模块。本发明通过获取增量输入数据及检测规则,根据检测规则检测获取的增量输入数据的质量,使得数据质量检测在数据输入后进行,避免了数据质量检测占用数据输入资源,保证数据输入效率的稳定。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据质量检测的方法和装置。
背景技术
大规模软件系统中,常将存在关联关系数据输入至少一个系统中进行存储,例如,将两份相同的数据分别输入两个系统中进行存储。各个系统存储的数据之间可以存在完全相同的关联关系,也可以存在其他逻辑上的关联关系,或者存在其他业务上的关联关系。然而,该种存储方式在实际应用时,经常出现数据质量问题,例如:两个系统中输入的同一买家记录不一致,或者在交易进行、库存扣减过程中至少一个系统调用逻辑错误或者接口失败等。数据质量问题由于其具有强大的隐蔽性,不容易被发现,而数据质量问题存在时间越久,受影响的范围越广,造成的损失越惨重。因此,对数据质量问题进行检测,尽早发现数据质量问题,不仅可以及时纠正错误,提高数据质量,还可以减少受影响范围,降低损失。
目前,数据质量问题检测方法为,在数据输入时增加数据检测功能,以对输入的数据质量是否存在问题进行检测,当数据质量问题检测结果为数据质量无问题后再进行数据存储。例如,在数据输入时对输入的数据质量进行抽检,或者在数据输入时增加编写的特定质量检测程序,或者在数据输入时通过数据库自带的checksum函数对输入数据进行检测,或者数据输入时通过数据库自带的binlog函数对输入数据进行检测等。
该种方法是在数据输入时对数据质量问题进行检测,而进行数据质量问题检测需要占用资源,因此减少了可用于数据输入的资源,影响了数据输入效率。
发明内容
为解决上述问题,本发明实施例提出了一种数据质量检测的方法和装置。
一方面,本发明实施例提供了一种数据质量检测的方法,所述方法,包括:
获取增量输入数据;
获取检测规则;
根据所述检测规则检测所述获取的增量输入数据的质量。
可选地,所述根据所述检测规则检测获取的增量输入数据的质量,包括:
在获取的增量输入数据中确定关联数据;
根据所述检测规则检测所述关联数据的质量;
根据所述关联数据的质量确定所述获取的增量输入数据的质量。
可选地,所述根据所述检测规则检测所述关联数据的质量,包括:
若所述关联数据满足所述检测规则,则确定所述关联数据的质量无问题;
若所述关联数据不满足所述检测规则,则确定所述关联数据的质量有问题。
可选地,所述获取的增量输入数据位于一张第一数据表中;
所述在获取的增量输入数据中确定关联数据,包括:
确定所述第一数据表中的第一关键字段,其中,所述第一关键字段中的第一值唯一标识所述获取的增量输入数据;
根据所述第一关键字段关联所述获取的增量输入数据,得到关联数据。
可选地,所述根据所述第一关键字段关联所述获取的增量输入数据,得到关联数据,包括:
获取所述第一值;
确定所述第一值标识的增量输入数据;
获取所述第一值标识的增量输入数据中的第二值,所述第二值为除所述第一值之外的所有值;
将所述第一值与所述第二值作为关联数据。
可选地,所述根据所述第一关键字段关联所述获取的增量输入数据,得到关联数据,包括:
获取所述第一值;
确定所述第一值标识的增量输入数据;
获取所述第一值标识的增量输入数据中的第二值,所述第二值为除所述第一值之外的所有值;
将所述第一值与所述第二值的哈希值之间的对应关系作为关联数据。
其中,所述第二值为第一检测字段中的值,所述第一检测字段为所述第一数据表中的字段。
可选地,所述获取的增量输入数据位于多张第二数据表中;
所述在获取的增量输入数据中确定关联数据,包括:
确定所述多张第二数据表中共同的第二关键字段,所述第二关键字段中的第三值在各第二数据表中唯一标识各增量输入数据;
根据所述第二关键字段关联所述获取的增量输入数据,得到关联数据。
可选地,所述根据所述第二关键字段关联所述获取的增量输入数据,得到关联数据,包括:
获取各第二数据表中的第三值;
确定各第三值标识的增量输入数据;
获取各第三值标识的增量输入数据中的第四值,第四值为各第三值标识的增量输入数据中除第三值之外的所有值;
将第三值与所有第二数据表中的第四值作为关联数据。
可选地,所述根据所述第二关键字段关联所述获取的增量输入数据,得到关联数据,包括:
获取各第二数据表中的第三值;
确定各第三值标识的增量输入数据;
获取各第三值标识的增量输入数据中的第四值,第四值为各第三值标识的增量输入数据中除第三值之外的所有值;
将第三值与所有第二数据表中的第四值的哈希值作为关联数据。
其中,所述第四值为第二检测字段中的值,所述第二检测字段为各第二数据表中的字段。
另一方面,本发明实施例提供了一种数据质量检测的装置,所述装置,包括:
第一获取模块,用于获取增量输入数据;
第二获取模块,用于获取检测规则;
质量检测模块,用于根据所述第二获取模块获取到的检测规则检测所述第一获取模块获取的增量输入数据的质量。
可选地,所述质量检测模块,包括:
第一确定子模块,用于在获取的增量输入数据中确定关联数据;
质量检测子模块,用于根据所述检测规则检测所述第一确定子模块确定的关联数据的质量;
第二确定子模块,用于根据所述质量检测子模块得到的关联数据的质量确定所述获取的增量输入数据的质量。
可选地,所述质量检测子模块,用于当所述关联数据满足所述检测规则时,确定所述关联数据的质量无问题;当所述关联数据不满足所述检测规则时,确定所述关联数据的质量有问题。
可选地,所述获取的增量输入数据位于一张第一数据表中;
所述第一确定子模块,包括:
第一确定单元,用于确定所述第一数据表中的第一关键字段,其中,所述第一关键字段中的第一值唯一标识所述获取的增量输入数据;
第一关联单元,用于根据所述第一确定单元确定的第一关键字段关联所述获取的增量输入数据,得到关联数据。
可选地,所述第一关联单元,包括:
第一获取子单元,用于获取所述第一值;
第一确定子单元,用于确定所述第一获取子单元获取的第一值标识的增量输入数据;
第二获取子单元,用于获取所述第一确定子单元确定的第一值标识的增量输入数据中的第二值,所述第二值为除所述第一值之外的所有值;
第二确定子单元,用于将所述第一获取子单元获取的第一值与所述第二获取子单元获取的第二值作为关联数据。
可选地,所述第一关联单元,包括:
第三获取子单元,用于获取所述第一值;
第三确定子单元,用于确定所述第三获取子单元获取的第一值标识的增量输入数据;
第四获取子单元,用于获取所述第三确定子单元确定的第一值标识的增量输入数据中的第二值,所述第二值为除所述第一值之外的所有值;
第四确定子单元,用于将所述第三获取子单元获取的第一值与所述第四获取子单元获取的第二值的哈希值之间的对应关系作为关联数据。
其中,所述第二值为第一检测字段中的值,所述第一检测字段为所述第一数据表中的字段。
可选地,所述获取的增量输入数据位于多张第二数据表中;
所述第一确定子模块,包括:
第二确定单元,用于确定所述多张第二数据表中共同的第二关键字段,所述第二关键字段中的第三值在各第二数据表中唯一标识各增量输入数据;
第二关联单元,用于根据所述第二确定单元确定的第二关键字段关联所述获取的增量输入数据,得到关联数据。
可选地,所述第二关联单元,包括:
第一获取子单元,用于获取各第二数据表中的第三值;
第一确定子单元,用于确定所述第一获取子单元获取的各第三值标识的增量输入数据;
第二获取子单元,用于获取所述第一确定子单元确定的各第三值标识的增量输入数据中的第四值,第四值为各第三值标识的增量输入数据中除第三值之外的所有值;
第二确定子单元,用于将所述第一获取子单元获取的第三值与所述第二获取子单元获取的所有第二数据表中的第四值作为关联数据。
可选地,所述第二关联单元,包括:
第三获取子单元,用于获取各第二数据表中的第三值;
第三确定子单元,用于确定所述第三获取子单元获取的各第三值标识的增量输入数据;
第四获取子单元,用于获取所述第三确定子单元确定的各第三值标识的增量输入数据中的第四值,第四值为各第三值标识的增量输入数据中除第三值之外的所有值;
第四确定子单元,用于将所述第三获取子单元获取的第三值与所述第四获取子单元获取的所有第二数据表中的第四值的哈希值作为关联数据。
其中,所述第四值为第二检测字段中的值,所述第二检测字段为各第二数据表中的字段。
有益效果如下:
通过获取增量输入数据及检测规则,根据检测规则检测获取的增量输入数据的质量,使得数据质量检测在数据输入后进行,避免了数据质量检测占用数据输入资源,保证数据输入效率的稳定。
附图说明
下面将参照附图描述本发明的具体实施例,其中:
图1示出了本发明一实施例提供的一种数据质量检测的方法流程示意图;
图2示出了本发明另一实施例提供的一种数据质量检测的方法流程示意图;
图3示出了本发明另一实施例提供的一种数据质量检测方法的数据处理示意图;
图4示出了本发明另一实施例提供的一种数据质量检测的方法流程示意图;
图5示出了本发明另一实施例提供的一种数据质量检测方法的数据处理示意图;
图6示出了本发明另一实施例提供的一种数据流动关系示意图;
图7示出了本发明另一实施例提供的一种数据质量检测的方法流程示意图;
图8示出了本发明另一实施例提供的一种数据质量检测方法的数据处理示意图;
图9示出了本发明另一实施例提供的一种数据流动关系示意图;
图10示出了本发明另一实施例提供的一种数据质量检测的装置结构示意图;
图11示出了本发明另一实施例提供的一种质量检测模块的结构示意图;
图12示出了本发明另一实施例提供的一种第一确定子模块的结构示意图;
图13示出了本发明另一实施例提供的一种第一关联单元的结构示意图;
图14示出了本发明另一实施例提供的另一种第一关联单元的结构示意图;
图15示出了本发明另一实施例提供的另一种第一确定子模块的结构示意图;
图16示出了本发明另一实施例提供的一种第二关联单元的结构示意图;
图17示出了本发明另一实施例提供的另一种第二关联单元的结构示意图。
具体实施方式
为了使本发明的技术方案及优点更加清楚明白,以下结合附图对本发明的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本发明的一部分实施例,而不是所有实施例的穷举。并且在不冲突的情况下,本说明中的实施例及实施例中的特征可以互相结合。
大规模软件系统中,通过数据质量检测可以尽早发现数据质量问题,进而及时纠正,降低由于数据质量问题造成的损失,现有技术在数据输入时增加数据检测功能,数据质量问题检测结果为数据质量无问题后再进行数据输入及存储。而在数据输入时进行数据质量问题检测需要占用资源,进而减少了数据输入的可用资源,影响了数据输入效率。为了稳定数据输入的效率,本发明提出了一种数据质量检测的方法,该方法应用于一种终端,该终端上运行有数据质量检测的装置,该数据质量检测的装置如下述图10至图17任一图所述的数据质量检测的装置。该数据质量检测的装置可以获取增量输入数据;获取检测规则;根据检测规则检测获取的增量输入数据的质量,使得数据质量检测在数据输入后进行,避免了数据质量检测占用数据输入资源,保证数据输入效率的稳定,另外,数据质量检测对象为全部增量输入,避免了对输入数据抽检造成的数据漏检,保证数据质量检测的全面性。
另外,可以理解的,本实施例中的“第一数据表”,“第二数据表”“第一关键字段”,“第二关键字段”,“第一值”,“第二值”,“第三值”,“第四值”,“第一检测字段”,“第二检测字段”中,使用“第一”,“第二”,“第三”,“第四”描述数据表、关键字段、值或检测字段,但“第一”,“第二”,“第三”,“第四”仅用于将数据表、关键字段、值或检测字段彼此分开,并非对数据表、关键字段、值或检测字段本身做限定。
其中,“第一数据表”,“第一关键字段”,“第一值”,“第二值”和“第一检测字段”分别用于在下述图2所示实施例描述的增量输入数据位于一张数据表的场景中,描述增量输入数据位于的该张数据表,该张数据表中的关键字段,该张数据表中的值以及该张数据表中的检测字段。
“第二数据表”,“第二关键字段”,“第三值”,“第四值”和“第二检测字段”分别用于在下述图4或图7所示实施例描述的增量输入数据位于多张数据表的场景中,描述增量输入数据位于的各张数据表,各张数据表中的关键字段,各张数据表中的值以及各张数据表中的检测字段。
对于“第一数据表”代表的数据表和“第二数据表”代表的数据表,数据表之间的内容可以相同也可以不同,数据表之间的形式可以相同也可以不同,本实施例不对“第一数据表”代表的数据表和“第二数据表”代表的数据表之间的具体关系进行限定。
对于“第一关键字段”代表的关键字段和“第二关键字段”代表的关键字段,关键字段之间的内容可以相同也可以不同,关键字段之间的字段名称可以相同也可以不同,本实施例不对“第一关键字段”代表的关键字段和“第二关键字段”代表的关键字段之间的具体关系进行限定。
对于“第一值”代表的值和“第三值”代表的值,值之间的内容可以相同也可以不同,本实施例不对“第一值”代表的值和“第三值”代表的值之间的具体关系进行限定。
对于“第二值”代表的值和“第四值”代表的值,值之间的内容可以相同也可以不同,本实施例不对“第二值”代表的值和“第四值”代表的值之间的具体关系进行限定。
对于“第一检测字段”代表的检测字段和“第二检测字段”代表的检测字段,检测字段之间的内容可以相同也可以不同,检测字段之间的字段名称可以相同也可以不同,检测字段之间的数量可以相同也可以不同,本实施例不对“第一检测字段”代表的检测字段和“第二检测字段”代表的检测字段之间的具体关系进行限定。
结合上述实施环境,参见图1所示的实施例,本实施例提供了一种数据质量检测的方法,该方法流程具体如下:
101:获取增量输入数据;
102:获取检测规则;
103:根据检测规则检测获取的增量输入数据的质量。
可选地,根据检测规则检测获取的增量输入数据的质量,包括:
在获取的增量输入数据中确定关联数据;
根据检测规则检测关联数据的质量;
根据关联数据的质量确定获取的增量输入数据的质量。
可选地,根据检测规则检测关联数据的质量,包括:
若关联数据满足检测规则,则确定关联数据的质量无问题;
若关联数据不满足检测规则,则确定关联数据的质量有问题。
可选地,获取的增量输入数据位于一张第一数据表中;
在获取的增量输入数据中确定关联数据,包括:
确定第一数据表中的第一关键字段,其中,第一关键字段中的第一值唯一标识获取的增量输入数据;
根据第一关键字段关联获取的增量输入数据,得到关联数据。
可选地,根据第一关键字段关联获取的增量输入数据,得到关联数据,包括:
获取第一值;
确定第一值标识的增量输入数据;
获取第一值标识的增量输入数据中的第二值,第二值为除第一值之外的所有值;
将第一值与第二值作为关联数据。
可选地,根据第一关键字段关联获取的增量输入数据,得到关联数据,包括:
获取第一值;
确定第一值标识的增量输入数据;
获取第一值标识的增量输入数据中的第二值,第二值为除第一值之外的所有值;
将第一值与第二值的哈希值之间的对应关系作为关联数据。
其中,第二值为第一检测字段中的值,第一检测字段为第一数据表中的字段。
可选地,获取的增量输入数据位于多张第二数据表中;
在获取的增量输入数据中确定关联数据,包括:
确定多张第二数据表中共同的第二关键字段,第二关键字段中的第三值在各第二数据表中唯一标识各增量输入数据;
根据第二关键字段关联获取的增量输入数据,得到关联数据。
可选地,根据第二关键字段关联获取的增量输入数据,得到关联数据,包括:
获取各第二数据表中的第三值;
确定各第三值标识的增量输入数据;
获取各第三值标识的增量输入数据中的第四值,第四值为各第三值标识的增量输入数据中除第三值之外的所有值;
将第三值与所有第二数据表中的第四值作为关联数据。
可选地,根据第二关键字段关联获取的增量输入数据,得到关联数据,包括:
获取各第二数据表中的第三值;
确定各第三值标识的增量输入数据;
获取各第三值标识的增量输入数据中的第四值,第四值为各第三值标识的增量输入数据中除第三值之外的所有值;
将第三值与所有第二数据表中的第四值的哈希值作为关联数据。
其中,第四值为第二检测字段中的值,第二检测字段为各第二数据表中的字段。
有益效果:
通过获取增量输入数据及检测规则,根据检测规则检测获取的增量输入数据的质量,使得数据质量检测在数据输入后进行,避免了数据质量检测占用数据输入资源,保证数据输入效率的稳定,另外,数据质量检测对象为全部增量输入,避免了对输入数据抽检造成的数据漏检,保证数据质量检测的全面性。
结合上述实施环境,参见图2所示的实施例,本实施例提供了一种数据质量检测的方法,为了便于理解,以获取的增量输入数据位于一张第一数据表,如数据表A,且数据表存储于系统A中为例,对本实施例提供的方法进行详细地举例说明,本实施例提供的方法流程具体如下:
201:获取增量输入数据;
每个系统均会以系统日志的形式记录系统中所有数据的输入输出情况,若系统A在系统日志中记载了输入系统中的所有数据的信息,则先从系统日志中获取输入系统的所有数据,再通过数据库提供的增量获取语句从输入系统的所有数据中获取系统A的增量输入数据,且将获取的系统A的增量输入数据存入一张数据A表中,除此之外,还可以同其他方式获取增量输入数据,本实施例不对获取系统A的增量输入数据的具体实现方式进行限定。
例如,获取增量输入数据为表1所示的数据表A的数据。
表1
ID(Identity,身份标识) | 库存 | 进货总量 |
0001 | 100 | 200 |
0002 | 200 | 100 |
0003 | -200 | 200 |
参见表1所示的数据表A,其中每一列均代表1个字段,即数据表A中包括3个字段,分别为ID、库存和进货总量;每列中第2行或第3行和第4行均为该列所属字段中的值,即字段ID的值为0001、0002和0003。
202:获取检测规则;
检测规则用于描述每个检测字段中的值需要满足的关系,或者各个检测字段中的值之间需要满足的关系,其中,满足的关系可以为逻辑上的关系,可以为业务上的关系。逻辑上的关系包括但不限于某一个检测字段中的值满足不小/大于某一值的关系,某多个检测字段中的值之间满足相等的关系。业务上的关系包括但不限于某多个字段中的值之间满足业务中数据流关系。
例如,检测规则1为库存字段中的值的哈希值需要满足不小于0的关系。
又例如,检测规则2为进货总量字段中的值需要满足不小于0的关系。
再例如,检测规则3为库存字段中的值与进货总量字段中的值之间满足预设关系1,其中预设关系1为:库存字段中的值的哈希值不大于进货总量字段中的值的哈希值。
本实施例不对获取检测规则的具体方法进行限定,若检测规则在设置后存储于检测规则库中,则从检测规则库中选择适合于本次数据质量检测的检测规则。
另外,在获取检测规则时,根据具体的数据质量检测需求可以获取一个检测规则,也可以获取多个检测规则,本实施例不对获取的检测规则的具体数量进行限定。
通过对不同的数据质量检测场景预先设置不同的检测规则并存储,在实际应用时根据实际情况从存储的各个检测规则中选择合适的检测规则,可以在不需要改变本实施例提供方法的实施方式的前提下,使本实施例提供的方法应用于各种使用场景,提高了本实施例提供方法的灵活性和鲁棒性。
203:根据检测规则检测数据表A中增量输入数据的质量。
确定数据表A中增量输入数据是否满足检测规则,若满足,则确定数据表A中增量输入数据的质量无问题;如果不满足,则确定数据表A中增量输入数据的质量有问题。
具体的,包括但不限于通过三个步骤实现:在获取的增量输入数据中确定关联数据;根据检测规则检测关联数据的质量;根据关联数据的质量确定获取的增量输入数据的质量。
下面对三个步骤的具体实施方式进行详细描述。
步骤一:在获取的增量输入数据中确定关联数据;
在获取的增量输入数据中确定关联数据的实施方式包括但不限于:1)确定数据表A中的第一关键字段,其中,第一关键字段中的第一值唯一标识获取的增量输入数据;2)根据第一关键字段关联获取的增量输入数据,得到关联数据。
主键或主关键字是数据表中的一个或多个字段,主键的值用于唯一标识数据表中的某一条记录。因此,对于1)确定第一数据表中的第一关键字段的步骤在具体实施时,可以将数据表A中的主键作为第一关键字段。
若数据表A中的主键为一个,则将该主键作为第一关键字段;若数据表A中的主键为多个,则将多个主键中的一个作为第一关键字段。其中,将多个主键中的一个作为第一关键字段的具体实现方式,包括但不限于随机确定。
当然,也可以通过其他方式确定第一关键字段,本实施例不对确定第一关键字段的具体方式进行限定。
例如,将表1中的ID字段作为第一关键字段。
另外,对于1)确定数据表A中的第一关键字段的步骤,在本实施例提供的流程中的具体实施位置,仅以在步骤203时作为步骤一中的第一个步骤实施为例。在具体实施时,可以在执行步骤201获取到增量输入数据后,且在步骤203时步骤一中2)根据第一关键字段关联获取的增量输入数据,得到关联数据之前的任一位置实施。
例如,在执行步骤201之后实施1),实施后再执行步骤202,此时步骤203步骤一的具体实施方式仅需要执行2)根据第一关键字段关联获取的增量输入数据,得到关联数据。
对于2)根据第一关键字段关联获取的增量输入数据,得到关联数据的步骤在具体实施时,包括但不限于通过如下四个子步骤实现:
子步骤一:获取第一值;
其中,第一值为第一关键字段中的值,由于第一值唯一标识获取的增量输入数据,因此,第一值的数量与数据表A中数据的数量相同,且各个第一值均不相同。
以数据表A为表1所示,第一关键字段为ID为例,获取第一关键字段在增量输入数据中的第一值有3个,分别为0001、0002和0003。
子步骤二:确定第一值标识的增量输入数据;
由于第一值唯一标识获取的增量输入数据,因此通过第一值可以确定其标识的增量输入数据。
以表1为例,第一值0001标识的增量输入数据1为表2所示,第一值0002标识的增量输入数据2为表3所示,第一值0003标识的增量输入数据3为表4所示。
表2
ID | 库存 | 进货总量 |
0001 | 100 | 200 |
表3
ID | 库存 | 进货总量 |
0002 | 200 | 100 |
表4
ID | 库存 | 进货总量 |
0003 | -200 | 200 |
子步骤三:获取第一值标识的增量输入数据中的第二值;
为了更加准确的描述第二值,第二值在实际取值时并非简单获取第一值标识的增量输入数据中的具体值,而是增加描述具体值所属数据表,字段等隶属关系的综合数据。本实施例不对具体增加的隶属关系的内容和数量进行限定。
此子步骤在具体实施时,可以根据具体检测情况确定数据表A中的第一检测字段,而确定的第一检测字段的数量和增量输入数据中包含的字段数量可以相同也可以不同,若确定的第一检测字段的数量和增量输入数据中包含的字段数量相同,则第二值为除第一值之外的所有值;若确定的第一检测字段的数量和增量输入数据中包含的字段数量不相同,则第二值为第一检测字段中的值。
例子一,以需要对数据表A中的库存数据进行检测为例,由于库存数据是否正确除与数据本身是否正确有关,还与进货总量之间是否符合特定的逻辑关系有关,因此确定的数据表A对应的第一检测字段为2个和增量输入数据中包含的字段数量相同,分别为库存字段和进货总量字段。即第二值为除第一值之外的所有值的情况,获取第一值0001标识的增量输入数据1中的第二值为数据表A-库存-100和数据表A-进货总量-200,第一值0002标识的增量输入数据2中的第二值为数据表A-库存-200和数据表A-进货总量-100,第一值0003标识的增量输入数据3中的第二值为数据表A-库存--200和数据表A-进货总量-200。第一值与第二值如表5所示。
表5
例子二,以需要对数据表A中的进货总量数据进行检测为例,确定的数据表A对应的第一检测字段为1个和增量输入数据中包含的字段数量不相同,为库存字段。即第二值为第一检测字段中的值的情况,获取第一值0001标识的增量输入数据1中的第二值为数据表A-进货总量-200,第一值0002标识的增量输入数据2中的第二值为数据表A-进货总量-100,第一值0003标识的增量输入数据3中的第二值为数据表A-进货总量-200。第一值与第二值如表6所示。
表6
第一值 | 第二值 |
0001 | 数据表A-进货总量-200 |
0002 | 数据表A-进货总量-100 |
0003 | 数据表A-进货总量-200 |
子步骤四:根据第一值与第二值确定关联数据。
根据第一值与第二值确定关联数据的具体实施方法包括但不限于:将第一值与第二值作为关联数据。或者,将第一值与第二值的哈希值之间的对应关系作为关联数据。
以表5所示的第一值和第二值为例,将第一值与第二值作为关联数据,如表7所示。
表7
关联数据 |
0001-(数据表A-库存-100)-(数据表A-进货总量-200) |
0002-(数据表A-库存-200)-(数据表A-进货总量-100) |
0003-(数据表A-库存--200)-(数据表A-进货总量-200) |
再以表5所示的第一值和第二值为例,将第一值与第二值的哈希值之间的对应关系作为关联数据,如表8所示。
表8
关联数据 |
0001-hash(数据表A-库存-100)-hash(数据表A-进货总量-200) |
0002-hash(数据表A-库存-200)-hash(数据表A-进货总量-100) |
0003-hash(数据表A-库存--200)-hash(数据表A-进货总量-200) |
经过上述四个子步骤,可以根据第一关键字段关联获取的增量输入数据,得到关联数据。
对于2)根据第一关键字段关联获取的增量输入数据,得到关联数据的步骤,在本实施例提供的流程中的具体实施位置,本实施例仅以在步骤203时作为步骤一中的第二个步骤实施为例。在具体实施时,可以在执行步骤203中步骤一的1)确定数据表A中的第一关键字段之后,且在步骤203中步骤二之前的任一位置实施。
例如,若在执行步骤201之后实施1),则可以直接执行2),实施后再执行步骤202,此时步骤203的具体实施方式不需要执行步骤一,可以直接执行步骤二。
再例如,若在执行步骤201之后实施1),则可以继续步骤202,之后在步骤203中步骤一中执行2)。
上面对步骤203“根据检测规则检测数据表A中增量输入数据的质量”的具体实现方式中的第一步“在获取的增量输入数据中确定关联数据”进行具体说明,下面对第二步“根据检测规则检测关联数据的质量”进行说明。
步骤二:根据检测规则检测关联数据的质量;
具体的,若关联数据满足检测规则,则确定关联数据的质量无问题;若关联数据不满足检测规则,则确定关联数据的质量有问题。
若关联数据为一条,则该关联数据满足检测规则,确定关联数据的质量无问题;若该关联数据不满足检测规则,确定关联数据的质量有问题。
若关联数据为多条,则每条关联数据均满足检测规则,确定关联数据的质量无问题;若存在一条关联数据不满足检测规则,确定关联数据的质量有问题。
以步骤202中获得的检测规则为检测规则1(库存字段中的值的哈希值需要满足不小于0的关系),关联数据为表8所示为例,若hash(数据表A-库存-100)大于0,则满足检测规则1;若hash(数据表A-库存-200)大于0,则满足检测规则1;若hash(数据表A-库存--200)小于0,则不满足检测规则1;因此,确定表8所示的关联数据的质量有问题。
再以步骤202中获得的检测规则为检测规则3(库存字段中的值与进货总量字段中的值之间满足预设关系,其中预设关系为:库存字段中的值的哈希值不大于进货总量字段中的值的哈希值),关联数据为表8所示为例,若hash(数据表A-库存-100)小于hash(数据表A-进货总量-200),则满足检测规则3;若hash(数据表A-库存-200)大于hash(数据表A-进货总量-100),则不满足检测规则3;若hash(数据表A-库存--200)小于hash(数据表A-进货总量-200),则满足检测规则3;因此,确定表8所示的关联数据的质量无问题。
步骤三:根据关联数据的质量确定获取的增量输入数据的质量。
具体的,若关联数据的质量无问题,则确定获取的增量输入数据的质量无问题;若关联数据的质量有问题,则确定获取的增量输入数据的质量有问题。
需要说明的是,为了更好的体现通过本实施例提供的方法进行数据质量检测的检测结果,在执行步骤203之后,还可以输出数据质量检测结果。
例如,以报表的形式输入各行数据的数据质量检测结果,或者,以报表的形式输出数据质量检测结果为数据质量有问题的数据,或者,以报表的形式输出数据质量检测结果为数据质量有问题的数据以及问题原因,或者,为了更好的体现数据表A所属系统A的数据质量健壮程度,以图标的形式输出进行数据质量检测的总数据量、数据质量检测结果为数据质量有问题的总数据量等。本实施例不对数据质量检测结果的输出形式以及输出内容进行具体限定。
另外,为了更佳的体现本实施例提供的方法在数据质量辅助控制方面的优势,在执行步骤203之后,还可以根据预警条件对数据质量检测结果进行预警。本实施例不对预警方式以及预警条件进行具体限定,例如:当检测到有问题的数据总数大于阈值时进行预警。
此外,执行步骤203之后可以仅输出数据质量检测结果,也可以仅根据预警条件对数据质量检测结果进行预警,也可以既输出数据质量检测结果又根据预警条件对数据质量检测结果进行预警,本实施例不对执行步骤203之后执行的具体内容进行限定。
参见图3,本实施例提供的方法,先获取数据表A的增量输入数据,再在获取的增量输入数据中确定关联数据,然后根据检测规则确定关联数据的质量,最后根据关联数据的质量确定获取的增量输入数据的质量,输出质量检测结果。
本实施例提供的方法在数据输入后,对数据输入的增量输入数据进行数据质量检验,而非对输入过程中的中间数据进行数据质量检测,实现以不变应万变的数据质量检测效果,既确保数据质量检测结果准确全面,又不占用数据输入时的资源。
需要说明的是,本实施例提供的方法可以应用于数据表所属系统运行过程中的任一阶段。在系统最初进行数据输入时即用本实施例提供的方法对输入的增量输入数据进行数据质量检测可以确保对系统输入的所有数据进行数据质量控制。若在系统使用过一段时间,即已经输入数据后,再用本实施例提供的方法对输入的增量输入数据进行数据质量检测可以确保对系统在使用本实施例提供的方法后输入的所有数据进行数据质量控制,而对于系统在使用本实施例提供的方法前输入的数据不进行数据质量检测。对于系统在使用本实施例提供的方法前输入的数据可以通过现有的数据质量检测方法进行数据质量控制。
由于本实施例提供的方法进行数据质量检测的检测对象为数据表A的增量输入数据,即此时该增量输入数据已经输入数据表所属的系统A,使得本实施例提供的方法在数据输入后进行,避免了数据质量检测占用数据输入资源,保证数据输入效率的稳定。
另外,通过本实施例提供的数据质量检测方法可以检测数据表A中任一字段中的值是否满足逻辑关系,还以检测数据表A中多个字段中的值之间是否满足逻辑关系或者业务关系。例如,可以检测数据表A任一字段中的值是否满足不为空、满足字符长度要求、满足存储格式要求等逻辑关系,也可以检测数据表A中多个字段中的值之间是否满足数据一致等逻辑关系或者满足逻辑依赖关系等业务关系。
有益效果:
通过获取系统A的增量输入数据以及检测规则;根据检测规则对系统A的增量输入数据进行数据质量检测,使得数据质量检测在数据输入后进行,避免了数据质量检测占用数据输入资源,保证数据输入效率的稳定,另外,数据质量检测对象为全部增量输入,避免了对输入数据抽检造成的数据漏检,保证数据质量检测的全面性。
结合上述实施环境,参见图4所示的实施例,本实施例提供了一种数据质量检测的方法,为了便于理解,以获取的增量输入数据位于两张第二数据表,如数据表B和数据表C,且数据表B存储于系统B中,数据表C存储于系统C中为例,对本实施例提供的方法进行详细地举例说明,本实施例提供的方法流程具体如下:
401:获取增量输入数据;
其中,增量输入数据位于两张第二数据表,如数据表B和数据表C。且第二数据表与第一数据表中的“第二”与“第一”仅为区分不同的数据表,并非对数据表进行限定。例如第二数据表中的一个与第一数据表相同,另一个与第一数据表不同,或者第二数据表中的两个均与第一数据表相同,或者第二数据表中的两个均与第一数据表不同。对于第二数据表与第一数据表之间的关系本实施例不进行限定,以实际获取到的表情况为准。
在实际实施时,由于增量数据位于两张表中,因此,本步骤可以分别获取每张表中的增量数据。
获取数据表B(或者数据表C)的增量输入数据的实现方式与对于增量数据位于一张表的情况下步骤201实现方式相同,详见步骤201,本实施例在此不再进行赘述。
例如,获取增量输入数据为表9所示的数据表B中的数据和表10所示的数据表C中的数据。
表9
ID | 库存 | 店铺名称 |
0001 | 100 | AA |
0002 | 200 | BB |
表10
ID | 库存 | 店铺ID |
0001 | 100 | 1234 |
0002 | 200 | 1235 |
402:获取检测规则;
检测规则除图2所示的实施例中用于描述每个检测字段中的值需要满足的关系,或者各个检测字段中的值之间需要满足的关系之外,还用于描述各数据表中检测字段之间需要满足的关系。
例如,检测规则4为数据表B中库存字段的值与数据表C中库存字段的值相同。
又例如,检测规则5为数据表B中店铺名称字段的值的哈希值与数据表C中店铺ID字段的值的哈希值满足预设对应关系3。
本实施例不对获取检测规则的具体方法进行限定,若检测规则在设置后存储于针对一个数据表设置的检测规则的检测规则库中,则根据实际情况是一个数据表还是两个数据表从该检测规则库中存储的各个检测规则中获取合适的检测规则。若检测规则在设置后存储于其他检测规则库中,则根据实际情况是一个数据表还是两个数据表先选择对应的检测规则库,再从选择的检测规则库中获取合适的检测规则。本实施例不对,检测规则存储方式进行限定。
403:根据检测规则检测数据表B和数据表C中增量输入数据的质量。
确定数据表B的增量输入数据和数据表C的增量输入数据是否均满足检测规则,若均满足,则确定数据表B的增量输入数据和数据表C的增量输入数据的质量无问题;如果非均满足,则确定数据表B的增量输入数据和数据表C的增量输入数据的质量有问题。
具体的,包括但不限于通过如下三个步骤实现:在获取的数据表B的增量输入数据和数据表C的增量数据中确定关联数据;根据检测规则检测关联数据的质量;根据关联数据的质量确定获取的增量输入数据的质量。
下面对三个步骤的具体实施方式进行详细描述。
步骤一:在获取的数据表B的增量输入数据和数据表C的增量数据中确定关联数据;
在获取的数据表B的增量输入数据和数据表C的增量数据中确定关联数据的实施方式包括但不限于:a)确定数据表B中共同的第二关键字段,第二关键字段中的第三值在各第二数据表中唯一标识各增量输入数据;b)根据第二关键字段关联获取的增量输入数据,得到关联数据。
对于a)确定数据表B中共同的第二关键字段的步骤,若数据表B的增量输入数据的主键与数据表C的增量输入数据的主键相同,则将相同的主键作为第二关键字段。
例如,将表9和表10中所示将数据表B和数据表C共同的主键ID字段确定为key。
另外,对于a)确定数据表B中共同的第二关键字段的步骤,在本实施例提供的流程中的具体实施位置,仅以在步骤403时作为步骤一中第一个步骤实施为例,在具体实施时,可以在执行步骤401获取到增量输入数据后,且在步骤403时步骤一种b)根据第二关键字段关联获取的增量输入数据,得到关联数据之前的任一位置实施。
b)根据第二关键字段关联获取的增量输入数据,得到关联数据的步骤在具体实施时,包括但不限于通过如下四个子步骤实现:
子步骤一:获取各第二数据表中的第三值;
其中,第三值为第二关键字段中的值,由于第三值在各第二数据表中唯一标识各增量输入数据第一关键字段中的值,因此,数据表B中第三值的数量与数据表B中数据的数量相同,数据表C中第三值的数量与数据表C中数据的数量相同,且数据表B中各个第三值均不相同,数据表C中各个第三值均不相同,但数据表B中的第三值可能与数据表C中的第三值全部相同,或者部分相同,或者全部不同。
以表9所示的数据表B和表10所示的数据表C,第二关键字段为ID为例,获取数据表B中的第三值有2个,分别为0001和0002;获取数据表C中的第三值有2个,分别为0001和0002。
子步骤二:确定各第三值标识的增量输入数据;
由于第三值唯一标识各数据表的增量输入数据,因此通过第三值可以确定其在各数据表中标识的增量输入数据。
以表9和表10为例,表9中第三值0001标识的增量输入数据4为表11所示,第三值0002标识的增量输入数据5为表12所示,表10中第三值0001标识的增量输入数据6为表13所示,第三值0002标识的增量输入数据7为表14所示。
表11
ID | 库存 | 店铺名称 |
0001 | 100 | AA |
表12
ID | 库存 | 店铺名称 |
0002 | 200 | BB |
表13
ID | 库存 | 店铺ID |
0001 | 100 | 1234 |
表14
ID | 库存 | 店铺ID |
0002 | 200 | 1235 |
子步骤三:获取各第三值标识的增量输入数据中的第四值;
为了更加准确的描述第四值,第四值在实际取值时并非简单获取第四值标识的增量输入数据中的具体值,而是增加描述具体值所属数据表,字段等隶属关系的综合数据。
此子步骤在具体实施时,可以根据具体检测情况确定各数据表中的第二检测字段。
对于数据表B,确定数据表B的第二检测字段的数量和数据表B中增量输入数据中包含的字段数量可以相同也可以不同,若确定数据表B的第二检测字段的数量和数据表B中增量输入数据中包含的字段数量相同,则第四值为各第三值在数据表B标识的增量输入数据中除第三值之外的所有值;若确定数据表B的第二检测字段的数量和数据表B中增量输入数据中包含的字段数量不相同,则第四值为数据表B的第二检测字段中的值。
同样,对于数据表C,确定数据表C的第二检测字段的数量和数据表C中增量输入数据中包含的字段数量可以相同也可以不同,若确定数据表C的第二检测字段的数量和数据表C中增量输入数据中包含的字段数量相同,则第四值为各第三值在数据表C标识的增量输入数据中除第三值之外的所有值;若确定数据表C的第二检测字段的数量和数据表C中增量输入数据中包含的字段数量不相同,则第四值为数据表C的第二检测字段中的值。
另外,数据表B中的第二检测字段的数量与数据表C中的第二检测字段的数量可以相同也可以相同,数据表B中的第二检测字段的内容与数据表C中的第二检测字段的内容可以相同也可以相同,本实施例不对数据表B中的第二检测字段的数量和内容与数据表C中的第二检测字段的数量和内容之间的具体关系进行限定。
例子一,以确定数据表B中的检测字段为库存数据,数据表C中的检测字段也为库存字段为例,获取第三值0001标识数据表B的增量输入数据4中的第四值为数据表B-库存-100,第三值0002标识数据表B的增量输入数据5中的第四值为数据表B-库存-200,第三值0001标识数据表C的增量输入数据6中的第四值为数据表C-库存-100,第三值0002标识数据表C的增量输入数据7中的第四值为数据表C-库存-200。第三值与第四值如表15所示。
表15
第三值 | 第四值 |
0001 | 数据表B-库存-100 |
0002 | 数据表B-库存-200 |
0001 | 数据表C-库存-100 |
0002 | 数据表C-库存-200 |
例子二,以确定数据表B中的检测字段为店铺名称,数据表C中的检测字段为库存字段和店铺ID为例,获取第三值0001标识数据表B的增量输入数据4中的第四值为数据表B-店铺名称-AA,第三值0002标识数据表B的增量输入数据5中的第四值为数据表B-店铺名称-BB,第三值0001标识数据表C的增量输入数据6中的第四值为数据表C-库存-100和数据表C-店铺ID-1234,第三值0002标识数据表C的增量输入数据7中的第四值为数据表C-库存-200和数据表C-店铺ID-1235。第三值与第四值如表16所示。
表16
例子三,以确定数据表B中的检测字段为库存数据,数据表C中的检测字段为店铺ID为例,获取第三值0001标识数据表B的增量输入数据4中的第四值为数据表B-库存-100,第三值0002标识数据表B的增量输入数据5中的第四值为数据表B-库存-200,第三值0001标识数据表C的增量输入数据6中的第四值为数据表C-店铺ID-1234,第三值0002标识数据表C的增量输入数据7中的第四值为数据表C-店铺ID-1235。第三值与第四值如表17所示。
表17
第三值 | 第四值 |
0001 | 数据表B-库存-100 |
0002 | 数据表B-库存-200 |
0001 | 数据表C-店铺ID-1234 |
0002 | 数据表C-店铺ID-1235 |
子步骤四:根据第三值与第四值确定关联数据。
本实施例不对根据第三值与第四值确定关联数据的具体实施方法进行限定,例如,将第三值与所有第二数据表中的第四值作为关联数据。再例如,将第三值与所有第二数据表中的第四值的哈希值作为关联数据。
例子一,以表16所示的第三值和第四值为例,将第三值与所有第二数据表中的第四值作为关联数据,如表18所示。
表18
关联数据 |
0001-(数据表B-店铺名称-AA) |
0002-(数据表B-店铺名称-BB) |
0001-(数据表C-库存-100)-(数据表C-店铺ID-1234) |
0002-(数据表C-库存-200)-(数据表C-店铺ID-1235) |
例子二,以表16所示的第三值和第四值为例,将第三值与所有第二数据表中的第四值的哈希值作为关联数据,如表19所示。
表19
关联数据 |
0001-hash(数据表B-店铺名称-AA) |
0002-hash(数据表B-店铺名称-BB) |
0001-hash(数据表C-库存-100)-hash(数据表C-店铺ID-1234) |
0002-hash(数据表C-库存-200)-hash(数据表C-店铺ID-1235) |
经过上述四个子步骤,可以根据第二关键字段关联获取的增量输入数据,得到关联数据。
另外,对于b)根据第二关键字段关联获取的增量输入数据,得到关联数据的步骤,在本实施例提供的流程中的具体实施位置,本实施例仅以在步骤403时作为步骤一中的第二个步骤实施为例。在具体实施时,可以在执行步骤403中步骤一的a)确定数据表B中共同的第二关键字段之后,且在步骤403中步骤二之前的任一位置实施。
上面对步骤403“根据检测规则检测数据表B和数据表C中增量输入数据的质量”的具体实现方式中的第一步“在获取的数据表B的增量输入数据和数据表C的增量数据中确定关联数据”进行具体说明,下面对第二步“根据检测规则检测关联数据的质量”进行说明。
步骤二:根据检测规则检测关联数据的质量;
具体的,若关联数据满足检测规则,则确定关联数据的质量无问题;若关联数据不满足检测规则,则确定关联数据的质量有问题。
若关联数据为一条,则该关联数据满足检测规则,确定关联数据的质量无问题;若该关联数据不满足检测规则,确定关联数据的质量有问题。
若关联数据为多条,则每条关联数据均满足检测规则,确定关联数据的质量无问题;若存在一条关联数据不满足检测规则,确定关联数据的质量有问题。
以步骤402中获得的检测规则为检测规则5(数据表B中店铺名称字段的值的哈希值与数据表C中店铺ID字段的值的哈希值满足预设对应关系3),关联数据表为表19所示为例,若hash(数据表B-店铺名称-AA)与hash(数据表C-店铺ID-1234)满足对应关系3,则满足检测规则4;若hash(数据表B-店铺名称-BB)与hash(数据表C-店铺ID-1235)不满足对应关系3,则不满足检测规则4;因此,确定表19所示的关联数据的质量有问题。
对于执行步骤402时获取的检测规则,本实施例仅以选择针对两个数据表中的字段之间关系的检测规则为例进行说明,实际应用中,也可以根据实际数据质量检测的需要选择针对一个数据表中的检测规则进行检测,本实施例不对现在的检测规则所适用的具体检测场景进行限定。
例如,执行步骤402时除获取上述例子中的检测规则4(数据表B中库存字段的值与数据表C中库存字段的值相同)之外,还可以获取检测规则1(库存字段中的值的哈希值需要满足不小于0的关系)。此时,对于表20,若(数据表B-库存-100)与(数据表C-库存-100)相同,则满足检测规则4;若(数据表B-库存-200)与(数据表C-库存-200)相同,则满足检测规则4,若hash(数据表B-库存-100)不小于0,则满足检测规则1;若hash(数据表C-库存-100)不小于0,则满足检测规则1;若hash(数据表B-库存-200)不小于0,则满足检测规则1;若hash(数据表C-库存-200)不小于0,则满足检测规则1;因此,确定表20所示的关联数据的质量无问题。
表20
关联数据 |
0001-(数据表B-库存-100) |
0002-(数据表B-库存-200) |
0001-(数据表C-库存-100)-(数据表C-店铺ID-1234) |
0002-(数据表C-库存-200)-(数据表C-店铺ID-1235) |
此外,在执行步骤403之后,还可以输出数据质量检测结果,和/或根据预警条件对数据质量检测结果进行预警。
参见图5,本实施例提供的方法,先获取数据表B的增量输入数据和数据表C的增量输入数据,再在获取的增量输入数据中确定关联数据,然后根据检测规则确定关联数据的质量,最后根据关联数据的质量确定获取的增量输入数据的质量,输出质量检测结果。
本实施例提供的方法应用于AMG(Ali Magic Glass,阿里魔法锤子)系统,并已稳定运行,在某一双11大促中,AMG作为数据库单元化的重要保障系统,全天实时不间断的使用本实施例提供的方法对所有数据的数据质量进行检测,并达到对数据输入以及存储无侵入式的校验,全面检测的效果如表21所示。
表21
内容 | 检测效果 |
集群 | 每天进行数以十记的集群检测 |
实例 | 每天进行数以千记的实例检测 |
异常检测 | 每天进行数以十记的异常检测 |
总检测条数 | 每天对数以亿记的数据进行检测 |
业务一的不一致缓存 | 每天检测到业务一不一致缓存数据数以亿记 |
业务一的高峰追平耗时 | 和数据输入同步工具追平时间一致 |
业务一的峰值系统吞吐量 | 和所用数据库峰值系统吞吐量一致 |
需要说明的是,数据表B所属系统B和数据表C所属系统C之间会进行数据流动,而该种数据流动遵循直接或者间接的数据关联关系,例如,系统B和系统C之间数据保持一致,或者系统B和系统C之间数据满足逻辑关联,一旦遵循的直接或者间接的数据关联关系被打断,则会出现数据质量问题,对系统数据造成危害。例如,系统B和系统C之间的数据关联关系被打断,由于系统B中的数据流动记录于数据表B内,系统C中的数据流动记录于数据表C内,因此,会造成数据表B内的数据和数据表C内的数据之间不满足预设关系。
适用于本实施例提供方法的数据表B所属系统B和数据表C所属系统C之间数据流动关系包括但不限于如下三种关系。
第一种关系:如图6(a)所示的数据先输入系统B,系统B再通过某种同步机制把系统B中的数据输入系统C的数据流动关系;
第二种关系:如图6(b)所示的数据同时输入系统B和系统C的数据流动关系;
对于第二种关系,是一种数据双写的流动模式,常出现于两个系统并行处理事务过程中,通过第二种关系该种方式输入数据后,系统B和系统C的输入结果相同,即,或者系统B和系统C均输入成功,或者系统B和系统C均输入失败。
第三种关系:如图6(c)所示的系统B将其数据先输入消息中间件,系统中间件将输入的数据进行处理后,将处理后的数据输入系统C的数据流动关系。
对于第三种关系,是图6(a)所示的数据流动关系的变化关系,常出现于逻辑上的业务操作,而非数据同步场景。例如:交易成交、库存扣减场景。
有益效果:
通过获取系统B的增量输入数据和系统C的增量输入数据以及检测规则;根据检测规则对系统B的增量输入数据和系统C的增量输入数据进行数据质量检测,使得数据质量检测在数据输入后进行,避免了数据质量检测占用数据输入资源,保证数据输入效率的稳定,另外,数据质量检测对象为全部增量输入,避免了对输入数据抽检造成的数据漏检,保证数据质量检测的全面性。
随着检测对象的不同,用于存储检测对象的系统数量也会随之发生变化,因此,本发明提供的方法除可以应用于上述增量数据位于两个数据表中和增量数据位于两个数据表中之外,还可以应用于增量数据位于多于两个数据表中的情况。针对增量数据位于多于两个数据表中的情况,参见图7所示的实施例,本实施例提供了一种数据质量检测的方法,为了便于理解,以获取的增量输入数据位于n张第二数据表(其中n为大于2的整数),即数据表D1,数据表D2,…,数据表Dn为例,对本实施例提供的方法进行详细地举例说明,本实施例提供的方法流程具体如下:
701:获取增量输入数据;
其中,增量输入数据位于n张第二数据表,如数据表D1,数据表D2,…,数据表Dn。
本步骤在具体实施时,获取数据表D1(或者数据表D2,…,或者数据表Dn)的增量输入数据的实现方式与步骤201中相同,详见步骤201,本实施例在此不再进行赘述。
702:获取检测规则;
本实施例不对获取检测规则的具体方法进行限定,若检测规则在设置后存储于针对一个数据表和两个数据表设置的检测规则的检测规则库中,则根据实际情况是一个数据表、两个数据表还是多于两个数据表从存储的各个检测规则中选择合适的检测规则。若检测规则存储于其他检测规则库中,则根据实际情况是一个数据表还是两个数据表还是多于两个数据表先选择对应的检测规则库,再从选择的检测规则库中选择合适的检测规则。
703:根据检测规则检测数据表D1,数据表D2,…,数据表Dn中增量输入数据的质量。
确定数据表D1的增量输入数据,数据表D2的增量输入数据,…,数据表Dn的增量输入数据是否均满足检测规则,若均满足,则确定数据表D1,数据表D2,…,数据表Dn中增量输入数据的质量无问题;如果非均满足,则确定数据表D1,数据表D2,…,数据表Dn中增量输入数据的质量有问题。
具体的,包括但不限于通过如下三个步骤实现:在获取的数据表D1的增量输入数据,数据表D2的增量输入数据,…,数据表Dn的增量输入数据中确定关联数据;根据检测规则检测关联数据的质量;根据关联数据的质量确定获取的增量输入数据的质量。
参见图8,本实施例提供的方法,先获取数据表D1的增量输入数据,数据表D2的增量输入数据,…,数据表Dn的增量输入数据,再在获取的增量输入数据中确定关联数据,然后根据检测规则确定关联数据的质量,最后根据关联数据的质量确定获取的增量输入数据的质量,输出质量检测结果。
需要说明的是,适用于本实施例提供方法的数据表D1所属系统D1,数据表D2所属系统D2,…,数据表Dn所属系统Dn之间数据流动关系包括但不限于如下三种关系。
第一种关系:如图9(a)所示的数据先输入系统D1,系统D1再通过某种同步机制把系统D1中的数据输入系统D2,…,直至输入系统Dn的数据流动关系;
第二种关系:如图9(b)所示的数据同时输入系统D1,系统D2,…,系统Dn的数据流动关系;
第三种关系:如图9(c)所示的系统D1将其数据先输入消息中间件1,系统中间件1将输入的数据进行处理后,将处理后的数据输入系统D2,系统D2将其数据先输入消息中间件2,系统中间件2将输入的数据进行处理后,将处理后的数据输入系统D3,…,直至系统中间件n-1在对输入的数据进行处理后,将处理后的数据输入系统Dn的数据流动关系。
其中,中间件1,中间件2,…,中间件n-1可以为同一个中间件,也可以为不同的中间件,还可以为部分相同的中间件,本实施例不对中间件1,中间件2,…,中间件n-1之间的具体关系进行限定。
另外,本发明通过灵活的获取检测规则,可以实现同一数据表中同一字段的数据质量检测,也可以实现同一数据表中不同字段间的数据质量检测,还可以实现不同数据表之间相同或不同字段的数据质量检测。检测的数据质量既包括是否相同、是否唯一、是否满足预设限定等逻辑上质量,也包括是否符合预设业务流程等业务上的质量。
有益效果:
通过获取系统D1的增量输入数据,系统D2的增量输入数据,…,系统Dn的增量输入数据以及检测规则;根据检测规则对系统D1的增量输入数据,系统D2的增量输入数据,…,系统Dn的增量输入数据进行数据质量检测,使得数据质量检测在数据输入后进行,避免了数据质量检测占用数据输入资源,保证数据输入效率的稳定,另外,数据质量检测对象为全部增量输入,避免了对输入数据抽检造成的数据漏检,保证数据质量检测的全面性。
基于同一发明构思,参见图10所示的实施例,本实施例提供了一种数据质量检测的装置,由于这些装置解决问题的原理与一种数据质量检测的方法相似,因此这些装置的实施可以参见方法的实施,重复之处不再赘述。
该装置包括:
第一获取模块1001,用于获取增量输入数据;
第二获取模块1002,用于获取检测规则;
质量检测模块1003,用于根据第二获取模块1002获取到的检测规则检测第一获取模块1001获取的增量输入数据的质量。
参见图11,质量检测模块1003,包括:
第一确定子模块10031,用于在获取的增量输入数据中确定关联数据;
质量检测子模块10032,用于根据检测规则检测第一确定子模块10031确定的关联数据的质量;
第二确定子模块10033,用于根据质量检测子模块10032得到的关联数据的质量确定获取的增量输入数据的质量。
其中,质量检测子模块10032,用于当关联数据满足检测规则时,确定关联数据的质量无问题;当关联数据不满足检测规则时,确定关联数据的质量有问题。
参见图12,获取的增量输入数据位于一张第一数据表中;
第一确定子模块10031,包括:
第一确定单元100311,用于确定第一数据表中的第一关键字段,其中,第一关键字段中的第一值唯一标识获取的增量输入数据;
第一关联单元100312,用于根据第一确定单元100311确定的第一关键字段关联获取的增量输入数据,得到关联数据。
参见图13,第一关联单元100312,包括:
第一获取子单元1003121,用于获取第一值;
第一确定子单元1003122,用于确定第一获取子单元1003121获取的第一值标识的增量输入数据;
第二获取子单元1003123,用于获取第一确定子单元1003122确定的第一值标识的增量输入数据中的第二值,第二值为除第一值之外的所有值;
第二确定子单元1003124,用于将第一获取子单元1003121获取的第一值与第二获取子单元1003123获取的第二值作为关联数据。
参见图14,第一关联单元100312,包括:
第三获取子单元1003125,用于获取第一值;
第三确定子单元1003126,用于确定第三获取子单元1003125获取的第一值标识的增量输入数据;
第四获取子单元1003127,用于获取第三确定子单元1003126确定的第一值标识的增量输入数据中的第二值,第二值为除第一值之外的所有值;
第四确定子单元1003128,用于将第三获取子单元1003125获取的第一值与第四获取子单元1003127获取的第二值的哈希值之间的对应关系作为关联数据。
其中,第二值为第一检测字段中的值,第一检测字段为第一数据表中的字段。
参见图15,获取的增量输入数据位于多张第二数据表中;
第一确定子模块10031,包括:
第二确定单元100313,用于确定多张第二数据表中共同的第二关键字段,第二关键字段中的第三值在各第二数据表中唯一标识各增量输入数据;
第二关联单元100314,用于根据第二确定单元100313确定的第二关键字段关联获取的增量输入数据,得到关联数据。
参见图16,第二关联单元100314,包括:
第一获取子单元1003141,用于获取各第二数据表中的第三值;
第一确定子单元1003142,用于确定第一获取子单元1003141获取的各第三值标识的增量输入数据;
第二获取子单元1003143,用于获取第一确定子单元1003142确定的各第三值标识的增量输入数据中的第四值,第四值为各第三值标识的增量输入数据中除第三值之外的所有值;
第二确定子单元1003144,用于将第一获取子单元1003141获取的第三值与第二获取子单元1003143获取的所有第二数据表中的第四值作为关联数据。
参见图17,第二关联单元100314,包括:
第三获取子单元1003145,用于获取各第二数据表中的第三值;
第三确定子单元1003146,用于确定第三获取子单元1003145获取的各第三值标识的增量输入数据;
第四获取子单元1003147,用于获取第三确定子单元1003146确定的各第三值标识的增量输入数据中的第四值,第四值为各第三值标识的增量输入数据中除第三值之外的所有值;
第四确定子单元1003148,用于将第三获取子单元1003145获取的第三值与第四获取子单元1003147获取的所有第二数据表中的第四值的哈希值作为关联数据。
其中,第四值为第二检测字段中的值,第二检测字段为各第二数据表中的字段。
有益效果如下:
通过获取增量输入数据及检测规则,根据检测规则检测获取的增量输入数据的质量,使得数据质量检测在数据输入后进行,避免了数据质量检测占用数据输入资源,保证数据输入效率的稳定,另外,数据质量检测对象为全部增量输入,避免了对输入数据抽检造成的数据漏检,保证数据质量检测的全面性。以上实施例仅用于说明本发明的技术方案而非对其进行限制,在不背离本发明精神及其实质的情况下,本领域人员可以根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围内。
Claims (12)
1.一种数据质量检测的方法,其特征在于,所述方法,包括:
获取增量输入数据;
获取检测规则;
根据所述检测规则检测所述获取的增量输入数据的质量;
所述根据所述检测规则检测获取的增量输入数据的质量,包括:
在获取的增量输入数据中确定关联数据;
根据所述检测规则检测所述关联数据的质量;
根据所述关联数据的质量确定所述获取的增量输入数据的质量;
所述根据所述检测规则检测所述关联数据的质量,包括:
若所述关联数据满足所述检测规则,则确定所述关联数据的质量无问题;
若所述关联数据不满足所述检测规则,则确定所述关联数据的质量有问题;
所述获取的增量输入数据位于一张第一数据表中;
所述在获取的增量输入数据中确定关联数据,包括:
确定所述第一数据表中的第一关键字段,其中,所述第一关键字段中的第一值唯一标识所述获取的增量输入数据;
根据所述第一关键字段关联所述获取的增量输入数据,得到关联数据;
所述根据所述第一关键字段关联所述获取的增量输入数据,得到关联数据,包括:
获取所述第一值;
确定所述第一值标识的增量输入数据;
获取所述第一值标识的增量输入数据中的第二值,所述第二值为除所述第一值之外的所有值;
将所述第一值与所述第二值作为关联数据;
所述获取的增量输入数据位于多张第二数据表中;
所述在获取的增量输入数据中确定关联数据,包括:
确定所述多张第二数据表中共同的第二关键字段,所述第二关键字段中的第三值在各第二数据表中唯一标识各增量输入数据;
根据所述第二关键字段关联所述获取的增量输入数据,得到关联数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一关键字段关联所述获取的增量输入数据,得到关联数据,包括:
获取所述第一值;
确定所述第一值标识的增量输入数据;
获取所述第一值标识的增量输入数据中的第二值,所述第二值为除所述第一值之外的所有值;
将所述第一值与所述第二值的哈希值之间的对应关系作为关联数据。
3.根据权利要求2所述的方法,其特征在于,所述第二值为第一检测字段中的值,所述第一检测字段为所述第一数据表中的字段。
4.根据权利要求1所述的方法,其特征在于,所述根据所述第二关键字段关联所述获取的增量输入数据,得到关联数据,包括:
获取各第二数据表中的第三值;
确定各第三值标识的增量输入数据;
获取各第三值标识的增量输入数据中的第四值,第四值为各第三值标识的增量输入数据中除第三值之外的所有值;
将第三值与所有第二数据表中的第四值作为关联数据。
5.根据权利要求1所述的方法,其特征在于,所述根据所述第二关键字段关联所述获取的增量输入数据,得到关联数据,包括:
获取各第二数据表中的第三值;
确定各第三值标识的增量输入数据;
获取各第三值标识的增量输入数据中的第四值,第四值为各第三值标识的增量输入数据中除第三值之外的所有值;
将第三值与所有第二数据表中的第四值的哈希值作为关联数据。
6.根据权利要求4或5所述的方法,其特征在于,所述第四值为第二检测字段中的值,所述第二检测字段为各第二数据表中的字段。
7.一种数据质量检测的装置,其特征在于,所述装置,包括:
第一获取模块,用于获取增量输入数据;
第二获取模块,用于获取检测规则;
质量检测模块,用于根据所述第二获取模块获取到的检测规则检测所述第一获取模块获取的增量输入数据的质量;
所述质量检测模块,包括:
第一确定子模块,用于在获取的增量输入数据中确定关联数据;
质量检测子模块,用于根据所述检测规则检测所述第一确定子模块确定的关联数据的质量;
第二确定子模块,用于根据所述质量检测子模块得到的关联数据的质量确定所述获取的增量输入数据的质量;
所述质量检测子模块,用于当所述关联数据满足所述检测规则时,确定所述关联数据的质量无问题;当所述关联数据不满足所述检测规则时,确定所述关联数据的质量有问题;
所述获取的增量输入数据位于一张第一数据表中;
所述第一确定子模块,包括:
第一确定单元,用于确定所述第一数据表中的第一关键字段,其中,所述第一关键字段中的第一值唯一标识所述获取的增量输入数据;
第一关联单元,用于根据所述第一确定单元确定的第一关键字段关联所述获取的增量输入数据,得到关联数据;
所述第一关联单元,包括:
第一获取子单元,用于获取所述第一值;
第一确定子单元,用于确定所述第一获取子单元获取的第一值标识的增量输入数据;
第二获取子单元,用于获取所述第一确定子单元确定的第一值标识的增量输入数据中的第二值,所述第二值为除所述第一值之外的所有值;
第二确定子单元,用于将所述第一获取子单元获取的第一值与所述第二获取子单元获取的第二值作为关联数据;
所述获取的增量输入数据位于多张第二数据表中;
所述第一确定子模块,包括:
第二确定单元,用于确定所述多张第二数据表中共同的第二关键字段,所述第二关键字段中的第三值在各第二数据表中唯一标识各增量输入数据;
第二关联单元,用于根据所述第二确定单元确定的第二关键字段关联所述获取的增量输入数据,得到关联数据。
8.根据权利要求7所述的装置,其特征在于,所述第一关联单元,包括:
第三获取子单元,用于获取所述第一值;
第三确定子单元,用于确定所述第三获取子单元获取的第一值标识的增量输入数据;
第四获取子单元,用于获取所述第三确定子单元确定的第一值标识的增量输入数据中的第二值,所述第二值为除所述第一值之外的所有值;
第四确定子单元,用于将所述第三获取子单元获取的第一值与所述第四获取子单元获取的第二值的哈希值之间的对应关系作为关联数据。
9.根据权利要求8所述的装置,其特征在于,所述第二值为第一检测字段中的值,所述第一检测字段为所述第一数据表中的字段。
10.根据权利要求7所述的装置,其特征在于,所述第二关联单元,包括:
第一获取子单元,用于获取各第二数据表中的第三值;
第一确定子单元,用于确定所述第一获取子单元获取的各第三值标识的增量输入数据;
第二获取子单元,用于获取所述第一确定子单元确定的各第三值标识的增量输入数据中的第四值,第四值为各第三值标识的增量输入数据中除第三值之外的所有值;
第二确定子单元,用于将所述第一获取子单元获取的第三值与所述第二获取子单元获取的所有第二数据表中的第四值作为关联数据。
11.根据权利要求7所述的装置,其特征在于,所述第二关联单元,包括:
第三获取子单元,用于获取各第二数据表中的第三值;
第三确定子单元,用于确定所述第三获取子单元获取的各第三值标识的增量输入数据;
第四获取子单元,用于获取所述第三确定子单元确定的各第三值标识的增量输入数据中的第四值,第四值为各第三值标识的增量输入数据中除第三值之外的所有值;
第四确定子单元,用于将所述第三获取子单元获取的第三值与所述第四获取子单元获取的所有第二数据表中的第四值的哈希值作为关联数据。
12.根据权利要求10或11所述的装置,其特征在于,所述第四值为第二检测字段中的值,所述第二检测字段为各第二数据表中的字段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510227798.8A CN106202110B (zh) | 2015-05-06 | 2015-05-06 | 数据质量检测的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510227798.8A CN106202110B (zh) | 2015-05-06 | 2015-05-06 | 数据质量检测的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106202110A CN106202110A (zh) | 2016-12-07 |
CN106202110B true CN106202110B (zh) | 2019-11-08 |
Family
ID=57459205
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510227798.8A Active CN106202110B (zh) | 2015-05-06 | 2015-05-06 | 数据质量检测的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106202110B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733362A (zh) * | 2018-05-14 | 2018-11-02 | 浪潮通用软件有限公司 | 一种数据质量检验方法和装置 |
CN109491990A (zh) * | 2018-09-17 | 2019-03-19 | 武汉达梦数据库有限公司 | 一种检测数据质量的方法以及检测数据质量的装置 |
CN109656812A (zh) * | 2018-11-19 | 2019-04-19 | 平安科技(深圳)有限公司 | 数据质量检测方法、装置及存储介质 |
CN111400365B (zh) * | 2020-02-26 | 2023-09-19 | 杭州美创科技股份有限公司 | 基于标准sql下的业务系统数据质量检测方法 |
CN112115121B (zh) * | 2020-11-20 | 2023-12-12 | 陕西云基华海信息技术有限公司 | 一种数据治理实时数据质量检测系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102637206A (zh) * | 2012-03-21 | 2012-08-15 | 浪潮集团山东通用软件有限公司 | 一种大数据量的数据查询方法 |
CN103226466A (zh) * | 2013-04-26 | 2013-07-31 | 浪潮集团山东通用软件有限公司 | 一种高效的增量数据捕获方法 |
CN103971060A (zh) * | 2014-05-09 | 2014-08-06 | 广西师范大学 | 移动电子商务实时推荐中的p2p隐私管理方法 |
-
2015
- 2015-05-06 CN CN201510227798.8A patent/CN106202110B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102637206A (zh) * | 2012-03-21 | 2012-08-15 | 浪潮集团山东通用软件有限公司 | 一种大数据量的数据查询方法 |
CN103226466A (zh) * | 2013-04-26 | 2013-07-31 | 浪潮集团山东通用软件有限公司 | 一种高效的增量数据捕获方法 |
CN103971060A (zh) * | 2014-05-09 | 2014-08-06 | 广西师范大学 | 移动电子商务实时推荐中的p2p隐私管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106202110A (zh) | 2016-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106202110B (zh) | 数据质量检测的方法和装置 | |
Yu et al. | A statistical framework of data-driven bottleneck identification in manufacturing systems | |
CN106355375B (zh) | 一种物料自动确认方法 | |
CN106295338A (zh) | 一种基于人工神经元网络的sql漏洞检测方法 | |
CN104679884B (zh) | 数据库的数据分析方法、装置以及系统 | |
CN106352244A (zh) | 一种基于分层神经网络的管道泄漏检测方法 | |
CN109299334A (zh) | 一种知识图谱的数据处理方法及装置 | |
CN108830554A (zh) | 基于任务模型的数据成果信息质量智能检测方法和系统 | |
CN106293891A (zh) | 多维投资指标监督方法 | |
CN109471874A (zh) | 数据分析方法、设备及存储介质 | |
CN113808132B (zh) | 三维网络模型质量检测方法、装置和计算机设备 | |
Satapathy et al. | Usage of machine learning in software testing | |
CN107808322A (zh) | 面向用户的大数据个性化推荐系统蜕变测试方法 | |
CN110188033B (zh) | 数据检测装置、方法、计算机设备及计算机可读存储介质 | |
CN111738290A (zh) | 图像检测方法、模型构建和训练方法、装置、设备和介质 | |
CN116561607A (zh) | 资源交互数据异常检测方法、装置和计算机设备 | |
CN105912451A (zh) | 一种lustre文件系统检测方法及装置 | |
CN114389978B (zh) | 一种基于静态污点分析的网络协议侧信道检测方法和系统 | |
Bonada et al. | Practical-oriented pressure sensor placement for model-based leakage location in water distribution networks | |
Roberts et al. | Bayesian anomaly detection and classification for noisy data | |
CN106407104B (zh) | 一种用于检测与内存空间释放相关的缺陷的方法及系统 | |
Bertrand et al. | Defining data quality issues in process mining with IoT data | |
US20160162778A1 (en) | Using radial basis function networks and hyper-cubes for excursion classification in semi-conductor processing equipment | |
Zhou et al. | Nonlinear canonical correspondence analysis and its application | |
Yuan et al. | Test case generation based on program invariant and adaptive random algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |