本主题介绍如何在 Data Quality Services(DQS)中创建域规则。 域规则是用于验证、更正和标准化域值的条件。 域规则必须在整个域内保持有效,这样才能认为域值是准确的,并且适应业务要求。 域规则可以包括用于验证域值的验证规则,但不用于更正数据质量项目中的数据。 规则还包括针对有效数据应用的标准化规则,用于数据更正。
在您开始之前
先决条件
若要创建域规则,必须在域管理活动中打开知识库和域。
安全
权限
必须在DQS_MAIN数据库上具有dqs_kb_editor或dqs_administrator角色才能创建域规则。
生成域规则
启动数据质量客户端。 有关执行此作的信息,请参阅 “运行数据质量客户端应用程序”。
在数据质量客户端主屏幕中,打开或创建知识库。 选择 “域管理 ”作为活动,然后单击“ 打开 ”或“ 创建”。 有关详细信息,请参阅 “创建知识库 ”或 “打开知识库”。
注释
域管理在 Data Quality Service 客户端的页面中执行,其中包含五个选项卡用于单独的域管理作。 它不是向导驱动的过程;任何管理作业可以单独执行。
从“ 域 管理”页上的“ 域” 列表中,选择要为其创建域规则的域,或创建新域。 如果必须创建新域,请参阅 “创建域”。
单击“ 域规则 ”选项卡。
单击“ 添加新域规则”,然后输入知识库中唯一的名称和规则的说明。
选择 “活动 ”以指定规则将运行(默认值),或取消选择以防止规则运行。
在“ 生成规则 ”窗格中,从规则子句框中的下拉列表中选择条件。
如果条件需要值,请在关联的文本框中输入该值。
如果需要其他 子句,请单击“将新条件添加到所选子句 ”图标。
选择 AND 或 OR 作为运算符。
从下拉列表中选择条件,然后根据需要输入作数的值。
若要更改子句在列表中显示的顺序,请选择一个子句,然后单击向上或向下箭头。 这将更改执行它们的顺序,这可能会影响结果。
需要时添加更多条款。 如果需要,请通过选择该子句并单击“ 删除所选子句”来删除子句。
根据需要重复添加新规则。
若要查看验证规则在实现时对值的影响,请单击“ 分析域规则对域值”图标的影响 。
继续执行下面的测试过程。
测试域规则
选中一个规则后,单击 测试数据图标上的“运行所选域规则 ”。
在“测试域规则”对话框中,单击“ 为域规则图标添加新的测试术语 ”。 输入要测试的值。 根据需要输入其他值。 选择一个值,然后单击“ 根据需要删除所选测试术语 ”图标。
单击“ 测试所有术语”图标上的域规则 。
检查每个术语的有效性。 检查表示“正确”,交叉表示“错误”,三角形表示“无效”。
完成测试对话框中的操作后,点击关闭。
必要时重复其他规则。
请执行以下申请步骤。
应用域规则
单击“ 应用所有规则 ”,将规则应用于域中的值。 单击应用所有规则后,将显示一个弹出窗口,指示规则将影响某些状态下多少个值。 如果仍要应用规则,请单击“ 是 ”,否则单击 “否 ”。 如果单击“ 是”,请单击“ 确定 ”以关闭结果弹出窗口。
注释
创建或更改规则时,无需保存更改。 但是,必须应用规则才能使更改生效。
单击“ 放弃所有更改 ”可删除对域规则所做的任何更改,还原到以前应用的规则,因此在上次应用规则后所做的任何更改将不再适用。 域中每个值的有效性将更新为符合以前应用的规则,而不是放弃的更改。
单击“ 完成 ”以完成域管理活动,如 “结束域管理活动”中所述。
后续步骤:创建域规则后
创建域规则后,可以对域执行其他域管理任务,执行知识发现以将知识添加到域,也可以向域添加匹配策略。 有关详细信息,请参阅 “执行知识发现”、“ 管理域”或 “创建匹配策略”。
域规则条件
下表描述了可在域规则中应用的条件,并提供示例来说明如何应用条件。
应用域规则并且域值失败时,将指定该值无效。 如果导致规则无效的规则被删除、停用或规则已更改,则指定为“无效”的值将更改为“更正”,以使该值不再失败。 如果已将值指定为“手动无效”(在“域管理”活动的“域值”选项卡中),并且已删除、停用或更改该值的规则,则该值仍将根据手动指定指定为“无效”。
具有明确条件的域规则会将规则逻辑应用于条件或条件中值的同义词以及值本身。 最终条件为 Value 等于、Value 不等于、Value 在或 Value 不在。 例如,假设你有以下域规则:“对于'City',值等于'洛杉矶'”。 如果“洛杉矶”和“LA”是同义词,两者都是正确的。 另一方面,如果规则不包含明确的条件,如“对于城市,值以”s“结尾,则”洛杉矶“是正确的,但其同义词”LA“将出错。
在创建域规则时,你有多个选择可供选择。 例如,若要验证值是否以字母 A、B 或 C 开头,可以创建包含复杂条件的简单规则(例如具有管道字符的正则表达式),也可以创建包含多个简单条件的复杂规则。 第一个规则的示例是“值包含正则表达式(^A|^B|^C)”。 第二个规则的一个示例是“'值以 A 开头'或'值以 B 开头'或'值以 C 开头'”。
| 条件 | DESCRIPTION | 示例: |
|---|---|---|
| 长度等于 | 只有由操作数指定字符数构成的值才有效。 | 示例操作数:3 有效值:BB1 无效值:AA |
| 长度大于或等于 | 只有由作数指定的字符数或更多的字符组成的值才有效。 | 示例操作数:3 有效值:BB1、BBAA 无效值:AA |
| 长度小于或等于 | 只有由操作数指定的字符数或更少字符数构成的值才有效。 | 示例操作数:3 有效值:BB1、AA 无效值:BBAA |
| 值等于 | 只有与作数相同的值才有效。 | 示例操作数:BB1 有效值:BB1 无效值:BB、BB1# |
| 值不等于 | 只有与运算数不相同的值才有效。 | 示例作数:BB1 有效值:BB、BB1# 无效值:BB1 |
| 值包含 | 只有所有字符均包含在操作数中的值(按任意顺序)才有效。 | 示例操作数:A1 有效值:A1、AA1 无效值:1A、AA |
| 值不包含 | 只有操作数中不包含的值才视为有效。 | 示例操作数:A1 有效值:1A、AA 无效值:A1、AA1 |
| 价值始于 | 只有以运算符中的字符开头的值才有效。 | 示例作数:AA 有效值:AA1 无效值:1AAB |
| 值以...结尾 | 只有以操作数中的字符结尾的值才有效。 | 示例作数:AA 有效值:1AA 无效值:1AAB |
| 值为数值 | 只有具有 SQL Server 数值数据类型的值才有效。 这包括 int、decimal、float 等。 | 示例操作数:N/A 有效值:1、25、345.1234 无效值:2b、bcdef |
| 值为日期/时间 | 只有具有 SQL Server 日期/时间数据类型的值才有效。 这包括日期时间、时间、日期等。 | 示例操作数:N/A 有效值:1916-06-04;1916-06-04 18:24:24;2001 年 3 月 21 日;5/18/2011;18:24:24 无效值:“2006 年 3 月 213 日” |
| 价值在于 | 只有在运算符中的集合内的值才有效。 若要在集合中输入值,请单击作数文本框,输入第一个值,按下 Enter 键,再输入第二个值,重复此步骤,直到输入所有想要加入集合的值,然后再次单击作数文本框。 DQS 将在一组值之间添加逗号。 如果输入具有逗号且没有回车符的单个字符串(例如“A1,B1”),DQS 会将该字符串视为集中的单个值。 |
示例作数:[A1,B1] 有效值:A1、B1 无效值:AA、11 |
| 价值不在于 | 只有在操作数中不在集合中的值才有效。 | 示例操作数:[A1,B1] 有效值:AA、11 无效值:A1、B1 |
| 值与模式匹配 | 只有当值与操作数中的字符、数字或特殊字符的模式匹配时,该值才有效。 任何字母 (A...Z) 可用作任何字母的模式;不区分大小写。 任何数字(0...9)都可以用作任何数字的模式。 除字母或数字之外,任何特殊字符都可以用作自身模式。 括号 [],定义可选匹配。 |
示例操作数:AA:000(模式为任意两个字符,后跟冒号(:),再后跟任意三位数字。 有效值:AB:012、df:257 无效值:abc:123、FJ-369 有关 DQS 中的模式规则和示例的详细信息,请参阅 DQS 域规则中的模式匹配。 |
| 值与模式不匹配 | 只有不符合作数中字符、数字或特殊字符模式的值才有效。 | 示例操作数:A1(其值不能匹配任何一个字符后跟任何一位数字的模式)。 有效值:AB1、A、A:5 无效值:B7、c9 |
| 值包含模式 | 只有包含操作数中的字符、数字或特殊字符模式的值才有效。 | 示例操作数:AA-12(值包含一个模式:任意的两个字符后跟一个连字符(-),随后是任意的两位数字。) 有效值:AAA-01、ab-975 无效值:A7、AA-6、C-45、aa;98 |
| 值不包含模式 | 只有不包含操作数中字符模式的值才有效。 | 示例操作数:AB-12(值不能包含以下模式:任何 两个字符,随后是连字符(-),然后是 任何 两位数字。) 有效值:A7、AA-6、C-45、aa;98 无效值:AAA-01、ab-975 |
| 值与正则表达式匹配 | 只有符合操作数中的正则表达式的值才会被视为有效。 不要将“^”定位点或“$”定位点添加到正则表达式,因为 DQS 会自动将这些定位点添加到包含 Value 等于正则表达式的子句中。 (或者,可以使用括号将包含“^”和“$”定位点的正则表达式括起来。有关正则表达式的详细信息,请参阅 正则表达式语言元素。 |
示例操作数:[1-5]+ (每个字符必须是 1 到 5 之间的数字字符,出现一次或多次) 有效值:123、12345、14352 无效值:456、ABC |
| 值与正则表达式不匹配 | 只有不符合操作数中正则表达式的值才会被视为有效。 | 示例算符:[1-5]+ (字符串不能仅包含 1 到 5 的数字) 有效值:456、ABC 无效值:123、123456、14352 |