4.4CRM数据仓库设计实验从本节和第五节是CRM数据仓库的实验。
利用SQL SERVER 2000为背景,介绍如何从无到有的生成CRM数据仓库,如何添加多维数据集,以及如何使用数据仓库进行多维分析等。
使读者对客户关系数据仓库又一个直观的认识。
本实验介绍客户关系管理数据仓库的设计,演示如何从已有的OLTP系统通过数据转移得到我们的数据仓库。
4.4.1SQL SERVER 2000数据仓库简介为了满足现代企业对大规模数据进行有效分析和利用的要求,SQL Server 2000包含了一系列提取、分析、总结数据的工具,从而使联机分析处理成为可能。
Microsoft将OLAP 功能集成到Microsoft SQL Server中,提供可扩充的基于COM的OLAP接口。
它通过一系列服务程序支持数据仓库应用。
数据传输服务DTS(Data Transformation Services)提供数据输入/输出和自动调度功能,在数据传输过程中可以完成数据的验证、清洗和转换等操作,通过与Microsoft Repository集成,共享有关的元数据;Microsoft Repository存储包括元数据在内的所有中间数据;SQL Server OLAP Services支持在线分析处理;PivotTable Services 提供客户端OLAP数据访问功能,通过这一服务,开发人员可以用VB或其他语言开发用户前端数据展现程序,PivotTable Services还允许在本地客户机上存储数据;MMC(Microsoft Management Console)提供日程安排、存储管理、性能监测、报警和通知的核心管理服务;Microsoft Office 2000套件中的Access和Excel可以作为数据展现工具,另外SQL Server 还支持第三方数据展现工具。
4.4.2概念模型设计数据仓库的设计首先是概念模型的设计,这也是决定数据仓库实施效果的重要一步。
数据仓库是是面向主题、集成的、相对稳定的、反映历史变化的数据集合。
它整合了在线联机处理过程中的产生的零散的、杂乱的、面向处理的数据,形成统一的面向主题的数据集合。
在客户关系管理中,客户数据的处理一般面向几个核心的主题:客户销售事实信息、客户销售机会信息、客户客户抱怨信息、客户关怀信息等。
数据仓库的数据模型多采用星型关系构架,以一个核心的主题数据表(称为事实表)为中心,其他关系表(维表)通过竹键外键关系同主体数据表关联,维表之间没有直接的关联关系。
这同交易数据库中表与表之间的网状模型对应。
例如,客户抱怨作为一个主题,其星型构架由一个实事表和五个维表构成,如图4.5。
图4.5星型关系构架本节利用SQL Server 2000提供的示例数据库Northwind作为OLTP基础数据库,演示客户销售数据仓库的设计。
首先进行需求分析,我们设计数据仓库的目的是多角度多层次分析客户的销售事实,为客户关系管理提供依据。
如要求方便得到具体客户的销售数据、得到不同客户在不同产品上的销售数据、分析不同地区的销售情况、分析不同时间的销售情况等等。
接下来分析基础的OLTP数据库,辨别事实数据和维数据。
Northwind数据库是一个商贸公司销售数据库,它存储了客户销售相关的各种数据:订单数据、客户数据、产品数据、员工数据、供货商数据等。
它是一个OLTP数据库,以交易为处理单位,关系复杂。
其基本表的关系如图4.6所示。
图4.6 OLTP基本表关系分析可得销售事实数据有:Quantity销售数量、Discount折扣、UnitPrice单价和由此计算出来的销售额Total。
为数据有:Customer客户、Product产品、Supplier供货商、Time 时间。
接下来设计事实表和维表。
其构架如图4.7所示。
图4.7 数据仓库表关系4.4.3数据仓库创建设计好数据仓库概念模型后,需要将OLTP系统中的数据转入数据仓库。
SQL SERVER 2000提供了数据转换服务(Data Tansformation Service/DTS),可以在SQL SERVER与其他的OLE DB、ODBC数据源以及文字文件之间执行数据导入(Import)、导出(Export)以及转换的服务。
DTS设计器是SQL SERVER提供的用于数据转换的有力工具。
它提供图形客户接口,用户可以将所需的对象用鼠标拖拉实现数据从来源数据到目的数据的转移。
它允许用户输入许多类型的定义,便于设计复杂的功能强大的转换任务。
我们以Northwind为来源数据,根据上面设计的概念模型,演示CRM数据仓库的创建。
(1)新建目的数据库在执行数据转移之前,首先要为Northwind数据仓库建立一个数据库,命名为Northwind_DW。
打开SQL SERVER企业管理器,进入我们的服务器,鼠标右键点击数据库图表,在弹出菜单中选择新建数据库,如图4.8所示。
图4.8 新建目的数据库弹出对话框,如图 4.9。
设置数据库属性,在常规选项中填写数据库名称:Northwind_DW。
点击确定,创建完成。
图4.9 新建数据库对话框(2)DTS创建数据源和目的数据库激活DTS设计器开始设计数据转换服务。
在企业管理器中右键点击数据转换服务,在弹出菜单选择新建包,如图4.10。
图4.10 新建包菜单进入DTS设计器,然后设置数据源和数据目的地。
就我们的示例而言,源数据库是Northwind,目的数据库是Northwind_DW。
单击DTS设计器左侧连接中的Microsoft OLE DBProvider for SQL Server图标,如图4.11。
图4.11 设置数据源和数据目的地设置连接属性,如图4.12。
在新建连接文本框内输入新建连接的名字,Northwind。
数据源下拉列表中选取Microsoft OLE DB Provider for SQL Server选项。
服务器下拉式列表中选取local选项,使用Windows身份验证。
在数据库下拉式列表中选取Northwind数据库。
图4.12设置连接属性单击确定,就创建好来源数据库。
类似的创建目的数据库,注意在数据库选项种选择Northwind_DW数据库。
如图4.13所示。
可以用鼠标拖动将数据源和数据目的地的图标置于适当的位置。
图4.13 创建目的数据库(3)转移事实表创建好来数据源和数据目的地后,接下来就要将数据从数据源导入目的地。
首先转移事实表。
根据先前的数据仓库概念模型设计,我们的事实表是sales表。
首先单击Nothwind图标,再按住Ctrl键单击Northwind_DW图标,然后单击转换数据任务按钮。
如图4.14所示。
图4.14 转换数据任务DTS设计器就在Northwind和Northwind_DW之间建立了一个带箭头的指针,(如图4.15)箭头的位置指向目的数据库。
因为转换数据任务是具有方向性的,所以在建立新的数据转换任务时确定数据连接的顺序很重要。
图4.15建立数据转移指针通常要为数据转换任务附加文字批注。
因为任何一个在数据仓库的表,无论是时是表还是维度表都有一个数据转换任务,到最后DTS设计器会拥有许多指针,为了让用户明确每个指针的意义,通常都要加注。
在图4.15中点击文字批注,弹出批注文本框,填写“Sales 事实表转换数据任务”,调整文本框的大小和文字批注的大小,并将其拖动至适当的位置。
如图4.16。
图4.16添加文本框下一步为Sales事实表设置转换任务。
双击Sales事实表转换数据任务指针,这时候屏幕上会出现下面的图形,如图4.17。
在图4.17上单击【源】标签,在【描述(D):】文本框中输入“Sales事实表转换任务”,然后单击【SQL查询(S)】复选框,并在下方的文本框中输入下面的SQL语句:SELECT e.EmployeeID,p.ProductID,s.SupplierID,c.CustomerID,o.OrderDate,od.Quantity,od.Unitprice,od.DiscountFROM Orders o,[order details] od,Employees e,Products p,Suppliers s,Customers cWHERE o.OrderID=od.OrderID AND o.EmployeeID=e.EmployeeIDAND o.CustomerID=c.CustomerID AND od. ProductID=p.ProductIDAND p.SupplierID=s.SupplierID图4.17 设置转换任务属性——源单击【分析查询(A)】按钮来检验输入的SQL语句是否正确。
单击【预览(P)】按钮,则屏幕上会出现图4.18。
图4.18 数据预览DTS 设计器执行了输入的SQL语句并且以窗口的方式呈现给用户查看,用户可以使用滚动轴来浏览,以检验数据是否正确。
如果输入的数据没有问题,请单击【确定】按钮,这时候屏幕又会回到4.17对话框。
现在请单击【生成查询(Q)】按钮,这时候屏幕会出现图4.19的窗口。
图4.19 生成查询可以在图4.19的查询设计器上修改方才所输入的SELECT语句,查询设计器回自动创建图表,以供用户进行输入与修改SQL语句的参考。
当认为一切都没有问题之后,请单击【确定】按钮,这时候屏幕又会回到图4.17对话框。
下一步设置目的数据库。
在图4.17上单击【目的】标签,这时候屏幕上会出现下面的图形,如图4.20。
图4.20 转换数据任务——目的将图4.20中的“新建表”修改为Sales,并且在最后面增加一个Total文本框中,它的数据类型为money(如图4.21 )。
最后单击【确定】按钮,这时候屏幕上会出现下面的图形,如图4.22。
4.21 修改后SQL语句图4.22 目的数据库DTS 设计器已经为我们新建Sales表至northwind-DW数据库了,请注意,在这里创建表的操作是不会储存在包之中的。
当包设计完成并储存之后,执行包时候并不会自动创建表。
下一步进行数据转换任务。
在图4.22上单击【转换】标签,这时候屏幕上会出现下面的图形,如图4.23。
图4.23 转换数据任务——转换DTS设计器为我们指定了字段之间的转换任务,其中EmployeeID、Product SupplierID CustomerID OrderDate Quantity UnitPrice以及Discount都是正确的,我们希望将UnitPrice*(1.0-Discount)*Quantity 存入Total。
现在我们要将UnitPrice*(1.0-Discount)*Quantity转入Total字段。