【SSAS】Model-First Cube 设计的最佳实践

【备注】这是最近在一个讲座中的例子,整理出来给大家参考

 

相关名词解释

SSAS: SQL Server Analysis Service。

这是微软SQL Server BI(商务智能)平台的一个核心组件,它可以基于UDM(统一维度模型)构建多维数据集和挖掘模型,支持OLAP(在线分析)和Data Mining(数据挖掘)

【SSAS】Model-First Cube 设计的最佳实践_第1张图片

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项目

【SSAS】Model-First Cube 设计的最佳实践_第2张图片

2.启动新建Cube向导(在Cubes文件夹处,右键)

【SSAS】Model-First Cube 设计的最佳实践_第3张图片

选择Creation Method,“ Create an empty cube”。注意,这里也可以根据模板创建。这两种都属于是Model-First的方式

【SSAS】Model-First Cube 设计的最佳实践_第4张图片

由于目前没有数据库,所以下图中只能选择“None”

【SSAS】Model-First Cube 设计的最佳实践_第5张图片

接下来给Cube命名,完成操作

【SSAS】Model-First Cube 设计的最佳实践_第6张图片

【SSAS】Model-First Cube 设计的最佳实践_第7张图片

3.创建度量值

度量值指的是我们在Cube里面需要进行分析的一些基础指标。本例中,我们假设要分析一个销售业务,有两个度量值,销售额和数量。

首先,创建一个度量值组(Measure Group),它是用来组织度量值的

【SSAS】Model-First Cube 设计的最佳实践_第8张图片

将度量值组命名为Sales,并且继续创建两个度量值,SalesAmount和Quantity

【SSAS】Model-First Cube 设计的最佳实践_第9张图片

4.创建并编辑维度

维度代表了我们在Cube中分析业务的角度。本例中,我们创建两个维度,时间维度和客户维度

【SSAS】Model-First Cube 设计的最佳实践_第10张图片

首先,创建时间维度(注意,时间维度是一个很特殊的维度,有专门的向导)

【SSAS】Model-First Cube 设计的最佳实践_第11张图片

定义时间段以及我们关注的时间信息。这个时间段将决定后续生成数据的范围。

【SSAS】Model-First Cube 设计的最佳实践_第12张图片

我们甚至还可以定义多个日历

【SSAS】Model-First Cube 设计的最佳实践_第13张图片

【SSAS】Model-First Cube 设计的最佳实践_第14张图片

【SSAS】Model-First Cube 设计的最佳实践_第15张图片

接下来,我们创建一个客户维度.与时间维度不同的是,客户维度一般需要我们自己定义。

【SSAS】Model-First Cube 设计的最佳实践_第16张图片

【注意】这里也可以使用模板,但为了演示如何设计维度,我不用模板

【SSAS】Model-First Cube 设计的最佳实践_第17张图片

【SSAS】Model-First Cube 设计的最佳实践_第18张图片

【SSAS】Model-First Cube 设计的最佳实践_第19张图片

【注意】这里所谓的SCD,指的是渐变维度。该内容的讨论超出了本文的范围,有兴趣的朋友请参考联机丛书或者我其他的文章。

【SSAS】Model-First Cube 设计的最佳实践_第20张图片

通过上面的步骤,我们已经创建了一个维度,我们还需要为该维度添加一些属性(Attribute),例如本例中,我们添加“国家”,“地区”,“城市”,“性别”四个属性,以便利用它们进行分析。

【SSAS】Model-First Cube 设计的最佳实践_第21张图片

【注意】这里应该还需要创建层次(Hierarchies),以便提供性能。限于篇幅,本文不做这个步骤

 

5.将维度与Cube关联

维度建立好之后,需要将它与Cube进行关联。我们可以先回到Cube Design界面

【SSAS】Model-First Cube 设计的最佳实践_第22张图片

在左下角的方块区域,可以添加维度

【SSAS】Model-First Cube 设计的最佳实践_第23张图片

【SSAS】Model-First Cube 设计的最佳实践_第24张图片

将两个维度都添加进来

【SSAS】Model-First Cube 设计的最佳实践_第25张图片

光这样做还是不够的,我们需要设置维度与度量值的关系。切换到Dimension Usage界面

【SSAS】Model-First Cube 设计的最佳实践_第26张图片

点击每个维度右侧那个小按钮,设置关系为”Regular” ,下图是时间维度

【SSAS】Model-First Cube 设计的最佳实践_第27张图片

下图是客户维度

【SSAS】Model-First Cube 设计的最佳实践_第28张图片

6.生成数据库

到上面这样,我们就完成了Cube的设计(当然,我们只是做了最简单的一个范例),那么如何根据这个设计,生成我们需要的数据仓库呢

首先,在SQL Server中创建一个空的数据库,例如

【SSAS】Model-First Cube 设计的最佳实践_第29张图片

然后,回到BI Studio中来,在顶部菜单中选择“Database”==>”Generate Relational Schema”

【SSAS】Model-First Cube 设计的最佳实践_第30张图片

【SSAS】Model-First Cube 设计的最佳实践_第31张图片

点击“New…”来创建一个新的数据源

【SSAS】Model-First Cube 设计的最佳实践_第32张图片

再次点击“New…”,指定我们的服务器和数据库

【SSAS】Model-First Cube 设计的最佳实践_第33张图片

【SSAS】Model-First Cube 设计的最佳实践_第34张图片

点击“Next”

【SSAS】Model-First Cube 设计的最佳实践_第35张图片

【注意】这里选择“Use the service account”

【SSAS】Model-First Cube 设计的最佳实践_第36张图片

点击“Finish”

【SSAS】Model-First Cube 设计的最佳实践_第37张图片

点击“Next”

【SSAS】Model-First Cube 设计的最佳实践_第38张图片

点击“Next”

【SSAS】Model-First Cube 设计的最佳实践_第39张图片

点击“Next”

【SSAS】Model-First Cube 设计的最佳实践_第40张图片

点击“Finish”

【SSAS】Model-First Cube 设计的最佳实践_第41张图片

这样就生成好了我们需要的数据库结构。我们可以在SSMS中查看得到

【SSAS】Model-First Cube 设计的最佳实践_第42张图片

更加特别的地方是,Time这个维度表里面还包含了数据

【SSAS】Model-First Cube 设计的最佳实践_第43张图片

当然,Customers表和Sales表目前是没有数据的,那就需要我们通过设计SSIS,将数据从业务数据库中抽取过来。这个内容已经超出了本文的范围。

 

7. 部署项目

我们可以将这个设计好的SSAS项目部署起来看看效果如何

【SSAS】Model-First Cube 设计的最佳实践_第44张图片

【SSAS】Model-First Cube 设计的最佳实践_第45张图片

部署成功之后,下图就可以看到我们熟悉的OLAP分析的界面了

【SSAS】Model-First Cube 设计的最佳实践_第46张图片

你可能感兴趣的:(Model)