1、将Access数据库DB导入SQL Server服务器,命名为“图书销售系统”,新建关系
下载信息 [文件大小: 下载次数: ] | |
![]() |
2、新建SQL Server数据库“图书销售系统_Mart”,分析得出维表和事实表
3、将Access数据库DB1导入SQL Server的数据库“图书销售系统_Mart”,新建关系,设定标识列(主键)
下载信息 [文件大小: 下载次数: ] | |
![]() |
4、新建DTS包
4、1 对图书销售系统_Mart数据库建立目标数据源:OLAP_Mart
4、2 对图书销售系统数据库建立来源数据源:Customer_Source
4、3 对图书销售系统数据库建立来源数据源:Book_Source
4、4 对图书销售系统数据库建立来源数据源:BookStore_Source
4、5 为这些数据源建立转换包
其中的Customer数据源的年龄到年龄层的转换脚本为: function main() if DTSSource("年龄")<=20 then DTSDestination("年龄层")="20岁以下" elseif DTSSource("年龄")<=30 then DTSDestination("年龄层")="20岁——30岁" elseif DTSSource("年龄")<=40 then DTSDestination("年龄层")="30岁——40岁" elseif DTSSource("年龄")<=50 then DTSDestination("年龄层")="40岁——50岁" else DTSDestination("年龄层")="50岁以上" end if Main=DTSTransformStat_OK end function
其中的Book数据源中元数据使用sql语句获取: select book.图书编号, book.图书名称, book.出版社, book.库存量, book.销售单价, book_category.图书类别名称, book_category.图书类别说明 from book_category inner join book on book_category.图书类别编号=book.图书类别编号
4、6 对图书销售系统数据库建立来源事实数据源:FactSource 对OLAP_Mart现有连接新建一个目标数据源:OLAP_Mart
它们之间的数据转换为:
源数据为sql语句: select 图书销售系统_Mart.dbo.Book_Dim.图书序号, 图书销售系统_Mart.dbo.Customer_Dim.客户序号, 图书销售系统_Mart.dbo.BookStore_Dim.书店序号, 图书销售系统.dbo.SalesOrder.购书日期, 图书销售系统.dbo.SalesOrder.订单编号, 图书销售系统.dbo.Order_Detail.销售数量, 图书销售系统.dbo.Order_Detail.销售额 from salesOrder inner join order_detail on salesOrder.订单编号=order_detail.订单编号 inner join 图书销售系统_Mart.dbo.Book_Dim on order_detail.图书编号=图书销售系统_Mart.dbo.Book_Dim.图书编号 inner join 图书销售系统_Mart.dbo.BookStore_Dim on salesOrder.书店编号=图书销售系统_Mart.dbo.BookStore_Dim.书店编号 inner join 图书销售系统_Mart.dbo.Customer_Dim on salesOrder.客户编号=图书销售系统_Mart.dbo.Customer_Dim.客户编号 where(salesOrder.购书日期 is not null)
4、7 添加“执行sql任务”,指定现有连接为“OLAP_Mart” sql语句为: delete from sales_fact delete from customer_dim delete from bookstore_dim delete from book_dim
4、8 创建作业流的顺序 对维表到事实表的转换在作业流优先级设置中设为在“执行sql任务”后 对事实表的转换在在作业流优先级设置中设为在三个维表转换之后