【SSAS】Model-First Cube 设计的最佳实践
【备注】这是最近在一个讲座中的例子,整理出来给大家参考
相关名词解释
SSAS: SQL Server Analysis Service。
这是微软SQL Server BI(商务智能)平台的一个核心组件,它可以基于UDM(统一维度模型)构建多维数据集和挖掘模型,支持OLAP(在线分析)和Data Mining(数据挖掘)
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项目
2.启动新建Cube向导(在Cubes文件夹处,右键)
选择Creation Method,“ Create an empty cube”。注意,这里也可以根据模板创建。这两种都属于是Model-First的方式
由于目前没有数据库,所以下图中只能选择“None”
接下来给Cube命名,完成操作
3.创建度量值
度量值指的是我们在Cube里面需要进行分析的一些基础指标。本例中,我们假设要分析一个销售业务,有两个度量值,销售额和数量。
首先,创建一个度量值组(Measure Group),它是用来组织度量值的
将度量值组命名为Sales,并且继续创建两个度量值,SalesAmount和Quantity
4.创建并编辑维度
维度代表了我们在Cube中分析业务的角度。本例中,我们创建两个维度,时间维度和客户维度
首先,创建时间维度(注意,时间维度是一个很特殊的维度,有专门的向导)
定义时间段以及我们关注的时间信息。这个时间段将决定后续生成数据的范围。
我们甚至还可以定义多个日历
接下来,我们创建一个客户维度.与时间维度不同的是,客户维度一般需要我们自己定义。
【注意】这里也可以使用模板,但为了演示如何设计维度,我不用模板
【注意】这里所谓的SCD,指的是渐变维度。该内容的讨论超出了本文的范围,有兴趣的朋友请参考联机丛书或者我其他的文章。
通过上面的步骤,我们已经创建了一个维度,我们还需要为该维度添加一些属性(Attribute),例如本例中,我们添加“国家”,“地区”,“城市”,“性别”四个属性,以便利用它们进行分析。
【注意】这里应该还需要创建层次(Hierarchies),以便提供性能。限于篇幅,本文不做这个步骤
5.将维度与Cube关联
维度建立好之后,需要将它与Cube进行关联。我们可以先回到Cube Design界面
在左下角的方块区域,可以添加维度
将两个维度都添加进来
光这样做还是不够的,我们需要设置维度与度量值的关系。切换到Dimension Usage界面
点击每个维度右侧那个小按钮,设置关系为”Regular” ,下图是时间维度
下图是客户维度
6.生成数据库
到上面这样,我们就完成了Cube的设计(当然,我们只是做了最简单的一个范例),那么如何根据这个设计,生成我们需要的数据仓库呢
首先,在SQL Server中创建一个空的数据库,例如
然后,回到BI Studio中来,在顶部菜单中选择“Database”==>”Generate Relational Schema”
点击“New…”来创建一个新的数据源
再次点击“New…”,指定我们的服务器和数据库
点击“Next”
【注意】这里选择“Use the service account”
点击“Finish”
点击“Next”
点击“Next”
点击“Next”
点击“Finish”
这样就生成好了我们需要的数据库结构。我们可以在SSMS中查看得到
更加特别的地方是,Time这个维度表里面还包含了数据
当然,Customers表和Sales表目前是没有数据的,那就需要我们通过设计SSIS,将数据从业务数据库中抽取过来。这个内容已经超出了本文的范围。
7. 部署项目
我们可以将这个设计好的SSAS项目部署起来看看效果如何
部署成功之后,下图就可以看到我们熟悉的OLAP分析的界面了