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

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

发布日期: 2005年03月11日

摘要:本文概述了 SQL Server 2005 Beta 2 中“商务智能”平台的增强功能。本文并非实施指南,而是为读者提供了关于“商务智能”平台增强功能的信息。

本页内容
简介简介
SQL Server2005 Beta 2 入门SQL Server2005 Beta 2 入门
关系型数据仓库关系型数据仓库
提取、转换和加载 (ETL)提取、转换和加载 (ETL)
Analysis ServicesAnalysis Services
Reporting ServicesReporting Services
总结总结
附录 A:代码示例附录 A:代码示例

简介

Microsoft SQL Server 2005 是一个完整的商务智能 (BI) 平台,其中为用户提供了可用于构建典型和创新的分析应用程序所需的各种特性、工具和功能。本文简要介绍了您在构建分析应用程序时将要用到的一些工具,并着重介绍了一些新增功能,这些新增功能使复杂 BI 系统的构建和管理比以往更加轻松。

下表概述了商务智能系统的组件,以及与之相应的 Microsoft SQL Server 2000 和 SQL Server 2005 组件。

组件SQL Server 2000SQL Server 2005

提取、转换和加载

数据转换服务 (DTS)

数据转换服务 (DTS)

关系数据仓库

SQL Server 2000 关系数据库

SQL Server 2005 关系数据库

多维数据库

SQL Server 2000 Analysis Services

SQL Server 2005 Analysis Services

数据挖掘

SQL Server 2000 Analysis Services

SQL Server 2005 Analysis Services

托管报告

SQL Server 2000 Reporting Services

SQL Server 2005 Reporting Services

特殊查询和分析

Microsoft Office 产品(Excel、Office Web Components、Data Analyzer、Sharepoint Portal)

Microsoft Office 产品(Excel、Office Web Components、Data Analyzer、Sharepoint Portal)

数据库开发工具

SQL Server 2000 企业管理器、分析管理器、查询分析器,以及各种其他工具

SQL Server 2005 Business Intelligence Development Studio (新增!)

数据库管理工具

企业管理器、分析管理器

SQL Server 2005 SQL Server Management Studio (新增!)

SQL Server 2005 新增了两个组件:SQL Server Management Studio 和 SQL Server Business Intelligence Development Studio。其他主要的 BI 组件——DTS、Analysis Services OLAP、Analysis Services Data Mining 和 Reporting Services——在 SQL Server 2005 中得到了改进,与以前有很大的不同。SQL Server 2005 关系数据库包含一些重要的新增功能。虽然 Microsoft Office 查询和门户工具并没有包含在 SQL Server 中,但当前的发行版本力争在 SQL Server 2005 之前实现这一功能。Office 工具的 BI 功能将在 Office 产品发行周期内将得到逐步实现。

SQL Server 2005 Business Intelligence 工具集提供了一种端到端的 BI 应用程序集成:

设计:Business Intelligence Development Studio 是第一款专门为商务智能系统开发人员设计的集成开发环境。Business Intelligence Development Studio 构建于 Visual Studio 2005 技术之上,它为 BI 系统开发人员提供了一个丰富、完整的专业开发平台。调试、源代码控制以及脚本和代码的开发均可用于所有的 BI 应用程序组件。

合成:“数据转换服务”已被重新编写,现在的 DTS 可以高速执行超大数据量的复杂数据集成、转换和合成。Business Intelligence Development Studio 使程序包的构建和调试变得更加生动有趣。DTS、Analysis Services 和 Reporting Services 共同提供了一个源自异类源的无缝数据视图。

存储:在 SQL Server 2005 中,关系数据库和多维数据库之间的界限变得更加模糊。您可以将数据库存储在关系数据库、多维数据库中,或使用新增的“主动缓存”功能,充分利用两种数据库各自的优点。

分析:一直以来,Microsoft 的数据挖掘都十分简单易用。现在,结合了其他的重要新算法(包括关联规则、时间序列、回归树、序列群集、神经网络和贝叶斯算法),使得这一功能更加完美。而在 Analysis Services 多维数据集中也添加了一些重要的新增功能:关键绩效指标框架、MDX 脚本,以及其他的内置高级业务分析方法。Reporting Services 报告提交和管理框架使得复杂的分析方法更易于向最广泛的潜在受众分发。

交付:Reporting Services 将 Microsoft Business Intelligence 平台的用户群体延伸至那些需要使用分析功能的商务用户。Reporting Services 是一种企业托管报告环境,它通过 web 服务进行嵌入和管理。您可以用大量的交互和打印选项,以各种不同的格式个性化设置和提交报告。通过将报告以数据源的形式分发至下游商务智能,复杂分析可以覆盖更广泛的受众。Microsoft 及其合作伙伴的特殊查询和分析工具将继续承担在 Analysis Services 和关系数据库中访问数据的常用工具角色。

管理:SQL Server Management Studio 集成了对 SQL Server 2005 所有组件的管理。Business Intelligence 从业者都将得益于 Microsoft 服务器“能力”扩展这一用户盼望已久的功能增强,即从关系引擎(伸缩性、可靠性、可用性、可编程性,等等)扩展为全套的 BI 平台组件。

SQL Server 2005 Business Intelligence 组件的主要目标是支持在各种规模的企业中开发和使用商务智能,并使其能够供所有员工使用,不仅包括管理层和分析师,还包括操作人员和外部委托人。就此目标而言,SQL Server 2005 具有完整、集成、易用的特点,它以 web 服务的形式发布数据,而且仅通过日常硬件便可提供极佳的性能,另外它还包含许多新增功能,您可以使用这些新增功能开发创新的分析应用程序。

返回页首

SQL Server2005 Beta 2 入门

在安装 SQL Server 2005 时第一点要注意的就是它的集成安装体验。您不再需要为某些功能(如 Analysis Services)而分别运行安装程序。如果某个功能(如 Reporting Services)不可安装,则说明您的计算机不满足该功能的安装要求。您可以查看说明文件,以获得有关功能必要条件的完整讨论。在大多数配置得当的机器上,安装过程中应接受所有默认设置,安装所有的主要功能:

SQL Server 关系数据库引擎

DTS

Analysis Services

Reporting Services

SQL Server Management Studio(数据库管理工具集)

Business Intelligence Development Studio(BI 应用程序开发工具集)

Reporting Services 要求在机器上安装并妥善配置 IIS。由于 Reporting Services 是 2005 Business Intelligence 功能组的一个重要组成部分,我们强烈建议您花费一定的时间,执行这些配置和安装步骤。

熟悉 Analysis Services 的客户可能会因缺少 Analysis Services 元数据仓库而感到迷惑。在 SQL Server 2000 中,Analysis Services 仓库被作为 Microsoft Access 数据库发行。Analysis Services 2005 不包含元数据仓库。相反,Analysis Services 数据库元数据信息被存储为 XML 文件格式,由 Analysis Services 进行管理。如果需要,还可以将这些 XML 文件放置在源代码控制之下。

我们建议您使用 Business Intelligence Development Studio 进行开发,同时使用 SQL Server Management Studio 来操作和维护 BI 数据库对象。虽然您能够在 SQL Server Management Studio 中设置 DTS 包以及 Analysis Services 多维数据集和数据挖掘模型,但 Business Intelligence Development Studio 却为设计和调试 BI 应用程序提供了更好的体验。

对于 Beta 2 而言,建议您从掌握新的应用程序入手,因为与升级现有 DTS 包或 Analysis Services 数据库相比,这样可以学到更多东西。如果您已有一个可用的包或数据库,您会发现,“重新创建”现有的包或数据会十分有用。在您熟悉了这些新增工具、功能和概念之后,便可试着升级现有对象。

许多客户都借助 SQL Server 工具,使用熟悉的来自一个或多个源系统的商务智能结构来开发新的系统,使用 DTS 填充维度关系型数据仓库,然后再用数据仓库来填充 Analysis Services 数据库。但是,SQL Server 2005 提供了许多选项,通过消除或淡化不同的组件使其背离了这种一般化设计。

 

关系型数据仓库

SQL Server 2005 关系数据库引擎包含一些对数据仓库样式应用程序设计和维护大有帮助的功能。这些功能包括:

对于超大型的表而言,表分区可快速数据的加载速度,并简化维护过程。

轻松创建报告服务器

Transact-SQL 方面的改进包括新增的数据类型和新增的分析功能

联机索引操作

细化备份/还原操作

快速初始化文件

报告服务器

要想将关系操作报告从事务处理数据库中分离出来,经常采用的一项技术便是维护一台报告服务器。报告服务器对事务处理数据库映像的维护一般都有一定的时间延迟,通常截止到前一天。报告服务器多用于报告功能和数据仓库提取。

Microsoft SQL Server 2005 新增了两项功能,使报告服务器的创建和维护过程变得更加简单。SQL Server 报告服务器的延迟时间与以前相比大大缩短。同时,报告服务器被设计为充当事务处理系统的备选系统。

要创建报告服务器,先要创建一个数据库镜像,这是 SQL Server 2005 的新增功能,它为系统的高可用性提供了一个紧急备用系统。更多信息,请阅读联机丛书的“数据库镜像概念”主题。数据库镜像不能够直接查询,这时第二个新增功能就能派上用场了。

在镜像上创建一个数据库视图。数据库视图是数据库在某个时点的只读副本。数据库视图并非数据库的完整副本;极为节省空间。多个数据库视图还是可以同时共存,虽然维护数据库视图会对数据库视图所基于的事务处理数据库产生一定的影响。更多信息,请阅读联机丛书的“了解数据库视图”主题。

