背景:
Food Mart是一 家跨国 食品超市,每天有成千上万条来自世界各地的销售、库存等记录
在其Food Mart数据库中诞生。基于大数据的背景,该公司的管理层决定为Food Mart建立
数据仓库,期望能从庞大的数据中挖掘出有商业价值的信息,来进-一步帮助管理层进行决策。
由于数据仓库的建立是个漫长的过程,需要分期进行。
在项目初期,管理层决定:
先用销售数据建立数据仓库;
然后,在新建的数据仓库上进行OLAP (联机分析处理);
接着,基于数据仓库建立一个数据挖掘模型,挖掘(研究)办理不同会员卡的老客户有
怎样的特征,进而根据新客户的信息,为新客户推荐不同的会员卡,给公司带来利润;
最后,用Food Mart库存数据扩展上述数据仓库的内容,并完成上述相似的工作。
装载维表
1、将Foodmart数据库bak文件还原
操作步骤:SQL SERVER数据库中右键——任务——还原数据库
2、在数据库中建立维度表
根据数据库建立维度模型和事实表的模型,方便理清思路,作为维度表的依据
在Management Studio中新建维度数据库,根据模型新建维表
3、在BI中装载数据
利用BI的原因:因为在现实场景中,甲方常常不愿原始数据泄露,所以采用数据仓库的方式可以再不查看原始数据的条件下进行数据操作
操作步骤:
①数据流任务
②数据流任务中,新建OLDB数据源
③通过Access驱动连接Access服务器,获取数据源
④通过数据目标,将数据源中的数据装载到维度表中
注意:数据目标中映射很关键;装载维表时需要一个一个按顺序操作,不然很可能出错;出错原因可能是多次装载,导致主键冲突,用delete语句清除
装载事实表
1、获取调整后的数据源
在Management Studio中新建fact表,以及事实表中的各个列。
由于本例中商品销售地区不同,使用货币不同,所以需要在事实表中统一货币符号
思路:使用sql查询结果作为数据源;sql查询时将多个表join到一起形成虚表,从而在虚表中查询经过汇率调整后的价格和成本
sql代码如下:
``` sql
SELECT sale_details.product_id, sale_details.customer_id, sale_details.promotion_id, sale_details.store_sales,
sale_details.store_cost, sale_details.unit_sales, sale_details.the_date, [currency].conversion_ratio,
sale_details.store_id
FROM ((store INNER JOIN
sale_details ON store.store_id = sale_details.store_id) INNER JOIN
[currency] ON YEAR(sale_details.the_date) = YEAR([currency].[date]) AND MONTH(sale_details.the_date)
= MONTH([currency].[date]) AND LEFT(store.store_country, 2) = LEFT([currency].[currency], 2))
```
2、将调整后的数据源派生成为新的列
使用派生列生成汇率转换之后的store_sales和store_cost,命名为store_sales_1和store_cost_1,生成新的两列,同时使用二者之差(利润)作为新的一列profit
3、装载到数据目标
在数据目标中调整映射,将汇率转换之后的数据装载到事实表中
包的装载和部署
操作步骤:
①BI中右键包,生成
②右键包,部署——服务器选择:localhost
③创建路径:到management studio中找到管理——Integration service——右键——创建目录——设置密码
④回到BI进行部署——新建文件夹eg.Maxmin——部署成功
⑤打开包中的.dtsx文件——右键执行——显示装载结果报告
包的调度和定期执行装载
为了方便,将数据任务先清除,只剩FACT表装载,重新生成项目,重新部署
操作步骤:
①打开managementstudio——代理——右键——启动
②用清除脚本delete 这个事实表的数据
③这时,代理前变成▲
作业——新建作业——Maxminjob
④单机作业——新建步骤——step1——类型integration service包——sql代理——localhost——包——删掉
⑤配置——管理器——确定——计划——新建计划——plan1——类型:重复执行——每天频率:执行一次,时间为XX
⑥警报——事件警报
⑦手动执行作业:
右键——开始步骤——成功(在事实表中查看前200行)
⑧查看自动执行情况:
作业属性——查看作业历史记录——刷新多次——可看到作业完成情况