相关名词解释
SSAS: SQL Server Analysis Service。
这是微软SQL Server BI(商务智能)平台的一个核心组件,它可以基于UDM(统一维度模型)构建多维数据集和挖掘模型,支持OLAP(在线分析)和Data Mining(数据挖掘)![image【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/3d8b7abb-65bb-42d3-921f-748ad48cf67c.png)
Cube: 多维数据集
这是SSAS项目设计的一个核心目的,创建多维数据集,以便支持OLAP分析。对于Cube而言,不再有行和列的概念,取而代之的是,维度和度量值(以及度量值组)Model-First: 模型先行
这是SSAS从2005这个版本开始支持的一个新特性,也可以说是一个设计Cube的策略。Model-First指的是,在没有数据仓库的情况下,先设计模型(维度和度量值,以及他们之间的关系),然后可以根据这个模型,反向生成数据仓库。与该策略对应的另外一个策略是:Database-First(数据库先行),也就是说,在设计Cube之前,现有一个完整的数据仓库,该策略是指根据数据仓库的结构生成Cube。
这两种策略各有优缺点。Database-first较为简单,能够很快生成Cube,快速验证和开始工作。而Model-First则更加适合于现实的工作中,因为很多时候,我们在做BI项目的时候,可能数据仓库是并不存在的。而且过早地关注数据仓库的物理设计,也不是一个非常好的方案。我们应该是先关注分析需求,并且将这些需求转换为我们的模型。
这一篇文章用一个例子演示了如何使用Model-First策略设计Cube,并且反向工程生成数据仓库。
1.新建一个SSAS项目
![imageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/ee42196d-aaa8-4ed3-996e-7b91e951f4e1.png)
2.启动新建Cube向导(在Cubes文件夹处,右键)
![imageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/fc9f3bdd-92c5-4250-8b5c-8608012d5871.png)
选择Creation Method,“ Create an empty cube”。注意,这里也可以根据模板创建。这两种都属于是Model-First的方式
![imageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/0874bcea-dd5a-4d01-92bf-e9815f23e5e7.png)
由于目前没有数据库,所以下图中只能选择“None”
![imageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/4f52863d-7bff-470b-af90-fcde37165059.png)
接下来给Cube命名,完成操作
![imageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/2a164940-4d4c-4ea1-958b-39378bfa4ae1.png)
![imageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/d2d2cecf-9e0c-46f3-8f8e-c830e1afa23f.png)
3.创建度量值
度量值指的是我们在Cube里面需要进行分析的一些基础指标。本例中,我们假设要分析一个销售业务,有两个度量值,销售额和数量。首先,创建一个度量值组(Measure Group),它是用来组织度量值的
![imageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/4a56c68e-abc4-4bc4-accb-9f2b15fa2552.png)
将度量值组命名为Sales,并且继续创建两个度量值,SalesAmount和Quantity
![imageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/a83082dc-35cc-4591-aa0d-a4b1587cd2d4.png)
4.创建并编辑维度
维度代表了我们在Cube中分析业务的角度。本例中,我们创建两个维度,时间维度和客户维度![imageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/4cc7de27-40d5-45cf-b072-85816ff722f2.png)
首先,创建时间维度(注意,时间维度是一个很特殊的维度,有专门的向导)
![imageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/a44f5e77-cace-4dd3-815c-8594607c19b2.png)
定义时间段以及我们关注的时间信息。这个时间段将决定后续生成数据的范围。
![imageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/d35f579b-9fdf-4154-9224-63319b342ab9.png)
我们甚至还可以定义多个日历
![imageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/9868b281-2fd5-46dc-bb54-30101ca45cdb.png)
![imageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/b363a368-8d54-4180-bc00-af7cabf4dd82.png)
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/663294c2-31fc-43a1-90c7-003178782816.png)
接下来,我们创建一个客户维度.与时间维度不同的是,客户维度一般需要我们自己定义。
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/65eef8e5-13c3-4464-a324-c6b1cb34a92a.png)
【注意】这里也可以使用模板,但为了演示如何设计维度,我不用模板
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/5777f89d-16f5-437d-9c01-dde29283901f.png)
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/a60042b6-5e04-4017-b189-a2d1d82aadc0.png)
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/2be1b1ef-31bc-4e75-b3f2-54082e44fd9c.png)
【注意】这里所谓的SCD,指的是渐变维度。该内容的讨论超出了本文的范围,有兴趣的朋友请参考联机丛书或者我其他的文章。
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/3a3da797-8cfa-47c9-a126-142b63cc299d.png)
通过上面的步骤,我们已经创建了一个维度,我们还需要为该维度添加一些属性(Attribute),例如本例中,我们添加“国家”,“地区”,“城市”,“性别”四个属性,以便利用它们进行分析。
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/0f67f743-7f12-41dd-978e-658113029978.png)
【注意】这里应该还需要创建层次(Hierarchies),以便提供性能。限于篇幅,本文不做这个步骤
5.将维度与Cube关联
维度建立好之后,需要将它与Cube进行关联。我们可以先回到Cube Design界面![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/4f26155c-0e5f-4fae-a4bf-8ef3e7634747.png)
在左下角的方块区域,可以添加维度
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/85e5bba8-ec2a-4b6c-b286-f8d563efb044.png)
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/dfc0cbce-9d4c-46c7-8f16-d9d32bcd16e5.png)
将两个维度都添加进来
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/eb9b9cb2-4de3-41b4-897f-0592a5a0c1c8.png)
光这样做还是不够的,我们需要设置维度与度量值的关系。切换到Dimension Usage界面
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/d68414f2-9bb2-4210-b961-bed44cdf7497.png)
点击每个维度右侧那个小按钮,设置关系为”Regular” ,下图是时间维度
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/3cec7c68-ba88-4955-8311-a8296b13e800.png)
下图是客户维度
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/3d41d437-b399-4a7d-b6cb-44c6d34a9081.png)
6.生成数据库
到上面这样,我们就完成了Cube的设计(当然,我们只是做了最简单的一个范例),那么如何根据这个设计,生成我们需要的数据仓库呢首先,在SQL Server中创建一个空的数据库,例如
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/affe72f7-51a5-441d-9bc2-8bf68deedf4d.png)
然后,回到BI Studio中来,在顶部菜单中选择“Database”==>”Generate Relational Schema”
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/e18718aa-9f52-412a-a1b2-a4909a2cc13f.png)
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/86e4c25a-10af-48f1-994d-ecc8704190c4.png)
点击“New…”来创建一个新的数据源
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/a8d2ece9-559d-4c1b-945a-8326cdf3c8c4.png)
再次点击“New…”,指定我们的服务器和数据库
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/3076d523-b582-4b1c-8395-2b653997df22.png)
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/832c3a07-95a8-4847-886e-a556abcacf71.png)
点击“Next”
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/1c012d5e-86b3-4a8c-b92c-016c5f88dace.png)
【注意】这里选择“Use the service account”
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/d295fcd5-27cc-4448-9ad4-7365a3942581.png)
点击“Finish”
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/09c1989d-8174-4d0a-ba66-2ba559863b69.png)
点击“Next”
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/3a51c0fd-36e4-4740-808a-75bdda98d1a8.png)
点击“Next”
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/7db4a12d-6821-452a-988b-5f7c0873c9d0.png)
点击“Next”
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/f04a656f-f98e-457d-b63a-f64054e80545.png)
点击“Finish”
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/5fa7ee23-0e72-41bd-a3b6-86426db707d3.png)
这样就生成好了我们需要的数据库结构。我们可以在SSMS中查看得到
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/e59bd206-861b-4d23-b000-166a46569589.png)
更加特别的地方是,Time这个维度表里面还包含了数据
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/e95884a3-4e27-4220-af43-d8d28456d8e3.png)
当然,Customers表和Sales表目前是没有数据的,那就需要我们通过设计SSIS,将数据从业务数据库中抽取过来。这个内容已经超出了本文的范围。
7. 部署项目
我们可以将这个设计好的SSAS项目部署起来看看效果如何![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/d31062cf-8d0f-4044-9286-3e12f1dfb6de.png)
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/6d01119c-3838-4381-9e45-4ef8182e0150.png)
部署成功之后,下图就可以看到我们熟悉的OLAP分析的界面了
![imageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimageimage【SSAS】Model-First Cube 设计的最佳实践ssas船舶](/Files/20116/407b2116-16a1-4e2c-ba42-cdc37e1e7fe1.png)
最新评论