通过在数据库镜像上创建数据库视图,您可轻松为系统的高可用性创建备用服务器,此服务器还可用作报告服务器,起着双重作用。

表分区

分区表和分区索引将数据分割到多个水平单元中,以便于将行组映射到单独的分区中。而对数据执行操作(如查询)时,又可以将整个表或索引作为一个整体来执行。

分区可以:

改善数据表和索引的可管理性。

改善多 CPU 机器上的查询性能。


在关系型数据仓库中,事实数据表比较适合应用表分区,而按日期范围分区又是最常见的分区策略。

正如联机从书的“创建分区表和索引”主题中所描述的,定义分区表可分为三个步骤:

1.

创建一个分区函数,指定使用此函数的表如何分区。

2.

创建一个分区方案,指定应用此分区函数的分区在文件组上的位置。

3.

使用此分区方案创建一个表或索引。

多个表可以使用同一个分区方案。

本文讨论了事实数据表的“范围”分区,但其目的并非是针对表分区的完整讨论或教程。有兴趣的读者请参阅 SQL Server 联机丛书。

最常用的分区方案是按日期范围(如年、季、月或甚至天)对事实数据表进行分区。在大多数情况下,对大型事实数据表进行日期分区可以提供良好的可管理性收益。为了改善查询性能,应尽量使用相同的分区方案对时间维度表进行分区。

分区表和未分区表的行为方式相同。

针对表的查询能够得到正确解析。

针对表的直接插入、更新和删除会被自动解析到适当的分区。

使用数据表分区快速加载数据

许多数据仓库应用程序都力求在越来越小的加载窗口中加载越来越多的数据量。典型的流程是这样的,先从几个源系统中提取数据开始,接下来便是在这些系统间清理、转换、合成和合理化数据。数据管理应用程序被限制为在加载窗口中完成整个提取、转换和加载流程。通常,系统的业务用户都强烈要求将数据仓库查询时的不可用时间降至最低。在设计时,数据管理应用程序的“写入”步骤(即将新数据插入到现有数据仓库的步骤)必须在短时间内完成,且要最小化对用户造成的影响。

为了非常快速地加载数据,数据库恢复模型必须为“批量记录”恢复模式或“简单”恢复模式,而数据表必须为空,或是包含数据但不包含索引。如果满足这些条件,不作记录的加载便成为可能。在 SQL Server 2000 中,分区表出现以前,这些条件通常只在初始历史数据仓库加载中才能满足。一些具有大型数据仓库的客户已通过在分散的物理表上搭建 UNION ALL 视图,构建了一个准分区结构;这些数据表都使用不记录技术填充每个加载周期。这一方法并不尽如人意,而 SQL Server 2005 分区表则提供了更为优秀的功能。

在 SQL Server 2005 中,您不能直接在分区中执行不记录加载。但是,却可以将数据加载到将调用伪分区的单独表中。在特定条件下,您可以用执行速度极快的元数据操作将伪分区切换到分区表中。此技术可满足我们的两个要求:

最小化整体加载时间:在不作记录的情况下执行伪分区加载,以及

最小化对最终用户的影响,并确保数据仓库的完整性:伪分区可以在用户查询数据仓库时被加载。在执行分区切换之前,数据管理应用程序会等到所有事实数据表全部加载完毕为止。分区切换的执行速度非常快,反应时间通常不到一秒。

此外,伪分区还可作为单独的表进行备份,从而改善系统的可管理性。

使用表分区快速删除数据

许多数据仓库在数据仓库中保留了一个详细活动数据的滑动窗口。例如,事实数据表可能包含三年、五年或十年的数据。每到一个时间周期,便从数据表中删除最旧的数据。持续删除数据的主要原因在于要提高查询性能并最小化存储成本。

SQL Server 2005 分区使大型分区事实数据表中旧数据的删除倍加轻松。如上所述,简单地创建一个空白伪分区,然后将其切换到分区表中。分区表在其曾植入分区的地方有一个空白分区;伪分区在其曾为空白的地方包含数据。用户可以根据需要对伪分区进行适当的备份、截断或删除。

或者,您还可以选择重新定义分区函数,将所有空白分区合并到一个分区中。

Transact-SQL 方面的改进

新的数据类型

SQL Server 2005 中有一些很重要的新类型,这些类型对数据仓库大有裨益:

Varchar(max)、nvarchar(max) 和 varbinary(max) 支持 2GB 的数据,对于 text、ntext 和 image 数据类型非常有用。这些扩展的字符类型可能对在数据仓库中保存扩展的元数据和其他说明性信息非常有用。

新的分析功能

许多新分析功能都提供了 Transact-SQL 中的基本分析功能。这些功能在那些允许用户查询关系数据库,而不是通过 Analysis Services 排他查询数据的数据仓库中非常有用。另外,在数据中转过程中,这些复杂的计算常被用来开发有价值的数据属性。

ROW_NUMBER。返回结果集的连续行号。

RANK。返回行在结果集中的等级。在通常情况下,RANK 值与有序数据集上的 ROW_NUMBER 值相同。但对于那些彼此之间有关联的行来说,则是所有具有相同排序值的行都有相同的等级。而下一个等级则又与 ROW_NUMBER 值相同。换句话说,如果在第个位置存在双向关联,那么行 1 和行 2 的 RANK 就都为 1,而行 3 的 RANK 则为 3。不存在 RANK 为 2 的行。

DENSE_RANK。返回行在结果集中的等级。DENSE_RANK 函数与 RANK 相似,只是去除了 RANK 函数所留下的空隙。在上面的示例中,行 1 和行 2 的 RANK 为 1,而行 3 的 RANK 则为 2。

NTILE。将有序集分成指定数量、大小近似相等的组。

在 SQL Server 2005 Beta 2 中还不能使用这些函数。

PIVOT 和 UNPIVOT 操作符

PIVOT 操作符可以按查询中的中断值旋转结果集,从而使您可以生成交叉数据报告。例如,如果表中在两个不同的行中包含 "Actuals" 和 "Budgets" 数据,则使用 PIVOT 操作符将可以生成带有 [Actuals] 和 [Budgets] 列的交叉数据报告。

与之相似,UNPIVOT 操作符可以将一行拆分为若干行。在此示例中,带有 [Actuals] 和 [Budgets] 列的行集可以被转换为包含这些值的多个行。

在以前的 SQL Server 版本中,用户能够编写复杂的 Transact-SQL SELECT 语句来旋转数据。PIVOT 和 UNPIVOT 操作符则为数据旋转提供了更为简单的机制。

递归查询

在许多方案中,“递归查询”都是非常有用的。SQL Server 2005 中的新增功能令递归查询成为可能,虽然此项功能还不是十分简单易用。

递归查询是针对自联接表的查询。自联接表的两个常见示例有保存员工及其经理信息的数据表,和保存材料清单的数据表。在 AdventureWorks 数据库的 Employee 表中对自联接数据表进行了说明。

查询自联接表的直接关系通常十分简单,如查询直接向经理报告的员工数量。但是,如果要回答“经理的组织中有多少名员工?”这样一个问题却十分困难。

SQL Server 2005 中的关系数据库功能解决了这一问题,这一功能被称为“递归通用表表达式”。“附录”中包含一个递归查询的示例,该示例回答了以上定义的问题。联机丛书的 "WITH <common_table_expression>" 主题中包含更多的相关信息。

返回页首

提取、转换和加载 (ETL)

数据转换服务 (DTS) 对于 SQL Server 2005 而言,是一项全新的技术。DTS 是 SQL Server 2000 中很受欢迎的一项功能,但 DTS 2005 已被重新设计成企业 ETL 平台。DTS 为构建企业级 ETL 应用程序提供了大量必需的功能,以及非常高的扩展性能。DTS 是完全可编程的、嵌入式的、可扩展的——所有这些特性都使它成为理想的 ETL 平台。

下表总结了 DTS 2005 的这些功能。有关 ETL 系统开发 DTS 适用性更加完整的讨论,请参阅 SQL Server 联机丛书。

包开发

SQL Server 2005 的 DTS 功能企业 ETL 开发 ETL 平台

使用 Business Intelligence Development Studio 图形用户界面设计数据管理应用程序的 DTS 包。DTS 包的设计、开发和调试均在 Business Intelligence Development Studio 中完成,您只需从工具栏拖动任务、为其设置属性并将任务与优先约束相连接便可完成这一切。

 

使用 SQL Server Management Studio 向导开发执行常规任务(如“复制数据库”)的简单 DTS 包。

 

软件供应商将在其产品中嵌入 DTS 功能,构建按需生成自定义包的向导。

 

将控制流从数据流中分离出来。大多数的 DTS 包都包含多个控制流任务,以及循环任务或顺序任务,这些任务都被放置在控制流窗格中。控制任务(管道任务)是包的工作动力,它拥有自己的设计表面,可用于布置数据流。控制流和数据流的分离使得程序更加容易读取。

 

包变量是经过定义且可见的。变量是受限制的,如受包、循环或任务的限制。

 

复杂的 ETLM 系统可以通过构建包网络实现,其中包含一个调用其他包的包。子包可以很好地重新使用逻辑、变量和上下文。DTS 2005 与 DTS 2000 相比,对嵌套数据包的需求有所减少。

 

包配置框架是可扩展的系统,可用于自定义包在不同环境中的运行方式。

 

