SQL Server 2005 中的商务智能和数据仓库(6)

来源:互联网 发布:linux oid 表 编辑:程序博客网 时间:2024/06/06 00:24
例如,设想一个“客户”维度。关系型源表有八列:

 

客户键

客户名称

年龄

性别

电子邮件

城市

地区

国家

相应的 Analysis Services 维度应具有七个属性:

客户(整型键、以“客户名称”作为名称)

年龄、性别、电子邮件、城市、地区、国家

数据中存在一种自然层次结构,。出于导航目的,应用程序开发人员可以选择创建第二个层次结构:。商务用户并没有看到这两个层次结构行为方式之间有何区别,但是,自然层次却可以从深谙层次关系的索引结构(对用户隐藏)中受益。

新维度结构的最大优势在于:

维度不需要加载到内存中。因此,维度可以非常巨大(经测试,Beta 2 可支持上千万名成员)。

用户可以添加和删除属性层次结构,而不必再重新处理维度。属性层次索引结构属轻型结构,在后台计算,并不影响多维数据集查询。

重复的维度信息被去除;使得维度更加轻巧。

由于引擎为并行处理创建了机会,因此维度处理信息性能得到了改进。

维度类型

Analysis Services 2000 中包括两种维度类型:常规层次类型和父子类型。Analysis Services 2005 新增了一些重要的新维度结构。其中有些结构的名称是临时的,但是,这些名称都是 BI 文献中较为通用的。

角色扮演:维度扮演着一些重要角色,具体哪些角色要依上下文而定。例如,[时间] 维度可能会被 [订购日期] 和 [发货日期] 重用。在 2005 中,扮演着某些角色的维度只需存储一次,便可多次使用。这样便可使所需的硬盘空间和处理时间降至最低。

事实:事实或“退化”维度与事实(如事务编号)具有一一对应的关系。从本质上讲,退化维度不能用于分析,但可用作标识,以定位特定的事务,或识别组成聚合单元的事务。

引用:维度并不能够直接和事实数据表发生联系,但可通过另一维度间接发生联系。这方面的原型示例有 [地理位置] 引用维度,它同时关联了 [客户] 和 [销售团队] 两个维度。引用维度可能由数据提供程序提供,并包括在多维数据集中,不必再修改事实数据。

数据挖掘:数据挖掘维度支持从数据挖掘模型(包括群集、决策树和关联规则)生成的维度。

多对多:这些维度有时被称为多值维度。在大部分维度中,事实能且只能连接一个维度成员。多对多维度解决了多维度成员问题。例如,银行储蓄客户可以有多个帐户(支票、储蓄);一个帐户可以有多个客户 (Mary Smith、John Smith)。[客户] 维度有多个成员,这些成员都与一个帐户事务相关联。在维度不能够直接关联事实数据表时,2005 多对多维度支持复杂的分析,并扩展了维度模型,使之超越了传统的星形架构。

量度组和透视

Analysis Services 2005 引入了“量度组”和“透视”,以用来简化分析数据库的设计和部署。在 Analysis Services 2000 中,鼓励用户构建多个物理多维数据集。每个多维数据集相当于一个特定的维度,通常还相当于一个特定的关系事实数据表。虚拟多维数据集以一种对商务用户透明,而对开发人员设计又不太复杂的方式,合并多个事实数据表。

在 2005 中,最通用的方案将具有一个包含一个或多个“量度组”的物理多维数据集。量度组中的事实数据具有特定的细化程度(由维度层次的交叉点定义)。查询根据需要被自动定向到不同的量度组。在物理层上,分区(与 Analysis Services 2000 分区类似)在“量度组”上定义。

大型应用程序将为用户提供大量的维度、量度组,而且还会给导航带来难度。在“多维数据集编辑器”的“透视”选择卡中定义的“透视”可以创建一个多维数据集的子集“视图”。为了要提供一定程度的个性化,可以将安全性角色与适合该角色的透视集相关联。

我们希望大部分的 Analysis Services 2005 数据库都包含一个具有多个量度组和多个透视的多维数据集。

对多维数据集事实结构和查询性能所做的其他改进有:

量度可以为空;在 SQL SERVER 2000 中,"null" 量度被当作 0 处理。

适当的多维数据集分区使得“非重复计数度量值”的查询性能得到了改进,性能值增加了几个数量级。

对备选数据库管理系统的访问由可扩展的部件基础结构提供。RDBMS 的部件用于指定如何为关系查询和写入优化 SQL 语句。用户可以轻松添加其他关系系统的部件;部件被作为 XSL 文件实现。

计算和分析

使用分析服务器(如 Analysis Services)最大的争议之一就是其集中定义复杂计算的能力。Analysis Services 一直以来都能交付丰富的分析数据,但对某些复杂概念却很难实现。

其中一种概念就是半累积量度。最通用的量度值(如 [销售额])能够清晰地汇总所有维度:长期以来的 [总销售额] 是指所有产品、所有客户在所有时间内的销售总额。相比之下,半累积量度值可能在某些维度中是累积的,而在其他的维度却不是累积的。最常见的一个例子便是余额,如仓库中的货品数。很显然的,昨天和今天这两天的余额总计肯定不等于昨天的余额加上今天的余额。相反,它可能是期末余额,虽然在有些情况下它是期初余额。在 Analysis Services 2000 中,您必须定义一个复杂的 MDX 计算,帮能交付正确的度量值。而在 Analysis Services 2005 中,期初余额和期末余额都是本机聚合类型。

