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任务”后
对事实表的转换在在作业流优先级设置中设为在三个维表转换之后
[此贴子已经被作者于2006-12-21 14:43:55编辑过]