DTS 程序以 XML 格式存储在文件系统或 SQL Server 中。DTS XML 文件可受源代码管理。

DTS 2000 包迁移向导可以帮助您将包迁移至 DTS 2005,它还可以在出现升级问题的地方提供警告。

 

DTS 2000 运行时包含在 SQL Server 2005 中,在不升级 DTS 2000 包的情况下,仍可运行。

 

包的操作和结果会以多种形式被记录下来,分发给广泛的提供程序。

事件处理程序逻辑只需定义一次,便可多次使用。

与 WMI 的集成表明包可以对外部事件(例如文件复制的完成)作出响应,或抛出可供其他进程使用的 WMI 事件。

包可重启性与事务控制和故障检查点一起,可以帮助管理员管理复杂的包,移动大量数据。

 

控制流

SQL Server 2005 的 DTS 功能企业 ETL 开发 ETL 平台

优先约束:您可以设计一个包,以在任务成功、失败或完成时将控制传递给这些不同的任务。

 

循环任务包括 For、ForEach 和 Sequence 循环。包开发人员可以在数据的所有(或一组)表上、目录中的文件上或是 Analysis Services 多维数据集分区上轻松执行一组操作。

 

Analysis Services 集成是无缝的,它与自动执行 Analysis Services DDL 的控制任务一起处理 Analysis Services 对象,或执行数据挖掘查询。正如下面所讨论的,DTS 管理还集成了 Analysis Services。

 

VB.NET 脚本可与“脚本任务”一起使用。被称为“ActiveX 脚本任务”的第二个脚本任务主要用于向后兼容 DTS 2000。

 

通信任务包括:

消息队列

发送邮件

 

其他控制流任务包括:

大容量插入

执行包

执行进程

执行 SQL

文件系统

FTP

 

其他任务可以使用 DTS 对象模型轻松开发。

 

数据流

SQL Server 2005 的 DTS 功能企业 ETL 开发 ETL 平台

在数据流管道中存在多个源、转换和目的。只有在转换完成时,数据才能被读取、合并和操作,然后才能写入。中转表所需的多次写入被削弱或消除;转换性能得到极大提高。

 

“DTS 管道”任务使用来自多个异类数据源和本机的数据。可扩展的“数据源”体系结构支持来自平面文件、OLEDB 源(包括 DB2 和 Oracle)和原始文件的数据。其他源,包括使用特殊结构化数据的源都在计划之内。

其他数据源可以由 Microsoft 及其合作伙伴轻松开发。

 

来自多个源的数据可以与联接、查找和联合操作符相联接。这些操作都在内存中执行,不需要对数据库或文件执行写入操作。

 

数据流可以使用条件分离和多播转换。类似编译器的 DTS 引擎确定了可以平行操作哪些数据流

 

大量基于行的数据转换都是由字符映射、复制映射、数据转换和派生列转换所提供的。这些操作符更像是向导,而非转换,它们提供了用户所需的大部分数据转换。

 

有些数据转换任务需要对多个行中的数据进行比较。排序和聚合转换可以在数据流中以极高的性能执行这些操作,其性能远非数据库聚合可及。

 

有些数据转换任务需要复杂逻辑,例如模糊匹配、模糊分组、时间维度生成以及旋转或反旋转。其他常见任务(例如维度键管理)则需要多个步骤。特殊技术和向导使这些复杂技术可供所有用户使用。

 

转换后的数据可以写入异类目标,其中包括 SQL Server 表、OLEDB 数据库表、平面文件以及原始文件。

转换后的数据可以与 Microsoft BI 解决方案的其他组件集成,其中包括 Analysis Services 数据库和数据挖掘模型。

 

由转换步骤所导致的错误流可以以多种方式进行管理:

进程内转换可以“修复”数据并重新提交主要流。

错误流可以被记录到表或文件中,以备脱机研究和重新提交。

其他转换和目的可以由 Microsoft 及其合作伙伴轻松开发。

 

开发和调试

SQL Server 2005 的 DTS 功能企业 ETL 开发 ETL 平台

包开发商可以在每个控制流任务中定义控制流断点。在调试过程中,断点可以定义在某些任务执行点之前、之后,或定义在这些任务执行点。

 

包开发商可以为数据流中的每个转换附加一个数据查看器。在调试过程中,数据查看器会显示在该点的转换后数据流内容。

 

Business Intelligence Development Studio 寄宿在 Visual Studio 中。脚本及其他编程任务可以充分利用该企业开发环境的优点。

包开发可以帮助用户将所有包组件(包括自定义脚本和可执行程序)捆绑在一起,以用于发行测试、生产或其他客户系统。

 

可供 DTS 2000 开发人员使用的 DTS 2005

DTS 2000 用户已经开发出了一套执行复杂操作的技巧。这些技巧,尤其是编写自修改包,在 DTS 2005 中不再有用武之地。在 DTS 2005 中要使用变量和配置基础结构来编写动态包、不要再试图编写自修改包。

配置良好的变量和配置基础结构还可以减少创建复杂子包系统的需求。如果设计完善,单一包便可满足多种需求;例如,单一包可以在多种不同配置中重复使用,以用来在维度数据仓库中加载许多维度表。在 DTS 2000 中,一个复杂的 DTS 包网络可能包括 50-100 个包;而在 DTS 2005 中,一个复杂的网络可能只包含 10 个包。

 

Analysis Services

SQL Server 2000 Analysis Services 由两个主要的互补功能组成:联机分析处理 (OLAP) 和数据挖掘。这两个组件在 Analysis Services 2005 中仍然存在,并且是分析应用程序的基石。

Analysis Services 2005 OLAP 中的功能改进主要可以归纳为两类改进:

启用了一些新的分析应用程序,而达到此目的做法便是添加全新的功能,或是使复杂功能的构建变得更加简单。

增强了分析应用程序的企业适应性

新增功能或改进功能设计和部署管理和操作

统一维度模型合并了关系数据模型和 OLAP 数据模型的最佳特征。后文将对“统一维度”模型进行更为详细的讨论。

 

主动缓存使您可以用极低的成本操作低延迟时间的应用程序。后文将对主动缓存进行更为详细的讨论。

关键绩效指标 (KPI) 框架为定义公司度量提供了一个基于服务器的简单机制。KPI 由值、目标、当前状态和趋势表达式组成,并通过诸如量尺和停车灯之类的简单图形显示出来。

 

翻译为用户提供了一个简单的集中管理机制,使他们可以用自己喜欢的语言来存储和显示分析数据。一个分析数据库可以用多种语言来显示。

 

MDX 脚本是用于定义“计算成员”、“命名集”和“单元计算”的新机制。

“MDX 脚本”的语法得到了简化和改进。“MDX 脚本”可以分步调试。

“MDX 脚本”计算可以缓存和保留,这可以提供优良的查询性能,即使面对复杂计算也没有问题。

“MDX 脚本”计算可以维护实时的动态计算行为。

后文将对“MDX 脚本”进行更为详细的讨论。

Analysis Services 存储过程允许您使用公共语言运行时编程语言(如 C++、VB 或 C)创建外部例程。存储过程扩展了 Analysis Services 2000 用户定义函数 (UDF) 所提供的功能。后文将对 Analysis Services 存储过程进行更为详细的讨论。

 

数据写回增强使其性能较以前有了十倍的增长。分析应用程序可以将数据写回到聚合单元中,然后再有选择地执行聚合数据到其底层叶数据的分配工作。

内置的业务规则、工具和向导使艰难的设计变得简单:

半累积度量值

时间智能

帐户智能

财务聚合

货币转换

时间维度生成

 

数据源视图提供了一种机制,既可以简化,又可以扩展分析应用程序底层的关系数据库。后文将对“数据源视图”进行更为详细的讨论。

 

Analysis Services 的数据定义语言是 XML。Analysis Services 元数据知识库已经没有了,取而代之的是由 Analysis Services 服务器所存储和管理的 XML 文件。

Web 服务:XML for Analysis (XML/A) 是基于标准的本机协议,其作用是与 Analysis Services 服务器进行通信。启用了新型的应用程序,而且开发这些应用程序还十分简单,这些应用程序将分析与操作实时集成在一起。

将 XML/A 作为本机协议,便可以把 Analysis Services 客户端配置为具有零覆盖范围,且每台服务器都自动成为一种 web 服务。

具有小覆盖范围的 Win32 层可用于向后兼容与 Analysis Services 2000 一起使用的,用于 OLAP、ADOMD 和 ADOMD.Net 的 OLE DB 工具。许多客户和开发人员将继续使用 ADOMD.Net 对象模型来构建 Analysis Services 自定义应用程序。

计算被集中在服务器端。与 Analysis Services 2000 不同,Analysis Services 2005 在服务器端执行所有计算。这样做的优点十分显著:

客户端的占用空间为零;消除了客户端缓存。

复杂计算的查询性能得到极大提高。

实现这些改进的代价是使对最简单查询的查询性能有轻微的降低,因为这些查询在 Analysis Services 2000 中是在客户端缓存中被解析的。

开发和管理工具(Business Intelligence Development Studio 和 SQL Server Management Studio)是用于商务智能应用程序的第一款完整的开发环境。这些新工具可以帮助您捕获和建模所有数据,加快应用程序的开发速度。

Analysis Services 2005 对其权限模型作了改进。不同的角色和权限包括:

服务器管理员

数据库管理员

处理对象

查看对象结构(由对象授予)

