[译] 使用Using Data Quality Services (DQS) 清理用户数据SQL Server 2012 Data Quality Services (DQS) 允许你使用自己的知识库来清洗数据. 在本文中我会展示一个简单示例.
使用DQS清理步骤如下:
A. 建立DQS 知识库 B. 建立DQS项目然后根据知识库清理数据
在SQL Server database中用下面脚本创建样本数据:
CREATE TABLE MyCustomers ( CustomerID INT, CustomerName NVARCHAR(255), City NVARCHAR(32), PRovince NVARCHAR(32), LastUpdate DATETIME ) INSERT INTO MyCustomers VALUES (1, 'Consolidate Co Ltd', 'Miami', 'FL','2013-01-01'), (2, 'Consolidation Company Ltd', 'New York', 'NY','2013-01-01'), (3, N'什锦的件', 'LA', 'CA','2013-01-01'), (4, 'Chop-suey Chinese', 'Los Angeles', 'CA', '2013-03-03'), (5, 'Big Cheese, The', 'Redmond', 'WA', '2013-02-02'), (6, 'THE BIG CHEESE', 'Chicago', 'Il','2013-02-02'), (7, 'To Be Filled Later', 'Redmond', 'Wash.', '2013-01-01')
A. 建立DQS 知识库1. 先运行SQL Server 2014 Data Quality Server Installer 安装DQS
注: DQS只能安装在企业版或者商业智能版的SQL 上
安装完毕以后引擎新增的DQS_MAIN数据库,其中新增了三个Role,如果你要让其他用户访问DQS,那么必须赋予他们其中一个Role才可以访问DQS
2.装好以后启动 Data Quality Client.
3. 点击 New Knowledge Base. Name字段输入 MyCustomerKB, 确定 Domain Management已经被选中,然后点击 Next
4. 点击 Create Domain 图标.
5. 弹出框里面 Domain Name写 CustomerName . 还有一个可选项 Format Output to . 可以选成 Capitalize.
6. 重复相同的步骤创建 City 和 State域(暂且叫域吧,不知道官方翻译成什么) .
7. 选择 City 域, 点击 domain values 标签. 在这个界面,你可以输入所有有效值或者无效值.
点击 Add new domain value 图标.输入一个正确值, 比如Los Angeles,然后回车. 点击 Add new domain value 图标.输入一个无效值, 比如United States, 点击 Type 列的下拉框,然后选择黄色感叹号(yellow triangle, 无效值) (这里有三个类型. 正确,无效和错误; 无效 (invalid) 表示该值在本域中无效,但是可能在另外一个域中有效. 例如 United States 不是city 域的有效值,但是它是country的有效值 ; 错误(error)则表示完全不正确). 你可以指定正确的值来修正无效或者错误值. 否则这些值会在清理过程中被标记为无效 (invalid). 点击 Add new domain value 图标. 输入一个同义词LA,然后按回车. 选中 "LA" 和 "Los Angeles" 右击然后选择设置成同义词 (Set as Synonyms).
注意:默认情况下, DQS 包含一个 DQS_NULL 有效值, 你可以把它的类型改为无效, 比如你想标记缺失值.
接着改变主导值,右击Los Angeles并选择 Set as Leading during .
city域最终显示如下:
8. 选择 State 域 ,点击 domain values 标签. 在这个步骤.我们用通过表格导入值.
从http://www.stateabbreviations.us/获取米国洲的缩写列表. 拷贝前三列到Excel然后保存为 csv 文件. 点击import values 图标的下拉尖头,选择 import valid values from excel. ..balabala….
导入后结果如下. DQS自动把第一列作为主导值,后面的列作为同义词. (这个DQS 一上来就让我看到Bug…我用的是SQL 2014 . 比如说有一行数据MarylandMd.MD 其中Maryland 并没有成为Md. 和MD的主导值)
9. 选择 CustomerName 域,然后点击Term-Based Relations 标签. DQS允许你域值里面定义术语,并使他们标准化. 例如公司名称常包括 “corp”,当出现他的变种(比如 "Microsoft Corp" 或者 "Microsoft Corporation")的时候你可以使用DQS 标准化域值中的术语,在这个步骤中,我们将定义两个术语:
点击 Add new relation 图标 添加”co”值,并设置正确值为"Company" 回车继续. 添加 "ltd" 值,并设置正确值为"Limited" . 完成后显示如下,然后点击Finish 按钮 .
10. 点击 Publish 按钮 button继续.