• 【SSAS】ModelFirst 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

  • 相关阅读:
    BZOJ1040: [ZJOI2008]骑士
    Codeforces 849D.Rooter's Song
    POJ4852 Ants
    NOIP模拟赛 17.10.10
    Codeforces 851D Arpa and a list of numbers
    BZOJ2529: [Poi2011]Sticks
    BZOJ1826: [JSOI2010]缓存交换
    POJ3579 Median
    codevs1214 线段覆盖
    POJ2230 Watchcow
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/2076718.html
Copyright © 2020-2023  润新知