改变对象结构

 

Analysis Services 2005 包含 150 多项安全性设计更改。在安全模型方面的改进包括:

Analysis Services 具有多条安全防线,属于“默认安全设置”。

管理权限得到更为细致的划分;不同数据库对象的权限得以分离,执行设计更改的权限与处理权限也得到了分离。

可以对本地多维数据集进行加密。

Analysis Services 在运行时其权限级别为可能的最低级别。

可以对客户端/服务器端通信进行加密和签名,以避免出现数据包窃听、欺诈、篡改和拒绝的情况。

加密操作在服务器端强制执行,服务器可以拒绝不使用加密的客户端。

 

Analysis Services 2005 服务器可以使用工具生成可监控的服务器跟踪事件,所用工具的示例有 SQL Server 事件探查器,此工具在 SQL Server 关系数据库中长期以来一直可用。

审核应用程序的访问和使用

审核应用程序和服务器事件以提高服务器的可管理性。

审核应用程序错误,与“Microsoft 支持”合作,以便更快地解决问题。

 

得到改进的计算性能来源于以下几项功能:

服务器计算缓存在多个用户间共享

查询优化器会用可以提高性能的等价语句“重写”查询。

得到改进的 NonEmpty 性能

非重复计数度量值得到改进

 

Analysis Services 2005 对中间层体系结构有着广泛的支持。用低空间占用率的对象模型交付可伸缩的中间层——可扩展到支持成千上万名并行用户。其在广泛区域网络中的部署性能虽未有过正式的测评,但肯定要优于 SQL Server 2000。

 

Analysis Services 2005 支持无限大的维度。因为维度不需要再在内存中缓存。

Analysis Services 2005 支持在标准管理工具集中平行处理分区

 

SQL Server Management Studio 将被用来管理所有的 SQL Server 数据库。它可以使用 Analysis Services 对关系数据库提供集成的管理,其集成工具可用于:

服务器控制台管理(取代了企业管理器和分析管理器),

查询分析(SQL 和 MDX),

来自关系引擎和 Analysis Services 的分析事件,

“飞行记录仪”和“捕获重放”功能可以自动捕获服务器事件,这可以有效地帮助您(或 Microsoft Services)诊断问题。

 

一种新的对象模型,分析管理对象 (AMO),取代了 DSO。DSO 的作用是向后兼容,真正起作用的是 AMO,它提供了丰富的新功能,尤其是它可以用管理工具和开发工具通过脚本来创建对象和修改对象,令人印象深刻。

构建分析数据库的途径主要有两个:

完全自定义:从源开始,通常是从一个关系型源开始,定义维度、多维数据集、关键绩效指标、计算和数据挖掘模型。此途径对那些业已具备数据仓库或主题集市的客户来说十分适合。在多维数据集向导的第一个屏幕中,此选项的标签为“使用现有数据库/数据仓库”。

可自定义的模板:从模板开始,定义和生成一个完整的应用程序,包括关系数据库、DTS 包和 Analysis Services OLAP 数据库。设计和生成这些组件的目的是使这些组件无缝合作,共同组成一个完整的应用程序。此途径对于那些从模板开始安装完整商务智能解决方案的客户来说十分适合。在多维数据集向导的第一个屏幕中,此选项的标签为“在不具备数据源的前提下设计商务智能模型”。

不管采用哪种方法,基本的系统设计都假设使用当前熟悉的、来自一个或多个源的商务智能结构来填充维度关系型数据仓库,然后再用数据仓库来填充 Analysis Services 数据库。但是,SQL Server 2005 提供了许多选项,通过消除或淡化不同的组件使其背离了这种常规设计。在下面“统一维度”模型中讨论了一些其他的备选系统。

从现有的源数据库创建自定义数据库

创建 Analysis Services 数据库的第一种方法最为 SQL Server 2000 的用户所熟悉。即从任意结构的源数据库开始着手创建数据库:

按事实数据表和维度表构建一个维度数据库,或

任何其他的数据库结构,包括标准化的事务系统。

SQL Server 2005 中可从标准化数据库寻源的能力是对 Analysis Services 2000 的一大突破,在 Analysis Services 2000 中,执行此操作需要一个维度结构,此结构或是星型的,或是雪花型的,或是拉伸型的。此功能使您可以轻松地开发具有极低延迟时间的商务智能应用程序。

通过直接在事务数据库内构建 Analysis Services 数据库,而不需要先构建正式的数据仓库,可以用较低的成本,轻松有效地满足许多用户的要求。如果您需要仅对数据执行最低的数据转换、清理和集成便投入使用,则可考虑使用一个 Analysis Services 数据库来补充或替换现有的关系报告。您可以充分利用 Analysis Services 的功能和交互性,更好地管理事务系统中的负载。

虽然可以直接从事务系统构建和维护 Analysis Services 数据库,但只有先构建关系型数据仓库才能最好地满足许多企业分析的要求。复杂的数据集成和数据更改管理问题可以通过典型的数据仓库体系结构得到最好的解决,其中 Analysis Services 数据库充当着查询和分析引擎的角色。

数据源和数据源视图

构建分析应用程序的第一步就是在 Business Intelligence Development Studio 中创建一个新的 Analysis Services 项目。创建了空项目之后,应当创建一个“数据源”并将其与源数据库建立连接,此源数据库可以是任何受支持的关系数据库管理系统中的数据库。对于 Beta 2 版本,建议您将 SQL Server 2000 或 SQL Server 2005 关系数据库作为源。

“数据源”负责为源数据连接存储信息。“数据源视图”中包含着源数据库表相关子集的信息。此信息不只局限于源数据库中表的物理结构;您还可以添加诸如关系、表和列的友好名称、计算列和命名查询之类的信息。

“数据源视图”可以在 BI 项目和 DTS 项目之间共享。“数据源视图”很有用处,尤其是在以下几种情况中:

源数据库包含成千上万个表,但其中只有相对少数的表在 BI 应用程序中真正有用。

Analysis Services 数据库使用来自多个源的数据,这些源有多重数据库、服务器、平面文件或 RDBMS。

BI 系统开发人员不具有源数据库中的系统管理权限,且不允许创建物理视图或修改源数据库。

BI 系统开发人员需要以“脱机”模式工作,必须断开与源数据库的连接。设计和开发任务针对“数据源视图”发生,而“数据源视图”已从源数据中分离出来。

您为“数据源视图”设置良好名称和关系所作的投资将换来分析应用程序的轻松开发。

创建维度和多维数据集

创建了“数据源视图”之后,便可以右击“解决方案资源管理器”窗格中的“多维数据集”图标,选择“新建多维数据集”,创建一个多维数据集。您可以启用 IntelliCube 检测和建议。如果您选择使用 IntelliCube,则必须决定是否构建一个已为报告经过旋转优化的多维数据集。IntelliCube 技术会对“数据源视图”中的数据库和数据基数关系进行检查,并按事实数据表、维度表或用于解析多对多关系的维度-事实桥接表来智能呈现表特征。对于 Beta 2 版本来说,选择是为旋转还是为报告优化多维数据集和维度存在一些微小的差别。唯一的差别就是 IntelliCube 是否会尝试在维度属性之间创建层次关系。由于层次易于创建,也易于毁坏,因此无须担心会花费太多时间和精力。

建议您在此“多维数据集向导”的初始屏幕后立即点击“完成”按钮。这样会一次定义好所需的 Analysis Services 数据库、维度、层次、属性和多维数据集。您可以对此设计进行编辑,但通常情况下,仔细一点儿走完向导,并在过程中作出一些明智的选择会更加有效。

实施完“多维数据集向导”之后,您可能会发现您更喜欢用“维度向导”来逐一地创建复杂的维度,要启动“维度向导”,只需在“解决方案资源管理器”窗格中右击“维度”即可。仔细定义完大型维度(例如“产品”、“客户”和“时间”)后,启动“多维数据集向导”,并确保在适当的位置包括这些预定义的维度。

构建和部署

到此为止,前面执行的这些步骤已在您的开发机器上以 XML 文件轻松创建了维度和多维数据集定义和结构。Business Intelligence Development Studio 和“配置管理器”使您可以对目标服务器上的项目构建和部署过程进行管理。默认情况下,“部署”目标服务器就是您的本地服务器。您可以创建适合其他环境部署的备选配置。项目的主要属性,如目标服务器的名称和数据源连接字符串等,可能会因配置而不同。

要在开发循环过程中预览和测试多维数据集和维度,请从 Business Intelligence Development Studio 的菜单中选择“部署”,在指定的目标服务器上构建和部署项目。或者,单击 F5,或选择“调试”(位于 Business Intelligence Development Studio 主菜单中)。这样会启动几个调试和浏览工具中的一个,具体启动哪个,要取决于您所执行的操作以及您选择“部署”的时间。根据此上下文,“部署”过程会启动多维数据集浏览器、MDX 脚本调试器或 KPI 浏览器。

您可能想在定义完系统的维度、度量值和多维数据集后查看一下系统原型。请使用相对较少的数据针对开发数据库进行处理,以验证数据和结构的行为是否与预期的行为相一致。

作为原型的一部分,您可能想设计一些更为复杂的“Analysis Services 数据库”、“关键绩效指标”、“操作”和“计算”组件。如果您的数据库是被对不同数据视图感兴趣的不同用户团体使用的话,请深入查看“透视”和备选的安全计划。如果您计划部署可供国际上不同语言的用户使用的数据库,则可以使用“翻译”功能引入本地化项目名称。最终,原型会评估备选的物理配置,例如“分区”和不同的“主动缓存”选项。

