匹配数据 (Watson Knowledge Catalog)
使用匹配数据可以指定如何将数据自动分类。请选择匹配方法,以指定分析数据库列和数据文件字段时,用于自动识别数据类分配的算法种类。缺省情况下,匹配数据设置为“无自动匹配”,这表示只能将数据类手动分配给列。要自动分配数据类,您必须选择以下过程中描述的其中一种匹配数据方法。
过程
- 打开该数据类,并确保在数据类概述中启用数据匹配。
注:如果一个数据类的父数据类已禁用匹配数据,那么该数据类不会启用数据匹配。草稿数据类不可用于数据匹配。处于不活动状态的数据类可用于指定如何将数据分类,但直到激活之后才会影响操作。 - 请选择:
- 父数据类:用于为当前处理的数据类分配父数据类。当前数据类将是父数据类的相依数据类。
- 相依数据类:用于添加依赖于当前所处理数据类的数据类。
- 单击匹配方法字段旁边的编辑,以选择如何指定匹配条件。大部分方法都有数据和列匹配条件。根据需要,您可使用下列匹配方法:
-
无自动匹配
-
匹配一列有效值 - 使用有效值目录来确定数据库列的每个值是否属于该数据类。
-
匹配参考数据 - 使用参考数据集中的有效值来确定数据库列的每个值是否属于该数据类。
-
匹配正则表达式中的条件 - 使用正则表达式来确定数据库列的每个值是否属于该数据类。
-
匹配已部署的 Java 类中的条件 - Java 类中指定的逻辑确定数据库列的每个值或数据库列整体是否属于该数据类。
注:Watson Knowledge Catalog 提供有一组预定义的 Java 类。您无法使用自己的 Java 类。 -
其他匹配条件 - 匹配仅基于有关列名和/或列数据类型的条件。没有其他条件可评估该列的值。
-
- 输入信息,以定义选定的匹配方法所需的匹配数据和其他匹配条件,并选择阈值。
有关启用和禁用匹配数据的说明:
- 如果一个数据类的父数据类已禁用匹配数据,那么该数据类不会启用数据匹配。
- 对一个数据类禁用匹配数据时,还会对相依数据类禁用匹配。
父数据类
父数据类用于在父/子关系中组织数据类。在使用自动匹配数据方法的情况下,父数据类还充当一种“预过滤器”:如果父数据类具有匹配数据方法,那么仅当父数据类的数据匹配方法返回正匹配时,才会评估子数据类的数据匹配方法。这意味着,如果定义父数据类,它就会影响数据分类过程决定是否应将该数据类分配给所分析数据字段时使用的条件。
阈值
此字段表示将一个数据类实际分配给一列之前,候选数据类在该列上应具有的最低置信度。例如,您将一个类的阈值定义为 90%。在分析期间,有一个列与该数据类匹配且置信度为 95%,另一个列也匹配且置信度为 89%。因为阈值为 90%,该数据类仅分配给第一个列。
如果您希望数据类分配发生,即使并非所有数据都与该数据类匹配也是如此,请降低阈值。您可以在数据质量并不完美时这样做,此外,当您知道匹配方法定义并未涵盖所有可能值的整个域时,也可以这样做。检测城市名称的分类器就是一个很好的例子。定义一个准确的值列表来包含全世界所有的城市名称(包括最小的地点)并不实际。一种更加实际的方法是,输入 100 个最大城市的列表并降低阈值,以反映您并不期望某一列的所有值都是这 100 个最大城市,而是只要在 100 个最大城市的列表中找到足够的值 (<100%),就采用该分类。
匹配一列有效值
将数据与一列有效值匹配时,您需创建一列有效值,以根据数据库列的值级别来将数据分类。在有效值部分中,执行下列任一项操作:
- 在数据类定义中指定一列有效值,或者
-
粘贴 URL,以链接至一个文本文件。该文本文件必须包含一列有效值。它必须通过有效的 URL 来引用,例如,http://www.ibm.com:80/my/path/to/mydataclass.txt 或 file:///my/path/to/mydataclass.txt。该文件的内容为一列有效值,其中每个值各占一行。例如:
Value1 Value2 ... ValueN
- 区分大小写
- 如果选中此项,那么只有大小写与指定有效值相同的值才会分类为与该数据类匹配。如果未选中此项,那么会忽略大小写。
- 完全匹配空格
- 如果选中此项,那么仅将完全匹配项分类为匹配。如果未选中此项,那么多个空格字符会先折叠为单个空格,然后再将有效值与测试值进行比较。例如,如果有效值为
New York,测试值为New York,那么该测试值会分类为匹配,即使有效值中包含多个空格字符(例如New York)也是如此。但是,如果测试值是不含空格的NewYork,那么该测试值会分类为不匹配。 - 整字
- 如果选中此项,那么仅将完全匹配项分类为匹配。如果未选中此项,那么子串值也会分类为与该数据类匹配。例如,如果有效值为
Paris,测试值为Parisienne moonlight,那么该测试值会分类为匹配。
然后,请指定分配该数据类所需满足的匹配数据值百分比。
匹配参考数据
将数据与参考数据集匹配时,您需选择参考数据集,以根据数据库列的值级别来将数据分类。该参考数据集必须包含一列有效值,其中每个值各占一行,例如:
Value1
Value2
...
ValueN
匹配正则表达式中的条件
使用正则表达式来确定数据库列的每个值是否属于该数据类。
与正则表达式中的条件匹配时,您需创建一个正则表达式,以根据数据库列的值级别来将数据分类。
正则表达式适用于结构清晰的信息资产,例如,数据库、表或列。
您可复制下列任何正则表达式示例,并贴到列名条件中。然后,指定列名以测试该正则表达式。此外,还可以选择数据值的数据类型和长度。
注:使用以下任何示例时,强烈建议您通过在“构建正则表达式”工具中使用该示例并输入各种匹配值和不匹配值进行试验,这样您就能清楚了解该表达式所匹配的内容。
示例 - 社会保障号(必须含连字符)
这个正则表达式与社会保障号匹配。它必须包含连字符:
[0-9]{3}-[0-9]{2}-[0-9]{4}
示例 - 电话号码(北美)
这个正则表达式与以下内容匹配:
- 3334445555
- 333.444.5555
- 333-444-5555
- 333 444 5555
- (333) 444 5555
- 上述各项的所有组合
\(?[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}
示例 - 出生日期
这个正则表达式与出生日期匹配:
<tns:DataClass id="DOB" name="%DOB.name" description="%DOB.description" provider="IBM" example="12-30-2015">
<tns:JavaClassifier
className="com.ibm.infosphere.classification.impl.DOBClassifier" />:
<tns:ColumnNameFilter>
<tns:ColumnNameRegularExpression><![CDATA[dob$|birth(day)?|geburtsdatum|na(issance|cimiento|scita)|urodzenia|(生ま(れた日)?|誕生日)|出生(年月)?]]></tns:ColumnNameRegularExpression>
</tns:ColumnNameFilter>
</tns:DataClass>
匹配已部署的 Java 类中的条件
您可添加 Java 类,以表达数据分类逻辑。
重要说明:Watson Knowledge Catalog 提供有一组预定义的 Java 类。您无法使用自己的 Java 类。
如果已将某个使用 Java 类作为匹配方法的预定义数据类删除,您可使用最初使用的规范来重新创建这样的数据类。
注:并非所有以 Java 类形式实现的数据类都可确定单个值是否属于该数据类。某些类将整个列作为整体来进行判定,而不是判定个别的值。
代码范围
您必须定义 Java 类对数据进行分类的范围。匹配范围取决于采样选项:
-
在 Watson Knowledge Catalog 中,对数据资产进行的概要分析是基于前 5000 行数据进行,有关详细信息,请参阅资产概要文件。
-
在发现或数据质量分析期间,您可精确控制所使用的行数。在这种情况下,将使用所有用于该分析的行。
-
缺省情况下,为提高性能,快速扫描仅对最频繁的值(前 100 个)进行分类。
可以按值级别、列级别或所有数据资产列级别将数据分类:
- 范围=值
- 该分类器可以测试列中的每一个值,并指出该值是否与该数据类匹配。这意味着,在匹配完成后,即可报告与该类匹配或不匹配的值的准确数量。数据类分配置信度就是与该数据类匹配的非空值百分比。
- 范围=列
- 该分类器并不会评估每一个值,而是将列作为整体来检查其汇总,并将该列作为整体来判定其是否与该数据类匹配。可供此类分类器使用的信息包括该列的元数据,以及在数据分析期间收集的列数据相关统计信息。此类分类器的速度比范围为值的分类器快,如果需要判定一组值并且没有明确的条件可用于判定单个值是否属于某个类时,可以使用此类分类器。此类分类器无法返回与该数据类匹配的值计数,只能提供该列作为整体与该数据类匹配的置信度百分比。
- 范围=数据集
- 将数据集作为一个整体进行分类。不会显示与整个数据资产匹配的数据类。如果某个术语与此类数据类关联,并且有数据资产与此数据类匹配,那么运行自动发现作业或分析该数据资产时,就会将该术语自动分配至该数据资产。您可使用此范围(范围=数据集)的分类器来定义定制逻辑,以指定分析期间何时应将特定术语自动分配至数据资产。
其他匹配条件
匹配仅基于有关列名和/或列数据类型的条件。没有其他条件可评估该列的值。
您可指定正则表达式以定义匹配的列名,并提供样本列名以供测试。列数据类型可以是任何类型,即布尔值、日期或数字。此外,您还可以定义数据值的最小和最大长度。
锚点示例
以下是锚点示例。锚点的工作方式与大多数软件程序中“搜索”功能的工作方式相同,即搜索文本本身,或搜索嵌套在其他文本中的文本。如果要将正则表达式的字符串设为锚点,请使用以下语法:
^string$
“^”和“$”将 string 中的字符设为锚点。出现在开头的“^”表示 string 的开头,出现在结尾的“$”表示其结尾。“^”字符只有在作为模式中的第一个字符时,才具有这种特殊含义;“$”只有在作为模式中的最后一个字符时,才具有这种含义。
例如,如果要确认某个属性值包含特定字符串,请确保将该字符串设为锚点。假设订购单中的标签在客户只有一个订单时显示为“Order”,在客户有多个订单时显示为“Orders”,并且您希望确认该客户只有一个订单。在该标签的 text 属性上,将值更改为正则表达式:
^Order$
在此情况下,“Order”是唯一匹配的值。“Orders”不匹配。