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继续.

  • 创建自己的DQS知识库有时候需要花费大量精力. 比如地址清理,电话号码清理,建立完整的有效和无效值会花费大量时间. DQS 支持第三方知识库来清理你的数据. 可以查看这篇文章 : how to cleanse Customer Data using Dun & Bradstreet .

  •  

  • B. 创建一个DQS项目,使用知识库来清理你的数据

1. 再 Data Quality Client 首页, Data Quality Projects下面,点击 New Data Quality Project.

2. 项目名称  MyCustomer,并且选择你之前创造的知识库.然后点击Next继续.

3. 映射界面:

        选择数据源,数据库以及表. (我们之前创建的 MyCustomers 表)

        进行列与域的关联. 入下图,点击Next继续.

4. 在清理界面,点击 Start 开始处理程序,完成后点击Next .

5.  Manage and View results 界面:

选择 City 域并点击 Corrected 标签. 你会看大"LA" 被纠正为"Los Angeles"

选择 City 域并点击 New 标签. 你会发现没有知识库中定义的域值清单.点击 Approve all terms 图标继续 (细节可以看下这篇文章 msdn article ). The approved values are now appear under Correct tab.

  选择 CustomerName 域并且点击New标签. 你会看到两个客户名已经通过标准数据更新.点击Next 继续.

6. 在Manage and View results 界面, 你可以把结果导出到SQL Server 或 Excel.

在本文中,我介绍了如何建立一个知识库来清理用户数据, 包括使用域值和基本的术语关系. 然后你可以创建数据质量项目用你创建的知识库清理数据. 你可以在多个项目中使用相同的知识库. 同样的你也可以使用SSIS 自动处理. 可以参考 Matt Mason 写的文章: Overview of DQS Transform ,介绍 SSIS DQS Cleansing transform的使用方法

你可能注意到我用的样本数据有些重复记录. 在下一篇文章,我会介绍如何使用匹配策略和重复数据检测来增强你的知识库.

 

原文地址: http://blogs.msdn.com/b/dqs/archive/2013/06/14/cleansing-customer-data-using-data-quality-services-dqs.aspx

[译] 使用Using Data Quality Services (DQS) 清理用户数据的更多相关文章

  1. [论文笔记] Methodologies for Data Quality Assessment and Improvement (ACM Comput.Surv, 2009) (1)

    Carlo Batini, Cinzia Cappiello, Chiara Francalanci, and Andrea Maurino. 2009. Methodologies for data ...

  2. OpenCASCADE Application Framework Data Framework Services

    OpenCASCADE Application Framework Data Framework Services eryar@163.com 一.概述Overview OpenCASCADE的数据框 ...

  3. 试图使用未在此报表服务器中注册或此版 Reporting Services 不支持的数据扩展插件“Devart.Data.PostgreSql”

    数据源用的是Postgresql 我在Deploy Report的时候出现这条ErrorMessage Error 2 试图使用未在此报表服务器中注册或此版 Reporting Services 不支 ...

  4. Building Applications with Force.com and VisualForce(Dev401)(十一):Designing Applications for Multiple Users: Proseving Data Quality

    Dev401-012:Proseving Data Quality Universal Containers Scenario1.Universal Containers(UC) wants to e ...

  5. CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储

    CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...

  6. Spring Data:企业级Java的现代数据访问技术(影印版)

    <Spring Data:企业级Java的现代数据访问技术(影印版)>基本信息原书名:Spring Data:Modern Data Access for Enterprise Java作 ...

  7. Data Binding(数据绑定)用户指南

    1)介绍 这篇文章介绍了如何使用Data Binding库来写声明的layouts文件,并且用最少的代码来绑定你的app逻辑和layouts文件. Data Binding库不仅灵活而且广泛兼容- 它 ...

  8. 清理8组nodes中表的历史数据,平均每个node中的表有1.5亿条记录,需要根据date_created字段清理8000W数据记录,这个字段没有索引。

    清理8组nodes中表的历史数据,平均每个node中的表有1.5亿条记录,需要根据date_created字段清理8000W数据记录,这个字段没有索引. 环境介绍  线上磁盘空间不足,truncate ...

  9. 17.1.1.8?Setting Up Replication with Existing Data设置复制使用存在的数据

    17.1.1.8?Setting Up Replication with Existing Data设置复制使用存在的数据 当设置复制使用存在的数据,你需要确定如何最好的从master 得到数据到sl ...

随机推荐

  1. poj 1603 Risk_spfa向前星

    poj终于到100题,贴个代码纪念一下,hdu 到400题再贴 题意:有20个城市,接下来有19行告诉你,i城市与n个城市相连,图是双向的,然后叫你求x到y的最小经过几个城市 #include < ...

  2. xmpp总结

    1. 浅谈对于XMPP协议自己的看法以及对其理解 http://blog.sina.com.cn/s/blog_69f68f880102uyeg.html 2. XMPP协议学习笔记一 http:// ...

  3. 基于Andoird 4.2.2的同步框架源代码学习——同步提供端

    Android同步框架 同步(synchronization)允许用户将远程数据下载到新的设备上,同时将设备上的帐户数据上传到远端.同步还保证用户能够看到最新的数据. 开发者自然可以通过自己的方式来设 ...

  4. 【Android】Android实现截取当前屏幕图片并保存至SDCard

    功能 1. 实现截取当前屏幕的功能. 2. 把截取的图片保存到SDCard中的某个目录文件夹下面. Java代码 package com.app.test01; import java.io.File ...

  5. 安装Linux系统到u盘

    第一步:首先插入u盘到电脑主机usb接口处(建议插入到主机箱后置的usb接口).然后打开UltraISO软件,再打开选择须要写入u盘的Ubuntu 10.04或者其它版本号的Linux系统的iso镜像 ...

  6. 图片延迟加载并等比缩放,一个简单的JQuery插件

    使用方法: $(".viewArea img").zoom({height:74,width:103}); (function($){ $.fn.zoom = function(s ...

  7. CSS架构目标

    擅长CSS的Web开发人员不仅可以从视觉上复制实物原型,还可以用代码进行完美的呈现.无需使用表格.尽可能少的使用图片.如果你是个名副其实的高手,你可以快速把最新和最伟大的技术应用到你的项目中,比如媒体 ...

  8. oracle em命令行配置及界面按钮乱码问题解决方法

    一.配置EM dbconsole db [oracle@rusky ~]$ lsnrctl start [oracle@rusky ~]$ emctl start dbconsoleTZ set to ...

  9. 读书笔记一 Java程序员的基本修养(数组及其内存管理)

    1.1 数组初始化 1.1.1 java数组是静态的 java数组被初始化之后,该数组所占的内存空间.数组长度都是不可变的. java程序中的数组必须经过初始化才可使用. 数组的初始化有两种方式: 1 ...

  10. [Linked List]Reverse Nodes in k-Group

    Total Accepted: 48614 Total Submissions: 185356 Difficulty: Hard Given a linked list, reverse the no ...