在 Analysis Service 数据库开发完成之后,便可以部署数据库对象,以便于进行最终测试、临时过渡并投入生产服务器。在构建阶段的项目输出可以用作 Analysis Services 部署实用工具的输入。此实用工具可以帮助您部署和处理数据库。

从模板创建可自定义的数据库

我们刚刚描述了从已知源创建自定义 Analysis Services 数据库的基本步骤。这种通过“多维数据集向导”和“维度向导”创建的方法与创建 Analysis Services 2000 数据库的标准方法十分类似。

创建 2005 分析应用程序的另外一种备选方法就是选择“多维数据集向导”第二个屏幕上的“在不具备数据源的前提下设计商务智能模型”选项。这种通过向导创建的方法与 SQL Server 2000 Accelerator for Business Intelligence 的设计体验十分类似。这种设计体验会从模板生成一个完全可自定义的应用程序,此处的模板:具有丰富的维度结构和分析功能,还有可能包括一个关系型数据仓库和 DTS 包。Microsoft、集成商或独立软件供应商都可以提供这种模板。

不管采用哪种通过向导创建的方法,是从源数据库创建,还是从模板创建,都可以设计相同的 Analysis Services 数据库。第一种选项假设您将创建一个完全自定义的系统。对象名称和结构都是可以完全自定义的,初始设计是受源数据库中的名称和结构所驱动的。模板选项也可以创建一个完全自定义的数据库,但是初始设计是受专家主题区域模板所驱动的。

许多用户都喜欢将这两种方法结合使用。一个非常常见的方法就是用现有源创建 Analysis Services 数据库中的大部分内容,而用模板法生成“时间”维度。

统一维度模型

Analysis Services 2005 使关系数据库与多维度 OLAP 数据库之间的界线变得更加模糊。OLAP 数据库分析应用程序一直以来都具有着巨大的优势,这些优势主要体现在以下几个方面:

卓越的查询性能、

丰富的分析功能,以及

其易于业务分析师使用的操作简单性。

不过,在实现这些功能的同时也带来了一定的负面效应。到目前为止,已经发现的问题就有 OLAP 数据库(包括 Analysis Services 2000 在内)很难交付以下内容:

包括多对多关系的复杂架构、

对广泛属性集的详细报告,以及

低延迟数据。

通过将传统 OLAP 分析与关系报告二者的优点相结合,Analysis Services 2005 能够提供一个可以同时覆盖这两方面需求的统一维度模型。在 SQL Server 2005 中定义的一套多维数据集和维度被称为统一维度模型 (Unified Dimensional Model),或 UDM。UDM 的优势和灵活性引发了设计领域的巨变。过去,BI 架构师会权衡备选基础结构的收益和成本,并在关系数据库和 OLAP 数据库之间作出选择。现在,架构师可以设计一个“统一维度模型”,然后从传统极限中确定一点用于放置 Analysis Services 系统逻辑设计和物理配置。

基于属性的维度

Analysis Services 2005 围绕维度的属性,而非维度的层次构建多维数据集。在 Analysis Services 2000 中,维度设计由层次主宰,层次的示例有 {年、月、日} 或 {国家、地区、城市}。这些层次要求各层之间存在密切的数据关系。作为成员属性和虚拟维度公开的“属性”是“二等公民”。虽然有可能在物理维度中生成属性,但性能因素却使这一技术的广泛使用大打折扣。熟悉关系结构的用户对 OLAP 数据库中对层次的过度侧重深感困惑。

Analysis Services 2005 结构与关系型维度结构更为类似。一个维度可包含多个属性,每个属性都可用于切片和筛选查询,同时每个查询又可以合并到层次中,而不必考虑数据的相互关系。

有 OLAP 背景的用户都知道强大的层次结构的价值,有一点您可以肯定,那就是“城市”清晰地汇总为“地区”和“国家”。这种自然层次结构依然存在,并应在适当的位置进行定义:查询性能会因为这种层次结构而得到提高。

例如,设想一个“客户”维度。关系型源表有八列:

客户键

客户名称

年龄

性别

电子邮件

城市

地区

国家

相应的 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 表达式。相对其目标而言,值是逐渐变好还是逐渐变坏?

以下是网页上显示的一些 KPI 示例:

obidws01.gif

实时商务智能

数据仓库和商务智能应用程序过去都是使用“过时”的或高延迟的数据,数据每月、每周或每天刷新一次。传统拥护者断言,实时 BI 是相互矛盾的,因为统计决策不需要刷新频率过高(超过每天一次)的数据。评论者忘记了一件事情,就是商务智能应深入整个企业,而不仅仅是将策略或制定的战术决策部署给少数的分析家或行政执行人员。可操作的商务智能要求低延迟的数据。

Analysis Services 2005 为可操作的商务智能提供了新的处理选项。在 Analysis Services 2000 中,无论是多维数据集的存储模式还是分区策略,都是用“拉”模型处理。启动 Analysis Services 进程在源数据库中查找新的信息、处理可选存储的详细数据,并计算和存储聚合。

在 Analysis Services 2005 中仍支持“拉”模型,但结合了对低延迟商务智能异常有效的其他选项。

从 DTS 管道中推出数据,或从自定义应用程序中推出数据。数据可以从 DTS 包管道直接流入 Analysis Services 分区,不用立即存储。这种方案可用于降低分析数据的延迟(和存储成本)。

按主动缓存管理多维数据集,以指定延迟和性能特性管理缓存,勿需管理干涉。

Analysis Services 多维存储的查询性能特性主宰着关系型存储。简而言之,查询针对多维 (MOLAP) 存储执行时效果最佳。其不足之处是延迟:多维存储是从其关系源向下流动的。主动缓存技术的技巧就在于能够在最小化数据延迟和管理成本的同时最大化查询性能。

主动缓存功能简化了管理数据过期问题的过程。如果事务发生在源数据库(如新的维度成员或新的事实事务)上,现有“缓存”便会过期。主动缓存技术提供了一种可调整的机制,可确定重新构建多维缓存的频率;指定在重新构建缓存时答复查询的方式;在不需要任何管理干涉的情况下启动过程。

主动缓存技术使您可以将多维数据集设置为在事务发生时,自动刷新其多维缓存。虽然 Analysis Services 处理数据速度非常快,但处理过程还是需要一些时间的。如果多维缓存处理过程没有完成,主动缓存配置便可以自动将查询重定向到相关的存储。

在设计主动缓存配置时,一定要谨记必须为每个多维分区都设置主动缓存。如果分区包括短时间范围(如一小时)内的数据,缓存刷新过程可能会发生的非常快。最为复杂的主动缓存配置依赖于从关系数据库发往有更新发生的 Analysis Services 的通知。Microsoft SQL Server 关系数据库支持这种通知。对于不能够提交通知的数据库,可以将 Analysis Services 配置为根据定义的查询,轮询更改。

主动缓存的参数有:

静止期:在服务器开始处理新信息前,关系源必须处于事务空闲状态的时间量。该参数通常设置为一个小于十秒钟的值。如果在关系源上存在许多连续的更新,则应等待静止期,以针对重复性删除和重建缓存加以保护。

延迟:允许用户访问过期数据的时间量。如果延迟设置为 0,则只要收到通知,用户查询就会被重定向到关系源。如果延迟设置为 600 秒,用户则只能访问十分钟前的数据。如果设置为 -1,则表示用户将一直访问过期数据,直至主动缓存处理完毕。

静默覆盖间隔:更改通知与主动缓存处理开始之间的最大持续时间。如果源数据库被不断更新,此参数将覆盖“静止期”设置。

强制重建间隔:当源数据库系统不能提供更新通知时,可使用此参数提供简单的主动缓存功能。如果源数据在 SQL Server RDBMS 中,则应将该参数设置为 0。

数据挖掘

概述

Microsoft SQL Server 2005 Data Mining(数据挖掘)属于商务智能技术,它可帮助您构建复杂的分析模型,并使其与您的业务操作相集成。数据挖掘可回答如下问题

该客户的信用风险如何?

客户的特征如何?

人们愿意同时购买哪些产品?

下个月能卖出多少产品?

数据挖掘应用程序将数据挖掘模型集成到日常的业务运营之中。许多数据挖掘项目的目标是构建可供业务用户、合作伙伴和客户使用的分析应用程序,而不必理会应用程序底层的复杂计算。要实现这一目标,需要执行两个主要步骤:构建数据挖掘模型并构建应用程序。SQL Server 2005 Data Mining 使这些步骤比以往更加简单。

Microsoft 2005 中数据挖掘功能的目标是构建具备以下特征的工具:

简单易用

可提供一整套的功能

可轻松嵌入到产品应用程序中

紧密集成其他的 SQL Server BI 技术,以及

能够扩展数据挖掘应用程序的市场。

可以肯定,本白皮书的每位读者几乎都曾“使用”过数据挖掘应用程序。如果您已在线购得了本书或音乐,并收到了“购买此产品的其他客户”的建议,或者,如果信用卡公司要求您确认一宗可疑交易,或者,食品店在收条上打印个性化优惠券,所有这些,都是您从使用数据挖掘应用程序中得到的好处。时至今日,这种应用程序的开发已集中于解决大型公司所面临的最大问题,这些公司能够承受分析能力的匮乏以及巨额的开发费用,而这些都是过去用传统方法构建数据挖掘应用程序所需面对的。正如 Microsoft 的 OLAP 技术已推动了 OLAP 市场增长一样,我们期望能够将数据挖掘技术推广开来,使那些在过去不能开发这种应用程序的企业和部门也能够加入到其开发行列中来。

