CN115380281A - 根据数据字段的语义标签生成用于数据字段的数据处理值的规则 - Google Patents
根据数据字段的语义标签生成用于数据字段的数据处理值的规则 Download PDFInfo
- Publication number
- CN115380281A CN115380281A CN202180022638.3A CN202180022638A CN115380281A CN 115380281 A CN115380281 A CN 115380281A CN 202180022638 A CN202180022638 A CN 202180022638A CN 115380281 A CN115380281 A CN 115380281A
- Authority
- CN
- China
- Prior art keywords
- data
- field
- tag
- value
- values
- 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.)
- Pending
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/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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
- G06F16/2228—Indexing 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
- G06N5/046—Forward inferencing; Production systems
- G06N5/047—Pattern matching networks; Rete networks
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)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Machine Translation (AREA)
Abstract
本公开的方法和***被配置为确定数据的语义含义,并且基于该数据的该语义含义生成数据处理规则。该语义含义包括该数据的语法含义或上下文含义,该数据例如通过由数据处理***对存储在字段中的值进行建档来确定,该字段被包括在一个或多个数据集的数据记录中;由该数据处理***将一个或多个分类器应用于该经建档的值;基于应用该一个或多个分类器识别指示该字段的这些值的逻辑特性或语法特性的一个或多个属性,其中该一个或多个属性中的每个属性具有基于该一个或多个分类器中的每个分类器的输出的相应置信度水平。这些属性与这些字段相关联,并且用于生成数据处理规则以及用于处理数据。
Description
优先权声明
本申请要求2020年8月28日提交的美国专利申请序列号17/006,504和2020年2月26日提交的美国专利申请序列号62/981,646的优先权,这两个专利申请的全部内容据此以引用方式并入。
技术领域
本公开涉及基于数据字段的值的分类的结果生成用于处理数据字段的数据的规则。更具体地,本公开涉及通过分析数据字段的数据和元数据的数据简档来对数据字段进行分类,并且生成用于处理数据字段的数据的一个或多个规则。
背景技术
计算机***可用于发送、接收和/或处理数据。例如,服务器计算机***可用于接收和存储资源(例如,网站内容,诸如网页),并且使内容可用于一个或多个客户端计算机***。在接收到对来自客户端计算机***的内容的请求时,服务器计算机***可以检索所请求的内容,并且将该内容发送到客户端计算机***以满足请求。
一组数据可以包括存储在数据字段中的数据值。数据字段可以包括一个或多个数据值。数据字段的许多实例可以存在于数据集中(例如,在不同的字段中)。
发明内容
本文档中描述的***被配置为用于根据所处理的数据的语义标签生成用于处理数据的一个或多个规则。这些标签指示所标记的数据的语义含义。数据的语义含义是数据实际上表示的含义。例如,语义含义可以指示特定字段表示日期,并且所表示的数据是用户简档的出生日期。数据的语义含义可以指示数据被数据处理***处理的方式。更具体地,数据处理***被配置为接收用语义标签标记的数据字段的数据值。数据处理***被配置为根据数据字段的标签内容生成用于处理该数据字段的数据值的一个或多个规则。这些规则可以包括数据掩蔽规则、数据质量规则、用于生成测试数据的规则、用于确定模式的规则或其他此类规则。通常,应用于所标记的数据的规则取决于该数据的语义含义,即使规则(例如,数据质量规则)的整个类别被应用于所有数据。例如,用于出生日期的数据质量规则可以不同于用于有效日期的数据质量规则,虽然这两者都是日期并且具有类似的格式。数据处理***确定数据的语义含义、用指示语义含义的标签来标记数据以及基于该标签生成用于处理该数据的一个或多个规则。
实施方案可包括以下特征中的一者或多者。
在一个方面,一种用于基于与字段相关联的标签确定用于一组数据记录中的数据记录的字段中的值的数据质量规则的过程,该标签指示该字段的值的特性。该过程由数据处理***实现。该过程包括检索标签索引,该标签索引将标签与数据记录中的一组一个或多个字段相关联,其中该标签识别该组一个或多个字段中的每个字段中预期的信息类型。该过程包括访问数据词典,该数据词典将由标签指示的信息类型与表示对与该标签相关联的一个或多个字段的值的要求的一组属性值相关联,该要求包括该一个或多个字段的值的逻辑特性或语法特性。该过程包括针对特定数据记录的字段:通过访问标签索引来识别与该特定数据记录的字段相关联的特定标签;从数据词典中检索该特定标签的属性值,该属性值指定对该字段的特定要求。该过程包括生成数据质量规则,该数据质量规则在被执行时被配置为:验证字段的值是否满足由属性值表示的特定要求,以及生成指示是否满足特定要求的输出数据。
在一些具体实施中,数据质量规则指示字段中的值与要求的允许偏差、字段中的一个或多个允许值以及字段中的一个或多个禁止值中的一者或多者。在一些具体实施中,该字段中的一个或多个允许值或禁止值与该字段的字段名称相关联。在一些具体实施中,该字段是第一字段,并且其中该字段中的一个或多个允许值或禁止值是基于特定数据记录中的第二字段中的值而确定的,该第二字段与特定数据记录的第一字段相关。在一些具体实施中,该一个或多个允许值或禁止值基于第二字段中的值和第一字段中的值的组合。在一些具体实施中,该一个或多个允许值对应于满足数值函数的值,并且其中该一个或多个禁止值对应于不满足该数值函数的值。
在一些具体实施中,该字段是第一字段,其中数据记录包括第二字段,其中数据质量规则是第一数据质量规则,并且其中该方法包括:基于特定标签的属性值确定该第一字段与该第二字段之间存在关系;并且基于第二字段与第一字段之间的关系生成用于该第二字段的第二数据质量规则。在一些具体实施中,该关系指示第二字段的值对第一字段的值的依赖性或第一字段的值对第二字段的值的依赖性。在一些具体实施中,该关系指示第一字段的值与第二字段的值之间的相关性。在一些具体实施中,该过程包括获得验证数据,该验证数据验证第一字段和第二字段的每个值的关系。在一些具体实施中,针对第一字段和第二字段的值的阈值数量来验证该关系。在一些具体实施中,第二数据质量规则被配置为基于第一字段的值执行对第二字段的值的约束。在一些具体实施中,确定第一字段与第二字段之间存在关系包括:确定第二字段的值包括由第一字段的值引用的键值,并且其中数据质量规则被配置为要求第二字段的每个值是有效键值。在一些具体实施中,第一字段和第二字段各自包括数值,并且其中确定第一字段与第二字段之间存在关系包括:确定将第一字段的值与第二字段的值相关联的数值函数。在一些具体实施中,确定第一字段与第二字段之间存在关系包括使用由机器学习过程配置的至少一个分类器。
在一些具体实施中,该过程包括:确定与特定标签相关联的属性值指示字段包括特定数据记录的主键值。在一些具体实施中,该过程包括配置数据质量规则以要求主键值各自在字段中是唯一的。
在一些具体实施中,特定标签的属性值表示字段中的值的平均值、值的最大长度、值的最小长度、值的数据类型和值的格式中的至少一者。在一些具体实施中,该特定数据记录是第一数据记录,并且其中该方法包括将数据质量规则应用于与第二数据记录中的特定标签相关联的另一字段,该第二数据纪录不同于第一数据记录。在一些具体实施中,该方法包括存储关联数据质量规则和特定标签的数据。
在一些具体实施中,该过程包括生成用于请求批准数据质量规则的数据;并且响应于获得指示数据质量规则的批准的批准数据而批准数据质量规则。
在一些具体实施中,生成数据质量规则包括:确定字段中的值的历史趋势;并且基于该字段中的值的历史趋势生成要求。
在一些具体实施中,生成用于该字段的数据质量规则包括:识别该字段中的值的历史平均值;并且基于该字段中的值的历史平均值生成要求。
实施方案可包括以下特征中的一者或多者。
过程由数据处理***执行,该数据处理***用于选择测试数据以在数据处理应用程序的测试期间引起处理规则的执行。该过程包括检索标签索引,该标签索引将标签与数据记录中的一组一个或多个字段相关联,其中该标签识别该组一个或多个字段中的每个字段中预期的信息类型。该过程包括访问数据词典,该数据词典将由标签指示的信息类型与表示对与该标签相关联的一个或多个字段的值的要求的一组属性值相关联,该要求包括该一个或多个字段的值的逻辑特性或语法特性。该过程包括针对特定数据记录的字段:通过访问标签索引来识别与该特定数据记录的字段相关联的特定标签;从数据词典中检索该特定标签的属性值,该属性值指定对该字段的特定要求;生成子集规则,该子集规则在被执行时指定字段的值是否包括属性值;根据子集规则从特定数据记录选择字段的子集,其中每个所选择的字段包括具有属性值的值;并且将所选择的子集提供给数据处理应用程序以用于该数据处理应用程序的测试。
在一些具体实施中,该过程包括使用数据处理应用程序来处理第一数据记录,该数据处理应用程序包括被配置为对该第一数据记录的字段的值进行操作并且生成至少一个输出值的处理规则,该字段与标签相关联。该过程包括获得指示结合处理第一数据记录执行处理规则的次数的执行信息,其中在处理该第一数据记录期间是否由数据处理应用程序执行该处理规则,直接或间接地取决于与该标签相关联的字段的值。在一些具体实施中,基于指示结合处理第一数据记录执行处理规则的次数的执行信息确定子集规则,该子集规则包括对该第一数据记录的字段的识别。
在一些具体实施中,子集规则将该字段识别为特定数据记录的键字段,该键字段包括特定数据记录的数据元素的至少一个键值。在一些具体实施中,特定数据记录的字段的子集包括具有键值的字段,这些键值带有预先确定的值。在一些具体实施中,子集规则识别对应于标签的键字段名称列表,并且其中子集规则通过将标签的属性值与键字段列表进行比较来将字段识别为键字段。在一些具体实施中,特定数据记录的字段包括个人识别信息(PII),并且其中该方法还包括选择特定数据记录的字段的子集,其中该字段不包括PII信息。在一些具体实施中,特定数据记录的字段包括个人识别信息(PII),并且其中该方法还包括:将掩蔽函数应用于PII以生成掩蔽数据,并且选择特定数据记录的字段的子集,该子集包括掩蔽数据。
实施方案可包括以下特征中的一者或多者。
在一般方面,一种过程,该过程由被配置为用于掩蔽数据处理应用程序的数据的数据处理***执行。该过程包括检索标签索引,该标签索引将标签与数据记录中的一组一个或多个字段相关联,其中该标签识别该组一个或多个字段中的每个字段中预期的信息类型。该过程包括访问数据词典,该数据词典将由标签指示的信息类型与表示对与该标签相关联的一个或多个字段的值的要求的一组属性值相关联,该要求包括该一个或多个字段的值的逻辑特性或语法特性。该过程包括针对特定数据记录的字段:通过访问标签索引来识别与该特定数据记录的字段相关联的特定标签;从数据词典中检索该特定标签的属性值,该属性值指定对该字段的特定要求;并且基于该属性值确定表示敏感数据的特定数据记录的字段。该过程包括响应于该确定执行数据掩蔽函数以将包括字段的敏感数据的值转换为掩蔽值。
在一些具体实施中,该字段是第一字段,并且其中该标签是第一标签。该过程包括确定具有第一标签的第一字段与具有第二标签的第二字段之间存在关系。该过程包括响应于确定存在关系,执行数据掩蔽函数以将第二字段中的值转换为掩蔽值。在一些具体实施中,确定存在关系包括:确定第一标签和第二标签与公共数据源相关联。在一些具体实施中,公共数据源包括用户简档。在一些具体实施中,该关系指示第二字段的值对第一字段的值的依赖性或第一字段的值对第二字段的值的依赖性。在一些具体实施中,该关系指示第一字段的第一值与第二字段的第二值之间的相关性。在一些具体实施中,该关系包括算术函数。在一些具体实施中,该过程包括基于关系的类型选择数据掩蔽函数的类型。
在一些具体实施中,数据掩蔽函数的类型包括改组函数、数据加密、字符加扰和数据取代中的至少一者。在一些具体实施中,该过程包括扫描特定数据记录以确定至少一个其他字段的一个或多个特定值是否被转换为掩蔽值。在一些具体实施中,该过程包括基于标签的属性值选择数据掩蔽函数的类型。在一些具体实施中,针对特定数据记录的第一字段选择第一数据掩蔽函数,该第一字段包括数值,并且其中针对特定数据记录的第二字段选择不同的第二掩蔽函数,该第二字段包括非数值。
在一些具体实施中,该过程包括基于与该字段相关的另一字段的标签选择数据掩蔽函数的类型。在一些具体实施中,敏感数据包括个人识别信息(PII)。
实施方案可包括以下特征中的一者或多者。
在一般方面,一种过程,该过程由被配置为用于确定数据记录的模式的数据处理***执行。该过程包括检索标签索引,该标签索引将标签与数据记录中的一组一个或多个字段相关联,其中该标签识别该组一个或多个字段中的每个字段中预期的信息类型。该过程包括访问数据词典,该数据词典将由标签指示的信息类型与表示对与该标签相关联的一个或多个字段的值的要求的一组属性值相关联,该要求包括该一个或多个字段的值的逻辑特性或语法特性。该过程包括针对特定数据记录的第一字段:通过访问标签索引来识别与该特定数据记录的第一字段相关联的特定标签;从数据词典中检索该特定标签的属性值,该属性值指定对该第一字段的特定要求;确定该属性值表示包括在第一字段中的值的模式特征;基于该模式特征确定具有标签的第一字段包括由第二字段的值引用的键值;并且响应于该确定,更新描述特定数据记录的模式数据以引用该第一字段包括由第二字段的值引用的键值。
在一些具体实施中,该过程包括基于该模式数据生成数据流图。在一些具体实施中,第二字段处于与特定数据记录不同的第二数据记录中。
在一些具体实施中,该过程包括生成关联函数,该关联函数被配置为基于键值将特定数据记录与第二数据记录关联。在一些具体实施中,第二字段与不同于该标签的第二标签相关联。
实施方案可包括以下特征中的一者或多者。
在一般方面,一种用于确定用于一个或多个数据集中的值的数据质量规则的过程,该过程由数据处理***实现,并且该过程包括由该数据处理***对存储在字段中的值进行建档,该字段被包括在一个或多个数据集的数据记录中。该过程包括由该数据处理***将一个或多个分类器应用于经建档的值。该过程包括基于应用该一个或多个分类器识别指示该字段的这些值的逻辑特性或语法特性的一个或多个属性,其中该一个或多个属性中的每个属性具有基于该一个或多个分类器中的每个分类器的输出的相应置信度水平。该过程包括将其中置信度水平满足阈值水平的所识别的属性中的一个或多个属性与该字段相关联。该过程包括基于与该字段相关联的一个或多个属性确定对包括在该字段中的值的一个或多个约束。该过程包括基于所确定的一个或多个约束,确定用于该数据集的字段的数据质量规则,该数据质量规则指示该字段的值与该一个或多个约束之间的关系。
这些过程中的任一种过程可以被实现为包括一个或多个处理设备和存储指令的存储器的***,这些指令在由一个或多个处理设备执行时被配置为使该一个或多个处理设备执行这些过程的操作。在一些具体实施中,一个或多个非暂态计算机可读介质可以被配置为存储指令,这些指令在由一个或多个处理设备执行时被配置为使该一个或多个处理设备执行这些过程的操作。
这些方面可以包括一个或多个优点。例如,本文所述的技术使得数据处理***能够自动生成用于处理数据集的数据字段的数据的一个或多个规则。一旦了解了数据的语义含义,该数据处理***就会确定将哪些数据处理操作应用于数据值以实现应用程序的指定目标。因此,该数据处理***可以自动确定处理数据集的不同数据字段的方式(诸如掩蔽数据值、执行数据质量规则、识别数据集的模式和/或选择用于测试另一应用程序的测试数据)以实现整个数据集的目标。自动确定哪些数据字段具有哪些语义含义可以使得这些规则能够应用于大型数据集,在这些大型数据集中,手动标记每个字段对用户而言可能是不切实际的或不可能的。例如,针对具有数百、数千或甚至数百万个表的数据集,为了执行规则诸如数据掩蔽规则,手动标记每个字段可能是不切实际的。在另一示例中,在任何用户查看敏感数据之前,自动掩蔽敏感数据可能是有用的。在另一示例中,该数据处理***可以掩蔽存储在数据字段中的敏感数据,这些数据字段不旨在包括敏感数据。
该数据处理***还根据数据处理规则来确定不需要处理的数据字段。例如,该数据处理***可以确定不需要掩蔽的数据字段。确定哪些数据字段不需要通过数据处理操作进行处理节省了对整个数据集的处理时间,以用于确保满足应用程序的指定目标(例如,掩蔽)。
数据处理***克服了将规则应用于数据集的以下挑战中的至少一个或多个挑战。通常,数据集的数据字段未以标准化方式命名,使得数据字段的名称为数据字段的内容的可靠指示符。对于数据处理***而言,通常重要的是了解数据集的数据字段的数据值的含义,因为用于实现应用程序的指定目标对数据字段的处理要求通常取决于该数据字段中的数据值的含义。例如,如果应用程序的目标是掩蔽个人识别信息(PII),则数据处理***在将掩蔽函数应用于那些数据之前确定数据集的哪个数据包括PII。在一些具体实施中,特定数据字段可能要求应用特定的掩蔽函数(例如,以满足对该数据字段的数据值的安全性要求)。此外,该数据处理***被配置为确定数据字段的数据值的含义,这可能是困难的,因为该含义不总是从字段名称、字段的数据值的格式或数据值本身显而易见的。
附图和以下描述中阐述了一个或多个实施方案的细节。其他特征和优点将从描述和附图以及从权利要求书显而易见。
附图说明
图1是数据处理***的框图。
图2A至图7B是各自包括用于数据质量规则处理的图1的示例性数据处理模块的框图。
图8是数据处理***的框图。
图9至图12示出了各自包括示例性过程的流程图。
具体实施方式
图1是数据处理***100的框图。数据处理***100被配置为处理来自输入数据112的数据记录。该数据处理***包括语义发现***602和数据处理设备102。语义发现***602被配置为确定数据记录的一个或多个字段的值的含义(例如,语义含义)。语义发现***602可以用语义标签118标记这些字段中的每个字段,该语义标签选自数据词典数据库614。语义标签118(也称为标签)与数据词典数据库614中的一个或多个属性120相关联。与语义标签118相关联的属性定义该标签的语义含义。
数据处理设备102被配置为从语义发现***602接收标签索引610和数据词典数据库614以及输入数据112。数据处理设备102被配置为基于标签索引614的标签和数据词典数据库614的标签和属性120处理输入数据112。数据库614的标签118以及标签索引610由语义发现***602的语义发现过程生成。
语义发现***602被配置为接收输入数据112并且确定该输入数据的字段的语义含义。字段的语义含义是对该字段的值的实际(例如,业务)含义的描述,并且随后被进一步详细描述。语义发现***602为了确定输入数据112的字段的语义含义,语义发现***602对输入数据112进行建档并执行多个分类,该多个分类分析字段的简档数据和值。对字段的简档数据和值的分类使得语义发现***602能够确定与字段最相关联的属性。属性120包括指示给定字段的特性的元数据(或其他数据)。例如,属性120可以指示特定格式、字段与另一字段或多个字段的特定关系、字段的允许值或禁止值、相关联的关键术语或业务术语、相关联字段的值的统计标准(单独地相对于字段的其他值,或者作为一个组的字段的值)等等。
语义发现***602被配置为生成标签索引610,该标签索引将输入数据112的数据记录的字段与数据词典数据库614中的标签118相关联。当数据记录的字段由数据处理设备102处理时,可以使用标签索引610来检索与该字段相关联的语义标签118(如果有的话)。
(例如,标签118的)语义标签包括指示由该语义标签标记的字段的数据的语义含义的术语或一组术语(通常为字符串或字母数字字符)。语义标签118是出现在与数据处理***相关联的数据词典中的识别出的术语或一组术语。每个语义标签1118与数据集的一个或多个字段相关联。例如,表可以将语义标签118关联到数据集中的各个字段(或各个字段的每个实例),这些字段具有数据值,这些数据值带有语义标签的含义。
在一些具体实施中,语义发现***602不一定生成实际标签以识别字段的语义含义,而是将该字段与指示语义含义的对应属性120相关联。例如,标签索引610可以将字段与包括一个或多个属性120而不包括用于字段的指定标签的数据词典数据库614中的条目相关联。在其他具体实施中,标签用作缩写,其指示数据词典数据库614的一组一个或多个属性120,该数据词典数据库表示字段的语义含义。
通常,字段的语义含义可以对应于该字段的值的实际含义或上下文含义。实际含义(例如,业务含义)或上下文含义表示数据记录中的数据值和/或数据值的上下文指示符的一个或多个语法特性。当一起解释时,该一个或多个语法特性传达这些值是如何由数据处理设备102的一个或多个模块进行处理的,该一个或多个模块使用针对各种应用程序的数据记录的值。这些语法特性由与数据词典数据库614中的每个标签118相关联的属性120指示。例如,针对对应于日期的数据值,语义含义可以指示这些数据值表示(例如,与这些数据记录相关联的客户或用户的)出生日期。在另一示例中,语义含义可以指示数字标识符表示社会安全号,该数字标识符是特定种类的数字标识符并且具有对社会安全号特有的特定特性。在另一示例中,语义含义可以指示两个不同字段的值在被分组在一起时传达业务含义。例如,如果数字被识别为邮政编码,并且该数字与已经被识别为表示城市名称和国家名称的其他字段配对,则语义发现***602被配置为确定所有三个字段加在一起的语义含义是地址。随后详细描述语义含义的另外示例。
在一些具体实施中,字段的语义含义包括在该字段中的数据的实际含义(例如,业务含义或真实世界含义)。语义含义可以比指示字段包括什么类型的数据更具体。例如,可以从数据简档中识别出包括日期的字段。数据处理***100可以根据字段中的值的长度(例如,值的平均长度)确定该字段包括日期。数据处理***100可以根据格式(例如,值全部是数字或符合##\##\####的格式等等)确定该字段包括日期。其他统计数据可以向数据处理***100指示该字段包括日期。然而,字段的语义含义可以是该字段表示应用程序的用户的出生日期,这可以和与该用户相关联的其他日期(诸如创建用户简档的日期)区分。
如先前所描述的,语义标签118与数据词典数据库116中的一个或多个属性120相关联。属性120指示数据字段中的数据值的含义。属性120可以指示这些数据值具有特定特性。例如,属性120可以指示这些数据值包括个人可识别信息(PII)。属性120可以指示该数据字段的数据值与其他数据字段具有特定关系。例如,属性120可以指示该数据字段包括数据库的键值。属性120可以指示由数据值的格式、由数据值本身、由数据字段的名称以及通过对数据字段的数据值与数据集中的其他数据字段的其他值的比较来暗示的字段中的数据值的特定含义。例如,属性120可以指示数据字段的数据值包括出生日期(而不是仅仅是日期或出于一些其他目的的日期)。随后参照图8更详细地描述语义发现***602的语义发现过程。
在一些具体实施中,语义标签(或与标签相关联的属性120)可以与一组字段而不是单个字段相关联。例如,如果一组字段中的字段被确定为分别表示街道名称、街道编号、邮政编码和城市,则语义发现过程可以确定这组字段加在一起表示地址,并且可以将地址属性与该组字段相关联。例如,属性120可以指示所有这些字段应该以组的形式被包括在一组给定数据中(例如,用于针对地址的缺失部分而进行的数据质量检查)。在一些具体实施中,属性120可以指示这些字段加在一起表示PII,但这些字段不单独表示PII。这可以用于数据掩蔽检查。例如,如果数据集中包括所有字段,则数据掩蔽模块108可以确定需要数据掩蔽,其中如果数据集中仅包括这些字段中的一个字段,则不需要数据掩蔽。这也可以用于模式分析,在该模式分析中这些属性指示该组中的每个字段与其他字段相关。其他此类示例可以用于多字段分析,这在下文详细描述。
如图1所示,当数据处理***100用语义标签118来标记字段时,该字段与语义标签的属性120相关联。数据处理设备102的规则模块104、106、108和110使用属性120来确定要应用于数据集的给定字段的规则或要生成以用于数据集的给定字段的规则。数据处理设备102能够以自动地将不同规则应用于每个字段的特有方式处理每个字段的数据。数据处理设备102能够生成用于处理数据集的给定字段的规则。
数据处理设备102的模块104、106、108和110被配置为根据一个或多个处理规则处理输入数据。通常,用于处理数据集的数据值的规则可以包括一个或多个数据处理操作,当数据值处于与特定语义标签相关联的字段中时,对这些数据值执行该一个或多个数据处理操作。该规则可以包括单个操作或多于一个操作的列表。语义标签118可以向数据处理***指示应该要应用于应用程序的给定数据字段的数据值的(例如,规则库的)规则,或者是否应该将任一个规则应用于给定字段的数据值。例如,该规则可以包括对给定字段的每个数据值强加数据要求的数据质量规则。该数据要求可以是对值的格式要求、范围要求等等。该规则可以包括数据掩蔽规则,该数据掩蔽规则要求在下游应用程序可以处理数据值之前将该数据值转换为不同格式。如随后所描述的,许多其他类型的规则也是可能的。
数据处理设备102被配置为从数据词典614和标签索引610接收数据以用于处理输入数据112。数据处理设备102被配置为使用用于若干不同应用程序中的一个或多个应用程序的语义标签118。数据处理设备102包括数据质量规则模块104(也称为数据质量规则模块104)。数据质量规则模块104被配置为基于与字段中的每个字段相关联的语义标签生成用于(例如,输入数据112的)数据记录的字段的数据质量规则。在示例中,可以针对具有第一语义标签的第一字段自动生成第一组数据质量规则(并且该第一组数据质量规则可以用于处理具有第一语义标签的第一字段)。例如,如果第一字段被标记为社会安全号,则数据质量规则模块104可以被配置为生成数据质量规则模型104,该数据质量规则模型可以被配置为生成第一组数据质量规则,该第一组数据质量规则被配置为测试该字段的值是否实际上是有效的社会安全号。在另一示例中,第二字段可以被标记为出生数据字段。数据质量规则模块104可以被配置为生成不同的第二组数据质量规则,该第二组数据质量规则被配置为测试该第二字段的值是否实际上是有效的出生日期(而不是其他日期或其他种类的数据)。关于图2A至图3C进一步详细描述数据质量规则模块104。
数据处理设备102包括测试数据集模块106。测试数据集模块106被配置为生成用于测试数据处理应用程序的测试数据集。通常,为了测试应用程序,使用实际的测试数据来确保该应用程序的所有特征都如预期的那样正在起作用。生成测试应用程序的所有功能的测试数据可能是困难且耗时的,因为可能存在许多需要测试的处理排列、案例结构等。此外,测试数据应该以与真实数据类似的方式起作用,这是因为其应该遵循引用完整性和内部逻辑一致性。例如,测试数据中的链路应该指向也可测试的有效数据。测试数据集模块106被配置为确保测试数据满足这些要求。例如,测试数据集模块106被配置为生成测试数据,其中该测试数据满足引用完整性(例如,指向有效字段的指针)、包括正确数据(例如,如果需要,该测试数据中包括社会安全号字段)、不包括外来数据(例如,测试数据中不需要的字段被排除在该测试数据之外)等等。参照图4A至图5B进一步详细描述测试数据集模块106。
数据掩蔽模块108被配置为生成用于掩蔽输入数据112中的数据字段的规则。数据掩蔽可以用于确保敏感数据(诸如个人可识别信息(PII))被掩蔽,使得数据不再表示数据记录中的真实的人或真正条目。例如,数据掩蔽可以涉及匿名数据记录的字段的值。数据掩蔽可以包括加密特定字段的值。如随后所描述的,许多其他用于掩蔽数据的方法也是可能的。数据掩蔽模块106被配置为使用特定的掩蔽函数来掩蔽字段。可以基于字段的语义标签选择用于该字段的特定掩蔽函数。例如,与字段相关联的语义标签可以指定数据将被掩蔽的方式(例如,指定要用于该字段的掩蔽函数或掩蔽技术)。因此,语义标签不仅可以指定应该被掩蔽的字段,还可以指定该字段应该被掩蔽的方式。
数据集模式分析模块110被配置为识别输入数据112的字段之中的关系,并且根据这些关系确定输入数据112的模式。模式指示输入数据112的结构。例如,输入数据112的模式可以指示字段之中的键值关系、字段对其他字段的依赖性、字段之间和之中的值相关性等等。数据处理设备102的其他模块104、106、108中的一者或多者基于所识别的模式处理输入数据112,包括生成或应用数据质量规则、生成或应用数据掩蔽策略以及生成测试数据集。在一些具体实施中,输入数据112的模式与语义发现***602的过程并行确定。在一些具体实施中,由数据集模式分析模块110使用由语义发现***602生成的语义标签来确定输入数据112的模式。
通常,数据处理设备102从输入数据存储库112接收数据集,并将经处理的数据输出到输出数据存储库114。在一些具体实施中,输入数据存储库112和输出数据存储库114被包括在同一数据存储库中。在一些具体实施中,输入数据存储库112和输出数据存储库114是数据库。由数据处理设备102接收的数据集可以包括数据记录、数据表或其他数据,其中一个或多个值的组与名称或标签相关联。例如,数据集可以包括各自包括一个或多个值的一个或多个字段。每个字段可以包括字段名称。字段名称可以是技术名称、编码名称、业务术语、数值或任何其他值。在一些具体实施中,这些字段不具有字段名称。通常,输入数据112的字段中的一个或多个字段与相应语义标签相关联。每个语义标签指示该字段的语法含义或语义含义,如先前所描述的。
数据处理***100包括参考数据存储库116。参考数据存储库116存储供数据处理***100使用的数据以操作模块104、106、108和110。例如,如果数据质量规则模块104需要来自数据质量规则库的数据质量规则,则数据处理设备102基于下文所描述的标准从参考数据存储库116中检索数据质量规则。参考数据存储库116存储信息诸如在数据掩蔽过程期间使用的掩蔽函数。参考数据存储库116可以存储标签索引610和数据词典数据库614数据。参考数据存储库116可以包括内存数据存储库或永久性数据存储库。参考数据存储库116可以是单个数据存储库或分布式网络的数据存储库。本质上,参考数据存储库116是用于保存数据处理***100的各种过程中使用的数据的地方。
图2A至图7B是各自描述图1的数据处理设备102的数据处理模块的框图。转到图2A至图3C,数据质量规则模块104被配置为使用数据集的字段的语义含义来生成用于数据集的数据质量规则或者将数据质量规则应用于数据集(诸如输入数据112)。字段的语义含义由语义发现***602确定,如先前关于图1所描述的,并且如随后关于图8所详细描述的。
图2A示出了由数据质量规则引擎104的属性分析模块204执行的过程200a。属性分析模块204被配置为确定与具有由数据质量规则模块104处理的值的字段相关联的属性,使得用于该字段的一个或多个数据质量规则可以由模块104生成。属性分析模块204接收数据集201,该数据集包括通过标签索引610与数据词典614的属性相关联的字段。如先前所指示的,语义标签228可以将属性与字段相关联,但是不需要实际标签。为简单起见,后续示例包括用于将由属性指示的语义含义与字段相关联的语义标签,但是在后续示例中的每个示例中,都不需要实际标签(例如,描述性词或术语)。
属性分析模块204确定要针对该给定字段生成数据质量规则或将要应用数据质量规则于该给定字段的给定字段的属性。属性分析模块204被配置为接收(250)数据集201。属性分析模块选择(252)数据集201的字段。在图2A的示例中,所选择的字段218被命名为“SSN”,尽管不要求字段名称。字段“SSN”的值220是“55-555-5555”。
一旦选择了字段,属性分析模块就使用标签索引610来查找(254)标签索引610中的语义标签228。在一些具体实施中,不接收标签,但是接收数据词典数据库614中的条目标识符(或其中属性与所选择的字段相关的一些其他指示符,而不使用标签)。属性分析模块204执行查找(256)以确定与标签228a“社会安全号”相关的属性。此处,属性230与数据词典数据库614中的标签228a相关。然后,属性230被存储(例如,在存储器中)以用于由数据质量规则生成模块104的规则生成模块206或规则应用模块208生成或应用数据质量规则。
转到图2B,在过程200b中,规则生成模块206被配置为基于字段的语义含义(例如,由属性230指示)确定用于该字段的一个或多个数据质量规则。例如,特定属性可以指示可以应用于所选择的字段的一个或多个规则。在该上下文中,属性230可以指示允许值的集合或范围、字段的值与一个或多个其他字段的值的关系(例如,始终大于、始终小于、等于、呈函数关系等等)、数据类型、预期值长度或字段的值的其他特性。例如,如随后所描述的,属性可以指示在该字段中允许的值,以及在该字段中不允许的值。例如,在与字段的标签相关联的属性中指示的给定范围也可以是用于该字段的数据质量规则。然而,与字段相关联的属性和针对该字段生成的规则不一定匹配。例如,用于字段的数据质量规则可能要求不存在重复值或不存在空值,而属性230不需要指示该规则。相反,属性可以指示所选择的字段符合特定要求,但是所生成的数据质量规则不需要执行该要求。
规则生成模块206被配置为接收(260)与字段相关联的属性230。规则生成被配置为基于如先前所描述的属性生成(262)用于所选择的字段的数据质量规则。可以使用属性230的任何组合来生成任何数量的数据质量规则。这些规则可以独立于数据集201的任何其他字段或值而执行对该字段的每个值的要求。例如,数据质量规则214a可能要求与标签“社会安全号”相关联的字段的值的格式具有“XXX-XX-XXXX”的格式,其中X可以是0至9范围的任何数字。该要求是基于每个单独的值的,并且不要求执行进一步分析。在另一示例中,规则214b可以检查值中每个字符的类型,确保所有X值确实为0至9范围的数字,而不是其他字符。在另一示例中,数据质量规则可能要求对整个所选择的字段进行检查。例如,数据质量规则214c要求所选择的字段中的每个值是唯一的。这要求除了当前处理的值之外,还要检查所选择的字段中的值以确定每个值是否唯一。
数据质量规则的其他示例是可能的。在一些示例中,要用于表征一组数据的质量的规则可以指示该组数据中的数据记录的简档的允许属性或禁止属性。简档的属性可以是值或值的范围。当简档包括允许属性时,满足指示该简档的允许属性的规则。字段的可允许属性的示例可以是该字段的最大允许值和最小允许值;如果该字段的平均值落在最大允许值与最小允许值之间,则满足该规则。只要简档不包括禁止属性,就满足指示该简档的禁止属性的规则。字段的禁止属性的示例可以是该字段禁止的值的列表;如果该字段包括这些禁止值中的任一个禁止值,则不满足该规则。
数据质量规则可以指示字段的一个值或多个值与该字段的简档之间的允许偏差。大于由对应规则指示的允许偏差的简档与字段的值之间的偏差可以是对数据集中的数据质量问题的指示,并且因此指示该数据集可能是下游数据集中的现有或潜在数据质量问题的根本原因。在一些示例中,可以将允许偏差指定为值(诸如最大允许值和最小允许值)的范围。在一些示例中,可以将允许偏差指定为与单个值的标准偏差,该单个值可以是平均值(例如,过去数据集中的值的平均值或中值)。
在一些示例中,要用于表征一组数据的质量的规则可以诸如基于字段中的值的有效性指示数据记录的一个或多个字段中的每个字段中的值的允许特性或禁止特性。当字段中的值满足允许特性时,满足指示该字段的允许特性的规则。只要字段中的值不满足禁止的特性,就满足指示该字段的禁止的特性的规则。满足规则的值有时被称为有效值;不满足规则的值有时被称为无效值。字段中的值的各种特性可以被规则指示为允许特性或禁止特性。示例性规则可以指示字段内容的允许特性或禁止特性,诸如允许值范围或禁止值范围、最大允许值、最小允许值,或者允许的一个或多个特定值的列表或禁止的一个或多个特定值的列表。例如,具有小于1900或大于2016的值的birth_year字段可能被认为是无效的。示例性规则可以指示字段的数据类型的允许特性或禁止特性。示例性规则可以指示是否允许或禁止在某个字段中不存在值(或存在空值)。例如,包括字符串值(例如,“Smith”)的姓氏字段可能被认为是有效的,而为空白或包括数值的姓氏字段可能被认为是无效的。示例性规则可以指示同一数据记录中的两个或更多个字段之中的允许或禁止关系。例如,规则可以指定对应于姓氏字段的每个可能值的邮政编码字段的值的列表,并且可以指定不被该列表支持的邮政编码字段和国家字段的值的任何组合都是无效的。
在一些示例中,可以基于对历史数据的分析来生成规则。由规则生成模块206生成的规则可以指示一组数据中的数据记录的简档的允许属性或禁止属性。例如,用于简档的规则可以指示特定数据集的字段的简档与该数据集的字段的确定的历史简档之间的允许偏差。数据集的历史简档可以基于历史数据;例如,历史简档可以是来自前一天的同一数据集的简档、来自多个先前天(例如,过去的一周或月内)的同一数据集的平均简档、同一数据集的寿命平均简档。更一般地,该简档可以保留各种参考信息以利用各种统计分析。例如,该简档可以包括关于值分布的标准偏差或其他指示的信息。出于以下示例的目的,并且在不限制本申请的一般性的情况下,该简档可以包括先前数据集的数值平均值,并且可能还包括标准偏差。
生成的规则可以指示数据记录的字段中的值的确定的允许特性或禁止特性。在示例中,用于字段的所生成的规则可以基于对字段的历史最大值或最小值的分析指示该字段的最大允许值或最小允许值。在示例中,用于字段的所生成的规则可以基于对先前已经针对该字段发生的值的分析指示该字段的允许值的列表。
在一些示例中,采用机器学***均值或预期值收敛到稳定值的时间量。
规则生成模块206被配置为基于待由***处理的数据记录的预期特性生成一个或多个数据质量规则。在特定示例中,源数据是发生在美国的交易的***交易记录。源数据是以一小时增量处理的流式数据。基于针对该字段识别出的属性230和来自应用程序的数据(其指示在处理***交易记录时要执行的操作),用户可以将交易标识符字段、卡标识符字段、国家字段、日期字段和金额字段识别为待建档的关键数据元素。
在源数据是***交易记录的特定示例中,规则生成模块206接收指示国家字段仅存在五十个允许值的属性。如果该组源数据的简档识别到国家字段中多于五十个值,则规则生成模块206可以创建导致警报标记被使用的规则,而不管该组源数据的简档相对于参考的标准偏差如何。规则生成模块206可以接收指示仅在同一天完成的交易的***交易记录的属性,因为该处理应该存在于该组源数据中。如果任何源数据记录具有与该处理日期不匹配的日期,则规则生成模块206可以创建导致警报消息被发送的规则。
在一些示例中,规则生成模块206可以指定通过用户界面生成的一个或多个规则。通过用户界面,用户可以提供对用于一个或多个字段的规则的反馈,或者可以批准用于字段的预先填充的默认规则。对用户界面的进一步描述可以见于2012年10月17日提交的美国专利申请序列号13/653,995,该专利申请的内容整体以引用方式并入本文。用户界面的其他具体实施也是可能的。
在一些示例中,如果在一组数据中(诸如在一组参考数据的新版本中或在一组源数据中)检测到可能的数据质量问题,则将具有该可能的数据质量问题的该组数据的标识符放置在存储在数据库中的根本原因数据集的列表上。如果稍后检测到具有一组输出数据的数据质量问题,则可以查询数据库以识别该组输出数据的上游数据沿袭元素,并且确定那些上游数据沿袭元素中的哪些元素(如果有的话)被包括在根本原因数据集列表上。
在一些示例中,如果在一组数据中(诸如在一组参考数据的新版本中或在一组源数据中)检测到可能的数据质量问题,则可以启用用户通知。在一些示例中,可以存储警报标记以指示数据质量问题。例如,如果在一组参考数据的新版本中检测到可能的数据质量问题,则可以将警报标记连同该参考数据的新版本的简档数据存储在一起。如果在一组源数据中检测到可能的数据质量问题,则可以将警报标记连同该组源数据的简档数据存储在一起。在一些示例中,可以向用户传送警报消息以指示存在可能的数据质量问题。该警报消息可以例如作为用户界面上的消息、图标或弹出窗口;作为电子邮件或短消息服务(SMS)消息;或另一种形式。
在一些示例中,规则可以指定与使用警报标记或警报消息的简档的一个或多个阈值偏差。例如,如果当前一组数据的简档与该组数据的简档之间的偏差很小(诸如在一个标准偏差和两个标准偏差之间),则可以存储警报标记;并且如果该偏差大于两个标准偏差,则可以传送警报消息。阈值偏差可以对每组源数据和参考数据具有特异性。
在一些示例中,诸如如果偏差是严重的(例如与简档相比多于三个标准偏差),则可以停止由数据处理***进行的进一步处理直到用户干预为止。例如,停止将受到具有严重偏差的源数据或参考数据影响的任何进一步处理。可以通过引用受影响的源数据或参考数据的下游的数据沿袭元素的数据来识别要停止的转换。
在一些示例中,自动确定简档数据。例如,可以(例如通过每当确定了一组数据的新简档数据时就重新计算简档数据来)将给定的一组数据的简档数据自动更新为该组数据的过去简档数据的运行历史平均值。在一些示例中,用户可以例如通过对具有期望特性的一组数据进行建档来供应初始简档数据。
继续图2B,数据质量规则214a至c可以被生成一次并与特定语义标签相关联,以便稍后重复使用。并非所有由属性230指示的约束都需要被执行为显式数据质量规则214,尽管如果需要可以做到这一点。相反,针对给定应用程序可以根据需要生成执行约束的一组数据质量规则214。例如,语义标签的属性可以指示具有语义标签的字段的所有数据的长度=9。与属性相关联的数据质量规则可能要求字段的数据值的长度各自恰好为9。长度要求可以在简档216中指定。可以根据该信息生成相关联的数据质量规则。例如,数据质量规则214可以包括指定长度要求1的数据质量规则。规则生成模块可以根据该可用规则并且在查询简档216之后生成数据质量规则,该数据质量规则要求刚好为9个数字的长度。
规则生成模块206生成用于该字段的至少一个数据质量规则。所生成的数据质量规则可以是该字段特有的或者是多于一个字段公用的。数据质量规则可以指示数据集的字段中的值的特征与被包括在字段的简档中的一个或多个特征之间的允许偏差、字段中的一个或多个允许值和字段中的一个或多个禁止值中的一者或多者。
如先前所指示的,数据质量规则模块104被配置为使用与语义标签228相关联的属性自动生成数据质量规则。为此,规则生成模块206将属性中的一个或多个属性转换为逻辑规则。例如,如果属性指示字段的所有值在1与100之间,则可以生成要求所有值在1与100之间的数据质量规则。然而,不必生成此类数据质量规则。例如,与语义标签228相关联的另一属性可以指示字段的每个值的最后一个数字以7结束。因此,可以生成要求值在1与100之间并以7结束的数据质量规则。这些也可以表示为两个不同的规则。在另一示例中,属性可以指示值的特定格式,诸如值具有类似###-##-####的格式,该格式是社会安全号的格式。数据质量规则生成器可以生成要求值遵循该精确格式、该精确格式的部分或共同变化(例如,没有任何破折号的九个数字)的数据质量规则。
语义标签228可以指示该字段的值与另一字段的值的关系。规则生成模块206可以基于这些关系生成数据质量规则。例如,如果该字段是第一字段,并且数据集包括第二字段,则规则生成模块可以被配置为基于该第二字段与该第一字段之间的关系来生成用于该第一字段的数据质量规则。例如,第二字段可以与语义标签相关联,该语义标签指示该字段填充有用户名。数据质量规则可能要求第二字段中的有效名称与第一字段中的每个值相关联以用于使该第一字段通过数据质量测试。可以使用规则214a至c的组合。例如,可以生成指定针对SSN字段,如果格式=###-##-####,并且SSN字段220的每个社会安全号218的值是唯一的,则数据质量规则输出=通过。这组合了三个提议的规则(其也可以称为约束)中的两个规则,包括约束214a和214c。
在一些具体实施中,这些规则可以基于字段的数据值如何随时间变化。例如,可以基于字段中的值的历史趋势选择该字段的简档。在另一示例中,基于识别到字段中的值的历史平均值来确定该字段的简档。
规则生成模块206可以生成用于请求数据质量规则的批准的数据。例如,用户可以在用户界面中批准或拒绝规则。规则生成模块206可以响应于获得指示数据质量规则的批准的批准数据而批准用于应用程序的数据质量规则。在一些具体实施中,不需要批准数据来应用规则。一旦规则生成模块206生成规则(例如,规则214a至c),规则214就存储(264)在数据存储库(诸如数据质量规则数据存储库250)中存储。
转向图2C,在过程200c中,规则应用模块208被配置为基于与接收到的数据相关联的语义含义(诸如通过与使用语义标签228的字段相关联的属性230)将所生成的数据质量规则214应用于接收到的任何数据112。
规则应用模块208被配置为接收(270)数据集201。规则应用程序选择(272)数据集201的字段,诸如被命名为“SSN”的字段218,该字段具有处于表1第1列的数据集中的位置221。规则应用模块208引用(274)标签索引610,并且找到与数据集201中处于表1第1列中的字段相关联的规则。此处,语义标签228“社会安全号”用于表示字段。规则应用模块208访问(276)数据质量规则数据存储库250,并且检索用于被标记为“社会安全号”的字段的数据质量规则214。规则应用模块208将这些数据质量规则应用(278)于字段218的值。在示例中,值555-55-5555通过格式规则、字符限制规则和唯一值规则。通过规则214a至c中的所有规则的结果是PASS。应用模块208将数据质量规则应用程序的结果224存储(280)在输出数据存储库114中。
针对与标签228相关联的字段生成的数据质量规则可以应用于与同一标签相关联的在数据集201的第二实例中或在新的不同数据集中的任何字段。例如,标签228社会安全号标记字段,针对该字段规则生成模块206已经生成一个或多个数据质量规则。所生成的数据质量规则可以应用于具有同一标签228的任何字段,因为这些字段具有相同的语义含义。这也可以是针对跨数据集用标签228标记的不同字段的情况。例如,如果新数据集中的新字段具有标签228社会安全号,则针对数据记录202生成的数据质量规则仍然适用于该新数据集中的该新字段。
上文的这些示例示出了根据单个字段分析生成的规则。还可以基于多表(例如,多字段)分析生成规则。转到图3A,在一个方面,可以基于多个字段或数据记录(诸如数据记录202和203)之间的关系生成数据质量规则。字段之间的关系可以指示第二字段的值对第一字段的值的依赖性或第一字段的值对第二字段的值的依赖性。在一个方面,该关系可以指示第一字段的值与第二字段的值之间的相关性。在一些示例中,数据质量规则模块104通过获得确认关系的验证数据来验证字段之间或之中的关系。该验证数据可以是用户输入或基于相关字段的语义标签的属性。例如,在规则生成期间,可以针对第一字段和第二字段的值的阈值数量来验证关系以测试所生成的规则。例如,如果第一字段和第二字段各自包括数值,则确定第一字段与第二字段之间存在关系可以包括:确定将第一字段的值与第二字段的值相关联的数值函数。在一些具体实施中,所生成的数据质量规则可能要求一个或多个允许值对应于满足数值函数的值,并且其中一个或多个禁止值对应于不满足该数值函数的值。
在与关于图2A所描述的过程200a类似的过程300a中,属性分析模块204确定要针对该给定字段生成数据质量规则或将要应用数据质量规则于该给定字段的给定字段的属性。属性分析模块204被配置为接收(282)数据集201。属性分析模块选择(284)数据集201的字段。在图3A的示例中,所选择的字段218被命名为“SSN”,尽管不要求字段名称。字段“SSN”的值220是“55-555-5555”。
一旦选择了字段,属性分析模块就使用标签索引610来查找(286)标签索引610中的语义标签228。在一些具体实施中,不接收标签,但是接收数据词典数据库614中的条目标识符(或其中属性与所选择的字段相关的一些其他指示符,而不使用标签)。属性分析模块204执行查找(288)以确定与标签228a“社会安全号”相关的属性。此处,属性230与数据词典数据库614中的标签228a相关。然后,属性231被存储(例如,在存储器中)以用于由数据质量规则生成模块104的规则生成模块206或规则应用模块208生成或应用数据质量规则。在该示例中,属性231指示(例如,记录202的)表1的被命名为“SSN”的字段218引用(在记录203中的)表2的被命名为“用户ID”的字段。数据质量规则生成模块206可以使用该信息(其可以在模式分析期间发现,关于图7A至图7B所描述的)来基于记录202、203的字段之中的关系生成数据质量规则。
图3B示出了由模块206生成数据质量规则的过程300b,类似于图2B的过程200b。数据质量规则可以由规则生成模块206配置,以基于(例如,记录203的)第一字段的值执行对(例如,记录201的)第二字段的值的约束。例如,确定第一字段与第二字段之间存在关系可以包括:确定第二字段的值包括由第一字段的值引用的键值。数据质量规则生成模块206被配置为生成数据质量规则,该数据质量规则被配置为要求第二字段的每个值是有效键值。
规则生成模块206可以被配置为通过由***602执行的语义发现过程的输出或通过关于图7A至图7B所描述的模式分析来确定第一字段与第二字段之间存在关系。在示例中,可以使用由机器学习过程配置的至少一个分类器来确定记录202、203的字段之中的关系。例如,用于确定字段的语义标签的一个或多个测试(随后描述)也可以确定字段之中的关系。字段之中的关系被包括在与这些字段中的每个字段的语义标签相关联的属性231中。例如,这些属性可以指示确定字段的语义标签指示该字段包括数据集的主键值。在示例中,规则生成模块206配置数据质量规则以要求主键值各自在字段中是唯一的。
继续图3B,示出了使用多表分析由规则生成模块206生成的示例性数据质量规则233。如先前所描述的,属性231包括多表约束,不同于关于图2A至图2C所描述的单字段约束。由属性分析模块204分析多个记录202和203,以确定与记录202、203相关的多表属性231。在一些具体实施中,由数据集模式分析模块110执行的模式分析(随后关于图7A至图7B所描述的)用于确定多表属性231。类似于属性230,多表属性231可以在关于图8所描述的语义发现过程期间确定。规则生成模块206以与先前参照图2A所描述的该规则生成模块使用属性230的方式类似的方式使用多表属性231。
多表约束(在该示例中,属性231)由规则生成模块206找到。多表约束可以包括应用于多个字段的任何约束。根据从多表属性231确定的多表约束,规则生成模块206可以被配置为生成检查多个字段之间和之中的关系的数据质量规则233b。此处,多表属性231示出了SSN字段引用用户ID字段。规则生成模块206生成数据质量规则233b。例如,数据质量规则233b检查以确定与所选择的字段相关的用户ID字段中是否存在对应值(针对所选择的字段的每个值)。该数据质量规则233b要求确定对应的用户ID字段与所选择的字段相关,并且每个值在该用户ID字段中具有对应的现有值。如果用户ID字段中不存在值,则用于SSN字段的数据质量规则233失败。
该示例性规则仅检查相关字段中的值的存在。然而,更复杂的多表数据质量规则是可能的。例如,规则生成模块206可以针对SNN字段中的每个值进行检查以查看用户ID字段中是否存在有效的对应用户ID。这可以通过检查与用户ID字段相关联的数据质量规则来完成,诸如ID在给定数值范围内是唯一的等等。如果应用于用户ID字段的任何数据质量规则失败,则在该示例中,用于SSN字段的数据质量规则也失败。
在图3C中,示出了应用多字段数据质量规则233b的过程300c。针对包括555-55-5555的SSN字段的值,由规则应用模块208对用户ID字段执行检查。规则应用模块208被配置为接收(271)包括表1的记录202。规则应用程序选择(273)数据集202至203的字段,诸如被命名为“SSN”的字段218,该字段具有处于表1第1列的数据集中的位置221。规则应用模块208引用(275)标签索引610,并且找到与在数据集201中处于表1第1列中的字段相关联的规则。此处,语义标签228“社会安全号”用于表示字段。规则应用模块208访问(277)数据质量规则数据存储库250,并且检索用于被标记为“社会安全号”的字段的数据质量规则214。规则应用模块208将这些数据质量规则应用(279)于字段218的值。在示例中,值555-55-5555通过格式规则233a、字符限制规则和唯一值规则。
当应用包括多字段要求的第二数据质量规则233b时,规则应用模块208访问第二字段并检查该字段以便应用规则233b。在该示例中,因为数据记录203的表2中的对应用户ID字段的值是<空>,示出了不存在用户ID,所以规则233b失败。因此,尽管字段202通过了所有单个字段数据质量规则,但该字段没有通过多表数据质量规则233b。与仅仅检查每个单独的字段相比,这可以更清楚地向用户示出***是如何失败了数据质量检查的。通过规则233a至b至c中的所有规则的结果是FAIL。应用模块208将数据质量规则应用程序的结果224存储(281)在输出数据存储库114中。
针对与标签228相关联的字段生成的数据质量规则可以应用于与同一标签相关联的在数据集201的第二实例中或在新的不同数据集中的任何字段。例如,标签228社会安全号标记字段,针对该字段规则生成模块206已经生成一个或多个数据质量规则。所生成的数据质量规则可以应用于具有同一标签228的任何字段,因为这些字段具有相同的语义含义。这也可以是针对跨数据集用标签228标记的不同字段的情况。例如,如果新数据集中的新字段具有标签228社会安全号,则针对数据记录202生成的数据质量规则仍然适用于该新数据集中的该新字段。
如先前所描述的,可以根据与该字段相关联的属性231生成其他数据质量规则。例如,属性可以指示值基于对应字段的值,诸如字段中的值的平均值、值的最大长度、值的最小长度、值的数据类型和值的格式中的至少一者。例如,字段中的一个或多个允许值或禁止值与标记该字段的字段名称相关联。例如,该字段中的一个或多个允许值或禁止值是基于数据集中的第二字段中的值而确定的,该第二字段与数据集的第一字段相关。例如,该一个或多个允许值或禁止值基于第二字段中的值和第一字段中的值的组合。
图4A至图4B示出了使用***602的语义发现过程的结果来生成测试数据的过程400a和400b。测试数据由测试数据集模块106生成。测试数据集模块106包括测试处理模块304和测试数据生成模块306。
图4A示出了测试处理模块405,其被配置为从数据集(例如,数据集401)生成测试数据,以用于使用数据集字段的语义含义来测试应用程序的逻辑。语义含义由属性430表示,并且在一些方面由语义标签表示,如先前所描述的。测试数据集模块106被配置为生成用于应用程序的一组测试数据。生成测试数据,使得其表示待由应用程序处理的真实数据,测试应用程序尽可能多的功能(例如,应用程序的所有功能),并且使得测试数据有效(例如,所有键均有效、字段包括有效值等等)。可以基于数据集401的字段中的每个字段的语义含义执行对待包括在测试数据中的字段的选择以及对测试数据的验证。
通常,为了生成测试数据,测试数据集模块106接收(402)数据集401,该数据集包括用语义标签标记的字段(或以其他方式与指示数据集401的字段中的每个字段的语义含义的属性430相关联的字段)。在该示例中,测试处理模块405选择(404)数据集401的一个或多个字段,诸如被命名为“SSN”的字段418,其包括为“12-22-1960”的值420。测试处理模块405执行对索引610中的语义标签428的查找(406)。响应于检索语义标签428,找到标签428a作为标记字段418。标签428a的属性430由测试处理模块405接收(408)。属性430指示字段418包括数字字符,该数字字符具有10个数字和MM/DD/YYYY格式。
一旦接收到属性430,测试处理模块405从测试配置数据存储库403检索(410)测试配置数据407。测试配置数据存储库403可以与待测试的应用程序相关联。测试配置407包括对待生成的测试数据的要求的说明书。例如,测试配置407可以包括要忽略的字段的列表。要忽略的字段可以基于该字段的语义含义,因为应用程序在接收到数据集401之前可能不具有指示字段名称的数据。例如,当生成测试配置407时,为了测试,用户可以指定应该忽略的社会安全字段。测试数据集模块106可以确定表示社会安全号的字段,并从测试数据中移除那些字段。这可以减少测试数据的数据占有空间,从而节省存储空间。在另一示例中,测试配置数据407可以指示测试数据中的社会安全号应该是特有的。测试数据集模块106可以找到数据集401的表示社会安全号的字段,并在字段中移除重复条目以减小测试数据大小。在另一示例中,测试配置数据407可以指示应该为键值的字段以及它们应该指向其他数据集中的哪些字段。测试数据集模块106可以执行所生成的测试数据中的结构,如随后所描述的。在测试配置数据407中可以包括任何其他类似的要求,并且这些要求可以包括模式要求、数据质量要求、字段包括要求等等。
在执行测试配置数据407的查找(410)之后,测试处理模块405基于识别到的这些字段中的每个字段的语义含义执行在测试配置数据中指示的对数据集401的字段的要求。例如,图4A中的要求412包括忽略数据集401中的出生日期字段并且执行特有的社会安全号的要求。测试处理模块405将属性430与测试配置数据407的要求412相关联。
在一些具体实施中,语义标签428的属性430可以包括具有语义标签的字段与具有另一特定语义标签的另一字段应该具有的关系。例如,标记为“出生日期”的字段418的属性430可以指示给定数据条目的出生日期字段的值在时间上应该始终比标记为“注册日期”的字段中的另一值更早。语义标签428的属性430可以指示字段的数据值的格式、允许的值(例如,属性可以引用包括字段的所有可能值的查找表)。属性430可以指示字段的值、字段的值的预期范围和字段的数据值的其他此类特征的共同程度。在测试生成过程400b期间使用属性430。
图4B示出了由测试数据生成模块415生成测试数据422的过程400b。测试数据生成模块415接收(440)与所选择的字段相关联的属性430。如果适用,测试数据生成模块415还可以确定在先前测试中处理规则处理字段的方式(如果适用)。例如,可以接收指示对用语义标签428标记的字段执行处理规则的次数的处理规则数据。在一些具体实施中,在测试配置数据407中指示该数据。在一些具体实施中,例如,如果尚未在先前测试中测试字段,则可以从测试数据中移除该字段。
测试数据生成模块415接收(442)测试配置数据407并且基于测试配置数据407和属性430的要求生成(446)测试数据。在示例中,包括在SSN字段418中的两个值各自是唯一的并且符合测试配置数据407的格式要求412。SSN字段中的这两个值是与第一用户ID值(值1)相关联的“555-55-5555”和与第二用户ID值(值2)相关联的“666-66-6666”。测试数据生成模块415将测试数据422存储(448)在测试数据数据存储库450中,以供一个或多个应用程序使用。
在一些具体实施中,测试配置数据407可以指示用于测试数据422的子集规则。在该示例中,一旦识别出属性430,测试数据生成模块415就接收属性值和处理规则数据,并且确定应该应用于该字段的子集规则。测试数据生成模块415基于字段的语义标签428确定用于该字段的子集规则。子集规则指示字段的所有值或一部分值是否应该包括在测试数据中,以用于测试应用程序。例如,特定语义标签可以用于确定字段的值是否将可用于在给定测试中进行测试或者在测试期间是否应该忽略该字段。例如,当测试应用程序时,可以忽略对特定应用程序不感兴趣的字段。如先前所描述的,语义标签与数据词典中的一个或多个属性相关联。属性指示字段应该具有的特性。例如,这些属性加在一起可以指示该数据的字段的真实世界含义。当配置测试时,用户可以指示与较大数据集相关的真实世界数据以用于测试。当接收到数据集时,测试数据集模块106可以自动选择相关字段并忽略非相关字段。
测试数据生成模块415基于语义标签428的属性选择子集规则。在一些具体实施中,子集规则可以与语义标签428直接相关联。例如,子集规则可以基于包括在配置数据407中的值,指示测试数据中是否应该包括特定字段或不包括特定字段。例如,如果配置数据407指示对字段进行的操作的执行计数低于阈值数量,则可以从测试数据中移除该字段。
其他数据可以包括在配置数据407中。例如,数据407可以指定如果字段没有通过一个或多个数据质量规则测试中,则可以从测试数据中移除该字段。例如,可以从该字段中移除字段中的空值、具有以错误格式存在的数据的值或其他此类数据。在另一示例中,如果属性430指示字段包括PII,则可以从测试数据中移除该字段。在另一示例中,可以从测试数据中移除落入特定范围之外的值。在另一示例中,如果字段包括若干类别,每个类别具有复制值,则子集规则可以提取具有唯一值的一组数据记录。在表示对用于***的可能的测试输入的完整选择的情况下,确保测试数据具有尽可能少的重复值,这确保了测试数据的占有空间尽可能小。
在一些具体实施中,测试数据生成模块415可以选择子集规则中的一个或多个子集规则以用于将其应用于字段。可以由用户(例如,通过用户界面)验证子集规则的选择。子集规则的选择可以是针对任何目标,但是通常目标是生成测试数据集422,该测试数据集在具有尽可能小的数据占有空间的情况下提供对所测试的应用程序的完整操作覆盖范围。因此,选择子集规则以从数据集中移除外来值,诸如重复值、错误值、错误格式值等等。在一些具体实施中,可以将所选择的子集规则的列表发送到输出数据库114或测试配置数据存储库403。
在一个方面,可以将测试数据422发送到数据处理应用程序,该数据处理应用程序包括被配置为对测试数据集的字段的值进行操作并且生成至少一个输出值的处理规则,该字段用标签提议标记。测试数据集生成模块被配置为获得指示结合处理第一数据集执行处理规则的次数的执行信息。在处理第一数据集期间,处理规则是否由数据处理应用程序执行可以直接或间接地取决于具有标签提议的字段的值。可以基于指示结合处理第一数据集执行处理规则的次数的执行信息确定子集规则。在该示例中,子集规则包括对数据集的字段的识别。例如,子集规则可以将字段识别为数据集的键字段,其包括数据集的数据元素的至少一个键值。在一些具体实施中,数据集的数据记录的子集包括具有键值的数据记录,这些键值带有预先确定的值。在一些具体实施中,子集规则识别对应于标签提议的键字段名称列表。子集规则通过将字段的标签提议与键字段的列表进行比较,来将该字段识别为键字段。
在一个方面,如先前所陈述的,当数据集的字段包括个人识别信息(PII)时,子集规则生成模块可以生成被配置为用于选择不包括PII信息的数据集的数据记录的子集的子集规则。另选地或除此之外,当数据集的字段包括个人识别信息(PII)时,测试数据集生成模块可被进一步配置为将掩蔽函数应用于该PII以生成掩蔽数据,并且选择包括该掩蔽数据的数据集的数据记录的子集。
图5A至图5B示出了过程500a和500b,其中测试数据集模块106被配置为验证测试数据422正确地表示用于测试给定***的真实数据,该真实数据可以包括对测试数据422的模式的验证。例如,应用程序可以期望在操作期间某些种类的数据。因此,测试数据应该近似于待由应用程序处理的真实数据。为了生成近似于真实数据的测试数据,测试处理模块405接收(452)数据集401并且选择(454)字段418和该字段的值420。用被称为社会安全号的语义标签428标记字段418。模块405接收(456)标签并且检索(458)描述字段418的属性430。测试处理模块405根据语义标签428将属性430与SSN字段相关联。属性430可以指示真实生活数据中的字段的特性。例如,将实际社会安全号与真实的人联系在一起,可以在用户ID表中表示该真实的人。在这种特定情况下,所有实际的社会安全号均与真实的人相关联,但是并非所有真实的人都具有社会安全号。测试数据生成模块408被配置为生成满足这些度量的测试数据表。
处理模块405从测试配置数据存储库403中检索(460)模式数据409。可以在语义发现过程(关于图68所描述的)期间或之后通过数据集模式分析模块110(参考图7A至图7B所描述的)来确定模式数据409。模式数据409可以指示数据集中哪些字段是关联键、哪些字段是主键、哪些字段是外键等等。例如,模式数据409可以包括为键的字段名称。因此,测试数据集模块106被配置为生成具有参考价值的测试数据,因为其如预期的正确引用测试数据中的其他表格。更具体地,如果在真实数据中,具有社会安全号的表包括对用户ID表的引用,则测试数据集生成模块被配置为生成具有字段的社会安全号的表,该字段包括正确指代数据集中的现有用户ID表的键。当应用程序使用测试数据时,该测试数据近似于该应用程序预期的真实数据。正在测试应用程序的用户可以确定处理测试数据的结果中的错误是应用程序本身中的错误导致的结果,而不是测试数据中的错误。
图5B示出了通过测试数据验证模块417来验证测试数据的过程500b。验证模块417验证测试数据423是否满足模式规则409。测试数据423包括表411和413,已经根据表402和403更新了这两个表以移除表中的重复的或不正确的值和记录。例如,表402包括条目402a至c,每个条目都包括外键,该外键引用表403中的对应条目403a至c的主键。然而,如图5A所示,表403的主键与为键“BBB”的条目重复。另外,针对条目402a/403a的SSN 444-44-4444,存在缺失的用户ID。测试数据生成模块415从表402、403中移除条目402a和403a,并且将条目403c的键值校正为“CCC”而不是“BBB”,使得满足测试配置数据407的主键要求(例如,每个主键是唯一的)。对于通过模块417进行的验证,表413的主键被验证为有效的,并且表411和413的所有条目被验证为包括有效用户ID值。经验证的测试数据423存储(470)在测试数据集数据存储库450中。
参考图6A至图6C,示出了通过数据掩蔽模块108来掩蔽数据的过程600a、600b和600c。数据掩蔽模块108被配置为确定数据集501(例如,来自输入数据112)的哪些字段应该被掩蔽,并且如果确定了应该被掩蔽的字段,则确定将哪些掩蔽函数应用于那些字段。数据掩蔽模块108使用数据集501的属性530和语义标签528来将掩蔽函数与字段相关联。
通常,为了生成掩蔽数据,数据掩蔽模块108的属性分析模块504接收(550)包括具有值(例如,值520)的字段(例如,字段518)的数据集501。属性分析模块504选择给定字段,诸如字段518。然后,属性分析模块在索引610中检索(554)相关联的语义标签,并且确定从数据词典数据库614中要检索(556)的属性530。
语义标签528存储在数据词典中,该数据词典将每个可用的语义标签与其属性530相关联。当标记字段时,语义标签528选自数据词典,并且该字段与该语义标签的属性530相关联。存储索引,该索引指示针对数据词典的每个语义标签528,字段与由数据处理设备102处理的数据集中的语义标签(如果有的话)相关联。
每个语义标签528与指示该语义标签的语义含义的一个或多个属性530相关联。语义标签528的属性530可以包括具有语义标签的字段与具有另一特定语义标签的另一字段应该具有的关系。例如,标记为“出生日期”的字段的属性530可以指示给定数据条目的出生日期字段的值在时间上应该始终比标记为“注册日期”的字段中的另一值更早。语义标签528的属性530可以指示字段的数据值的格式、允许的值(例如,属性可以引用包括字段的所有可能值的查找表)。属性530可以指示字段的值、字段的值的预期范围和字段的数据值的其他此类特征之间应该具有的共同程度。
属性指示掩蔽字段应该具有的特性。例如,这些属性加在一起可以指示该数据的字段的真实世界含义。当掩蔽数据时,用户可以指示与掩蔽相关的真实世界数据。当接收到数据集时,数据掩蔽模块108可以自动选择相关的字段以用于掩蔽,并且忽略非相关字段。
数据掩蔽模块108基于字段的属性530确定用于该字段的掩蔽函数。掩蔽函数指示针对给定应用程序,是否应该掩蔽字段的所有值或一部分值。例如,特定语义标签可以用于确定字段的值是否包括PII或者在掩蔽期间是否应该忽略该字段。例如,包括名称的字段的值可以被加扰、混合,使得它们与不同索引相关联或以其他方式匿名化以用于后续的应用程序。
图6B示出了过程600b,通过该过程掩蔽模块506将掩蔽函数应用于数据集501的字段。一旦接收(560)到属性530,掩蔽模块506就被配置为基于这些属性获得(562)掩蔽函数。属性530值可以指示字段518应该被掩蔽,以及应该如何掩蔽该字段。例如,掩蔽函数列表可以由属性引用,或者可以指示特定的掩蔽函数。在一些具体实施中,属性530可以仅指示所选择的字段的数据包括PII,并且掩蔽模块506确定掩蔽字段的值的方式。在一些具体实施中,掩蔽函数基于一组字段,使得当字段一起呈现时将掩蔽函数应用于一组字段中的一个或多个字段。在仅当字段一起呈现时显示出PII的情况下,可能发生这种情况,但是当单独呈现任何字段时不会发生这种情况。
数据掩蔽模块108可以使用一个或多个掩蔽函数514以用于掩蔽数据。掩蔽函数514a至c可以包括改组字段中的值、用另选值替换字段中的值、对字段中的数值应用方差、加密函数、删除掩蔽值或其他掩蔽函数。在一些具体实施中,掩蔽函数可以与先前所描述的测试数据集生成和/或数据质量过程组合,使得掩蔽数据是有效的测试数据以及/或者仍然符合用于字段的一个或多个数据质量规则。可以使用字段的语义标签528来使这些过程的不同要求相关。
掩蔽模块506确定(564)应该应用于字段的掩蔽函数(如果有的话)。所选择的函数514a和所选择的字段被存储(566)在掩蔽函数数据存储库590中。因此,当接收到用于掩蔽的字段518的示例时,掩蔽应用模块508可以确定要使用的掩蔽函数以用于掩蔽,或者可以确定已经使用了这些掩蔽函数中的哪一种掩蔽函数(以便在适用时解掩蔽数据)。
图6C示出了掩蔽应用模块508,该掩蔽应用模块在过程600c期间被配置为根据与接收到的数据集501的字段相关联的掩蔽函数来掩蔽或解掩蔽数据。掩蔽应用模块508被配置为接收(570)数据集501。掩蔽模块508选择(572)在数据集510中具有位置520的字段(例如,字段518)。模块508查找(574)索引610中的语义标签,并且确定与字段518相关联的属性530。属性530指示要使用的掩蔽函数,如掩蔽函数数据存储库590中所表示的。模块508从数据存储库590中检索(576)掩蔽函数数据516,并且将掩蔽函数应用(578)于字段518的字段值。例如,函数F(x)将为“555-55-5555”的字段值521转换为掩蔽值522,该掩蔽值为“W2YSQP4LKED”(或另一值,取决于所使用的掩蔽函数)。模块508将掩蔽的掩蔽结果524存储(580)到输出数据存储库114。
在一个方面,数据掩蔽模块108被配置为确定具有语义标签的字段与具有不同语义标签的第二字段之间存在关系。响应于确定存在关系,规则应用模块408执行数据掩蔽函数以将第二字段中的值转换为掩蔽值。在一些具体实施中,可使用与用于掩蔽第一字段的函数不同的函数来掩蔽第二字段。
在一个方面,确定存在关系包括:确定第一标签和第二标签与公共数据源相关联。例如,公共数据源可以包括用户简档。该关系可以指示第二字段的值对第一字段的值的依赖性或第一字段的值对第二字段的值的依赖性。在一些具体实施中,该关系指示第一字段的第一值与第二字段的第二值之间的相关性。在又一示例中,该关系包括算术函数。掩蔽模块508可以被配置为基于关系的类型选择数据掩蔽函数的类型。先前所描述的数据掩蔽函数的类型可以包括改组函数、数据加密、字符加扰和数据取代中的一者或多者。
在一个方面,模块508可以被配置为用于扫描数据集501以确定至少一个其他字段的一个或多个特定值是否被转换为掩蔽值。在一些具体实施中,模块508可以被配置为针对包括数值的数据集的第一字段来选择掩蔽函数,并且其中针对包括非数值的数据集的第二字段来选择不同的第二掩蔽函数。
图7A至图7B示出了基于与数据集的字段相关联的语义标签确定数据集701的模式的过程700a至700b。数据集模式分析模块110被配置为确定该数据集的模式。例如,数据集模式分析模块110被配置为确定是键值或索引的字段、确定这些字段彼此引用的方式等等。
通常,为了确定数据集的模式,属性分析模块704接收包括一个或多个表701a至b和用语义标签标记的字段的数据集701。数据集模式分析模块110基于表701a至b的字段的语义标签确定诸如SSN字段和索引字段,包括字段的值之间和之中的关系。数据集701的模式可以指示哪些字段是索引以及哪些值指代数据集内的其他值。该信息可以用于下游应用程序,诸如用于合并数据集、转换数据集以用于存储在数据仓库中等等。如先前所描述的,语义标签与数据词典614中的一个或多个属性相关联。属性730指示字段应该具有的特性。例如,属性730加在一起可以指示该数据的字段的真实世界含义。当确定数据集的模式时,用户可以指示与模式相关的真实世界数据。当接收到数据集时,数据集模式分析模块110可以自动选择相关的字段作为索引,并且忽略非相关字段。
在一个方面,分析模块705接收(702)包括数据集的字段的数据记录701。每个字段通常包括字段名称和一个或多个数据值。针对特定字段718,模块705选择(704)字段并确定(706)与该字段相关联的语义标签728。对于数据集,可以通过使其处于公共数据记录中来使不同字段的值相关。数据记录可以是数据集中的表的行,或者可以简单地是来自字段中的一个或多个字段的数据值的集合。以下关于图8描述了确定用于字段的语义标签728的步骤。
模块705确定(708)字段718的属性730。属性730可以指示社会安全号与用户ID字段之间的关系。模块705将数据集中的发现关系发送到模式更新模块508。
图7B示出了使用模式更新模块707来确定或更新数据集的模式的过程700b。模块707可以更新数据集的值以符合属性730中引用的模式。在一些具体实施中,模块707更新描述了特定数据集701的模式以明确地包括其字段之间和之中的发现关系。模块707接收(712)数据集701的属性730,并且通过基于由属性730给定的信息扫描字段来确定(714)关系。例如,模块707可以确定表1的键字段指向数据701中的表2的索引字段。模块707更新(716)描述了数据集701的模式以包括具有模式数据735的该关系。例如,该模式数据可以指示“表2的索引字段是主键。键字段是针对表2的表1的外键。”所生成的模式735存储(721)在模式数据存储库750中。下游应用程序可以访问数据存储库750以用于使用模式数据735。
在一个方面,模式更新模块707被配置为基于模式数据生成数据流图。该数据流图可以基于模式数据735中的关系对数据集进行操作。例如,模式更新模块可以被配置为用于生成关联函数,该关联函数被配置为基于键值将第一数据集与第二数据集关联。
参考图8,示出了用于通过分析从数据字段的数据生成的数据简档来发现、分类和标记数据字段的联网***600。联网***600包括执行***602、一个或多个数据源612、参考数据库216、开发环境620和生产环境614。执行***602被配置为从联网***600中的数据源612a、612b(统称为数据源612)接收源数据。执行***602被配置为对从数据源612接收到的源数据进行建档以生成表示数据源612的源数据的数据简档。执行***602被配置为分析该简档数据以发现、分类和标记源数据的部分。更具体地,执行***602使用该简档数据来对源数据的部分进行分类。对源数据进行分类包括将概率与源数据的部分相关联。该概率指定源数据的部分对应于由执行***602知道的标签的可能性。执行***602被配置为自动或响应于用户输入,用一个或多个标签标记源数据的部分。可以迭代对源数据的发现、分类和标记以改进源数据的分类并提高标记源数据的准确性。源数据的标签包括与该源数据相关联的元数据。一旦完成对源数据的发现、分类和标记,就将标签加载到生产环境614中以供一个或多个下游应用程序使用。语义发现过程在全文以引用方式并入本文的于2020年2月19日提交的标题为“Discovering a Semantic Meaning of Data Fields From ProfileData of the Data Fields”的美国专利申请序列号16/794,361中被详细描述。
数据源612的源数据可以包括若干不同种类的数据。在一个示例中,数据源612的源数据包括具有数据字段的表格。执行***602被配置为发现、分类和标记表格的数据字段。例如,执行***602分析源数据的每个发现字段的数据内容并且确定数据字段的数据内容正表示出的内容。执行***602通过将数据字段与已知标签相关联(例如,通过为其分配概率值)来对每个数据字段进行分类。可以将表格的所标记的数据输出到数据存储装置614,该数据存储装置可以供用于对标记数据进行操作的其他应用程序和***访问。随后详细描述了发现、分类和标记数据表的数据字段的过程。数据源612可以包括任何类型的计算***。例如,数据源612可以包括从第三方、数据湖、个人计算机、高规模网络供应的主机、数据库、非结构化数据等等。
在本公开中,将发现、分类和标记数据表的数据字段的过程用作示例以示出执行***602和联网***600的功能。然而,虽然数据字段是执行***602被配置为发现、分类和检测的某物的一个示例,但是执行***602可以对其他类型的数据进行操作。例如,执行***602从应用程序接收应用程序数据。执行***602被配置为发现、分类和标记该应用程序的不同数据。该数据可以包括被存储和访问以用于操作应用程序的不同文件。执行***602可以用于发现由应用程序存储的PII、发现恶意软件、对应用程序文件的改变等等。在另一示例中,执行***602可以分析存储在文件***(例如,在个人计算机上)中的文件。执行***602可以扫描文件***以识别由用户定义的特定文件子集。例如,用户可能希望在重新格式化家用计算机之前从该家用计算机移除工作文件。执行***602可以被配置为扫描该家用计算机的文件***并且标记所有工作文件。执行***602可以被配置为标记数据主体权利(诸如用于忘记、数据擦除、主体访问请求、数据校正请求、数据暂停、数据迁移和同意的权利)的数据。许多其他应用是可能的。
为了发现、分类和标记源数据的部分(诸如数据字段),执行***602被配置为访问一个或多个文件618的参考数据库216。文件618向执行***602提供用于执行对源数据的发现、分类和标记的上下文。在一些具体实施中,参考数据库216可以存储查找表,该查找表存储在数据字段的条目中找到的值之间的关系。例如,数据存储装置可以包括将代码与术语表匹配的查找表,该术语表可以在发布、分类和标记源数据期间由执行***602引用。参考数据库216的文件618可以包括用于分类的权重值。例如,权重值可以针对被标记的源数据612向执行***602指示两个术语(例如,业务术语)彼此相关的概率。这些值可以在发现、分类和标记源数据618的初始迭代期间生成,并且在随后的迭代期间由用户更新或自动更新。
在迭代过程中,可以在由执行***602发现、分类和标记源数据之前,在发现、分类和标记期间或者在发现、分类和标记之后定义文件618。联网***600的开发者环境620可以提供通过其使用户可以写入参考数据库216或者更新数据存储装置的文件618的手段。例如,开发环境620可以包括向执行***602的用户提供反馈的用户界面。例如,开发环境620的用户界面可以显示示出了执行***602如何执行的报告,诸如被标记的数据字段以及由执行***602进行的每个分类的概率。随后详细描述了提供给用户的反馈和用户界面的示例。
通常,执行***602包括一个或多个处理器,该一个或多个处理器被配置为执行简档数据模块604、分类模块605、测试模块606、结果证实模块608和加载数据模块660的逻辑。简档数据模块604、分类模块605、测试模块606、结果证实模块608和加载数据模块610中的每一者的操作可以通过批处理来执行或者实时执行。另外,执行***602可以大致同时或在不同时间段期间执行模块604、605、606、608、610中的每一者的操作。例如,在一些具体实施中,简档数据模块604在第一时间生成表示来自数据源612的源数据的简档的简档数据。在稍后的时间,一旦给定时间段内的来自数据源612的所有数据已经由简档数据模块604进行了建档,分类模块605、测试模块606、结果证实模块608和加载数据模块610就可以分析简档数据以发现、分类和标记源数据的数据字段,并将数据加载到参考数据库216中,以用于一个或多个下游应用程序,如先前关于图2A至图7B所描述的。
简档数据模块604被配置为接收源数据(例如,表格、文件等)并且生成源数据的数据简档。简档数据模块604发现源数据(例如,一个或多个数据集)的字段。简档数据模块604可以通过识别源数据中的表格的行、找到字段名称、找到字段的引用或使用任何类似的过程来发现字段。简档数据模块604确定数据字段的统计属性并且生成包括那些统计属性的简档数据。简档数据识别源数据中的模式。更具体地,简档数据包括关于源数据表格的数据字段值的统计数据。例如,简档数据可以包括指定数据字段的数据值是否包括数值数据、字符串等的信息。例如,关于数据值的统计数据可以包括被包括在每个数据字段中的值中的最大值、最小值、标准偏差、平均值等等(如果该数据是以数字表示的)。在一些具体实施中,关于数据的统计数据可以包括数据值的每个条目中的数字或字符多少。例如,数据简档可以指示数据字段的每个数据值包括七个(或十个)数字,这可以提供指示该数据字段包括电话号码的上下文提示。例如,数据简档可以指示数据字段的每个条目包括来自较小的一组值的值,该值可以用于触发通过测试模块606进行的与查找表的比较。
简档数据模块604的数据摄取包括分析字段的字段名称、字段在表(或文件***中的文件)中的位置以及对数据的模式的分析。换句话说,数据摄取发生在字段水平、数据集水平和模式水平。
对于字段水平,简档数据模块604分析字段的值和字段的条目以生成简档数据。简档数据模块604可以确定对于特定数据类型,字段的值或字段的条目是否为空、空白、有效等等。简档数据可以包括关于空百分比、空白百分比和每字段的值百分比的统计数据。简档数据模块604还可以生成数据,该数据指示这些百分比与基线百分比(其可以由用户通过开发环境指定或自动生成)相比的变化。在另一示例中,简档数据可以包括对于隐式数据类型条目的数据是否有效的指示。例如,如果已知数据字段是字符串字段,但是找到的是日期数据,则可以推断该数据对于该条目无效。在另一示例中,简档数据可以包括对条目的数据对于指定格式(例如,要求两个小数位,但是未指定明确类型)有效的指示。在一些具体实施中,在生成简档数据之后,由测试模块606执行该功能中的一些功能。
对于数据集水平,简档数据模块604可以提供将源数据的一部分与整个源数据的数据集相关的统计数据。例如,简档数据模块604包括对自然键唯一性和键基数的指示。简档数据模块604指示在源数据的键值上是否存在重复。简档数据模块604指示在近似自然键匹配上是否存在重复。简档数据模块604指示具有这些特征中的一个或多个特征的记录的计数。在一些具体实施中,在例如确定字段是键值之后,由结果证实模块608确定该信息。
对于模式水平,简档数据模块604被配置为参照源数据确定数据字段随时间推移的统计信息。例如,简档数据模块604检测在新版本的源数据中是否存在添加或移除的列。简档数据模块604检测分隔字段。在一些具体实施中,简档数据模块604执行沿袭计数以确定是否从先前版本的源数据中去掉任何记录。可以检测其他模式演变。在一些具体实施中,在简档数据中发现数据字段之后,由结果证实模块608执行该功能。
在一些具体实施中,如果上下文数据在参考数据库216中可用,则可以改进简档数据。例如,如果用户指定源数据的一个或多个数据字段的格式,则简档数据可以生成关于那些数据字段的附加统计信息。这可以是迭代过程的一部分。例如,一旦在第一次迭代中发现数据字段(但是该迭代分类失败),用户就可以查看数据字段的数据内容并且向执行***602提供用于由简档数据模块604(和其他数据模块)进行分析的附加信息。例如,如果用户指定所有数据字段应该仅包括数值数据,则简档数据模块604可以快速确定无效的数据并且提供对数据简档中的信息的统计测量。
简档数据模块604通过在生成简档数据之前扫描源数据的整个数据集来从源数据生成简档数据。简档数据模块604不需要从源数据复制整个数据集,尽管这可以被执行以生成简档数据。因为数据集可能很大(例如,数千兆字节的大小或甚至数太字节的大小),所以将数据的副本批发到本地***以用于分析可能是不切实际的。通常,简档数据模块604在数据源的低活动周期期间扫描源数据。
分类模块605被配置为接收简档数据并接收包括字段的源数据。针对源数据的每个字段,分类模块605被配置为查找标签索引,该标签索引包括用于源数据的发现字段的现有标签(例如,来自参考数据库216)。这些标记可以来自标记过程的先前迭代,或者标签索引(例如,初始标记索引)可以被手动生成、导入或以其他方式获取。然而,在执行标记过程之前不需要存在标签索引。
针对字段,分类模块确定该字段是否已经与标签索引中的标签相关联。如果尚未标记字段或者如果不存在标签索引,则分类模块605确定没有找到该字段的标签。如果需要,则分类模块605生成用语义标签填充的新标签索引。分类模块605执行对字段数据类型的分类。该分类可以基于字段的简档数据、字段名称和字段的值。例如,分类模块605可以确定字段是“日期”字段。在一些具体实施中,分类模块605可以确定该字段是数字字段、字符串字段或其他此类数据类型。虽然分类模块605确定字段的数据类型,但字段(并且因此语义标签)的语义含义由测试模块606确定,如随后所描述的。例如,分类模块605可以确定该字段是日期字段,并且测试模块606确定日期字段的日期是客户的“出生日期”。在另一示例中,测试模块606确定数字字段是“用户ID”字段。许多其他此类示例是可能的。分类模块605生成要发送到测试模块606的分类数据,作为用于找到语义含义的分类输出。用由分类模块605确定的数据类型来标记分类数据。
如果找到标签,则分类模块生成可以通过测试模块606和结果证实模块608的标签数据。该标签数据通知测试模块606和结果证实模块608该字段已经被标记。这可以用于加权应用于该字段的分类器或者建议标签。然而,该字段可以由分类模块605重新分类并通过测试模块606重新进行测试,以确认该标签是准确的并且可能在数据词典数据库614中更新该标签的标签属性。例如,如果测试模块606发现现有标签不太合适,则可以建议新标签。如果用户选择现有标签(例如,如由结果证实模块608呈现的),则对于执行***602,标签数据可以用作标记,该标记表明数据词典数据库614中的标签的标签属性不表示由该标签标记的数据值,并且可以更新这些属性。
在一些具体实施中,可以使用机器学习方法通过多次迭代来更新分类模块605。例如,如果已经标记了发现字段,则分类器可以确定可以绕过进一步的分类。在另一示例中,可以基于从数据源612或从用户输入接收到的附加数据更新应用于字段的得分。分类模块605可以确定与先前迭代相比,应该由测试模块608执行不同的测试。例如,如果指纹分析在先前迭代中是不确定的,则分类器可以确定在后续迭代中应该绕过该测试(或替换为另一测试)。
测试模块606被配置为使用简档数据中的统计数据以及使用参考数据库216中提供的附加上下文信息(诸如查找表442)来对数据集的源数据进行分类。分类模块605的分类输出用于为每个字段提供数据类型的上下文并且用于为字段提供现有标签(如果有的话)。测试模块606被配置为从数据词典数据库614接收候选标签440。候选标签是现有标签的库,每个标签与一个或多个属性相关联,该一个或多个属性识别数据字段的语义含义(例如,为下游应用程序或用户)。如先前所描述的,与数据词典数据库614中的每个标签相关联的属性提供标签的语义含义。测试模块606确定那些候选标签中与由字段的数据简档、字段名称和数据值确定的数据字段的属性最密切相关联的候选标签。
测试模块606包括多个测试(或分类器),每个测试由不同的测试模块执行,以用于将一个或多个标签与所测试的每个字段相关联。例如,在由简档数据模块604发现数据集的字段之后,测试模块确定该字段的属性与这些候选标签中的每个候选标签的属性相对应的紧密程度。每个测试使用不同的数据和方法来提议一个或多个标签。因为不同的测试使用不同的分类方法,所以来自每个测试的所提议的标签可能不一定相同。所提议的标签在结果证实模块608中被证实,随后描述。与使用任何单个测试相比,使用不同的测试来识别字段的语义含义会导致对语义含义的确定更加稳健,因为单个因素(例如,字段名称或者包括特定值或字段中的一组值等)不依赖于对该字段的语义含义指示。
每个数据字段中的数据的测试可以包括对数据集的数据的群体水平中的一个或多个群体水平(数据字段中值出现的频率)的确定、发现数据类型(例如,日期或数字保存为字符串)、数据字段的域、键字段的发现、对字段是单字还是描述字段的确定等等。例如,数据的分类可以包括日期和时间分析。因此,测试模块606从简档数据模块604接收简档数据,并且执行一系列基于统计的函数以针对一组已知的标签类型识别、分类和测试字段细节。测试的规则根据数据类型的变化而变化,该数据类型可以在分类输出中由分类模块605识别,或者在一些情况下被包括在由简档数据模块604生成的简档数据中。
测试模块606被配置为对字段名称和数据字段中的条目执行多个不同的分类测试,以确定如何标记数据字段。测试模块606从参考数据库216接收分类输出、候选标签和任何参考数据,并且将这些数据提供给测试。这些测试包括模式分析、业务术语分析、指纹分析和关键字搜索。如先前所陈述的,虽然具有字段名称和字段数据的表被描述为例示性示例,但是可以对其他数据类型执行测试模块606的测试。针对源数据的数据字段和数据条目执行的分类测试的示例可以包括模糊匹配计划、列数据计划、业务术语匹配计划、关键字匹配、指纹识别计划(例如,上下文数据查找)、模式匹配和证实。
测试模块606的模糊匹配逻辑包括用于模糊匹配字段名称与术语词典的逻辑。通常,模糊匹配被配置为在找不到准确匹配的情况下,找到字段名称与词典中的术语之间的匹配。***发现词典术语不怎么准确。例如,测试模块606将模糊匹配的阈值设置为小于100的百分比值,然后词典数据库(例如,数据库216)将返回在其存储器中对应于(例如,大于)该百分比的任何匹配。在一些具体实施中,将概率得分分配给每个匹配。该概率得分可以呈现给用户。
测试模块606的业务术语分析包括用于将数据字段名称与术语表中已知的业务术语匹配的逻辑。通常,业务术语可以放置在不同的上下文或业务术语组中。测试模块606执行检查以找到特定词或术语在另一词或术语内的出现。这可以包括对特定说明书的引用。例如,测试模块606接收到指示街道名称的不同缩写(诸如“st”、“ln”、“ave”、“pl”、“ct”等等)的说明书。测试模块606执行检查以确定那些缩写中的任一缩写是否被包括在数据字段内。如果说明书的数据元素中的一个或多个数据元素被包括在数据字段中,则测试模块606确定该数据字段包括街道名称。这条信息可以用在其自身上,诸如以确定该数据字段包括街道名称,并且因此应该被标记。这条信息还可以指示该数据字段包括其他信息,诸如地址。测试模块606使用除了其他数据之外在列中存在街道名称的确定,以确定该数据字段是否仅包括地址、街道名称或一些其他数据。在另一示例中,短语“出生日期”可以被识别并与此类标签相关联。其他匹配策略可以包括使用模糊匹配、同义词等等的匹配。通常,测试模块606将概率得分与每个匹配相关联。用户可以生成说明书以配置该逻辑,诸如通过开发环境。
测试模块606的模式匹配分析使用字段的数据内容(除了字段名称之外或代替字段名称)。用于模式匹配的模式匹配类型可以由测试模块606基于分类数据的结果确定。例如,分类数据可以识别字段的数据类型,诸如该数据是以数字表示的。在该示例中,简档数据还指示数据字段中的每个条目的长度为13至18个字符。这可以向测试模块606指示该数据字段可以是***编号数据字段。为了确认这一点,可以由测试模块606针对可疑数据字段的数据执行一个或多个模式测试。例如,可以针对发行码的表检查每个条目的最开始的4至6个数字。最后一个数字可以包括由Luhn测试定义的检查数位。如果数据字段的条目的阈值百分比满足这些模式中的每个模式,则测试模块606可以推断这些字段保存***编号,并且将字段名称与合适的标签和概率相关联。对于模式匹配逻辑,给定字段的数据本身和字段中的数据的模式(例如,在简档数据中识别)两者均可用于辨别要运行的模式测试和要应用于给定数据字段的标签。
测试模块606确定是否要对源数据612执行模式分析测试。该确定可以是分类数据的结果。模式匹配分析使用简档数据来确定源数据612是否符合指示候选字段标签的预先确定的模式。例如,如果字段的数据具有特定长度和组成,则模式匹配分析识别对应的候选标签。应用于标签的模式得分可以是所识别的模式与预先确定的模式的匹配接近程度、该模式的独特程度或任何数量的因素的函数。可以根据该模式的独特性函数来调整权重。例如,非常不寻常的模式可以对应于较高的权重值。如果发现字段的值与模式紧密匹配(超过所有值或一部分值),则得分可以高于仅少量值与模式匹配的得分。
测试模块606可以包括关键字搜索测试。关键字测试(与业务术语匹配测试类似)包括基于数据的测试,这些测试包括搜索数据字段内的特定关键字。例如,为了找到地址,测试模块606搜索公共地址词,诸如“街道”、“道路”、“大街”等。测试可以由用户进行扩展,该用户可以将新的关键字文件添加到参考数据库216的说明书中。关键字测试可以用于找到短语中的词或词的一部分,诸如用于地址和公司名称,其中存在可以唯一地识别该数据字段的有限的一组公共词。
测试模块606可以确定是否对字段名称执行关键字分析。在该示例中,如果这些字段中的一些字段仍然没有与标签值相关联,则测试模块606将执行关键字匹配测试。检查字段名称(并且可能是字段值)是否包括来自表的一个或多个关键词,这可以帮助测试模块606将特定标签与字段相关联。测试模块606执行关键字搜索并生成关键字搜索得分。
测试模块606可以包括用于分析源数据的数据值的指纹识别测试。指纹识别的逻辑通常包括对整个数据字段的数据查找。指纹识别逻辑包括基于数据值的测试。指纹识别数据字段的逻辑包括将已知列表(例如,来自参考数据库216)与数据字段的数据进行比较,以确定数据字段的数据是否与列表的数据相关。例如,可以将来自数据字段的数据与名字的列表、国家名称的列表、城市名称的列表等等进行比较。指纹(已知的数据列表)通常是代表性的,而不是全面的。换句话说,指纹不需要包括作为指纹集合的一部分的值的每个示例。通常,指纹可以包括所选择的示例性值,该示例性值大致表示应该在数据字段的数据条目中出现的最常见值。例如,对于名字表,指纹不需要美国的所有可能的名字,而是最流行的名字组成的所选择的组就可以足够了。例如,前100个名字通常给出足够的数据以用于示出数据字段与数据指纹之间的相关性。数据指纹可以从主数据生成。例如,***可能包括50至100个人口最多的美国城市以检查数据字段是否对应于城市名称。用户可以将新域添加至说明书中,以便增加特定***的指纹识别测试的功能。
测试模块606确定是否要检查该字段的指纹表。在存在字段的可能值的长列表的情况下,指纹识别可以很好地进行,但是预期一些值比其他值更常见。例如,城市名称、街道名称以及甚至名字和姓氏是指纹识别分析的合适候补。测试模块606执行指纹分析并生成指纹得分。
测试模块606确定是否要运行业务术语分析。当源数据612中存在可能与用于标记字段的业务术语对应的许多特有术语时,业务术语分析可能是有用的。如果执行了业务分析,则测试模块606通过将字段名称与业务术语进行比较来执行业务术语分析,以找到匹配并生成标签和它们的相关联概率。业务术语分析的结果与权重和得分相关联,类似于模式匹配分析。
测试模块606可以被配置为比较跨测试的结果,以使用证实逻辑来改进结果。例如,证实逻辑可以用于使用另一分类测试来验证业务术语匹配。例如,指定数据字段包括婚前姓名值的测试还应该通过为姓氏字段的分类测试。
测试模块606被配置为执行机器学习逻辑,在该机器学习逻辑中记住先前数据集(例如,来自特定来源)的分类或同一数据集的先前迭代,并且影响哪些测试被选择以用于后续迭代以及如何确定那些后续迭代的概率值。在数据集上训练机器学习逻辑,并且可以应用使用训练数据来开发的权重以对数据集的新数据进行分类。
这些测试中的每个测试可以输出一个或多个提议的标签以用于被分析的数据字段。这些测试不必一致。每个提议的标签可以与得分(未示出)和权重值(未示出)相关联。每个标签的得分和权重可以供结果证实模块608使用,以在识别到字段的语义含义时表明提议的标签的特定标签,并将该标签分类(或将该标签存储)到类别中。类别(随后描述)指示测试之中一致的程度,并且因此在识别到字段数据的语义含义时表明提议的标签的置信度。
为了执行测试,测试模块606接收简档数据、分类数据和其他参考数据,并确定是否要执行每个测试。例如,如果接收到的数据的类型未针对特定测试成格式,则可以不执行测试。可以执行测试的任何组合。测试模块确定是否要执行模式分析、确定是否要执行业务术语分析、确定是否要执行指纹分析以及确定是否要执行关键字搜索。每个测试生成一个或多个提议的标签并输出这些提议的标签。包括所有提议的标签的测试结果被关联并发送到结果证实模块608作为测试结果。
在一些具体实施中,如果尚未从早前测试中找到结果,则可以执行后续测试。在一些具体实施中,测试模块606通过基于被分析的源数据612从参考数据库216中检索数据来准备参考数据。例如,测试模块606可以基于源数据612的位置、源数据中的表格名称、用户输入等等从参考数据库216中检索数据。测试模块606可以确定要访问以及要针对源数据的每个字段进行检查的查找表。可以基于从简档数据模块604接收到的简档数据执行查找的选择。
在一些具体实施中,测试模块606确定是否要运行模式分析。模式分析可用于随时间和整体对源数据612进行分析。例如,如果缺失、添加、删除字段等等,则该信息可以用于标记其他数据字段。
在一些具体实施中,一旦测试已经完成,则测试模块606组合相关联的得分以生成最终得分,该最终得分被示出为具有得分应用于其的相关联的提议标签。在一些具体实施中,上游得分影响下游得分,使得得分彼此不同,但是表示随着每次分析发生而更新的得分。在一些具体实施中,将每个提议的标签和其得分单独报告给结果证实模块608,然后该结果证实模块确定如何对测试结果306进行分类。
在一些具体实施中,测试的顺序可以是使得更多处理密集型的测试被安排在最后。如果其他测试失败,则更多时间密集型的测试可能是最后手段。以这种方式安排测试的顺序可以减少执行***602上用于标记源数据612的处理时间。
一旦测试模块606已经针对源数据运行分类测试并且已经确定源数据的数据字段的标签的概率值,结果证实模块608就执行检查以确定分类的结果是否指示高置信度或是否应该执行进一步测试。
结果证实模块608接收由测试模块606对源数据执行的不同测试的测试结果,并且确定结果是否彼此证实或冲突。由结果证实模块608将测试模块606的测试的结果分类到若干分类类别中。这些类别包括匹配类别、推荐类别、研究类别和忽略类别。这些类别中的每个类别指示测试结果中的标签提议之中的相似性。例如,如果所有标签提议都是相同的,则测试结果具有高水平的相似性。如果每个标签提议不同,则测试结果具有低水平的相似性。相似性可以不仅仅是由每个测试进行的表决机制。每个标签提议与加权的得分值相关联。如果测试的一个标签提议与其他不匹配,但是与和其他测试的其他提议的标签相比,该标签提议具有相对较高的得分值和较大的权重相关联,则尽管四个测试中有三个测试一致,但是可以将相似性识别为较低的。
取决于所识别的类别,结果证实模块608可以在识别字段的语义含义时自动验证标签或者可以提示用户手动验证标签。可以通过用户界面上的客户端设备完成验证,如随后所描述的。
匹配类别指示标签的置信度的最高水平(例如,100匹配)。在一些具体实施中,匹配标签被自动包括在与源数据相关联的元数据中。然而,结果证实模块608仍然可以被配置为将该结果呈现给用户以用于手动验证。通常,匹配分类指示所有执行的测试提议了同一标签。在一些具体实施中,如果标签没有全部匹配但是当任何不同的标签低于得分阈值时,则可以选择匹配类别,其指示测试之间的一般一致。
推荐类别通常指示至少一个标签与数据字段具有高质量关联。然而,建议标签通常低于设置为最高置信度的阈值水平,并且优选进行进一步验证。在一些具体实施中,推荐类别指示与数据字段相关联的若干高质量标签。在一些具体实施中,结果证实模块608排序并列出推荐标签,每个标签具有概率得分,这可以帮助用户选择用于数据字段的最佳标签。
研究类别指示具有没有通过任何特定测试的某种令人感兴趣的统计特性的值或数据字段。例如,数据字段可能看起来好像其应该具有含义,但没有测试具有提议的标签或它们具有提议的标签或提议的标签具有低于给定阈值的得分。例如,数据字段可以包括指示该数据字段是源数据中重要的域或字段的简档属性,但是没有推荐标签(或没有推荐高于阈值概率的标签)。通常,这样的结果指示应该将附加规则添加到测试中(例如,测试应该以某种方式被扩展或改变)并且再次执行。
忽略类别指示数据字段被指定为是不令人感兴趣的,或者该字段不触发测试并且不显示表明该数据字段重要性的简档属性。通常,当接收到的数据具有错误或没有可辨别的模式时,显示忽略类别。虽然忽略类别可以指示应该定义新标签,但是其通常指示该字段包括不具有特定结构的杂项数据。
通常,为了将测试结果分类(例如,存储桶)到类别中,结果证实模块608执行过程。结果证实模块608将测试结果与字段进行比较。针对每个字段,结果证实模块基于相似性水平将测试结果分配到类别。
除了生成指定分类类别的分类文件之外,结果证实模块608被配置为生成其他文件。其他文件包括简档注释文件。简档注释文件是描述分类分析过程结果的文件。其他文件包括发现结果概述,其描述了组合输出形成业务术语匹配过程和指纹识别过程。
结果证实模块608被配置为基于每个数据字段的聚合和范围确定是否存在数据值的异常值。异常值包括不符合针对数据字段识别到的关系或格式的数据值。结果证实模块608确定异常值是基于对与测试模块606的分类的关系的聚类和预测而确定的。
可以迭代上文所描述的过程以提高分类的准确度,并且使得用户能够更新分类测试以获得更好的结果。如先前所陈述的,在一些具体实施中,机器学习逻辑可以用于在每次迭代期间训练分类器以促进该过程。通常,一旦由简档数据模块604生成简档数据,就迭代测试模块606的过程和结果证实模块608的结果;除非更新源数据本身,否则不需要重复生成新的简档数据。
一旦简档数据模块604、分类模块605、测试模块606和结果证实模块608具有这些数据字段中的每个数据字段的所生成的标签,则加载数据模块610可以将包括标签索引的元数据加载到参考数据库216中。加载数据模块610执行更新标签索引并将数据加载到参考数据库216中的过程。加载数据模块610接收字段名称并且接收该字段的提议的标签,已经手动或自动验证了该提议的标签。加载数据模块610将字段名称与提议的标签关联。加载数据模块通过将标签与字段在数据集中的位置相关联来更新标签索引。加载数据模块将被分析的数据集的标签关联到标签索引中,该标签索引可以通过执行***602和下游应用程序由数据集引用。
通常,参考数据库216可供一个或多个下游计算***访问以用于各种应用程序。例如,数据集的所生成的标签可以用于数据质量执行、个人数据匿名化、数据掩蔽、(PII)报告、测试数据管理、数据集注释等等。
加载数据模块610被配置为将元数据和源数据打包到可供一个或多个其他计算***使用的包中。例如,一旦生成简档数据,分类模块605、测试模块606和结果证实模块608的操作可以各自被配置为对该源数据的不同分区并行运行它们的过程的多个实例。例如,如果源数据包括多个表,则可以按表对该源数据进行分区。测试模块606和结果证实模块608可以同时对多个表运行它们的逻辑过程的实例,以增加执行***602的过程的吞吐量。一旦标记了源数据,加载数据模块610就可以被配置为将这些分区合并回一起并将标记的源数据存储在参考数据库216中。
图9至图12示出了各自包括示例性过程的流程图。图9示出了确定用于一个或多个数据集中的值的数据质量规则的过程900。过程900可以由诸如先前所描述的数据处理***实现。过程900包括由数据处理***接收(902)一个或多个数据集,其中该一个或多个数据集包括字段并且其中该字段存储值。过程900包括由数据处理***对存储在字段中的值进行建档(904),该字段被包括在一个或多个数据集中。该过程包括由该数据处理***将一个或多个分类器应用(906)于经建档的值。过程900包括识别(908)一个或多个标签提议,该一个或多个标签提议识别该字段的语义含义,其中该一个或多个标签提议中的每个标签提议具有经计算的置信度水平。过程900包括用标签提议标记(910)该字段,该标签提议具有满足阈值水平的经计算的置信度水平。过程900包括基于标记字段的标签提议、字段的简档确定(912)该简档表示值的一个或多个特征,这些值被包括在具有标签提议的字段中。过程900包括基于所确定的简档确定(914)用于数据集的字段的数据质量规则。
图10示出了选择测试数据以在数据处理应用程序的测试期间引起处理规则执行的过程1000。过程1000可以由诸如先前所描述的数据处理***实现。过程1000包括由数据处理***接收(1002)一个或多个数据集,其中该一个或多个数据集包括字段并且其中该字段存储值。过程1000包括由数据处理***对存储在字段中的值进行建档(1004),该字段被包括在一个或多个数据集中。该过程包括由该数据处理***将一个或多个分类器应用(1006)于经建档的值。过程1000包括识别(1008)一个或多个标签提议并且用具有满足阈值水平的经计算的置信度水平的标签提议标记该字段,该一个或多个标签提议识别该字段的语义含义,其中该一个或多个标签提议中的每个标签提议具有经计算的置信度水平。过程1000包括基于标记字段的标签提议确定(1010)子集规则。过程1000包括根据该子集规则从数据集中选择(1012)数据记录的子集,对该子集的选择基于数据集的标签提议标记字段。过程1000包括向数据处理应用程序提供(1014)所选择的子集以用于测试数据处理应用程序。
图11示出了掩蔽数据处理应用程序的数据的过程1100。过程1100可以由诸如先前所描述的数据处理***实现。过程1100包括由数据处理***接收(1102)一个或多个数据集,其中该一个或多个数据集包括字段并且其中该字段存储值。过程1100包括由数据处理***对存储在字段中的值进行建档(1104),该字段被包括在一个或多个数据集中。该过程包括由该数据处理***将一个或多个分类器应用(1106)于经建档的值。过程1100包括识别(1108)一个或多个标签提议并且用具有满足阈值水平的经计算的置信度水平的标签提议标记该字段,该一个或多个标签提议识别该字段的语义含义,其中该一个或多个标签提议中的每个标签提议具有经计算的置信度水平。过程1100包括基于标签提议确定(1110)数据集的字段表示敏感数据。过程1100包括响应于该确定,执行(1112)数据掩蔽函数以将包括字段的敏感数据的值转换为掩蔽值。
图12示出了确定数据集的模式的过程1200。过程1200可以由诸如先前所描述的数据处理***实现。过程1200包括由数据处理***接收(1202)一个或多个数据集,其中该一个或多个数据集包括字段并且其中该字段存储值。过程1200包括由数据处理***对存储在字段中的值进行建档(1204),该字段被包括在一个或多个数据集中。该过程包括由该数据处理***将一个或多个分类器应用(1206)于经建档的值。过程1200包括识别(1208)一个或多个标签提议并且用具有满足阈值水平的经计算的置信度水平的标签提议标记该字段,该一个或多个标签提议识别该字段的语义含义,其中该一个或多个标签提议中的每个标签提议具有经计算的置信度水平。过程1200包括基于标记字段的标签提议确定(1210)被包括在字段中的值的一个或多个模式特征,该字段具有标签提议。过程1200包括基于该一个或多个模式特征确定(1212)具有第一标签提议的第一字段包括由具有第二标签提议的第二字段的值引用的键值。过程1200包括响应于该确定更新(1214)描述数据集的模式数据,以引用该第一字段包括由第二字段的值引用的键值。
本说明书中所描述的主题和操作的一些具体实施可以在数字电子电路中实现,或者在计算机软件、固件或硬件中实现,这些具体实施包括本说明书中公开的结构及它们的结构等同物或在它们中的一者或多者的组合。例如,在一些具体实施中,可以使用数字电子电路或者在计算机软件、固件或硬件或它们中的一者或多者的组合中实现数据处理设备102的模块。在另一示例中,过程900、1000、1100和1200可以使用数字电子电路来实现,或者在计算机软件、固件或硬件或它们中的一者或多者的组合中实现。
本说明书中所描述的一些具体实施(例如,数据质量规则模块104、测试数据集模块106、数据掩蔽模块108、数据集模式分析模块110等)可以作为数字电子电路、计算机软件、固件或硬件或以它们中的一者或多者的组合的一个或多个组或模块实现。尽管可使用不同模块,但是每个模块不必不同,并且多个模块可在同一数字电子电路、计算机软件、固件或硬件或它们的组合上实现。
本说明书中描述的一些具体实施可实现为一个或多个计算机程序,即计算机程序指令的一个或多个模块,该一个或多个计算机程序指令编码在计算机存储介质上以供数据处理装置执行或控制该数据处理装置的操作。计算机存储介质可以是或可被包括在计算机可读存储设备、计算机可读存储基板、随机或串行存取存储器阵列或设备或它们中的一者或多者的组合中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是在人工生成的传播信号中编码的计算机程序指令的源或目的地。计算机存储介质也可以是或被包括在一个或多个单独的物理部件或介质(例如,多个CD、盘或其他存储设备)中。
术语“数据处理装置”涵盖用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机、片上***或前述项中的多个项或前述项的组合。在一些具体实施中,数据质量规则模块104和/或数据结构模块106包括如本文所述的数据处理装置。装置可包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置还可包括为相关计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理***、操作***、跨平台运行时环境、虚拟机或它们中的一者或多者的组合的代码。装置和执行环境可实现各种不同计算模型基础设施,诸如web服务、分布式计算和网格计算基础设施。
计算机程序(也称为程序、软件、软件应用程序、脚本或代码)可以任何形式的编程语言编写,包括编译或解释语言、声明或程序语言。计算机程序可但不必需对应于文件***中的文件。程序可以存储在保存其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,专用于所讨论的程序的单个文件中,或者存储在多个协调文件中(例如,存储一个或多个模块、子程序或部分代码的文件)。计算机程序可部署为在一台计算机上或在多台计算机上执行,这些计算机位于一个站点或跨多个站点分布并通过通信网络互连。
本说明书中描述的过程和逻辑流程中的一些过程和逻辑流程可由执行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行动作。该过程和逻辑流程也可由专用逻辑电路例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)执行,并且装置也可被实现为该专用逻辑电路。
适合于执行计算机程序的处理器包括例如通用微处理器和专用微处理器两者,以及任何种类的数字计算机的处理器。通常,处理器将从只读存储器或随机存取存储器或这两者接收指令和数据。计算机包括用于根据指令执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。计算机还可包括用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘)或可操作地耦合以从一个或多个大容量存储设备接收数据或将数据传送到一个或多个大容量存储设备或两者。然而,计算机不需要具有此类设备。适用于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备(例如,EPROM、EEPROM、闪存设备等)、磁盘(例如,内部硬盘、可移动磁盘等)、磁盘(例如,内部硬盘、可移除磁盘等)、磁光盘和CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或并入其中。
为了提供与用户的交互,可在具有用于向用户显示信息的显示设备(例如,监视器或另一类型的显示设备)和用户可用来向计算机提供输入的键盘和指向设备(例如,鼠标、轨迹球、平板电脑、触敏屏幕或另一类型的指向设备)的计算机上实现操作。其他类型的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。另外,计算机可通过向用户所使用的设备发送文档和从该设备接收文档来与用户交互;例如通过响应于从web浏览器接收的请求而向用户的客户端设备上的web浏览器发送网页。
计算机***可包括单个计算设备或在接近或大体上远离彼此操作并通常通过通信网络交互的多个计算机。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、网间网络(例如,互联网)、包括卫星链路的网络和对等网络(例如,自主对等网络)。客户端和服务器的关系可因运行在相应计算机上的计算机程序而产生,并且彼此具有客户端-服务器关系。
示例性计算机***包括处理器、存储器、存储设备和输入/输出设备。这些部件中的每个部件可以例如通过***总线互相连接。处理器能够处理用于在***内执行的指令。在一些具体实施中,该处理器是单线程处理器、多线程处理器或另一类型的处理器。处理器能够处理存储在存储器中或存储设备上的指令。存储器和存储设备可以存储***内的信息。
输入/输出设备提供针对***的输入/输出操作。在一些具体实施中,输入/输出设备可以包括网络接口设备(例如,以太网卡)、串行通信设备(例如,RS-232端口)和/或无线接口设备(例如,802.11卡、3G无线调制解调器、4G无线调制解调器、5G无线调制解调器等)中的一者或多者。在一些具体实施中,输入/输出设备可以包括被配置为接收输入数据并将输出数据发送到其他输入/输出设备(例如,键盘、打印机和显示设备)的驱动器设备。在一些具体实施中,可使用移动计算设备、移动通信设备和其他设备。
尽管本说明书包含许多细节,但是这些细节不应当被视为可要求保护的内容的范围的限制,而是应当被视为特定于特定示例的特征的描述。在单独的具体实施的上下文中,本说明书中描述的某些特征也可进行组合。相反地,在单个具体实施的上下文中描述的各种特征也可单独地或以任何合适的组合在多个实施方案中实现。
已经描述了多个实施方案。然而,应当理解,在不脱离本文描述的数据处理***的精神和范围的情况下,可作出各种修改。因此,其他实施方案也在以下权利要求书的范围内。
Claims (28)
1.一种用于基于与字段相关联的标签确定用于一组数据记录中的数据记录的所述字段中的值的数据质量规则的方法,所述标签指示所述字段的所述值的特性,所述方法由数据处理***实现,并且所述方法包括:
检索标签索引,所述标签索引将标签与数据记录中的一组一个或多个字段相关联,其中所述标签识别所述一组一个或多个字段中的每个字段中预期的信息类型;
访问数据词典,所述数据词典将由所述标签指示的所述信息类型与表示对与所述标签相关联的所述一个或多个字段的值的要求的一组属性值相关联,所述要求包括所述一个或多个字段的所述值的逻辑特性或语法特性;以及
针对特定数据记录的字段:
通过访问所述标签索引来识别与所述特定数据记录的所述字段相关联的特定标签;
从所述数据词典中检索所述特定标签的属性值,所述属性值指定对所述字段的特定要求;以及
生成数据质量规则,所述数据质量规则在被执行时被配置为:
验证所述字段的值是否满足由所述属性值表示的所述特定要求,以及
生成指示是否满足所述特定要求的输出数据。
2.根据权利要求1所述的方法,其中所述数据质量规则指示以下中的一者或多者:
所述字段中的所述值与所述要求的允许偏差,
所述字段中的一个或多个允许值,和
所述字段中的一个或多个禁止值。
3.根据权利要求2所述的方法,其中所述字段中的所述一个或多个允许值或禁止值与所述字段的字段名称相关联。
4.根据权利要求2或3所述的方法,其中所述字段是第一字段,并且其中所述字段中的所述一个或多个允许值或禁止值是基于所述特定数据记录中的第二字段中的值而确定的,所述第二字段与所述特定数据记录的所述第一字段相关。
5.根据权利要求2至4中任一项所述的方法,其中所述一个或多个允许值或禁止值基于所述第二字段中的所述值和所述第一字段中的所述值的组合。
6.根据权利要求2至5中任一项所述的方法,其中所述一个或多个允许值对应于满足数值函数的值,并且其中所述一个或多个禁止值对应于不满足所述数值函数的值。
7.根据权利要求1至6中任一项所述的方法,其中所述字段是第一字段,其中所述数据记录包括第二字段,其中所述数据质量规则是第一数据质量规则,并且其中所述方法包括:
基于所述特定标签的所述属性值确定所述第一字段与所述第二字段之间存在关系;以及
基于所述第二字段与所述第一字段之间的所述关系生成用于所述第二字段的第二数据质量规则。
8.根据权利要求7所述的方法,其中所述关系指示所述第二字段的值对所述第一字段的值的依赖性或所述第一字段的所述值对所述第二字段的所述值的依赖性。
9.根据权利要求7或8所述的方法,其中所述关系指示所述第一字段的值与所述第二字段的值之间的相关性。
10.根据权利要求7至9中任一项所述的方法,还包括获得验证数据,所述验证数据验证所述第一字段和所述第二字段的每个值的所述关系。
11.根据权利要求7至10中任一项所述的方法,其中针对所述第一字段和所述第二字段的所述值的阈值数量来验证所述关系。
12.根据权利要求7至11中任一项所述的方法,其中所述第二数据质量规则被配置为基于所述第一字段的值执行对所述第二字段的值的约束。
13.根据权利要求7至12中任一项所述的方法,其中确定所述第一字段与所述第二字段之间存在所述关系包括:确定所述第二字段的值包括由所述第一字段的值引用的键值,并且其中所述数据质量规则被配置为要求所述第二字段的每个值是有效的键值。
14.根据权利要求7至13中任一项所述的方法,其中所述第一字段和所述第二字段各自包括数值,并且其中确定所述第一字段与所述第二字段之间存在所述关系包括:确定将所述第一字段的值与所述第二字段的值相关联的数值函数。
15.根据权利要求7至14中任一项所述的方法,其中确定所述第一字段与所述第二字段之间存在所述关系包括使用由机器学习过程配置的至少一个分类器。
16.根据权利要求1至15中任一项所述的方法,包括:
确定与所述特定标签相关联的所述属性值指示所述字段包括所述特定数据记录的主键值;以及
配置所述数据质量规则以要求所述主键值各自在所述字段中是唯一的。
17.根据权利要求1至16中任一项所述的方法,所述特定标签的所述属性值表示所述字段中的所述值的平均值、所述值的最大长度、所述值的最小长度、所述值的数据类型和所述值的格式中的至少一者。
18.根据权利要求1至17中任一项所述的方法,其中所述特定数据记录是第一数据记录,并且其中所述方法包括将所述数据质量规则应用于与第二数据记录中的所述特定标签相关联的另一字段,所述第二数据纪录不同于所述第一数据记录。
19.根据权利要求1至18中任一项所述的方法,其中所述方法包括存储关联所述数据质量规则和所述特定标签的数据。
20.根据权利要求1至19中任一项所述的方法,还包括:
生成用于请求批准所述数据质量规则的数据;以及
响应于获得指示所述数据质量规则的批准的批准数据而批准所述数据质量规则。
21.根据权利要求1至20中任一项所述的方法,其中生成所述数据质量规则包括:
确定所述字段中的值的历史趋势;以及
基于所述字段中的所述值的所述历史趋势生成要求。
22.根据权利要求1至21中任一项所述的方法,其中生成用于所述字段的所述数据质量规则包括:
识别所述字段中的值的历史平均值;以及
基于所述字段中的所述值的所述历史平均值生成要求。
23.一种用于选择测试数据以在数据处理应用程序的测试期间引起处理规则执行的方法,所述方法包括:
检索标签索引,所述标签索引将标签与数据记录中的一组一个或多个字段相关联,其中所述标签识别所述一组一个或多个字段中的每个字段中预期的信息类型;
访问数据词典,所述数据词典将由所述标签指示的所述信息类型与表示对与所述标签相关联的所述一个或多个字段的值的要求的一组属性值相关联,所述要求包括所述一个或多个字段的所述值的逻辑特性或语法特性;以及
针对特定数据记录的字段:
通过访问所述标签索引来识别与所述特定数据记录的所述字段相关联的特定标签;
从所述数据词典中检索所述特定标签的属性值,所述属性值指定对所述字段的特定要求;
生成子集规则,所述子集规则在被执行时指定所述字段的值是否包括所述属性值;
根据所述子集规则从所述特定数据记录选择字段的子集,其中每个所选择的字段包括具有所述属性值的值;以及
将所选择的子集提供给数据处理应用程序以用于所述数据处理应用程序的测试。
24.一种用于掩蔽数据处理应用程序的数据的方法,所述方法包括:
检索标签索引,所述标签索引将标签与数据记录中的一组一个或多个字段相关联,其中所述标签识别所述一组一个或多个字段中的每个字段中预期的信息类型;
访问数据词典,所述数据词典将由所述标签指示的所述信息类型与表示对与所述标签相关联的所述一个或多个字段的值的要求的一组属性值相关联,所述要求包括所述一个或多个字段的所述值的逻辑特性或语法特性;以及
针对特定数据记录的字段:
通过访问所述标签索引来识别与所述特定数据记录的所述字段相关联的特定标签;
从所述数据词典中检索所述特定标签的属性值,所述属性值指定对所述字段的特定要求;以及
基于所述属性值确定表示敏感数据的所述特定数据记录的所述字段;以及
响应于所述确定,执行数据掩蔽函数以将包括所述字段的所述敏感数据的值转换为掩蔽值。
25.一种用于确定数据记录的模式的方法,所述方法包括:
检索标签索引,所述标签索引将标签与数据记录中的一组一个或多个字段相关联,其中所述标签识别所述一组一个或多个字段中的每个字段中预期的信息类型;
访问数据词典,所述数据词典将由所述标签指示的信息类型与表示对与所述标签相关联的所述一个或多个字段的值的要求的一组属性值相关联,所述要求包括所述一个或多个字段的所述值的逻辑特性或语法特性;以及
针对特定数据记录的第一字段:
通过访问所述标签索引来识别与所述特定数据记录的所述第一字段相关联的特定标签;
从所述数据词典中检索所述特定标签的属性值,所述属性值指定对所述第一字段的特定要求;
确定所述属性值表示包括在所述第一字段中的值的模式特征;
基于所述模式特征确定具有所述标签的所述第一字段包括由第二字段的值引用的键值;以及
响应于所述确定,更新描述所述特定数据记录的模式数据以引用所述第一字段包括由所述第二字段的所述值引用的所述键值。
26.一种用于确定用于一个或多个数据集中的值的数据质量规则的方法,所述方法由数据处理***实现,并且所述方法包括:
由所述数据处理***对存储在字段中的值进行建档,所述字段被包括在一个或多个数据集的数据记录中;
由所述数据处理***将一个或多个分类器应用于所述经建档的值;
基于应用所述一个或多个分类器识别指示所述字段的所述值的逻辑特性或语法特性的一个或多个属性,其中所述一个或多个属性中的每个属性具有基于所述一个或多个分类器中的每个分类器的输出的相应置信度水平;
将其中所述置信度水平满足阈值水平的所识别的属性中的一个或多个属性与所述字段相关联;
基于与所述字段相关联的所述一个或多个属性确定对包括在所述字段中的值的一个或多个约束;以及
基于所确定的一个或多个约束,确定用于所述数据集的所述字段的数据质量规则,所述数据质量规则指示所述字段的值与所述一个或多个约束之间的关系。
27.一种用于基于与字段相关联的标签确定用于一组数据记录中的数据记录的所述字段中的值的数据质量规则的数据处理***,所述标签指示所述字段的所述值的特性,所述数据处理***包括:
至少一个处理设备;和
至少一个存储器,所述至少一个存储器与所述至少一个处理设备通信,所述至少一个存储器存储指令,所述指令在由所述至少一个处理设备执行时使得所述至少一个处理设备执行包括以下的操作:
检索标签索引,所述标签索引将标签与数据记录中的一组一个或多个字段相关联,其中所述标签识别所述一组一个或多个字段中的每个字段中预期的信息类型;
访问数据词典,所述数据词典将由所述标签指示的所述信息类型与表示对与所述标签相关联的所述一个或多个字段的值的要求的一组属性值相关联,所述要求包括所述一个或多个字段的所述值的逻辑特性或语法特性;以及
针对特定数据记录的字段:
通过访问所述标签索引来识别与所述特定数据记录的所述字段相关联的特定标签;
从所述数据词典中检索所述特定标签的属性值,所述属性值指定对所述字段的特定要求;以及
生成数据质量规则,所述数据质量规则在被执行时被配置为:
验证所述字段的值是否满足由所述属性值表示的所述特定要求,以及
生成指示是否满足所述特定要求的输出数据。
28.一种或多种非暂态计算机可读介质,所述一种或多种非暂态计算机可读介质存储用于基于与字段相关联的标签确定用于一组数据记录中的数据记录的所述字段中的值的数据质量规则的指令,所述标签指示所述字段的所述值的特性,所述指令被配置为在由至少一个处理设备执行时使得所述至少一个处理设备执行包括以下的操作:
检索标签索引,所述标签索引将标签与数据记录中的一组一个或多个字段相关联,其中所述标签识别所述一组一个或多个字段中的每个字段中预期的信息类型;
访问数据词典,所述数据词典将由所述标签指示的所述信息类型与表示对与所述标签相关联的所述一个或多个字段的值的要求的一组属性值相关联,所述要求包括所述一个或多个字段的所述值的逻辑特性或语法特性;以及
针对特定数据记录的字段:
通过访问所述标签索引来识别与所述特定数据记录的所述字段相关联的特定标签;
从所述数据词典中检索所述特定标签的属性值,所述属性值指定对所述字段的特定要求;以及
生成数据质量规则,所述数据质量规则在被执行时被配置为:
验证所述字段的值是否满足由所述属性值表示的所述特定要求,以及
生成指示是否满足所述特定要求的输出数据。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062981646P | 2020-02-26 | 2020-02-26 | |
US62/981,646 | 2020-02-26 | ||
US17/006,504 US11886399B2 (en) | 2020-02-26 | 2020-08-28 | Generating rules for data processing values of data fields from semantic labels of the data fields |
US17/006,504 | 2020-08-28 | ||
PCT/US2021/019572 WO2021173777A1 (en) | 2020-02-26 | 2021-02-25 | Generating rules for data processing values of data fields from semantic labels of the data fields |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115380281A true CN115380281A (zh) | 2022-11-22 |
Family
ID=77366048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180022638.3A Pending CN115380281A (zh) | 2020-02-26 | 2021-02-25 | 根据数据字段的语义标签生成用于数据字段的数据处理值的规则 |
Country Status (9)
Country | Link |
---|---|
US (4) | US11886399B2 (zh) |
EP (1) | EP4111325A1 (zh) |
JP (1) | JP7512402B2 (zh) |
CN (1) | CN115380281A (zh) |
AR (1) | AR121459A1 (zh) |
AU (1) | AU2021226330A1 (zh) |
BR (1) | BR112022016716A2 (zh) |
CA (1) | CA3167627A1 (zh) |
WO (1) | WO2021173777A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115952174A (zh) * | 2023-03-13 | 2023-04-11 | 青岛庚泽信息技术有限公司 | 一种数据表联接方法、***、终端及存储介质 |
CN117668090A (zh) * | 2024-02-01 | 2024-03-08 | 安徽容知日新科技股份有限公司 | 数据交换方法、装置、电子设备和计算机可读存储介质 |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11194845B2 (en) | 2019-04-19 | 2021-12-07 | Tableau Software, LLC | Interactive lineage analyzer for data assets |
US11651003B2 (en) | 2019-09-27 | 2023-05-16 | Tableau Software, LLC | Interactive data visualization interface for data and graph models |
US11423217B2 (en) | 2019-11-07 | 2022-08-23 | Tableau Software, LLC | Flexible table based visualizations |
US11829421B2 (en) | 2019-11-08 | 2023-11-28 | Tableau Software, LLC | Dynamic graph generation for interactive data analysis |
US11886399B2 (en) * | 2020-02-26 | 2024-01-30 | Ab Initio Technology Llc | Generating rules for data processing values of data fields from semantic labels of the data fields |
US11422985B2 (en) * | 2020-07-30 | 2022-08-23 | Tableau Software, LLC | Interactive data modeling |
JP2022033625A (ja) * | 2020-08-17 | 2022-03-02 | 富士フイルムビジネスイノベーション株式会社 | 情報処理装置 |
US11698906B2 (en) * | 2020-08-26 | 2023-07-11 | Jpmorgan Chase Bank, N.A. | Method and apparatus for automatically mapping physical data models/objects to logical data models and business terms |
US11514109B2 (en) * | 2020-10-29 | 2022-11-29 | Google Llc | Inferring semantic label(s) for assistant device(s) based on device-specific signal(s) |
US20220164478A1 (en) * | 2020-11-25 | 2022-05-26 | Anonomatic, Inc. | Processing personally identifiable information from a schema |
US11520929B2 (en) * | 2020-12-15 | 2022-12-06 | Netapp, Inc. | Methods and systems for securely storing unstructured data in a storage system |
US20220215107A1 (en) * | 2021-01-07 | 2022-07-07 | Salesforce.Com, Inc. | System and methods to perform row level field masking leveraging attribute based access control in a multi tenant environment |
US20220300707A1 (en) * | 2021-03-18 | 2022-09-22 | Capital One Services, Llc | Systems and methods for generating term definitions using recurrent neural networks |
US12001416B1 (en) * | 2021-04-20 | 2024-06-04 | The Travelers Indemnity Company | Systems and methods for generic data parsing applications |
US20220366341A1 (en) * | 2021-05-17 | 2022-11-17 | Dataworkz Inc | System and method for managing dataset quality in a computing environment |
US20220383283A1 (en) * | 2021-05-27 | 2022-12-01 | Mastercard International Incorporated | Systems and methods for rules management for a data processing network |
US20220405099A1 (en) * | 2021-06-20 | 2022-12-22 | International Business Machines Corporation | Generating masks for formats including masking restrictions |
US11941151B2 (en) * | 2021-07-16 | 2024-03-26 | International Business Machines Corporation | Dynamic data masking for immutable datastores |
US20230061341A1 (en) * | 2021-08-29 | 2023-03-02 | Technion Research & Development Foundation Limited | Database record lineage and vector search |
CN113836146B (zh) * | 2021-09-29 | 2024-04-26 | 五八同城信息技术有限公司 | 一种特征标签生成方法、装置、电子设备及存储介质 |
US20230099164A1 (en) * | 2021-09-29 | 2023-03-30 | Jpmorgan Chase Bank, N.A. | Systems and methods for automated data quality semantic constraint identification using rich data type inferences |
CN113642030B (zh) * | 2021-10-14 | 2022-02-15 | 广东鸿数科技有限公司 | 敏感数据多层识别方法 |
US11567975B1 (en) * | 2021-11-05 | 2023-01-31 | NVISNX, Inc. | System and method for user interactive contextual model classification based on metadata |
KR102622434B1 (ko) * | 2021-11-12 | 2024-01-09 | 주식회사 스타캣 | 데이터의 타입을 자동으로 판별하여 메타데이터를 생성하는 방법 및 이를 위한 머신러닝/딥러닝 모델을 이용한 데이터 타입 판별 장치 |
US11797430B2 (en) * | 2021-12-03 | 2023-10-24 | T-Mobile Usa, Inc. | Configuration-driven data conversion and hosting for software development systems and methods |
US20230177379A1 (en) * | 2021-12-06 | 2023-06-08 | Microsoft Technology Licensing, Llc | Data quality machine learning model |
US20230177026A1 (en) * | 2021-12-06 | 2023-06-08 | Microsoft Technology Licensing, Llc | Data quality specification for database |
US11875017B2 (en) * | 2022-05-17 | 2024-01-16 | Sap Se | Intelligent adjustment of documents via machine learning |
DE102022207482B4 (de) | 2022-07-21 | 2024-03-07 | Zf Friedrichshafen Ag | Computerimplementiertes Verfahren zum Bestimmen eines Datenqualitätsindex, Computerprogramm und Steuereinheit |
CN115827644B (zh) * | 2023-02-13 | 2023-06-09 | 明度智云(浙江)科技有限公司 | 一种基于可视化视图配置的报表生成方法、***和服务器 |
CN116028481B (zh) * | 2023-03-30 | 2023-06-27 | 紫金诚征信有限公司 | 一种数据质量检测方法、装置、设备和存储介质 |
CN116415199B (zh) * | 2023-04-13 | 2023-10-20 | 广东铭太信息科技有限公司 | 基于审计中间表的业务数据离群分析方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2006260795A1 (en) | 2005-06-20 | 2006-12-28 | Future Route Limited | Analytical system for discovery and generation of rules to predict and detect anomalies in data and financial fraud |
US7587636B2 (en) | 2005-08-04 | 2009-09-08 | Microsoft Corporation | Unit test generalization |
US10248672B2 (en) | 2011-09-19 | 2019-04-02 | Citigroup Technology, Inc. | Methods and systems for assessing data quality |
JP6144700B2 (ja) | 2011-12-23 | 2017-06-07 | アマゾン・テクノロジーズ・インコーポレーテッド | 半構造データのためのスケーラブルな分析プラットフォーム |
US10489360B2 (en) | 2012-10-17 | 2019-11-26 | Ab Initio Technology Llc | Specifying and applying rules to data |
US10528718B2 (en) * | 2013-09-27 | 2020-01-07 | Paypal, Inc. | Method and apparatus for a data confidence index |
GB201322057D0 (en) | 2013-12-13 | 2014-01-29 | Qatar Foundation | Descriptive and prescriptive data cleaning |
US10409802B2 (en) | 2015-06-12 | 2019-09-10 | Ab Initio Technology Llc | Data quality analysis |
US10067972B2 (en) | 2015-11-17 | 2018-09-04 | International Business Machines Corporation | Semantic database driven form validation |
US11151100B2 (en) | 2016-10-17 | 2021-10-19 | Sap Se | Performing data quality functions using annotations |
US10565177B2 (en) * | 2016-11-14 | 2020-02-18 | At&T Intellectual Property I, L.P. | Software defined entities for digital service transactions |
US20200110736A1 (en) * | 2018-03-29 | 2020-04-09 | Robert Paul Bauman | Natural language, flat field, record management and file system that defines, integrates and operates records comprising best practices and establishes collaborative peer networks to evolve new best practice records |
US11704494B2 (en) * | 2019-05-31 | 2023-07-18 | Ab Initio Technology Llc | Discovering a semantic meaning of data fields from profile data of the data fields |
US11886399B2 (en) * | 2020-02-26 | 2024-01-30 | Ab Initio Technology Llc | Generating rules for data processing values of data fields from semantic labels of the data fields |
-
2020
- 2020-08-28 US US17/006,504 patent/US11886399B2/en active Active
-
2021
- 2021-02-25 BR BR112022016716A patent/BR112022016716A2/pt unknown
- 2021-02-25 CN CN202180022638.3A patent/CN115380281A/zh active Pending
- 2021-02-25 CA CA3167627A patent/CA3167627A1/en active Pending
- 2021-02-25 EP EP21714721.4A patent/EP4111325A1/en active Pending
- 2021-02-25 JP JP2022550704A patent/JP7512402B2/ja active Active
- 2021-02-25 AU AU2021226330A patent/AU2021226330A1/en active Pending
- 2021-02-25 WO PCT/US2021/019572 patent/WO2021173777A1/en unknown
- 2021-02-26 AR ARP210100521A patent/AR121459A1/es unknown
-
2023
- 2023-12-19 US US18/545,416 patent/US20240152495A1/en active Pending
- 2023-12-28 US US18/399,522 patent/US20240126734A1/en active Pending
- 2023-12-28 US US18/399,545 patent/US20240126735A1/en active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115952174A (zh) * | 2023-03-13 | 2023-04-11 | 青岛庚泽信息技术有限公司 | 一种数据表联接方法、***、终端及存储介质 |
CN115952174B (zh) * | 2023-03-13 | 2023-05-30 | 青岛庚泽信息技术有限公司 | 一种数据表联接方法、***、终端及存储介质 |
CN117668090A (zh) * | 2024-02-01 | 2024-03-08 | 安徽容知日新科技股份有限公司 | 数据交换方法、装置、电子设备和计算机可读存储介质 |
CN117668090B (zh) * | 2024-02-01 | 2024-06-04 | 安徽容知日新科技股份有限公司 | 数据交换方法、装置、电子设备和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
AR121459A1 (es) | 2022-06-08 |
EP4111325A1 (en) | 2023-01-04 |
JP7512402B2 (ja) | 2024-07-08 |
CA3167627A1 (en) | 2021-09-02 |
BR112022016716A2 (pt) | 2022-10-11 |
US20240152495A1 (en) | 2024-05-09 |
US20240126735A1 (en) | 2024-04-18 |
US20240126734A1 (en) | 2024-04-18 |
US11886399B2 (en) | 2024-01-30 |
JP2023516139A (ja) | 2023-04-18 |
US20210263900A1 (en) | 2021-08-26 |
AU2021226330A1 (en) | 2022-08-25 |
WO2021173777A1 (en) | 2021-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7512402B2 (ja) | データフィールドの意味論的ラベルからのデータフィールドのデータ処理値に対するルールの生成 | |
US11704494B2 (en) | Discovering a semantic meaning of data fields from profile data of the data fields | |
US20220092419A1 (en) | Systems and methods to use neural networks for model transformations | |
US11816544B2 (en) | Composite machine learning system for label prediction and training data collection | |
CA3014839C (en) | Fuzzy data operations | |
Whang et al. | Incremental entity resolution on rules and data | |
Qahtan et al. | FAHES: A robust disguised missing values detector | |
US20050262039A1 (en) | Method and system for analyzing unstructured text in data warehouse | |
Kusumasari | Data profiling for data quality improvement with OpenRefine | |
TW201421395A (zh) | 用以遞迴檢閱網際網路及其他來源以識別、收集、管理、判定及鑑定商業身分與相關資料之系統及方法 | |
US20230109772A1 (en) | System and method for value based region searching and associated search operators | |
US20240095219A1 (en) | Techniques for discovering and updating semantic meaning of data fields | |
Talha et al. | Towards a powerful solution for data accuracy assessment in the big data context | |
US11922326B2 (en) | Data management suggestions from knowledge graph actions | |
de Bruin | Record Linkage Toolkit Documentation | |
AU2017201787B2 (en) | Fuzzy data operations | |
US11893008B1 (en) | System and method for automated data harmonization | |
Chowdhury | Implementation of an abstract module for entity resolution to combine data sources with the same domain information | |
Mohammed | Evaluation of Automation Techniques for Data Quality Assessment for Party and Product Master Data | |
CN117971800A (zh) | 一种基于大模型的数据质量sql脚本生成方法 | |
Ciszak | Knowledge Discovery Approach to Repairs of Textual Attributes in Data Warehouses | |
Price | Disinformation Techniques for Entity Resolution | |
Doll et al. | Linking Deutsche Bundesbank Company Data Technical Report 2021-05 |
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 |