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

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

 

相关名词解释

SSAS: SQL Server Analysis Service。

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

image

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

image

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

image

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

image

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

image

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

image

image

3.创建度量值

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

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

image

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

image

4.创建并编辑维度

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

image

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

image

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

image

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

image

image

image

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

image

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

image

image

image

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

image

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

image

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

 

5.将维度与Cube关联

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

image

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

image

image

将两个维度都添加进来

image

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

image

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

image

下图是客户维度

image

6.生成数据库

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

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

image

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

image

image

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

image

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

image

image

点击“Next”

image

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

image

点击“Finish”

image

点击“Next”

image

点击“Next”

image

点击“Next”

image

点击“Finish”

image

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

image

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

image

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

 

7. 部署项目

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

image

image

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

image

posted @ 2011-06-09 18:11  陈希章  阅读(5145)  评论(13编辑  收藏  举报