使用 SQL Server 2005 Data Mining 工具开发一套数据模式,然后在这些模式的基础上随意执行预测。这是所有数据挖掘的模式:开发、模式发现和模式预测。

数据挖掘算法

所有数据挖掘工具(包括 Microsoft SQL Server 2005 Analysis Services)都采用了多种算法。当然,Analysis Services 是可扩展的;第三方 ISV 可以开发算法,并将所开发的算法无缝地融入到 Analysis Services 数据挖掘框架之中。根据数据和目标的不同,应该采用不同的算法,而且每种算法都可用于解决多个问题。

数据挖掘工具擅长解决多种类型的问题。下表概括了业务问题的大致分类:

分析问题示例Microsoft 算法

分类:为案例分配预定义的级别(如“好”与“差”)

信用风险分析

客户流失分析

客户挽留

决策树

贝叶斯算法

神经网络

分割:开发一种按相似案例分组的分类方法

客户资料分析

邮件推销活动

群集

顺序群集

关联:相关性高级计算

购物篮分析

高级数据研究

决策树

相关规则

时间序列预测:预测未来

预测销售

预测股票价格

时间序列

预测:根据相似案例(如现有客户)的值预测新方案(如新客户)的值

提供保险率

预测客户收入

预测温度

全部

偏差分析:发现案例或群体与其他案例和群体之间的差别

信用卡欺骗检测

网络入侵分析

全部

SQL Server 2005 中附带了最流行的数据挖掘算法。

Microsoft Decision Trees(决策树)通常是数据研究的起始点。它是主要的分类算法,对离散和连接属性的可预测建模效果很好。用算法构建模型时,它着眼于数据集中每个输入属性是如何影响预测属性的结果的。其目标是找到一个输入属性及其状态的组合,使您能够预测出所预测属性的输出结果。

Microsoft Naïve Bayes(贝叶斯算法)能够快速构建可用于分类和预测的数据挖掘模型。如果知道可预测属性的每种状态,便可计算出输入属性每个可能状态的概率。这种算法只支持离散(不连续)属性,它认为所有输入属性都是彼此独立的(前提是知道可预测属性)。因为贝叶斯算法的计算速度非常快,因此在初始数据研究阶段通常会选择这种算法进行分类和预测问题。

Microsoft Clustering 使用迭代技术将来自数据集的记录分成若干个包含相似特性的簇。通过使用这些簇,您可以研究数据,找出彼此之间的相互关系。您还可以从群集模型创建预测。

Microsoft Association 基于 priori 算法,它为在大型数据集中查找多路关联提供了一种有效的方法。Association 算法在数据库所有事务中循环,在单一用户事务中查找最有可能同时出现的项目。关联的项目被分到一起,放入项目集中,生成可用于预测的规则。Microsoft Association 通常用于购物篮分析。对于 Association 分析而言,执行大量“非重复计数”的关系或 OLAP 分析是一个值得考虑的选择。Microsoft Association 算法对算法参数的选择很敏感,因此,对于一些小问题,使用 Microsoft Decision Trees 算法进行购物篮分析可能效果更佳。

Microsoft Sequence Clustering 将顺序分析与在数据研究和预测中使用的群集方法结合在了一起。顺序群集模型对事物发生次序很敏感。此外,群集算法还考虑到记录群集中的其他属性,使您可以开发关联顺序和非顺序信息的模型。Sequence Clustering 算法将被用于执行点击流分析,以便于分析 Web 站点的通信流量、识别与特殊产品销售关系最为密切的页面,并预测接下来要访问的页面。

Microsoft Time Series(时间序列)会创建可用于预测一个或多个连续变量(如股票价格)的模型。Time Series 算法的预测完全依据于在模型创建过程中从培训数据中推导得出的趋势。Microsoft Time Series 使用 AutoRegression Trees 技术,非常简单易用,并可生成精确度极高的模型。在该算法中有一条专门用于时间序列的统计分析规则。大多数其他数据挖掘产品都提供了多项技术,如 ARMA、ARIMA 和 Box-Jenkins,统计师必须在这些技术中确定模型的最佳技术选择。Microsoft 选择了一种方法,既可使广泛的受众能够理解时间序列,又具备异常精确的结果。

Microsoft Neural Net 和 Decision Trees 及 Na?ve Bayes 一样,主要用于数据研究、分类和预测。Neural Net 是一种人工智能技术,该技术可以利用所有可能的数据关系。因为它是一种非常彻底的技术,因此它是三个分类算法中最慢的算法。

构建挖掘模型

模型的构建、培训和测试过程是创建应用程序过程中最为困难的一部分。正如下面我们要讨论的,实际开发应用程序是一个简单的编程过程。在开始构建数据挖掘模型之前,您应当已经收集和清理了您的数据,这些数据极有可能位于数据仓库中。SQL Server 2005 Data Mining 可以从关系数据库或 Analysis Services 多维数据中访问数据。

开发数据挖掘模型的最佳人选是同时具备业务和技术技巧的人员。模型的开发人员将会从其统计背景中获益、了解企业面临的关键业务问题、对数据和关系产生极大的好奇心,同时还能够利用 SQL Server 2005 工具处理和存储数据。现有数据仓库小组中的成员最有可能遇到这些标准。

作为数据挖掘的初学者,应在构建原型模型的同时,计划花费数周时间来研究数据、工具以及可供选择的算法。使用一台您具备数据库管理权限的开发服务器。构建模型的最初阶段是探索阶段:您可能会希望以不同的方法来重新构建数据和实验。当然,您肯定希望从少量数据子集开始,并在开发愈加清晰的模型设计时扩展数据集。在原型阶段,不要为如何构建一个“可供生产使用”的应用程序而担心。使用 DTS 或执行任何所需数据处理最为舒适的任何工具。保存一份记录有必要转换的高级日志,但不要期望您所做的一却都能成为永久应用程序的一部分。

您应当准备两套数据:一套用于开发模型,而另一套用于测试模型的精确度,从中选择适合您业务问题最佳模型。在考虑如何划分数据子集时,要确保没有引入任何偏差。例如,从十个客户中选择一个客户,或根据姓氏的第一个字符区分,或根据一些其他任意属性区分。

开发数据挖掘模型的过程涉及选择以下内容:

输入数据集、

输入字段、

数据挖掘算法,以及

该算法在计算过程中所用到的参数。

如果不知道哪种类型的算法适合处理您的业务问题,请先从“决策树”或“贝叶斯”入手研究数据。如果不知道要包括哪些属性,就选择所有属性。使用相关性网络视图,从中获得可帮助您简化复杂模型的视图。

在原型开发阶段,您可能希望构建相关模型,以便评估最佳算法和模型。使用“挖掘精度”图表评估在预测中效果最佳的模型。您可能还希望构建相关模型,对相同的数据执行不同类型的分析。这些模型在作为相关模型时的处理速度要比作为独立定义模型时的处理速度快。

在构建和测试原型后,便可以构建和测试实际数据挖掘模型。在将数据输入数据挖掘引擎前,如果需要转换数据,那么为了要实现这些操作,应当开发可供生产用的操作流程。在某些情况下,可能要选择从 DTS 管道直接植入挖掘模型。如果在少量数据的基础上开发原型,将需要在整套培训数据的基础上重新评估备选模型。

构建数据挖掘应用程序

在 Business Intelligence Development Studio 中开发和研究数据挖掘模型可使企业获得巨大的价值。您可以浏览模型,了解数据与业务之间的关系,并使用该信息促进策略决策的制定。但是,其最大的价值还是来自可以影响公司日常操作的数据挖掘应用程序:例如,向客户推荐产品、记录客户信用风险,或根据预测的库存不足下订单的数据挖掘应用程序。要开发可操作的数据挖掘应用程序,您需要跳出 Business Intelligence Development Studio 的圈子,并用 Microsoft Visual Studio 或您选择的其他开发环境编写代码。

大部分企业客户都将面向客户的数据挖掘应用程序实施为基于 web 的 Win32 应用程序,如 ASP 页。数据挖掘模型业已构建完毕,而且应用程序也可以根据客户的选择或在 web 商务应用程序中输入的内容,为客户执行预测。这可能是十分简单的应用程序;唯一不寻常的部分是发布预测查询。

数据挖掘应用程序开发人员不一定就是开发数据挖掘模型的人员。应用程序开发人员应具备一流的开发技能,而对业务或统计知识的需求则相对较低。

Microsoft 的数据挖掘技术大大地简化了构建自动化数据挖掘应用程序的过程。其中共有两个步骤:

开发数据挖掘预测查询,其 DMX 语法在“数据挖掘”规范的 OLE DB 中定义。不需要手工编写 DMX,用户只需单击 Business Intelligence Development Studio 编辑器左栏上的“挖掘模型预测”图标即可。“预测查询构建器”图形化工具会帮助您开发预测查询。

在数据挖掘应用程序中使用预测查询。如果应用程序只使用 DMX 便可完成预测,则项目应包括 ADO、ADO.Net 或 ADOMD.Net 等类引用(建议在 Beta 1 之后的开发中使用 ADOMD.Net)。如果您正在构建一个更为复杂的应用程序(例如要显示用户挖掘模型查看器,如“决策树查看器”),将需要包括 Microsoft.AnalysisServices 和 Microsoft.AnalysisServices.Viewers 类。