非重复计数度量值在 2005 中也得到了很大的改进。现在,非重复计数度量值可定义在字符串数据上,而查询可以被定义为在任意集合上执行“非重复计算”。而 Analysis Services 2000 只能够在预先定义的层次结构上执行非重复计算。

“时间智能”向导将创建一个时间计算维度,其中包含该期间与最后期间的对比计算,可以移动平均值,同时还可创建其他的通用时间计算构造。

MDX 脚本

多维表达式 (MDX: MultiDimension Expression) 是一种功能非常强大的语言,可用于定义 Analysis Services 2000 计算和安全规则。MDX 功能强大,但也也很复杂。Analysis Services 2005 利用被简化了结构和语法的“MDX 脚本”定义了一种新的计算模型。

MDX 还是 Analysis Services 系统中的查询语言。查询工具(如 Excel 透视表)根据用户的“拖放”行为生成 MDX 查询。MDX 的这种使用与“MDX 脚本”无关;“MDX 脚本”用于服务器定义的对象,如计算成员和单元计算,并非用于用户查询。

在定义 Analysis Services 2005 多维数据集时,其中只包含结构,而没有数据。“MDX 脚本”是多维数据集结构的组成部分。一般情况下都会定义一个默认的“MDX 脚本”命令,用来计算默认的聚合。默认的“MDX 脚本”命令只包含一条语句:

Calculate;

在多维数据集完全处理之后,应用默认 MDX Script 之前,多维数据集将包含叶层级的数据,但不包含聚合。在应用单一语句的默认“MDX 脚本”时,将计算和存储聚合。

“MDX 脚本”语句包含以下命令,用分号隔开:

限制语句作用域的作用域语句

公式和值分配

计算成员定义

命名集定义

在多维数据集的设计中,Business Intelligence Development Studio 的用户界面和“MDX 脚本”均(其中包括计算成员和命名组)在“计算”视图中构建。“MDX 脚本”可以在提供语法向导的默认“计算表单”视图中查看,也可以在“计算脚本”视图中查看,这一视图把“MDX 脚本”显示为一组用分号分隔的命令。您可以在这两个视图间来回切换,虽然“表单”视图的显示要求整个脚本的语法必须正确。

“MDX 脚本”具有几个主要功能:

脚本遵循过程模型:依次应用语句。“MDX 脚本”开发人员不需要再受传递次序的烦恼,他们得到充分的保护,不必再担心会编写出引起无限制递归的脚本。

可包含计算:SCOPE 语句使您可以针对多维数据集的特定区域,定义一个或多个计算。例如:

SCOPE ([Customers].[Country].[Country].[USA]);            [Measures].[Sales] = 100;            END SCOPE;            

作用域可以嵌套。

可缓存计算:CACHE 关键字表示脚本计算结果应存储在磁盘上,而不是在执行运行时计算。在查询包含大量复杂计算的大型多维数据集时,缓存的计算可以实现非常高的查询性能。当输入缓存计算更改时,该计算便会被删除和重建。

用户可以对“MDX 脚本”进行调试。您可以逐行完成“MDX 脚本”,浏览每步的多维数据集结果。

存储过程

Analysis Services 2005 引入了存储过程,来扩展用户定义功能 (UDF: User defined function) 所提供的能力。存储过程可以用任何公共语言运行时编程语言(例如 C++、Visual Basic 或 C)编写。存储过程允许一次性开发公共代码、将代码存储在一个位置,并在其他存储过程、计算和用户查询中重新使用所存储的公共代码,从而简化了数据库的开发和实施。

在 Analysis Services 2005 中存在两种类型的存储过程:

MDX 函数存储过程与任何其他的 MDX 函数相似,它提供了一种可轻松扩展 MDX 语言的机制。

自定义存储过程执行特定于实施的任务,例如多维数据集处理,或更新多维数据集部分中的单元。

存储过程可用于执行客户端应用程序可以执行的任何任务。

关键绩效指标

Analysis Services 2005 为服务器端计算定义引入了关键绩效指示 (KPI) 框架,用来衡量您的业务。这些 KPI 将通过数据访问 API 和 Microsoft 与第三方工具,被显示在报告、门户和仪表板中。对于 Beta 2 版本而言,还没有可用于显示 KPI 的客户端工具。

不同的评论员和供应商用缩写 "KPI" 指代不同的概念。对于 Microsoft SQL Server Analysis Services 2005,精确定义 KPI 的过程可分为以下四个步骤:

有待测量的值:物理度量值,如销售额,计算度量值,如利润,或在 KPI 中定义的计算,

值目标:定义度量值目标的值(或解析为值的 MDX 表达式),

状态:评估当前值状态的 MDX 表达式,其正常值范围从 -1(极差)到 +1(极佳),

趋势:评估当前值趋势的 MDX 表达式。相对其目标而言,值是逐渐变好还是逐渐变坏?