有些客户(主要是独立软件供应商)希望创建可生成数据挖掘模型的应用程序。这种应用程序可能会替代在 Business Intelligence Development Studio 中开发挖掘模型,但可能只适用于特定的领域,如 web 分析。在这种情况下,开发项目就需要包括 Microsoft.DataWarehouse.Interfaces,以便可以获得对 AMO(Analysis Management Objects,分析管理对象)的访问权限。

DMX 示例

数据挖掘过程包括三个步骤,分别为创建数据挖掘模型、培训模型和根据模型预测行为,这三个步骤都可通过简单、类似 SQL 编程语言的 DMX 来实现。示例语法如下所示;DMX 的完整使用方法可从联机丛书中获得。

创建数据挖掘模型:

CREATE MINING MODEL CreditRisk
(CustID        LONG KEY,
Gender        TEXT DISCRETE,
Income        LONG CONTINUOUS,
Profession    TEXT DISCRETE,
Risk        TEXT DISCRETE PREDICT)
USING Microsoft_Decision_Trees

培训数据模型:

INSERT INTO CreditRisk
(CustId, Gender, Income, Profession, Risk)
SELECT CustomerID, Gender, Income, Profession, Risk
From Customers

根据数据挖掘模型预测行为:

SELECT NewCustomers.CustomerID, CreditRisk.Risk, PredictProbability(CreditRisk)
FROM CreditRisk PREDICTION JOIN NewCustomers
ON CreditRisk.Gender=NewCustomer.Gender
AND CreditRisk.Income=NewCustomer.Income
AND CreditRisk.Profession=NewCustomer.Profession
返回页首

Reporting Services

随着 Microsoft SQL Server 2005 的发布,Microsoft 在其集成商务智能平台中拓展了一个新的主要组件。即 SQL Server Reporting Services,该组件使得人们不管在任何商业环境中,都可将适当的信息送达适当的人员,从而扩展了 Microsoft 的商务智能发展前景。

Reporting Services 是一个基于服务器的完整平台,可创建、管理和交付传统报告和交互式报告。它包括您创建、分发和管理报告所需的一切工具和信息。同时,产品的标准模块化设计和应用程序编程接口 (API) 使软件开发人员、数据提供商和企业能够集成原有系统或第三方应用程序中的报告功能。

Reporting Services 随 SQL Server 2005 一起发布,其中包括:

用于创建、管理和查看报告的一整套工具

用于承载和处理报告的引擎

可将报告嵌入到(或将解决方案集成到)不同 IT 环境中的可扩展体系结构与开放式接口。

为什么使用 Reporting Services?

毫无疑问,能够在适当的时间将适当的信息送达适当的人员具有巨大的价值。对于许多企业而言,这是一个挑战,因为这些需要访问信息的人员不但具有广泛的技术专业背景,而且还可能分散在整个传统组织内的不同位置,甚至于组织之外。

Reporting Services 通过灵活的订阅和交付机制简化了传统报告与交互式报告的创建过程,并可将这些报告顺利地交付给广泛的人群。它还为处理复杂苛刻的商业环境提供了必要的安全性和可管理性。

Reporting Services 提供了独一无二的属性组合:

完整的、基于服务器的报告平台:Reporting Services 支持从创建报告到提交报告和后续管理的整个报告生命周期。

灵活可扩展的报告功能:Reporting Services 具用可扩展的交付选项,可同时支持众多格式的传统报告和交互式报告。它可通过开放式的 API 和接口轻松集成到任何环境或解决方案中。

可伸缩性:产品基于 web 的标准化模块设计,可轻松扩展为支持高数据容量的环境。您能够创建具有多个报告服务器的报告服务器场,访问同一核心报告,为数以千计的 web 客户端提供服务。

与 Microsoft 产品和工具的集成:Reporting Services 随 SQL Server 一起发布,可轻松集成我们所熟悉的 Microsoft 工具,如 Office 和 SharePoint Portal Server,无需进行编程和自定义设置。

使用 Reporting Services 的途径

由于 Reporting Services 是结合可伸缩、可扩展体系结构的单一完整的报告平台,因此它可满足范围广泛的报告需求。

企业报告:企业可在内部报告和商务智能应用程序中使用 Reporting Services。许多公司都创建数据集市或仓库来汇总操作数据。通过使用 Reporting Services,公司的 IT 员工可以设计各种报告,并将这些报告通过电子邮件分发,或在公司门户上发布,将这些报告部署给的整个企业中的个人。Reporting Service 作为集成在 Microsoft BI 平台中的一项综合报告解决方案,为企业提供了巨大的价值。

嵌入式报告:独立软件供应商 (ISV) 可以使用 Reporting Services 将报告预先定义为打包应用程序(随 Microsoft SQL Server 同时运行的)的一部分。客户的 IT 组织可按原样访问这些报告,或使用 Reporting Services 自定义报告,或为特定业务需求创建新报告。Reporting Services 为独立软件供应商 (ISV) 提供了一种在应用程序中嵌入灵活的交互式报告的简单方法。

为合作伙伴/客户设计的 Web 报告:组织可以将传统报告或交互式 web 报告部署为通过外部网络与客户或合作伙伴交互。Reporting Services 在提供个性化和互动性的同时,还使报告客户摆脱了复杂的底层数据源。

Reporting Services 功能

Reporting Services 将集中式托管报告系统的优点与桌面及基于 Web 应用程序的灵活性和按需选择性集于一身。Reporting Services 是一个完整的报告平台,支持从报告创建到报告部署的整个报告生命周期。

制作报告

Reporting Services 包括创建传统报告或交互式报告所需的一切工具及技术,其中包括具有报告设计向导功能的图形化报告设计器工具。

报告制作功能详细信息

受到广泛支持的数据源

Microsoft SQL Server

Microsoft Analysis Services

所有兼容 OLE DB 的数据源

所有兼容 ODBC 的数据源

灵活的制作工具

报告设计器(使用 Visual Studio 2005)

基于 XML 的报告定义语言 (RDL)

生成 RDL 的第三方工具

灵活的报告格式

自由格式

表格

矩阵

图表

使用运行时筛选的参数化报告

排序和分组

演练

链接的报告

模块化报告执行

转换是从查询流程中分离出来的一个流程;同一份报告可能转换为不同的格式。

执行可按计划执行,也可以按需执行。

管理报告

Reporting Services 包括基于 web 的工具,可用于管理报告和报告服务器 Web 应用程序。管理员可使用此界面为报告定义基于角色的安全性、编排报告执行和提交,以及跟踪报告历史。或者,企业或 ISV 可以使用 Reporting Services Web Services API 编写自定的管理工具。

由于报告定义、文件夹和资源都存储在 SQL Server 数据库中,因此,您可以使用其他工具(如 SQL Server Management Studio)管理元数据,或使用那些充分采纳已发布 API 的第三方应用程序。

Reporting Services 实施了一个灵活、基于角色的安全模型,用来保护报告和报告资源。这一功能可根据各种不同的安全需求量身定做。该产品包括根据需要集成其他安全模型的可扩展接口。

报告管理功能详细信息

报告元数据

名称

描述

数据源管理

连接

凭据

参数管理

默认

提示

报告编排

集成 SQL Server 代理

执行属性

实时、缓存或快照。Reporting Services 快照是报告数据集(运行报告快照时报告的源查询结果)的存储副本。

报告执行的历史

被保留下来,以供需要时再次使用的快照分类列表

报告安全性

用户、组和角色

报告服务器 Web 应用程序

基于 Web 的管理工具,这些工具可用于:

定义安全性

安排报告的执行和提交

跟踪报告历史

灵活的管理 API

Web 服务 API

提交报告

您可以将报告提交到门户、将其以电子邮件的形式发送给用户,或让用户使用基于 web 的报告服务器从文件夹层级中访问报告。导航、搜索和订阅功能可帮助用户根据其需要定位和运行报告。个性化的订阅功能可让用户自行选择自己喜欢的转换格式。

报告提交功能详细信息

报告转换选项的范围

Web 格式 (HTML)

打印格式 (PDF, TIFF)

数据 (Excel, XML, CSV)

通过开放式 API 实现的其他格式

灵活的提交选项

按计划

由事件驱动

个性化的订阅

显示的报告或链接交付

数据驱动的订阅

集成的其他应用程序

 

总结

Microsoft SQL Server 2005 是一个完整的商务智能平台,它所提供的基础结构和服务器组件可用于构建:

易于查询且维护成本较低的大型复杂数据仓库;

较小规模的企业或大型企业中的部门可以轻松构建和管理小型报告和分析系统;

向操作用户交付分析数据的低延迟系统;

闭环分析和数据挖掘系统;以及

扩展商务智能的嵌入式系统。

为用户所熟悉的工具(SQL Server 关系数据库、DTS、Reporting Services 和 Analysis Services OLAP 以及数据挖掘)也都得到了极大的改进。新增功能(如 Business Intelligence Development Studio 和 SQL Server Management Studio)进一步扩展了 Microsoft BI 平台。每个工具都具有创新性,其设计都可令您事半功倍:用比以前更少的硬件、规模更小的团队更快更好地构建、部署和管理重要的商务智能应用程序。

返回页首返回页首

附录 A:代码示例

递归查询示例

USE AdventureWorks
GO
/*
This query brings back a list of managers, and the count of employeeswho report to them directly or indirectly).
*/
WITH reps_cte (emp, mgr, recursion_level)
AS
(
/*Get the initial list of employees.*/
SELECT EmployeeID, ManagerID, 0
FROM Employee AS E
/*Get a Union of the anchor and the recursive term.*/
UNION ALL
SELECT reps_cte.emp, E.ManagerID, recursion_level+1
FROM Employee E, reps_cte        -- Join with Employee
WHERE reps_cte.mgr=E.EmployeeID    -- This employee's manager
AND recursion_level<=20        -- up to 20 levels of mgmt
)        -- End of common table expression
/*Now query the recursive common table expression reps_cte*/
SELECT r.mgr,  E.[LastName]+', ' + E.[FirstName] AS MgrName, count(*) CntEmployees
FROM reps_cte r INNER JOIN [Employee] E ON (r.mgr=E.EmployeeId)
GROUP BY mgr, E.[LastName]+', ' + E.[FirstName]
HAVING count(*) > 1            -- Means they manage at least one person
ORDER BY 3 DESC            -- Sort by count of employees
GO



http://www.microsoft.com/china/technet/prodtechnol/sql/2005/evaluate/dwsqlsy.mspx

转载于:https://www.cnblogs.com/waxdoll/archive/2005/06/11/172645.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380655.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MVVM实践教程

算算&#xff0c;从事Silverlight和WPF的开发也有1年多的时间了&#xff0c;虽然时间不算长&#xff0c;虽然还没有突出的成就&#xff0c;但是感觉也还算一般。 但是&#xff0c;从头至今都没有去认真研究和使用过MVVM&#xff0c;虽然它被认为是Silverlight和WPF开发的最佳架…

32位通用寄存器ESP、EIP、EAX、EBX、ECX、EDX,在OD里操作这些寄存器

EIP&#xff1a;指向CPU下一步即将执行的指令 I EIP为00401000&#xff0c;表示&#xff0c;CPU下一步到00401000这个地址去执行&#xff0c;下一步执行push 0x0指令 ESP&#xff1a;始终指向堆栈的最顶端 现在的ESP是0012FFC4&#xff0c;现在堆栈的顶部在这个地址 EAX、EBX、…

汇编add和mov指令

汇编指令add&#xff1a; 格式&#xff1a;add 参数1&#xff0c; 参数2 功能&#xff1a;参数1和参数2相加&#xff0c;将结果赋值给参数1&#xff0c;即 &#xff1a;参数1参数1参数2 汇编指令 mov&#xff1a; 格式&#xff1a;MOV destination,source 功能&#xff1a;将源…

双层玻璃窗的功效模型matlab,数学建模:双层玻璃窗的功效,80人%的人搞不懂数学的应用价值...

原标题&#xff1a; 数学建模&#xff1a;双层玻璃窗的功效&#xff0c;80人%的人搞不懂数学的应用价值A.Einstein有一句名言&#xff1a;想象力比知识更重要&#xff0c;因为知识是有限的&#xff0c;而想象力包括世界的一切&#xff0c;推动着进步&#xff0c;并且是知识的源…

8086CPU物理地址

8086CPU有20位地址总线&#xff0c;可以传送20位地址&#xff0c;达到1MB寻址能力&#xff0c;但8086CPU内部是16位&#xff0c;表现出来的寻址能力只有64kb。 8086CPU采用一种在内部用用两个16位地址合成的方法来形成一个20位的物理地址。 CPU中的相关部件提供两个16位地址&a…

8086的CS段寄存器(IP)

8086共有四个段寄存器&#xff0c;分别为CS&#xff0c;DS&#xff0c;SS&#xff0c;ES CS为代码段寄存器&#xff0c;还有个与CS息息相关的寄存器叫IP&#xff0c;为指令指针寄存器。 在8086PC机中&#xff0c;设CS中的内容为M&#xff0c;IP的内容为N&#xff0c;8086CPU将从…

思绪飞扬(一)

喜欢一个呆在房间了&#xff0c;听着音乐&#xff0c;冲一杯香甜的牛奶。任自已的思绪在空气中放飞&#xff01;似乎这一刻天地之间只有自已。 想想自已已经历了人生的近三分之一的时光。回首之间&#xff0c;二十几年的时间&#xff0c;我们经历了很多事&#xff0c;有…

nginx php fpm 日志,nginx下php-fpm不记录php报错日志怎么办?

解决nginx下php-fpm不记录php报错日志的办法&#xff1a;1、修改【php-fpm.conf】中配置&#xff0c;没有则增加&#xff1b;2、修改【php.ini】中配置&#xff0c;没有则增加&#xff1b;3、重启【php-fpm】即可。解决nginx下php-fpm不记录php报错日志的办法:1.修改php-fpm.co…

【转贴备忘】[教程]iPhone 實機開發 Part 1 - HelloWorld

http://bbs.weiphone.com/read-htm-tid-222380-page-1.html最近小弟開始在研究 iPhone 的開發,無奈找到的資料都是舊的,也不知道怎麼放到 iPhone 上,應該很多人都跟我有同樣的困擾吧!經過幾天的研究總算寫出第一個 HelloWorld,而且可以不用付99元美金就可以放到實機上執行! 今天…

DS和[address]

8086CPU中&#xff0c;用16位寄存器来存储一个字。高8位存放高位字节&#xff0c;低8位存放低位字节。在内存中存储时&#xff0c;由于内存单元是字节单元&#xff0c;则一个字要用两个地址连续的内存单元来存放&#xff0c;这个字的低位存放低地址单元中&#xff0c;高位字节存…

计算机指令格式_计算机科学组织| 指令格式

计算机指令格式指令格式 (Instruction format ) Instruction format describes the internal structures (layout design) of the bits of an instruction, in terms of its constituent parts. 指令格式按照指令的组成部分描述指令位的内部结构(布局设计)。 An Instruction fo…

ejs获取js变量值_EJS变量(注入值)

ejs获取js变量值Hi! Welcome to NODE AND EJS TEMPLATE ENGINE SERIES. Today, we will talk about EJS variables or how we can inject values? 嗨&#xff01; 欢迎使用NODE和EJS模板引擎系列。 今天&#xff0c;我们将讨论EJS变量或如何注入值&#xff1f; Just like nor…

Visual Basic 9.0 前沿播报·静态篇(六)松弛委托和可为空类型语法增强

本期介绍的两个VB9作为数据开发辅助功能的新特性。CLR在.NET 2.0增加了许多关于委托的新特性&#xff08;但大部分都不为任何语言所支持&#xff09;&#xff0c;其中一个叫做协变的特性允许放松委托与函数绑定时的签名检查&#xff08;C# 2.0支持&#xff09;。为了追求更高的…

3年前的小程序:破解需要delphi IDE 环境的vcl 控件

基本原理&#xff1a;有些vcl组件未注册的话&#xff0c;会显示没有注册的信息&#xff0c;但在设计期间不显示这些信息&#xff0c;表示该组件会检查delphi的ide 环境&#xff0c;解决办法就是让自己的exe带上ide的信息&#xff1b;组件检查ide的办法无非就是使用api查找特定的…

执行POP和PUSH指令后,SS和SP的变化

我们知道push指令是将数据送入栈中&#xff0c;pop指令是将数据从栈顶取出来&#xff0c;8086CPU的入栈和出栈操作都是以字为单位的 比如说将10000H-1000FH这段内存当做栈使用 CPU是通过CS、IP中存放的段地址和偏移地址来知道当前要执行的指令&#xff0c;通过DS和[address]来…

win7 php 上传文件,在LNMP原来的基础上,win7环境下如何上传PHP文件到Linux环境下...

首先&#xff0c;下载一个WINSCP客户端连接主机后&#xff0c;上传文件到自己的保存目录接着进入数据库添加我们的数据库mysql -uroot -p //这个是进入mysql的命令&#xff0c;但是要是你没有加 ln -s /usr/local/mysql/bin/mysql /usr/bin 的话就要输入下面那一行/usr/loc…

HDFC的完整形式是什么?

HDFC&#xff1a;住房发展金融公司 (HDFC: Housing Development Finance Corporation) HDFC is an abbreviation of Housing Development Finance Corporation. It is a well-known housing expansion finance corporation of India which largely makes available housing loa…

将10000H-1000FH这段空间当做栈,初始状态栈是空的,设置AX=001AH,BX=001BH,利用栈,交换AX和BX的数据

程序&#xff1a; mov ax,1000H mov ss,ax mov sp,0010H;设置AX和BX的值 mov ax,001AH mov bx,001BH;压栈 push ax push bx;出栈 pop ax pop bx解释&#xff1a; 在8086中&#xff0c;段寄存器不能直接传值&#xff0c;要通过一般寄存器&#xff0c;所以先将值传到ax中&#x…

php having,having方法

having方法1、对分组统计的结果&#xff0c;进行筛选如果将分分组查询的结果看成一张表的话&#xff0c;having方法类似where语句的功能2、源码&#xff1a;/thinkphp/library/think/db/Query.php/*** 指定having查询* access public* param string $having having* return $th…

Linux:jumpserver介绍(1)

官方网站 JumpServer - 开源堡垒机 - 官网https://www.jumpserver.org/ JumpServer 是广受欢迎的开源堡垒机&#xff0c;是符合 4A 规范的专业运维安全审计系统。JumpServer 帮助企业以更安全的方式管控和登录所有类型的资产&#xff0c;实现事前授权、事中监察、事后审计&…