Analysis Services 概述

Microsoft SQL Server 2000 Analysis Services 包含联机分析处理 (OLAP) 和数据挖掘。请使用下表熟悉这一版本中的 Analysis Services 文档。

章节 | 描述
Analysis Services 中的新特性 | 描述 Analysis Services 中的增强功能和新特性，并带有指向文档信息的链接。
安装 Analysis Services | 提供安装 Analysis Services 的说明。
Analysis Services 构架 | 描述 Analysis Services 的功能、服务器和客户端结构、对象层次结构与安全性。
数据仓库和 OLAP | 描述 OLAP 在数据仓库中的使用。
管理 Analysis Services | 描述在管理 Analysis Services 中使用的工具和任务。
管理员参考 | 提供有关 Analysis Services 的参考信息，包括规范和限制、SQL 在 Analysis Services 中的使用、用户界面的帮助主题、符合带 OLAP 的 Analysis Services 以及 OLE DB 的数据挖掘规范。
MDX | 提供介绍性材料、参考信息和在 Analysis Services 中使用多维表达式 (MDX) 的详细示例。
Analysis Services 疑难解答 | 提供信息，以帮助解决 Analysis Services 中可能发生的问题。
设计 Analysis Services 应用程序 | 描述开发 Analysis Services 管理和客户端应用程序时所用的程序设计信息和参考材料。
使用方法 | 提供 Analysis Services 的管理过程。


Analysis Services 的新特性

Microsoft® SQL Server™ 2000 扩展并重命名了以前的 OLAP 服务组件，该组件现在称为 Analysis Services。在 SQL Server 7.0 版中引入的 OLAP 服务深受好评，而许多新的和增强的功能又极大地改进了此服务的分析能力。在此版本中，Analysis Services 引入了数据挖掘，这可以用于在 OLAP 多维数据集和关系数据库中发现信息。

"新特性"主题简要介绍了新的 Analysis Services 功能，同时还具有与相关概念主题的链接。在这些主题中，对每一功能进行了更为详细的讨论并进一步提供了到相关文档的链接。

主题 | 描述
多维数据集增强 | 新的多维数据集类型和增强的多维数据集功能极大地扩展了 Analysis Services 的可伸缩性和功能。
维度增强 | 新的维度和层次结构类型、功能及改进扩展了多维数据集的分析能力。
数据挖掘增强 | 作为此版本的新特性，数据挖掘与联机分析集成在一起，并且能够用于在 OLAP 多维数据集和关系数据库中发现信息。
安全性增强 | 安全性增强包括在多维数据集单元和维度成员中使用角色、附加的身份验证方法和改进的强制能力。
PivotTable 服务中的客户连通性增强 | 客户应用程序能够使用许多新特性和增强功能，例如数据挖掘、HTTP 或 HTTPS 连接、附加维度类型、用于回写的单元分配。
其它增强 | 其它增强提供各种新特性，其中包括多用户管理、MDX 生成器、其它多维表达式 (MDX) 函数、虚拟多维数据集编辑器、支持 Active Directory™ 以及更多功能。


多维数据集增强

Microsoft® SQL Server™ 2000 Analysis Services 极大地扩展了 OLAP 多维数据集的可伸缩性和功能。可以在多台服务器间分散多维数据集数据以提供更大的存储容量，创建链接的多维数据集以便在不复制多维数据集数据的情况下分散最终用户对信息的访问，创建在数据更改时实时更新的多维数据集，以及使用很多其它新特性创建可满足特定业务需要的多维数据集。

分布式分区多维数据集

可以通过使用远程分区在多台分析服务器间分散多维数据集数据，来创建分布式分区多维数据集。在中央分析服务器上管理分布式分区多维数据集。有关更多信息，请参见远程分区。

实时 OLAP

实时 OLAP 提供多维 OLAP 数据视图，该视图随基础数据的更改不断更新。实时多维数据集实现实时 OLAP 的方式是：对分区和维度使用 ROLAP 存储，对聚合使用新的 SQL Server 2000 索引视图，以及在数据更改时由 SQL Server 2000 关系引擎自动发出通知。实时多维数据集提供开发新的 OLAP 解决方案分类（如呼叫中心管理、股票市场分析或商业活动管理）的能力。有关更多信息，请参见实时多维数据集。

链接多维数据集

多维数据集可以存储在单个分析服务器上，然后在其它分析服务器上将其定义为链接多维数据集。这样，连接到这些分析服务器任一台上的最终用户都可以访问该多维数据集。此方案避免了在多个分析服务器上存储和维护多维数据集复本这种更昂贵的方案。可以使用 TCP/IP 或 HTTP 连接链接多维数据集。在最终用户看来，链接多维数据集就象是常规多维数据集。有关更多信息，请参见链接多维数据集。

聚合的索引视图

如果分区的源数据存储在 SQL Server 2000 中并且符合一定的标准，则可以使用具有增强性能和灵活性的索引视图代替 ROLAP 分区聚合表。有关更多信息，请参见 ROLAP 分区的索引视图。

多维数据集处理

可以使用惰性聚合使最终用户可以在计算聚合时使用多维数据集数据。如果所处理的多维数据集的基础数据包含维度键错误，可以在这样几个选项中进行选择：在遇到键错误时停止处理，在到达指定的错误数时停止处理，或忽略所有的键错误。可以将错误记入文件以便以后查看。有关更多信息，请参见处理多维数据集。

计算单元

可以指定应用于多维数据集中的个别单元或单元集的公式。这些公式可以包含条件计算，用以根据多维数据集中的单元或单元集的值计算其新值，或者根据多维数据集中的其它单元的值计算新值。计算单元使用多维表达式 (MDX) 表达式，并且您可以指定多次执行该计算。计算单元可用于复杂的金融建模和预算应用；例如，如果单元值为零，则可以指定默认值（如父单元的百分比），而如果单元值不为零，则使用实际值。有关更多信息，请参见计算单元。

钻取

现在，支持钻取的客户端应用程序允许最终用户选择多维数据集单元，并且从该单元的源数据检索结果集。可以使用角色来控制用户对钻取功能的访问。有关更多信息，请参见指定钻取选项。

对策

对策使最终用户得以根据分析结果进行操作。对策是指最终用户可以在所选多维数据集或其某部分上启动的预定义操作。操作可以通过将所选项目作为参数来启动应用程序，也可以检索有关所选项目的信息。向导可以帮助用户创建对策。有关更多信息，请参见对策。

非重复计数

可以使用新的 DistinctCount 聚合函数分析数据中不重复出现的事件数或事务数，例如不重复访问某 Web 站点的用户。有关更多信息，请参见 DistinctCount。

隐藏多维数据集元素

对使用客户端应用程序浏览多维数据集的最终用户，可以隐藏全部多维数据集、维度、级别、度量值和成员属性。这些对象的可见性是由属性 Visible 来控制的。有关更多信息，请参见属性窗格（多维数据集编辑器数据视图）和属性窗格（维度编辑器数据视图）。

命名集

可以在多维数据集中创建、命名和保存维度成员集或集合表达式。通过将命名集置于坐标轴上，客户端应用程序可以象使用维度一样使用命名集。有关更多信息，请参见命名集。

默认度量值

可以针对每个多维数据集指定默认度量值，并由角色将其更改，从而可以控制多维数据集的最终用户默认视图。有关更多信息，请参见属性窗格（多维数据集编辑器数据视图）和自定义维度安全规则。

虚拟多维数据集编辑器

虚拟多维数据集的这个新编辑器在功能上与多维数据集编辑器相似。虚拟多维数据集编辑器替换和扩展了用于 SQL Server 7.0 版 OLAP 服务的计算成员管理器加载项所提供的功能。有关更多信息，请参见虚拟多维数据集编辑器。


维度增强

本版 Microsoft® SQL Server™ 2000 Analysis Services 向 OLAP 分析添加了非常重要的功能，其中包括许多新的维度类型、功能和改进。

父子维度

新的父子维度类型支持基于源表列中成员之间的父子链接的层次结构。这种层次结构表示包含组织图表和部分集合的结构。数据成员可用于提供非叶成员的数据，如销售部经理的直接佣金金额或结构图表中各个成员的薪水。有关更多信息，请参见父子维度。

ROLAP 维度

使用 ROLAP 存储模式，可以容纳超大型维度。维度数据保留在数据库表中，而且不受 MOLAP 的大小限制。有关更多信息，请参见维度存储模式。

写启用的维度

通过支持维度回写的 Analysis Manager 和客户应用程序，可以更新写启用的维度的成员。通过客户应用程序，角色可以用来控制对维度的写访问。有关更多信息，请参见写启用维度。

可更改维度

新的可更改维度类型允许删除、移动、添加或重命名维度成员，而不需要在更改后完全处理多维数据集。这增加了多维数据集对客户端应用程序的可用性。有关更多信息，请参见可更改维度。

相关性维度

通过在设计算法中使用非交叉成员组合知识来减少存储需求预算，相关性维度允许改进的聚合设计优化。有关更多信息，请参见相关性维度。

不齐整维度

不齐整维度有至少一个这样的成员：其逻辑父代不在与其紧邻的上一级别中，例如在国家/地区的维度中，在国家/地区和城市级别之间没有州或省级别。有关更多信息，请参见不齐整维度支持。

增强的虚拟维度

虚拟维度相比早期版本有更好的性能和更大的灵活性。它们能够直接基于另一维度表中的列，并且可以包含多个级别。虚拟维度不再受到 760 个成员的限制。有关更多信息，请参见虚拟维度和 7.0 版中创建的虚拟维度。

自定义汇总公式和自定义成员公式

与成员相关联的多维数据集单元值能够根据自定义的表达式计算出来，而不用通过度量的聚合函数。表达式能够应用于级别中的所有成员或者单个成员。有关更多信息，请参见自定义汇总公式和自定义成员公式。

自动成员分组

系统生成的成员组可以用来容纳具有超过 64,000 个子成员的成员。此功能还可以用来在成员很少的级别和成员众多的级别之间提供深化的中间级别。有关更多信息，请参见成员组。

默认成员

默认成员可以为每个维度指定并随角色而改变。它们控制着最终用户所得到的包含该维度的多维数据集默认视图。有关更多信息，请参见设置默认成员对话框和自定义维度安全规则。

维度筛选

筛选（WHERE 子句表达式）用来限制包含在维度中的维度表行。在维度的 Source Table Filter 属性中指定筛选。有关更多信息，请参见属性窗格（维度编辑器数据视图）。


数据挖掘增强

数据挖掘技术分析关系数据库和 OLAP 多维数据集中的数据以便发现感兴趣的信息。在以开放和可扩展的方式实现新的用于数据挖掘的 OLE DB 规范时，并入了 Microsoft® SQL Server™ 2000 Analysis Services 的数据挖掘功能。SQL Server 2000 包括 Microsoft 研发中心开发的数据挖掘算法。

关系和 OLAP 数据挖掘

Analysis Services 集成了数据挖掘技术，因而可用于在 Analysis Services 内的关系数据库和 OLAP 多维数据集中发现信息。可以使用数据挖掘的结果创建维度，将该维度添加到多维数据集中，以对数据进行进一步分析。有关更多信息，请参见数据挖掘模型。

Microsoft 决策树

Microsoft 决策树算法使用分级技术来分析数据。然后构造一个或多个决策树，可以用决策树预测新数据的属性或值。例如，可用此算法分析信用的历史数据并预测新申请人的信用风险。有关更多信息，请参见 Microsoft 决策树。

Microsoft 聚集

Microsoft 聚集算法使用最近邻居方法将记录分组，使其成为有相似特性的聚集。通常，这些特性可能是隐藏的或者非直观的。有关更多信息，请参见 Microsoft 聚集。

数据挖掘用户界面

Analysis Services 提供了新的用户界面向导、对话框和编辑器，可帮助您快速执行数据挖掘管理任务，例如生成数据挖掘模型并将其结果合并到 OLAP 多维数据集中。可以浏览在预测多个特性时产生的单个决策树模型或多个树的相关性网络模型。有关更多信息，请参见构造和使用数据挖掘模型。

用于数据挖掘的 MDX 扩展

多维表达式 (MDX) 语法已得到扩展，可提供与 OLAP 多维数据集有关的数据挖掘功能。有关更多信息，请参见 MDX。

用于数据挖掘的 DTS 任务

Analysis Services 处理任务已经增强为允许处理挖掘模型，并且提供新的数据转换服务 (DTS) 任务，可以使用后者从挖掘模型创建预测。有关更多信息，请参见自动化和调度管理任务。

客户端应用程序中的数据挖掘

通过创建数据挖掘模型和虚拟多维数据集，Analysis Services 的客户端应用程序可以用数据挖掘算法发现 OLAP 多维数据集中的信息。有关更多信息，请参见高级数据挖掘和分析。


安全性增强

本版 Microsoft® SQL Server™ 2000 Analysis Services 包含的功能在控制对多维数据集数据的访问方面提供更大的灵活性，并且提供其它验证用户身份的方法以及增强的角色执行能力。

维度安全性

可以使用角色控制最终用户对维度的访问。对每个角色，可以限制其对个别的维度、级别和成员的访问，还可以设置不同的读取和读/写权限。有关更多信息，请参见维度安全性。

增强的单元安全性

Analysis Manager 现在包含对话框，使您得以通过设置角色选项控制最终用户对多维数据集单元的访问，对单元安全性进行定义。可以限制角色对多维数据集单元任意组合的访问，并且可以对不同的角色设置不同的读取和读/写权限。有关更多信息，请参见单元安全性。

其它身份验证方法

对于客户端与分析服务器的连接，可以使用 HTTP 身份验证方法。Analysis Services 还支持 Windows 2000® 协商协议身份验证。有关更多信息，请参见服务器安全性和身份验证。

增强的角色执行能力

对于安装在文件分配表 (FAT) 或 NTFS 文件系统上的分析服务器都执行角色规范。


PivotTable 服务中的客户连通性增强

增强的 PivotTable® 服务提供新的连接选项，并支持本版 Microsoft® SQL Server™ 2000 Analysis Services 中引入的新的多维数据集功能和安全功能。客户端应用程序在连接到分析服务器时或在脱机工作时，可以使用 PivotTable 服务中的其它新特性。有关更多信息，请参见 PivotTable 服务中的新特性。

连接到分析服务器

客户端应用程序可以通过使用 HTTP 或 HTTPS 的 Microsoft Internet Information 服务 (IIS) 与分析服务器进行通讯。还可以使用第三方安全性提供程序。

分配的回写

可以将数据写入多维数据集中的聚合单元，并使用四种不同的分配公式之一，自动将数据分发到最低级别成员。有关更多信息，请参见使用回写。

管理本地多维数据集

服务器多维数据集的许多新特性（如新的维度类型、自定义汇总和计算成员）都可以用于本地多维数据集。

数据挖掘

PivotTable 服务支持可以在 SQL Server 2000 Analysis Services 中使用的高级数据挖掘和分析技术。可以创建并使用数据挖掘模型分析服务器多维数据集或本地数据库中的数据。


其它增强

本版 Microsoft® SQL Server™ 2000 Analysis Services 集成了不同的增强，使可用性、处理性能和 MDX 功能得到改进。

多用户管理

多个用户可以使用 Analysis Manager 管理分析服务器。锁定只能应用于被编辑的对象和它们的从属对象。有关更多信息，请参见Analysis Manager。

加载项集成

当初为 SQL Server 7.0 版 OLAP 服务创建的存档和还原数据库加载项、复制和粘贴对象加载项已升级、安装并全部集成到本版中。现在可以使用 Analysis Manager 存档和还原 SQL Server 2000 Analysis Services 数据库，并且可以在 Analysis Manager 树窗格中复制和粘贴对象。有关更多信息，请参见存档和还原数据库和复制和粘贴对象。

MDX 增强

许多新函数已添加到多维表达式 (MDX) 语法中，可以用它们计算成员并增强分析评估。有关更多信息，请参见 MDX。

MDX 生成器

新的 MDX 生成器工具帮助利用拖放技术创建 MDX 表达式。MDX 编辑文本框已得到增强，可以用颜色标出不同的关键字和函数、括号对称指示并提供可显示函数语法的智能提示。有关更多信息，请参见 MDX 生成器。

表别名

在多维数据集编辑器和维度编辑器中，可以为表指定别名。有关更多信息，请参见架构选项卡（多维数据集编辑器架构视图）和架构选项卡（维度编辑器架构视图）。

Active Directory 支持

Analysis Services 支持 Active Directory™，该目录服务包括在 Microsoft Windows® 2000 中。可以启用分析服务器，以便它在服务器启动时发布 Active Directory 条目，并在服务器状态改变时更新这些条目。有关更多信息，请参见在 Analysis Services 中使用 Active Directory。

性能监视计数器

很多性能计数器现在都可用于分析服务器，并且可与 Microsoft Windows NT® 4.0 中的性能监视器或 Windows 2000 中的系统监视器一起使用。有关更多信息，请参见监视 Analysis Services 性能。


安装 Analysis Services

本节只包含有关安装 Microsoft® SQL Server™ 2000 Analysis Services 的信息。但不包含有关安装其它 SQL Server 2000 组件的信息。有关安装其它组件（如 English Query）的更多信息，请参见 SQL Server 联机丛书入门。有关安装其它组件（如 English Query）的更多信息，请参见本书"介绍"中的"SQL Server 联机丛书入门"主题。

本节包含下列主题。

主题 | 描述
安装 Analysis Services 的硬件和软件要求 | 提供在安装和运行 Analysis Services 时的硬件和软件要求。
运行安装程序 | 提供安装 Analysis Services 的循序渐进指导。
安装参数和无提示安装 | 描述 Analysis Services 安装程序 (Setup.exe) 的参数。
重新安装 Analysis Services | 描述如何重新安装 Analysis Services。
删除 Analysis Services | 描述如何删除 Analysis Services。
从早期版本升级 | 描述如何从 Analysis Services 的早期版本升级。
向后兼容性 | 提供与 Analysis Services 的早期版本（以前称为 OLAP 服务）有关的兼容性信息。

相关文档

SQL Server 2000 光盘根目录中的 Readme.html 文件包含有关 Analysis Services 的信息。还可通过单击 SQL Server 2000 安装程序 (Autorun.exe) 菜单上的"阅读版本注释"按钮查看版本注释。


安装 Analysis Services 的硬件和软件要求

在安装 Microsoft® SQL Server 2000 ™Analysis Services 之前，计算机必须符合以下要求。

硬件/软件 | 要求
计算机 | Intel® 或兼容机（Pentium 133 MHz 或更高、Pentium PRO、Pentium II 或 Pentium III）
内存 (RAM) | 最小 32 MB（推荐 64 MB）
磁盘驱动器 | CD-ROM 驱动器
硬盘空间 (1) | 50 – 90 MB（如果安装包括常用文件和示例在内的所有组件则需 130 MB），纯客户端安装需 12 MB。
操作系统 | Microsoft Windows® 2000 Server - 或者 - 带有 Service Pack 5 或更高版本的 Microsoft Windows NT® Server 4.0 仅对于客户端计算机上的客户端组件，以下系统也符合安装要求： Windows 2000 Professional Windows NT Workstation 4.0 with Service Pack 5 Windows 98 Windows 95 + DCOM95 Windows 95 OSR2 + DCOM95
网络软件 | Windows 2000、Windows NT 4.0、Windows 98 或 Windows 95 内置网络软件；以及 TCP/IP（包含在 Windows 中）。
联机产品 文档查看器 | Microsoft Internet Explorer 5.0 版或更高版本 (2) 。在安装 Internet Explorer 5.0 版之前必须安装 Windows NT 4.0 Service Pack 5 或更高版本。
访问权限 | 若要安装用于分析服务器的服务，必须用管理员权限登录到该服务器。

1 安装程序将安装许多可以与其它应用程序共享的组件，这些组件可能已存在于计算机上。
2 Microsoft 管理控制台 (MMC) 和 HTML 帮助要求使用 Internet Explorer。最小安装就足够了，Internet Explorer 不必是默认浏览器。纯客户端安装不需要 Internet Explorer。

有关所支持硬件的更多信息，请参见位于 Microsoft Web 站点的"Microsoft Windows Hardware Compatibility List"（"Microsoft Windows 硬件兼容列表"）。有关 Windows 2000 兼容硬件的更多信息，请使用 Microsoft Web 站点的 Microsoft Windows 2000 兼容硬件设备搜索工具。


运行安装程序

本主题描述如何安装 Microsoft® SQL Server™ 2000 Analysis Services。

如果要从 Analysis Services 的早期版本（以前称为 OLAP 服务）升级，则在执行下列过程之前应该采取某些措施。有关更多信息，请参见从早期版本升级。有关更多信息，请参见本章后面的"从早期版本升级"。

如果要重新安装 Analysis Services，应在执行下列过程之前先采取某些措施。有关更多信息，请参见重新安装 Analysis Services。有关更多信息，请参见本章后面的"重新安装 Analysis Services"。

虽然 Analysis Services 可连接到在单台计算机上运行的多个 SQL Server 实例，但不能在单台计算机上安装多个 Analysis Services 实例。

若要安装 Analysis Services，请使用 Analysis Services 安装程序或 SQL Server 2000 安装程序。

安装 Analysis Services

  1. 退出所有 Microsoft Windows® 应用程序。

  2. 将 SQL Server 2000 光盘插入 CD-ROM 驱动器中。这将启动 SQL Server 2000 安装程序。如果安装程序没有自动启动，则运行光盘根目录中的 Autorun.exe 程序。

  3. 单击"安装 SQL Server 2000 组件"。

  4. 单击"Analysis Services"启动 Analysis Services 安装程序。

  5. 在"欢迎"步骤中单击"下一步"按钮。

  6. 在"软件许可协议"步骤中，阅读许可协议，然后进行下列操作之一：
    • 单击"是"按钮接受许可协议。必须选择此选项才可以安装 Analysis Services。

    • 要拒绝许可协议，则单击"否"按钮。如果选择此选项，程序会要求您确认是否退出。如果选择"退出安装"，则程序将关闭，并取消安装。若要继续安装，请单击"继续"按钮。
  7. 安装程序提示输入光盘密钥。键入产品的 10 位数光盘密钥，然后单击"确定"按钮。

  8. 安装程序显示完整的产品 ID，可将其记录下来以便将来参考。记下产品 ID 后单击"确定"按钮。

  9. 在"选择组件"步骤中，选择要安装的组件。默认情况下所有的选项都是选定的。不能清除其它选定组件所依赖的任何组件的复选框。

除非在客户端计算机上安装客户端组件，否则建议安装全部组件。可安装下列组件。

组件 | 描述
分析服务器 | 安装分析服务器所需的二进制可执行文件和其它与服务器相关的文件。包括本教程所使用的 FoodMart 2000 示例数据库。需要客户端组件。
Analysis Manager | 支持用于管理分析服务器的用户界面的二进制可执行文件和其它文件。包括 MDXSample 可执行文件。需要决策支持对象 (DSO) 和客户端组件。
决策支持对象 | 用于管理分析服务器和元数据的对象模型。需要客户端组件。
客户端组件 | Analysis Services 客户端的二进制可执行文件和相关文件。客户端组件包括 PivotTable® 服务。
示例应用程序 | 示例应用程序包括 MDXSample 源文件、FoodMart 2000 数据库和编程示例。需要客户端组件。
联机丛书 | SQL Server 2000 的完整文档集，包括 Analysis Services。该文件大约 30 MB。如果磁盘空间非常珍贵，可选择不安装联机丛书。但是，将无法在用户界面中获得产品文档，除非重新安装。

若要更改目的驱动器或文件夹，请单击"浏览"按钮。虽然在这些对话框中列出了远程网络驱动器，但不支持安装到远程网络驱动器上的位置。

"所需空间"和"可用空间"显示磁盘驱动器空间并帮助确定要安装的组件。如果当前的磁盘驱动器没有足够的可用空间，可单击"磁盘空间"以确定计算机的哪个磁盘有足够的空间安装 Analysis Services。

在选择要安装的组件后单击"下一步"按钮。后面的步骤因选择安装的组件而异。

  10. 在"Data 文件夹位置"步骤中，可以更改 Data 文件夹的位置，它是分析服务器的数据存储位置。

    Data 文件夹的默认位置是 C:\Program Files\Microsoft Analysis Services\Data（除非在前面的步骤中为 Analysis Services 指定了另一个位置）。可以通过单击"浏览"按钮指定不同的位置。如果更改默认文件夹或驱动器，则应确保输入完全合法的路径。若要指定的数据存储位置在安装该服务器的计算机之外，必须拥有对那台计算机的完全控制访问权限。

    重要 Data 文件夹中存储着控制最终用户对分析服务器中对象的访问的安全性文件。由于这一原因，必须对 Data 文件夹加以保护以防未经授权的访问。

    在选择 Data 文件夹的位置之后单击"下一步"按钮。

  11. 在"选择程序文件夹"步骤中，接受默认的程序文件夹名称或输入新名称。这将确定 Analysis Services 菜单项在"开始"菜单上的位置。单击"下一步"按钮。

  12. Analysis Services 安装开始。在安装程序通知您安装完成后，请单击"完成"按钮。

  13. 如果提示您重新启动计算机，请进行下列操作之一：
    • 单击"是，我希望立即重新启动计算机"选项，然后单击"完成"按钮。

    • 单击"否，稍后再重新启动计算机"选项，然后单击"完成"按钮。如果选择该选项，则只有在您重新启动计算机后才会完成安装。
  14. 如果要结束安装 SQL Server 2000 组件，则单击 SQL Server 2000 安装程序中的"退出"按钮。

如果在步骤 10 中指定的数据存储位置不是安装服务器的计算机，则必须将分析服务器服务 (MSSQLServerOLAPService) 配置为用用户帐户登录。而不是默认设置（用系统帐户登录）。为此，请使用服务应用程序，该程序在 Windows NT® 4.0 的"控制面板"或 Windows® 2000 的"控制面板"中的"管理工具"文件夹中。


安装参数和无提示安装

可以用下列可选的命令行参数启动 Analysis Services 安装程序（位于 SQL Server 光盘上的 \Msolap\Install\Setup.exe）：

-r

该选项使 Setup.exe 在 systemroot 文件夹中（一般为 C:\WinNT）自动生成一个无提示响应文件 (.iss)，该文件记录安装输入。

-s

该选项执行无提示（无值守）安装。

-f1<path\ResponseFile>

该选项使您得以指定响应文件（.iss 文件）的备用位置和名称。如果在运行无提示安装时不使用 -f1 开关，则安装程序会在与 Setup.exe 相同的文件夹中搜索响应文件 Setup.iss。

-f2<path\LogFile>

该选项使您得以指定日志文件的备用位置和名称。默认情况下，在 systemroot 文件夹（一般为 C:\Winnt）中创建和存储 Setup.log 日志文件。

如果使用 -r 选项，则可以创建任何想要的安装方案的记录。可以使用该记录来执行无提示（无值守）安装。例如，下列命令会启动无提示安装，安装 setup.iss 响应文件中指定的组件，该文件是以前使用 -r 选项时记录的文件：

Setup.exe -s -f1C:\temp\setup.iss

-z

防止 Setup.exe 在初始化过程中检查可用内存。当在内存超过 256 MB 的计算机上运行安装程序时需要这一开关。如果不使用它，则 Setup.exe 报告内存不足并退出。


重新安装 Analysis Services

若要重新安装 Microsoft® SQL Server™ 2000 Analysis Services，请执行以下步骤：

  1. 如果对 FoodMart 2000 示例数据库进行了更改并希望保存这些更改，请备份 FoodMart2000.mdb，该文件默认情况下安装到以下位置：C:\Program Files\Microsoft Analysis Services\Samples。否则，将在安装过程中重写该文件。

  2. 安装 Analysis Services。有关更多信息，请参见运行安装程序。有关更多信息，请参见本章前面的"运行安装程序"。

说明 重新安装 Analysis Services 不会删除包含 Analysis Services 元数据的 Analysis Services 知识库 (msmdrep.mdb)。但是，必须在重新安装后处理该知识库中的所有多维数据集。如果在重新安装前已备份 FoodMart 2000 示例数据库，则请还原 FoodMart2000.mdb 以恢复对该文件的更改。


停止或删除 Analysis Services

若要停止 Microsoft® SQL Server™ 2000 Analysis Services，请执行以下步骤：

  1. 打开"控制面板"。

  2. 如果计算机的操作系统是 Windows® 2000，则打开"管理工具"文件夹，然后双击"服务"。

    如果计算机的操作系统是 Windows NT® 4.0，则双击"服务"。

  3. 选择 MSSQLServerOLAPService，然后在"对策"菜单上单击"停止"按钮。

  4. 一直等到应用程序通知您该服务已经被停止。

若要删除 Analysis Services，请使用"控制面板"中的"添加/删除程序"应用程序。删除 Analysis Services 不会删除包含 Analysis Services 元数据的 Analysis Services 知识库 (msmdrep.mdb) 和查询日志 (msmdqlog.mdb)。如果要完全删除 Analysis Services，必须手工删除这些文件。


从早期版本升级

若要从 Microsoft® SQL Server™ 2000 Analysis Services 的早期版本（以前称为 OLAP 服务）升级，请执行下列操作：

  1. 备份 Analysis Services 知识库和查询日志。

  2. 在安装 Analysis Services 之前，为防止数据丢失，请备份包含 Analysis Services 元数据的 Analysis Services 知识库 (Msmdrep.mdb) 和查询日志 (Msmdqlog.mdb)。这些文件位于 Analysis Services 文件夹的 Bin 文件夹中。

    通过运行 Analysis Services 安装程序安装 Analysis Services。有关更多信息，请参见运行安装程序。有关更多信息，请参见本章前面的"运行安装程序"。

当从早期版本升级时，安装程序不会删除或替换 Analysis Services 知识库或查询日志。

说明 Analysis Services 的默认位置已从 Analysis Services 早期版本的 C:\Program Files\OLAP Services 更改为此版本的 C:\Program Files\Microsoft Analysis Services。


向后兼容性

Microsoft® SQL Server™ 2000 Analysis Services 与 SQL Server 7.0 版 OLAP 服务兼容。SQL Server 7.0 OLAP 服务中创建的多维数据集需要迁移到更新的元数据知识库格式并重新处理。否则，现有多维数据集、角色、共享维度等等的结构不需要更改。有关将 SQL Server 7.0 OLAP 服务知识库迁移到 SQL Server 2000 Meta Data Services 的更多信息，请参见迁移 Analysis Services 知识库。有关将 SQL Server 7.0 OLAP 服务知识库迁移到 SQL Server 2000 Meta Data Services 的更多信息，请参见 SQL Server 联机丛书中的"迁移 Analysis Services 知识库"主题。

以下部分涉及 SQL Server 7.0 OLAP 服务的向后兼容性。

Analysis Services 的管理

Analysis Manager 向后与 SQL Server 7.0 OLAP 服务兼容。它能够同时管理 OLAP 服务器（随 SQL Server 7.0 OLAP Services 一起的服务器）和分析服务器（随 SQL Server 2000 Analysis Services 一起的服务器）。当管理 OLAP 服务器时，SQL Server 7.0 Service Pack 2 代码的 OLAP 服务部分用于确保完全向后兼容。Service Pack 2 中的加载项程序现在已经与 Analysis Manager 集成，无需安装它即可管理 OLAP 服务器。

客户端和本地多维数据集支持

SQL Server 7.0 OLAP 服务客户端组件不支持 SQL Server 2000 Analysis Services 或本地多维数据集中的一些功能。有关更多信息（包括功能列表），请参见 7.0 Analysis Services 客户端和本地多维数据集支持。有关更多信息（包括功能列表），请参见本章后面的"7.0 Analysis Services 客户端和本地多维数据集支持"。

决策支持对象

Analysis Services 现在包括更新的决策支持对象 (DSO) 版本，后者将在安装过程中自动安装。当管理分析服务器（随 SQL Server 2000 Analysis Services 提供的服务器）时，程序必须使用这个新的 DSO 版本。不必对这些程序进行其它改动。使用该 DSO 更新版本的程序与 OLAP 服务器（随 SQL Server 7.0 OLAP 服务提供的服务器）兼容，并能管理 OLAP 服务器；但是，在 OLAP 服务器中不能使用新特性。

PivotTable 服务

SQL Server 2000 Analysis Services 包括更新的 PivotTable® 服务版本。使用 PivotTable 服务的客户端应用程序在连接分析服务器时不需要使用这个新版本，除非需要访问包含新特性的对象。使用 PivotTable 服务早期版本的客户端应用程序看不到使用这些新特性的对象（如包括父子维度的数据挖掘模型和多维数据集）。使用更新的 PivotTable 服务版本的客户端应用程序可以连接任何版本的服务器。使用更新的 PivotTable 服务版本的客户端应用程序可以使用以下属性配置它们的兼容性设置：

  1. MDX Compatibility 属性

  2. MDX Unique Name Style 属性

  3. Secured Cell Value 属性

  4. Visual Mode 属性
自定义加载项程序

为供 SQL Server 7.0 OLAP 服务使用而开发的自定义加载项程序仍可以供 SQL Server 2000 Analysis Services 使用。不需要对它们进行更改。

存档、还原和迁移数据

Analysis Services 支持存档和还原数据库以及在不同的产品版本间迁移知识库的部分（不是全部）排列/置换。有关支持的迁移路径的信息，请参见支持的 Analysis Services 知识库迁移路径。有关支持的迁移路径的信息，请参见本章后面的"支持的 Analysis Services 知识库迁移路径"。有关在不同的产品版本间存档和还原数据的信息，请参见在不同的 Analysis Services 版本间存档和还原数据库。有关在不同的产品版本间存档和还原数据的信息，请参见本章后面的"在不同的 Analysis Services 版本间存档和还原数据库"。


7.0 Analysis Services 客户端和本地多维数据集支持

下表显示 Microsoft® SQL Server™ 7.0 OLAP 服务客户端组件和 SQL Server 2000 Analysis Services 本地多维数据集所支持的新服务器功能。当某功能可能导致 7.0 客户端应用程序错误地转换数据时，服务器将防止多维数据集可见并阻止客户端连接到多维数据集。如果本地多维数据集中缺少某个功能，而这可能更改给用户显示的数据值，则不能创建使用该功能的本地多维数据集。

对于下面列出的每个功能，下表都显示包含该功能的多维数据集在 7.0 客户端应用程序上是否可见，还显示如果该多维数据集可见，则 7.0 客户端应用程序是否可以使用该功能。对于每个功能，下表还显示是否可使用该功能创建本地多维数据集，以及在本地多维数据集中是否支持该功能。

功能 | 多维数据集在 7.0 客户端上可见 | 功能在 7.0 客户端上可用 | 可使用功能创建本地多维数据集 | 在本地多维数据集中支持
对策 | 是 | 否 | 是 | 否
其它身份验证方法 | 是 | 是 | 是 | (2)
计算单元 | 否 | 否 | 否 | 否
可更改维度 | 是 | 否 | 是 | 否
自定义成员公式 | 否 | 否 | 否 | 否
自定义汇总公式 | 否 | 否 | 否 | 否
默认成员 | 否 | 否 | 是 | 是
维度安全性 | 否 | 否 | 否 | 否
DistinctCount | 否 | 否 | 否 | 否
钻取 | 是 | 否 | 是 | 否
增强单元安全性 | 是 | 是 | 是 | 否
增强虚拟维度 (1) | 是 | 是 | 是 | 不可用
超出 7.0 限制(3) | 否 | 否 | 是 | 是
链接多维数据集 | 是 | 不可用 | 是 | 否
成员组 | 是 | 是 | 是 | 是
有数据的成员 | 是 | 是 | 是 | 是
新 MDX 函数 | 是 | 否 | 是 | (4)
父子维度 | 否 | 否 | 是 | 是
不齐整维度 | 是 | 是 | 是 | 是
ROLAP 维度 | 是 | 不可用 | 是 | 否
具有相同名称的兄弟 | 否 | 否 | 是 | 是
写启用的维度 | 是 | 否 | 是 | 否

1 对以前规定的虚拟维度中只能有 760 个成员的限制不适用。
2 本地多维数据集不支持单元安全性。
3 在多维数据集中超出 127 个度量值，在多维数据集中超出 63 个维度，或在多维数据集中超出 128 个级别。有关 SQL Server 2000 Analysis Services 限制的信息，请参见规范和限制。有关 SQL Server 2000 Analysis Services 限制的信息，请参见 SQL Server 联机丛书中的"规范和限制"主题。
4 对于 SQL Server 7.0 OLAP 服务客户端，不支持新的多维表达式 (MDX) 功能。对于本地多维数据集，可使用新的 MDX 功能，但 LookUpCube 除外。不在本地多维数据集中创建使用 LookUpCube 的计算成员。


支持的 Analysis Services 知识库迁移路径

可将 Microsoft® SQL Server™ 2000 Analysis Services 知识库从默认的 Microsoft Access（Microsoft Jet 3.5 或 4.0）数据库迁移到位于相同或不同计算机上的 SQL Server 数据库。不能将 SQL Server 知识库迁移到 Microsoft Access 知识库。当迁移数据库时，可将格式从本机格式迁移到 SQL Server 2000 Meta Data Services 格式。若要在本机格式和 Meta Data Services 格式之间迁移 SQL Server 数据库知识库，必须将它从一个 SQL Server 数据库迁移到另一个。下表显示支持的知识库数据库迁移路径。

 |  | 到本机 |  | 到 MDS
 |  | Jet 3.5/4.0 | SQL Server 7.0/2000 | SQL Server 2000
从本机 | Jet 3.5/4.0 | 否 | 是 | 是
 | SQL Server 7.0/2000 | 否 | 是(2) | 是(2)
从 MDS(1) | SQL Server 2000 | 否 | 是(2) | 是(2)

1 MDS 表示 SQL Server 2000 支持的 Meta Data Services（以前称为 Microsoft 知识库）格式。
2 源数据库和目的数据库必须是不同的数据库。

请参见

迁移 Analysis Services 知识库

用于 Jet 的 OLE DB 提供程序


在不同的 Analysis Services 版本间存档和还原数据库

在分析服务器（随 Microsoft SQL Server 2000 Analysis Services 安装的服务器）上，可还原使用 OLAP 服务器（随 SQL Server 7.0 OLAP 服务安装的服务器）或分析服务器存档的数据库。下表显示所有支持的数据库还原路径，这些数据库是在 SQL Server 7.0 OLAP 服务或 SQL Server 2000 Analysis Services 中，使用 Microsoft Jet 3.5 或 4.0 OLE DB 提供程序，以本机格式或 SQL Server 2000 Meta Data Services 格式存档的。

 |  |  | 到本机 |  |  |  | 到 MDS
 |  |  | Jet 3.5/4.0 |  | SQL Server |  | SQL Server
 |  |  | 7.0 | 2000 | 7.0 | 2000 | 2000
从本机(1) | Jet 3.5/4.0 | 7.0 | 是 | 是 | 是 | 是 | 是
 |  | 2000 | 否(3) | 是 | 否(3) | 是 | 是
 | SQL Server | 7.0 | 是 | 是 | 是 | 是 | 是
 |  | 2000 | 否(3) | 是 | 否(3) | 是 | 是
从 MDS(2) | SQL Server | 2000 | 否(3) | 是 | 否(3) | 是 | 是

1 From 指定存档数据库的 OLAP 服务或 Analysis Services 的知识库格式、数据库引擎和版本；而 To 指定还原数据库的 OLAP 服务或 Analysis Services 的知识库格式、数据库引擎和版本。
2 MDS 表示 SQL Server 2000 支持的 Meta Data Services（以前称为 Microsoft 知识库）格式。
3 OLAP 服务器不支持还原 Analysis Services 数据库。

请参见

存档和还原数据库

用于 Jet 的 OLE DB 提供程序


Analysis Services 构架

下列主题包括有关 Microsoft SQL Server 2000 Analysis Services 构架的信息。

主题 | 描述
Analysis Services 功能 | 包含 Analysis Services 及其主要功能的概述。
服务器和客户端构架 | 描述分析服务器和客户应用程序间的交互情况。
对象构架 | 包含有关在 Analysis Services 中使用的对象及对象之间连接方式的信息。
安全性和身份验证 | 描述 Analysis Services 中的安全性，该安全性使角色基于 Windows NT 4.0 和 Windows 2000 用户和组，以提供安全性设置，您可以在从数据库级别到单个单元级别中的任意级别上设置这些安全性设置。


Analysis Services 功能

Microsoft® SQL Server™ 2000 Analysis Services 是用于联机分析处理 (OLAP) 和数据挖掘的中层服务器。Analysis Services 系统包括一个服务器，可以构造用于分析的数据多维数据集，同时 Analysis Services 系统还提供对多维数据集信息的快速客户端访问。Analysis Services 将数据仓库中的数据组织成包含预先计算聚合数据的多维数据集，以便为复杂的分析查询提供快速解答。Analysis Services 使您可以从多维 (OLAP) 和关系数据源这两者创建数据挖掘模型。还可以对这两类数据应用数据挖掘模型。PivotTable® 服务是系统中包含的遵从 OLE DB 的提供程序，Microsoft Excel 和其它供应商提供的应用程序用它来检索服务器中的数据并将结果显示给用户，或用它创建用于脱机分析的本地数据多维数据集。

某些功能仅在安装了用于特定版本的 SQL Server 2000 的 Analysis Services 后才能使用。有关各个版本支持哪些功能的更多信息，请参见SQL Server 2000 的各种版本所支持的功能。

下表描述 Analysis Services 的主要功能。

主题 | 描述
易于使用 | 有向导支持的全面的用户界面
灵活的数据模型 | 用于多维数据集定义和存储的灵活而稳固的数据模型
可伸缩性 | 可伸缩的构架针对困扰传统 OLAP 技术的数据爆炸情况，提供各种存储方案和自动解决方案
集成 | 集成了管理工具、安全性、数据源和客户机/服务器高速缓存
广泛支持的 API 和开放的构架 | 支持自定义应用程序


易于使用

为使联机分析处理 (OLAP) 和数据挖掘技术更易于使用，Microsoft® SQL Server™ 2000 Analysis Services 在 Analysis Manager 内提供了向导、编辑器、工具以及信息。该控制台应用程序提供一个用于访问分析服务器及其元数据知识库的用户界面。

教程和概述材料

借助联机教程，只需几小时就能掌握 Analysis Manager。该教程既为初学者也为有经验的 OLAP 用户而设计，它可以带领您一步步地创建基本的多维数据集，还可以更高级的操作（例如创建分区、虚拟多维数据集、安全角色、可写维度、对策和数据挖掘模型）。该教程是帮助您了解 OLAP、数据挖掘及 Analysis Manager 的操作和功能的优秀工具。

还可以在 Analysis Manager 的 HTML 窗格（右窗格）中找到关于 OLAP 和 Analysis Services 的信息。

元数据和数据视图

在 Analysis Manager 的右窗格中，可以查看对象属性和元数据，并在树窗格中移动时浏览多维数据集和数据挖掘模型的数据。

多维数据集向导

借助该易用的向导，可以建立在创建 OLAP 多维数据集时所必需的所有结构。该向导将带领您完成多维数据集设计和实施的全部过程，从映射数据源、创建维度到定义度量值。

多维数据集编辑器

通过简单的拖放操作，可以编辑现有的多维数据集结构和创建新的结构。多维数据集编辑器是对多维数据集向导的补充。利用多维数据集编辑器，可以修改已用向导创建的多维数据集或者快速创建新的多维数据集。

维度向导

利用维度向导，可以快速便捷地创建任何多维数据集均可使用的共享维度或可在单个多维数据集中使用的专用维度。可以将数据库维度表的列映射到维度级别上，或根据数据库中的日期-时间列，使用内置的时间维度生成器来创建各种时间维度。可使用维度向导创建基于星型或雪花数据仓库架构的维度。此外，还可以创建父子维度、虚拟维度以及数据挖掘维度。

维度编辑器

通过简单的拖放操作，可以编辑现有的共享维度结构和创建新的结构。维度编辑器是对维度向导的补充，使您得以修改使用向导创建的维度或快速创建新的维度。您还可以在编辑器中预览维度数据。

增量更新向导

该向导可以指导您一步步地将新数据并入多维数据集。增量更新是将新数据添加到多维数据集，而不一定要重建聚合数据和重新加载所有数据。

分区向导

该向导可帮助您创建新的分区来包含多维数据集中的部分数据。分区使您得以将多维数据集的数据分发和优化到位于一台服务器或跨多台服务器上的相互分离的段中。

说明 只有安装了 SQL Server 2000 企业版的 Analysis Services，才能在一个多维数据集内创建多个分区。

存储设计向导

可以利用该向导指定多维数据集数据的存储模式，并帮助您设计适合于多维数据集预期用途的聚合。该向导中的可用选项使您得以根据应用程序和用户的需要，在响应时间与存储需求之间实现最佳平衡。

使用分析向导

通过显示日志记录的查询信息，如日期、用户、查询响应时间、表格和图形格式的频率等，使用分析向导可帮助您了解多维数据集的使用情况。

基于使用的优化向导

基于使用的优化向导可帮助您根据用户对多维数据集的实际使用情况来调节多维数据集的性能。您可以根据任何用户组合、查询的执行次数、查询响应时间、数据所驻留的存储模式或日期范围等指导该向导创建可提高性能的聚合。

计算单元向导

此向导帮助您创建计算单元，使您得以定义称为子多维数据集的多维数据集的子部分，其值由多维表达式 (MDX) 公式确定。计算单元的功能与自定义成员的功能类似，但计算单元可能影响多维数据集内的特定单元，甚至是单个单元，从而允许对财务和统计计算进行更精细地控制。

对策向导

可以利用该向导创建与一个多维数据集或多维数据集中的一部分相关联的对策。对策允许用户对选定的多维数据集或其中的一部分触发一个操作，并自动将选定的项目作为参数传递给该操作。例如，用户可以为一个维度成员选择一个对策，该对策将自动打开他或她的 Internet 浏览器，以便他或她可访问关于该成员的页面。

虚拟多维数据集向导

可以利用该向导联接多维数据集，并从多维数据集中选择维度和度量值来创建虚拟多维数据集。虚拟多维数据集使单个查询得以传送到多个多维数据集，其中包括在不同的服务器上运行的多维数据集。在用户看来，虚拟多维数据集与常规多维数据集相似，但虚拟多维数据集不需要额外的存储空间；它类似于将关系数据库中的表联接起来的视图。

虚拟多维数据集编辑器

通过简单的拖放操作，可以编辑现有的虚拟多维数据集结构。虚拟多维数据集编辑器是对虚拟多维数据集向导的补充，使您得以修改用向导创建的虚拟多维数据集。

挖掘模型向导

您可使用该向导从 OLAP 和关系数据源这两者创建数据挖掘模型。也可指定不同的数据挖掘技术来生成模型。如果基于 OLAP 数据创建挖掘模型，可选择创建帮助分析挖掘模型结果的维度和虚拟多维数据集。

挖掘模型编辑器

在这两个编辑器中，一个用于 OLAP 数据挖掘模型，另一个则用于关系数据挖掘模型，可以使用拖放技术编辑现有的挖掘模型，然后浏览挖掘模型的结果。

数据视图

利用该视图，无需离开 Analysis Manager 便可查看多维数据集、维度和数据挖掘模型的数据。也无需切换到另一个应用程序来检查自己的设计。

OLE DB 数据源定位器集成

Analysis Services 使用 Microsoft 数据源定位器组件来选择 OLE DB 或 ODBC 数据源。

角色管理器

利用数据库角色管理器和多维数据集角色管理器，可以创建和维护角色，以控制用户对多维数据集及其组成部分的访问。


灵活的数据模型

通过支持各种数据和存储模型，Microsoft® SQL Server™ 2000 Analysis Services 可以帮助您创建和维护满足您的单位需要的系统。

多个数据存储选项

Analysis Services 为维度、分区以及多维数据集提供三种存储模式：

  • 多维 OLAP (MOLAP)

    多维数据集的基础数据与聚合数据一起存储在高性能的多维结构中。MOLAP 存储提供优异的性能和数据压缩功能。

  • 关系 OLAP (ROLAP)

    多维数据集的基础数据与聚合数据一起存储在关系数据库中。ROLAP 存储使您得以利用在关系技术和企业数据管理工具方面的投资。

  • 混合 OLAP (HOLAP)

    多维数据集的基础数据存储在关系数据库中，而聚合数据则存储在高性能的多维结构中。HOLAP 存储为聚合提供 MOLAP 的优点，且无需复制基础的细节数据。

说明 成员多于 10,000,000 的维度必须使用 ROLAP 存储模式。只有安装用于 SQL Server 2000 企业版的 Analysis Services 才能使用此功能。

分区多维数据集存储

可以将多维数据集分为若干个独立的物理部分。每个分区都可以按不同的模式存储在不同的物理位置中，并具有适合于分区中数据的聚合级别。这使您可以细致地调节系统的性能和数据管理特性。

说明 只有安装用于 SQL Server 2000 企业版的 Analysis Services 才能使用此功能。

分区合并

可以将多维数据集的多个分区重新合并为单个物理分区。例如，可以通过分区合并来合并多维数据集中的部分数据，例如将刚结束的一个季度的数据合并到单个的年度分区中。

写启用的多维数据集

可以使多个用户同时对一个多维数据集进行写入。用户对多维数据集数据所做的修改会记录在一个与多维数据集相关联的、而在物理上独立的专门分区表中，当有人查看多维数据集中的数据时，上述修改将自动应用。在用户看来就象是多维数据集中的数据已经发生了改变。数据库管理员 (DBA) 可决定是放弃这些改动，还是将它们设置为只读改动。

均衡、不均衡和不齐整层次结构

您可以创建具有均衡或不均衡层次结构的维度。具有均衡层次结构的维度使层次结构的所有分支均在同一级别结束，而不均衡层次结构的分支在不同级别终止。

同时，还支持不规则的层次结构。对于这样的维度，如果其中至少有一个成员在紧靠该成员上面的级别中无逻辑父代，则这种结构使得该维度可容纳不存在值的级别；不齐整层次结构中成员的逻辑父代可以比该成员高两个级别。

父子维度

可基于共同定义维度表中行之间父子关系的两个维度表列创建维度。父子维度支持均衡、不均衡以及不齐整层次结构；可用父子维度轻松创建复杂的层次关系。

写启用的维度

可以使多个用户同时对一个维度进行写入。用户对维度数据所做的修改会记录在维度表中。用户可以处理维度数据以查看对多维数据集数据的直接影响。

说明 只有安装用于 SQL Server 2000 企业版的 Analysis Services 才能使用此功能。

虚拟多维数据集

可以将多维数据集联接成虚拟多维数据集，类似于关系数据库中可以用视图联接的表。通过虚拟多维数据集，可以对合并后的多维数据集中的数据进行访问，而无需创建新的多维数据集，同时您还可以保留每个多维数据集的最佳设计。

计算成员

可以通过合并多维表达式 (MDX)、数学公式和用户定义的函数来创建计算度量值和计算维度成员。这一功能使您可以在丰富而又易于使用的表达式语法的基础上定义新的度量值和维度成员。可以注册用户定义函数的附加库以将其用于计算成员的定义中。

自定义一元运算符

自定义一元运算符使用存储在列中的简单数学运算符（称为"一元运算符"）来确定级别成员值如何影响父代值。自定义汇总运算符对每一级别成员都是唯一的。

自定义汇总公式和自定义成员公式

自定义汇总公式和自定义成员公式都是 MDX 表达式，用来确定与成员相关联的多维数据集单元值。自定义汇总公式应用于级别的所有成员，而自定义成员公式应用于单个级别成员。

计算单元

与自定义成员公式类似，计算单元是 MDX 语句，用来确定与指定单元组相关联的多维数据集单元值。计算单元仅应用于多维数据集中的指定单元，而自定义成员公式必须应用于给定成员的所有单元。

说明 只有安装用于 SQL Server 2000 企业版的 Analysis Services 才能使用此功能。

成员属性

可以定义维度成员的属性并在多维数据集内使用这些属性的数据。例如，如果 Product 维度的成员是 SKU，很可能有一些与 SKU 相关的属性，例如尺寸、颜色、织物等等。可以将这些属性指定为成员属性，并在分析查询中使用它们。

虚拟维度

虚拟维度可以从成员属性或另一个维度的级别中进行创建。虚拟维度可用来根据维度成员自身的情况来计算成员的属性。例如，可以根据尺寸、颜色、织物等等来计算 SKU 的度量值。虚拟维度和成员属性的计算对查询而言是必要的，同时它们不需要物理的多维数据集存储。


可伸缩性

Microsoft® SQL Server™ 2000 Analysis Services 提供了可伸缩的构架以满足不同的数据仓库方案。

自定义聚合选项

使用存储设计向导，可以在系统性能与分配给聚合存储的磁盘空间之间实现最佳平衡。Analysis Services 使用一种高级算法来确定可以衍生出其它聚合的最佳聚合集。这样，您可以将精力集中在应用程序的设计上，而将复杂的聚合设计管理留给系统处理。

基于使用的优化

通过让基于使用的优化向导设计出与最常执行的查询相适合的聚合，同时保持合理的存储需求，就可以调节多维数据集的性能以便对最常执行的查询进行快速响应。这样，您可以快速建立一个具有最小聚合数量的系统，然后根据系统的实际使用情况来优化性能。

数据压缩和存储优化

在多维 OLAP (MOLAP) 和混合 OLAP (HOLAP) 存储模式中，Analysis Services 将全部或部分多维数据集信息存储在多维结构中。在这些结构中，不对空单元使用存储，并对所存储的数据使用一个高级的数据压缩算法。当把这些技巧与用于设计和优化预先计算聚合的灵活选项结合使用时，有助于将 OLAP 技术中固有的数据爆炸情况所造成的影响降到最低程度。

分布式计算

PivotTable® 服务合并了服务器功能，这就可以经常在客户端而不是在服务器上进行计算。因为这样就在服务器和客户机之间分散了计算负荷，所以增加了服务器的容量，减少了网络通信量并提高了客户机的性能。

分区

通过将多维数据集分成若干个分区，可以使其分布在多个服务器上。这样，Analysis Services 便可以在检索数据的同时对查询进行应答。分区操作使您得以管理自己的存储策略，利用多个服务器增加数值范围，以及提高性能。

说明 只有安装用于 SQL Server 2000 企业版的 Analysis Services 才能使用此功能。

链接多维数据集

一个多维数据集可以存储在单个服务器上，并作为其它服务器上的链接多维数据集而被引用。这样，连接到任何这些服务器上的用户都可以访问该多维数据集。这避免了另一种花费更高的方法，即在多个服务器上存储和维护一个多维数据集的复本。链接多维数据集使得在一个分析服务器上创建、存储并维护多维数据集、而同时允许从多个分析服务器访问该多维数据集成为可能。链接多维数据集利于多维数据集的安全性并降低了存储和维护要求。

说明 只有安装用于 SQL Server 2000 企业版的 Analysis Services 才能使用此功能。

分布式分区多维数据集

使用远程分区创建分布式分区多维数据集使您得以通过在多个服务器上存储多维数据集数据来管理存储策略。好处包括集中化管理、更大的可伸缩性以及通过并行处理查询而提高性能。

说明 只有安装用于 SQL Server 2000 企业版的 Analysis Services 才能使用此功能。

增量更新

更新多维数据集时可以只处理已添加的数据，而非整个多维数据集；可以在 OLAP 多维数据集正在使用时对其进行增量更新。

LAN、WAN、Internet 和移动方案

智能高速缓存管理将分析服务器与 PivotTable 服务客户机集成，最大限度地减少了 LAN 和 WAN 连接上的通信量。PivotTable 服务包含一个高效的多维计算引擎，可进一步减少网络通信量，并可以在客户机没有连接到服务器时对本地多维数据进行分析。

Microsoft ActiveX® 控件、Active Server Pages (ASP) 脚本以及 ActiveX 数据对象 (ADO) API 可提供各种在 Web 上查询 OLAP 数据的解决方案。

若要支持移动方案，可以创建本地多维数据集，在没有连接到分析服务器的情况下也可以使用这些多维数据集。根据本地多维数据集的存储模式，它们中的一些即使没有连接到分析服务器和多维数据集的数据源也可以使用。

连接的 HTTP 身份验证

HTTP 或安全 HTTP (HTTPS) 身份验证可与 Microsoft Internet 信息服务 (IIS) 结合使用来建立到分析服务器的连接。

说明 只有安装用于 SQL Server 2000 企业版的 Analysis Services 才能使用此功能。

Windows 95 和 Windows 98 的客户端支持

PivotTable 服务在 Microsoft Windows® 95 和 Windows 98 上运行,支持可用于这些平台及 Microsoft Windows NT® 4.0 和 Windows 2000 的客户端应用程序。


集成

Microsoft® SQL Server™ 2000 Analysis Services 和其它组件和程序一起确保了企业级的可靠性。

集成的管理控制台

Analysis Services 包含一个图形管理工具： Analysis Manager。这是 Microsoft 管理控制台 (MMC) 的管理单元。它为定义、访问和管理分析服务器和数据库提供一个通用的框架和用户界面。您可以使用 MMC 中的多个管理单元组件；例如，可以与 Analysis Manager 一起安装 SQL Server 企业管理器和其它管理单元组件。

集成的安全性

对多维数据集和数据挖掘模型的访问建立在 Microsoft Windows NT® 4.0 或 Windows® 2000 安全性的基础之上，从而通过操作系统级的用户帐户和组定义方式提供与 SQL Server 2000 的集成。

OLE DB 和 ODBC 数据源

可以使用多种 OLE DB 和 ODBC 数据源，例如 Oracle 7.3 和 8.0 版。可以同时使用多个数据源。

数据转换服务

使用 SQL Server 企业管理器的数据转换服务 (DTS) 部分可以创建包，该包用于处理多维数据集和数据挖掘模型，然后根据挖掘模型运行预测查询。这些包可以按调度自动执行。

元数据服务

可使用 SQL Server 2000 元数据服务存储 Analysis Services 元数据。元数据服务为对象定义提供存储，并为部署元数据提供平台。

Excel 和 Visual Basic for Applications 中的函数

在多维表达式 (MDX) 中，可以包括 Microsoft Excel 工作表库中的许多函数，该工作表库若安装在带有 Analysis Services 的计算机上将会自动注册。还可以包括 Microsoft Visual Basic® for Applications Expression Services 库中的许多函数，该库包含在 Analysis Services 中并会自动注册。

服务器端高速缓存

用户查询、元数据和数据都存储在分析服务器的高速缓存中。缓存的查询定义和元数据使对新查询的回答可以通过从缓存数据计算答案而不是从磁盘检索数据的方式来完成。

客户端高速缓存

客户端应用程序通过基于客户端的 PivotTable® 服务组件连接到分析服务器。PivotTable 服务利用服务器中的数据接收元数据来响应查询，因此通常可以使用客户端高速缓存中的数据来计算对随后查询的答案，而不用向服务器发送新查询。例如，如果客户端高速缓存中包含有某一年中四个季度的值，而用户要查询这一年的总和，则 PivotTable 服务将从缓存数据中计算答案。

PivotTable 服务具有许多与服务器相同的功能，从而可以将服务器的多维计算引擎、高速缓存和查询管理等功能直接带给客户机。这种客户机/服务器数据管理模型优化了性能并减少了网络通信量。


广泛支持的 API 和开放的构架

Microsoft® SQL Server™ 2000 Analysis Services 提供了各种工具，使您得以通过编程来扩展功能。

OLE DB

Analysis Services 设计为满足 OLE DB 2.0 及更高版本规范中针对 OLAP 的要求，该规范开发时投入了 40 多个 OLAP 客户机和服务器供应商，是一用于多维数据访问的受到广泛支持的标准。

Analysis Services 还旨在满足用于数据挖掘的 OLE DB 规范的要求，该规范中包括专门针对数据挖掘的规定。

ADO

Analysis Services 与 Microsoft ActiveX® 数据对象 (ADO) 及其对多维对象的扩展 — ADO（多维）(ADO MD) — 兼容。

用户定义函数

可以通过使用组件对象模型 (COM) 自动化语言（如 Microsoft Visual Basic® 或 Microsoft Visual C++®）创建函数库的办法来扩展内置函数列表。可以注册这些库，并在计算成员的定义和其它用多维表达式 (MDX) 编写的表达式中使用这些函数。这一构架使您可以添加自定义的分析工具。

决策支持对象

可以使用决策支持对象 (DSO) 这个服务器对象模型来创建应用程序，以便定义和管理多维数据集、数据挖掘模型和其它对象。该对象模型可用来扩展 Analysis Manager 的功能或自动执行正在进行的系统维护任务。

加载项支持

可以使用 Analysis Services 加载项管理器界面来创建可扩展 Analysis Manager 用户界面功能的应用程序。通过使用 Analysis Services 加载项管理器界面和 DSO，可以创建自定义扩展、对话框、向导和其它与 Analysis Manager 集成的应用程序。


服务器和客户端构架

Microsoft SQL Server 2000 Analysis Services 提供了对数据仓库数据的快速访问。通过在多维结构中对数据仓库中的数据进行提取、汇总、组织和存储，可以对最终用户查询做出快速响应。

Analysis Services 还提供访问数据挖掘数据的构架。可以将这些数据按多维表单或关系表单的形式发送到客户端。

Analysis Services 和 PivotTable 服务提供设计、创建和管理来自数据仓库的多维数据集和数据挖掘模型的功能，还提供对 OLAP 数据和数据挖掘数据的客户端访问。分析服务器管理数据；PivotTable 服务和分析服务器一起工作来提供对这些数据的客户端访问。


服务器构架

Microsoft SQL Server 2000 Analysis Services 提供服务器功能以创建和管理 OLAP 多维数据集及数据挖掘模型，并通过 PivotTable 服务为客户端提供数据。服务器操作包括：

  • 从关系数据库，通常是数据仓库，创建并处理多维数据集。

  • 以多维结构、关系数据库或二者的结合形式存储多维数据集数据。

  • 从多维数据集或关系数据库创建数据挖掘模型，通常是在数据仓库中创建。

  • 以多维结构、关系数据库或标准化 XML 格式的预测模型标记语言 (PMML) 的形式存储数据挖掘模型的数据。

元数据、用于定义多维数据集的信息、数据挖掘模型和服务器上其它对象由 Meta Data Services 存储在关系数据库中。

用户接口由运行于管理单元下的 Analysis Manager 加载项提供给 Microsoft 管理控制台 (MMC)。此外，SQL Server 企业管理器的数据转换服务 (DTS) 部分（这部分也是 MMC 的管理单元）也提供与服务器之间的用户接口。所提供的编程接口允许自定义应用程序不仅同 Analysis Manager，而且同控制服务器的对象模型进行交互。

有关创建自定义程序的更多信息，请参见设计 Analysis Services 应用程序。


客户端构架

PivotTable 服务可与分析服务器进行通讯并为客户端应用程序提供接口，以访问服务器上的 OLAP 数据和数据挖掘数据。客户端应用程序使用 C++ 的 OLE DB 接口或组件对象模型 (COM) 自动化语言（例如 Microsoft Visual Basic）的 Microsoft ActiveX 数据对象 (ADO) 对象模型来连接到 PivotTable 服务。

PivotTable 服务还能创建本地多维数据集文件，该文件包含服务器上多维数据集中的数据或 OLE DB 关系数据库中的数据。本地多维数据集可以作为多维的多维数据集文件存储在客户端计算机上。本地多维数据集可以脱机用于 PivotTable 服务，以进行便携式分析。也就是说，要查询本地多维数据集并不需要连接到分析服务器；而且如果本地多维数据集具有多维 OLAP (MOLAP) 存储模式，也不用连接到本地多维数据集的数据源。

PivotTable 服务也能创建本地数据挖掘模型文件，这些文件包含处理自服务器上的多维数据集或表的模型，或处理自 OLE DB 关系数据库的模型。本地数据挖掘模型可以存储在客户端计算机上。本地数据挖掘模型可以脱机用于 PivotTable 服务，以进行便携式分析。也就是说，要使用本地数据挖掘模型，并不需要连接到分析服务器。

有关对客户端进行编程的更多信息，请参见 PivotTable 服务。

PivotTable 服务中的主要概念


对象构架

下表总结了用来管理 Microsoft® SQL Server™ 2000 Analysis Services 的对象。

主题 | 描述
分析服务器 | Analysis Services 的服务器组件是为创建和维护多维的数据结构并提供多维数据以响应客户端查询而专门设计的。
数据库 | 数据库用作有关数据源、多维数据集、维度、数据挖掘模型及其共享对象的容器。
数据源 | 数据源存储访问某个对象（如多维数据集）的源数据所需的信息说明。
维度 | 维度用作多维数据集的结构特性。维度是描述事实数据表中数据的类别（级别）的组织层次结构。这些类别描述相似成员的集合，用户要根据它们进行分析。
级别和成员 | 级别用作维度层次结构的元素。级别描述了数据的层次结构，从数据的最高（汇总程度最大）级别直到最低（最详细）级别。
度量值 | 在多维数据集内，度量值是基于该多维数据集的事实数据表中的某列的一组值，它们通常是数字。在多维数据集中，分析的主要对象是度量值。
多维数据集 | 多维数据集包含一组通常由数据仓库的子集构成的、并组织和汇总到由一组维度和度量值定义的多维结构中的数据。
分区 | 分区是多维数据集的数据和聚合的存储容器。
聚合 | 聚合被定义为包含多维数据集的预先计算好的数据的表或结构。
角色 | 角色包含一组对 Analysis Services 数据具有相同访问权的 Microsoft® Windows NT® 4.0 或 Windows® 2000 用户帐户和组。
命令 | 命令用来保存管理员定义的命令，当客户访问数据库、多维数据集或角色时自动执行这些命令。命令包括计算成员、命名集和操作。
成员属性 | 成员属性包括有关维度级别的成员以及包含在维度中的成员的信息。
数据挖掘模型 | 数据挖掘模型包括一个虚拟结构，表示关系或联机分析处理 (OLAP) 数据的分组和预测分析。
数据挖掘列 | 数据挖掘列包含用于定义数据挖掘模型内容的结构。列可以包含数据或嵌套列。


对象构架概述

Microsoft® SQL Server™ 2000 Analysis Services 提供各种对象帮助用户通过使用数据仓库实现联机分析处理 (OLAP) 或数据挖掘解决方案。本主题包含可用对象的描述。

OLAP 的主要对象是多维数据集，它包含最终用户感兴趣的当前分析数据。为了支持最终用户提出的问题，多维数据集将数据按多维结构组织到维度和度量值中。例如，假设问题是"What was our total sales of hardware in the northwest region in the first quarter of this year?"（"今年的第一季度我们在西北地区的硬件销售合计是多少？"），可以回答该问题的数据多维数据集包含三个维度和一个度量值：

  • Product 维度，它包含硬件类别

  • Geography 维度，它包含西北地区

  • Time 维度，它包含今年的第一季度

  • Sales 度量值，它包含可以汇总的与数量有关的数据

因为 OLAP 使用户得以在现有或过去的数据上执行聚合分析，所以数据挖掘实际上允许在现有或过去数据的基础上执行预测分析。不是借助 OLAP 考虑本主题中上面所提出的问题，而是可以借助数据挖掘提出并回答"What will our projected total sales of hardware in the northwest region be for the first quarter of next year?"（"明年第一季度我们在西北地区的硬件计划总销售额是多少？"）这一问题。数据挖掘、数据挖掘模型的主要对象提供了一种框架以存储从数据中学到的知识，如根据现有数据创建的概率和分布信息，来预测新数据的行为。这样反过来又能得到用于分析的新数据，根据在过去数据中发现的模式和规则来预测给定情况的期望值。

对象层次结构关系图

用来支持 OLAP 和数据挖掘的对象由一个对象层次结构表示，该结构用来维护定义 Analysis Services 的各种对象（如多维数据集、维度和数据挖掘模型）间的复杂关系。

下列关系图显示了对象在 Analysis Services 对象层次结构中的位置。有些对象在层次结构的多个位置上出现。

本主题描述了管理员的对象模型视图。程序员的视图稍微广一些并且更复杂。有关更多信息，请参见决策支持对象。


分析服务器

分析服务器是 Microsoft SQL Server 2000 Analysis Services 的服务器组件。它专为创建和维护多维数据结构并提供多维数据以响应客户查询而设计。

当运行安装程序安装 Analysis Services 时，可选择安装分析服务器组件。分析服务器的名称与网络上计算机的名称一致。若要连接到分析服务器，客户应用程序必须在连接字符串中指定该名称。最终用户通常提供一个名称来指明希望连接的分析服务器。

安装分析服务器还将创建分析服务器对象。

分析服务器在对象层次结构中是根对象。作为根对象，分析服务器是首先要创建的对象，而且其它所有 Analysis Services 对象都从属于它。创建分析服务器之后，下一个要创建的对象是数据库。

管理分析服务器及其从属对象的主要工具是 Analysis Manager，它提供广泛的用户接口。有关更多信息，请参见 Analysis Manager。

在 Analysis Manager 中，已连接的分析服务器由如下图标标识：

每个分析服务器都有一个名为"Analysis Services 知识库"的知识库。该知识库中存储了在分析服务器上定义的对象的元数据（即定义）。默认情况下，Analysis Services 知识库是运行分析服务器的计算机上的 Msmdrep.mdb。然而，Analysis Services 知识库可以迁移到 SQL Server 数据库中。有关更多信息，请参见迁移 Analysis Services 知识库。

每个分析服务器都有一个关联的 Data 文件夹，该文件夹存储了在分析服务器上定义的对象的多维结构。这些结构保留在处理对象时创建的文件里。这些结构将用于引用以解决发送到分析服务器的查询。这些结构中的部分包含聚合。

Data 文件夹还包含用来控制最终用户访问分析服务器上的对象的安全文件。由于这一原因，必须对 Data 文件夹加以保护以防未经授权的访问。

Data 文件夹的位置在安装过程中指定并可更改。可在"属性"对话框中读取并更改 Data 文件夹的位置。还可在"属性"对话框中设置分析服务器的其它属性。

与分析服务器相关联的服务是 MSSQLServerOLAPService。默认情况下，该服务自动启动并用系统帐户登录。可以在"服务"应用程序中维护 MSSQLServerOLAPService 服务，"服务"应用程序位于 Microsoft Windows NT 4.0 的"控制面板"或 Windows 2000 的"管理工具"文件夹中。

如果使用决策支持对象 (DSO) 进行编程，则与分析服务器关联的类别类型为 clsServer。

聚合

clsServer

配置分析服务器

数据库

维度处理

操作方面的注意事项

处理多维数据集

常规选项卡（属性对话框）

运行安装程序

服务器安全性和身份验证


数据库

数据库是相关的多维数据集及其所共享的对象的容器。这些对象包括数据源、共享维度和数据库角色。如果多个多维数据集要共享这些对象，那么这些对象和多维数据集必须在同一个数据库中。

在对象层次结构中，数据库直接从属于分析服务器。因此，在安装分析服务器后，第一个要创建的对象就是数据库。数据库可以在"数据库"对话框中进行创建。有关更多信息，请参见创建数据库。

创建数据库之后，接下来要创建的对象通常是数据源。有关更多信息，请参见数据源。

使用 Analysis Manager 或 msmdarch 命令可以存档和还原数据库。有关更多信息，请参见存档和还原数据库。

在 Analysis Manager 中，下面的图标就代表一个数据库：

如果您要用决策支持对象 (DSO) 进行编程，那么与数据库关联的类的类型是 clsDatabase。

在某些情况下，特别是用 PivotTable 服务进行编程时，数据库将被称为目录。到分析服务器的连接字符串是个值得一提的例子，其中，在 Initial Catalog 属性中指定了该服务器上某个数据库的名称。

clsDatabase

数据库安全性


数据源

数据源包含访问对象（如多维数据集）的源数据所必需的信息。尽管有时就用"数据源"这个术语表示源数据，但在本主题中数据源是指数据源对象，Microsoft SQL Server Analysis Services 用它建立与源数据的连接。

数据源将指定 OLE DB 提供程序和用于访问源数据的连接字符串中的其它属性的设置。属性设置随所选提供程序的不同而不同。通常大部分属性是可选的，以便能快速完成数据源的创建。

数据源的创建在"数据链接属性"对话框中进行。有关更多信息，请参见指定数据源。

Analysis Services 支持多种数据源，其中包括 SQL Server 2000 数据库及由其它产品创建的数据库。有关更多信息，包括创建数据源时可从中选择其数据库的数据库产品列表，请参见规范和限制。

在"数据链接属性"对话框中定义新数据源时，如果指定了支持 ODBC 驱动程序的 OLE DB 提供程序，则可以将通过 ODBC 驱动程序访问的数据库选做数据源。用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序就是这样一种提供程序，它与 Analysis Services 一起提供。如果使用这种提供程序，您必须在创建数据源之前创建一个系统数据源名称 (DSN)。若要创建系统 DSN，请使用"控制面板"中的"ODBC 数据源管理器"程序。

在对象层次结构中，数据源直接从属于以下对象：

  • 数据库

    数据库可以包含多个数据源，数据库中的多维数据集、分区和维度共享这些数据源。

  • 多维数据集

    一个多维数据集只能有一个数据源。创建多维数据集时，可以从数据库的数据源中选择数据源，也可以创建新的数据源。多维数据集分区的数据源可以与多维数据集的数据源不同。

    链接多维数据集的数据源必须指定用于 Analysis Services 的 Microsoft OLE DB 提供程序，或者指定一个与 1999 年 3 月发布的 OLE DB 规范 (2.6) 的 OLAP 部分兼容的其它提供程序。

  • 分区

    一个分区只能有一个数据源。创建分区时，数据源可以从数据库数据源中进行选择，也可以创建新的数据源。多维数据集中的每个分区都可以有不同的数据源；但是所有的数据源必须引用包含以下内容的数据源：

    • 具有相同结构和列的事实数据表。

    • 在多维数据集架构中使用的维度表的同一个集合。数据源中的维度表必须具有相同的结构和列。

另外，每个维度都有一个数据源。只有当维度和多维数据集具有相同的数据源时，才能将维度包括在该多维数据集中。

创建数据源后，接下来要创建的对象通常是共享维度。有关更多信息，请参见维度。

数据源也用于多维数据集和分区的增量更新。在执行增量更新之前，必须为源数据创建数据源，这些源数据将通过增量更新合并到多维数据集或分区中。有关增量更新的更多信息，请参见更新和刷新多维数据集数据。

在 Analysis Manager 中，数据源由下面的图标标识：

如果要使用决策支持对象 (DSO) 进行编程，那么与数据源关联的类的类型为 clsDataSource。有关更多信息，请参见 clsDataSource。

操作方面的注意事项

处理选项卡（属性对话框）

指定数据源


维度

维度是分类的有组织的层次结构，称为级别，它描述数据仓库事实数据表中的数据。维度一般描述一个成员的相似集合，用户将基于该集合进行分析，并且维度是多维数据集的基本组件。下列主题提供维度的基本概念上的概述。

主题 | 描述
维度简介 | 提供维度基本概念的概述
维度结构 | 描述维度的结构性元素
维度存储模式 | 描述维度存储方式与决定维度存储模式的设置之间的区别
维度处理 | 提供有关处理维度可用的方法的信息
维度层次结构 | 提供有关维度成员相对于彼此定位的各种方式的信息
不齐整维度支持 | 包含有关 Microsoft SQL Server 2000 Analysis Services 如何处理与维度层次结构相关的缺少成员的信息
维度特征 | 描述不同的维度特征及支持它们的维度种类
共享维度和专用维度 | 描述共享维度和专用维度之间的区别和它们的使用
可更改维度 | 描述可更改维度、其使用及要求
相关性维度 | 描述相关性维度的创建及其优点和局限
写启用的维度 | 描述写启用维度的创建及其优点和局限
均衡层次结构和不均衡层次结构 | 描述和描绘均衡层次结构与不均衡层次结构之间的区别
不齐整层次结构 | 详细描述不齐整层次结构、其用法及所支持的维度种类
维度种类 | 描述和描绘各个维度种类之间的区别
常规维度 | 提供有关常规维度及其变种的信息
虚拟维度 | 描述虚拟维度的创建及其优点和局限
在版本 7.0 中创建的虚拟维度 | 标识在 SQL Server 7.0 版 OLAP 服务和 SQL Server 2000 Analysis Services 中所创建的虚拟维度之间的兼容问题
父子维度 | 描述父子维度的创建及其优点和局限
数据挖掘维度 | 描述数据挖掘维度的创建并指出其使用的优点与局限


维度简介

Analysis Services

维度介绍

维度是多维数据集的结构性特性。它们是事实数据表中用来描述数据的分类的有组织层次结构（级别）。这些分类和级别描述了一些相似的成员集合，用户将基于这些成员集合进行分析。

维度还可基于 OLAP 数据挖掘模型。它们可用于存储挖掘模型分析的结果，并可在虚拟多维数据集的上下文内进行浏览。

所有维度均直接或间接地基于表，即使那些基于 OLAP 挖掘模型的维度也是如此。当从某个表创建维度时，您会选择定义此维度的列。选择列的顺序至关重要，因为它将影响维度层次结构内成员的位置。但是，通过挖掘模型分析创建的维度的成员顺序取决于该分析，原因是维度代表模型的内容。

维度是有层次的，在大多数情况下维度的成员会按金字塔形布局排列。水平布局由维度层次结构中具有相同级别的列值生成，而垂直布局由维度层次结构中具有不同级别的列值生成。

例如维度"工厂位置"包括以下成员。

选择下表中的"区域"列，再选择"州"列，即可定义维度。

说明 "所有工厂的位置"成员由 Microsoft® SQL Server™ 2000 Analysis Services 生成。而"全部"成员的生成是可选的。有关更多信息，请参见"（全部）"级别和"全部"成员。

每个维度表的主键都与多维数据集的事实数据表或另一个维度表中的外键联接。（例外情况是当虚拟多维数据集的维度使用自定义汇总公式或自定义成员公式来确定其全部成员的值的情况下。）在上例中，State_ID 列与多维数据集事实数据表中的外键列联接。维度定义中不要求键列。有关维度表和事实数据表之间关系的更多信息，请参见多维数据集结构。

维度在多维数据集中对数字数据（即度量值）进行分类，以便进行分析。例如，如果一个多维数据集的度量值是"生产计数"，维度是"产品"、"时间"和"工厂位置"，则访问此多维数据集的最终用户就可以将"生产计数"分成"产品"、"时间"和"工厂位置"等不同的分类。

多维数据集周围更小的字母数字值是维度的成员。多维数据集内的数字值代表"生产计数"度量值。多维数据集中的所有单元中都是存在这些值，但图示中只显示了多维数据集正面单元中的值。

该多维数据集的合计的聚合值就是所有"产品"、"时间"和"工厂位置"的"生产计数"总和。该值也是多维数据集所有 64 个单元的"生产计数"的总和。

维度向导使您可以快速方便地创建维度。您既可以单独用它创建共享维度，也可以在使用多维数据集向导创建多维数据集时唤醒调用维度向导，以创建专用维度或共享维度。在创建一个共享维度后，可以在维度编辑器中对其进行维护。而在创建一个专用维度后，可以在多维数据集编辑器中对其进行维护。但是，由挖掘模型分析创建的维度不能进行编辑。

创建维度后，必须对维度进行处理。在更改维度或更新维度表后，通常也必须对其进行处理。但维度处理将中断最终用户对包括该维度的多维数据集的访问。

查询维度数据

最终用户可以对整个多维数据集或其一部分发出查询以在不同细节级别进行分析。通过为每个维度指定准则可完成此操作。可以在多维数据集浏览器中执行这些类型的操作。有关更多信息，请参见查看多维数据集数据。

例如，如果最终用户选择限制对"锤子"的"生产计数"的查询，那么检索只在多维数据集的前四分之一进行。而忽略"老虎钳"、"电锯"和"电钻"。这种操作类型称为切片。

最终用户用维度进行的另一种操作类型是深化与浅化的组合。此操作可决定将检索的度量值细分到哪个级别。例如，如果最终用户根本没有进行深化，就会返回以下数据集：

 | 所有时间
所有工厂的位置 | 49005

注意"产品"维度的任何一部分都不会显示在数据集的列标题或行标题中。这是因为最终用户对"产品"维度的一个成员"锤子"进行了切片。维度可用于切片，也可用于深化或浅化，但不能同时用于两者。

如果最终用户深化到"所有工厂的位置"中，则在发出新的查询后，将会返回以下数据集：

 |  | 所有时间
所有工厂的位置 |  | 49005
 | 东部 | 16915
 | 西部 | 32090

如果最终用户深化到"东部"成员中，则在发出新的查询后，将返回以下数据集：

 |  |  | 所有时间
所有工厂的位置 |  |  | 49005
 | 东部 |  | 16915
 |  | 缅因州 | 8883
 |  | 俄亥俄州 | 8032
 | 西部 |  | 32090

如果最终用户深化到"所有时间"中，则在发出新的查询后，将返回以下数据集：

 |  |  | 所有时间 | 上半年 | 下半年
所有工厂的位置 |  |  | 49005 | 24981 | 24024
 | 东部 |  | 16915 | 8962 | 7953
 |  | 缅因州 | 8883 | 4814 | 4069
 |  | 俄亥俄州 | 8032 | 4148 | 3884
 | 西部 |  | 32090 | 16019 | 16071

如果最终用户浅化"东部"成员，则在发出新的查询后，将返回以下数据集：

 |  | 所有时间 | 上半年 | 下半年
所有工厂的位置 |  | 49005 | 24981 | 24024
 | 东部 | 16915 | 8962 | 7953
 | 西部 | 32090 | 16019 | 16071

通过对某些维度中的成员进行切片并深化和浅化其它维度中的成员，最终用户可以继续发出查询。

对象层次结构

在对象层次结构中，维度直接从属于以下对象：

  • 数据库

    数据库中的多维数据集共享这些维度。

  • 多维数据集

    多维数据集中包括这些维度。它们可能出自数据库中的共享维度，也可能出自专用维度（即非共享维度）。

在对象层次结构中，级别直接从属于维度。维度的级别是在创建该维度时创建的。级别的基础是维度定义中的列。

如果使用决策支持对象 (DSO) 进行编程，则与维度关联的类的类型是：

  • clsDatabaseDimension

  • clsCubeDimension

  • clsPartitionDimension

  • clsAggregationDimension

请参见

clsAggregationDimension

clsCubeDimension

clsDatabaseDimension

clsPartitionDimension

数据挖掘模型

维度安全性

级别

挖掘模型向导


维度结构

所创建的维度的结构将决定该维度的种类。可以基于维度表列或成员属性创建维度，或由 OLAP 数据挖掘模型的结构创建维度。定义维度的方法有好几种。每种方法都将产生不同的维度种类。可以：

  • 从维度表或联接维度表中选择一列或多列。如果选择多列，应使所有列内部相关以便可以将它们的值组织到一个层次结构中。若要定义层次结构，请按照从最常规到最具体的顺序排序列。例如，"时间"维度是由"年"、"季度"、"月"和"日"列创建的。这种方法将产生一个常规维度（一种既非父子维度，也非虚拟维度的维度）。

  • 从单个维度表中选择两列。其中一列标识维度层次结构的每个组件，另一列标识每个组件的父代。这两列为表中的每一行标识一个父子链接。所有链接组合起来便可确定维度的层次结构。例如，"家族"维度由"个人"列和"父辈"列创建。这种方法将产生一个父子维度。

  • 选择另一个维度中的一个或多个成员属性。每个成员属性都基于另一个维度表中的一列。该列包含的值是另一列值的特性。例如，Store Type 维度（包括在 Microsoft® SQL Server™ 2000 Analysis Services 中）由 Store 维度中的 Store Type 成员属性（是 store_id 列的一个特性）所创建。这种方法将产生一个虚拟维度。

    定义虚拟维度的另一种方法是直接选择另一个维度表中的列。使用这种方法不需要成员属性。

  • 选择当在挖掘模型向导中创建 OLAP 挖掘模型时创建维度。可以由挖掘模型分析的结果创建维度，并可创建包含该维度及挖掘模型的源多维数据集的虚拟多维数据集。

维度定义中的列或成员属性为维度提供了级别。级别通常按照专一性排序并组织成一种层次结构，以为深化实现一种逻辑途径。例如，"时间"维度能让最终用户从"年"深化到"季度"、从"季度"深化到"月"、从"月"深化到 "日"。每个深化都提供更强的专一性。

维度定义中的列或成员属性的数目与维度中级别的数目之间的关系取决于维度的种类。在常规维度中，维度定义中的每一列都提供一个级别。在父子维度中，维度定义中的两列根据列中的数据提供几个级别。而在虚拟维度中，维度定义中的每个成员属性或列都提供一个级别。

每个级别都包含多个成员。成员就是列中的值或定义这些级别的成员属性。例如，"季度"级别可能包含四个成员："第一季度"、"第二季度"、"第三季度"和"第四季度"。但如果表中的数据跨越一年以上，则"季度"级别将包含四个以上的成员。例如，如果"年"级别包含三个不同的成员 1996、1997 和 1998，则"季度"级别就包含 12 个成员。

下图解释了单独一年的"时间"维度中级别和成员的关系。（向下的箭头表示未显示的成员。每个月份都有"日"成员，但由于篇幅所限只显示了一月份的"日"成员。）

使用表格式浏览器

在表格式浏览器中，成员将具有列标题、行标题和副标题，度量值按它们分隔并显示给最终用户。（在图形式浏览器中，它们提供其它类型的描述性标志，但功能与表格式浏览器中相同。）例如在三年的"时间"维度中，度量值按三个标题进行分隔：1996、1997 和 1998。如果最终用户深化到"年"级别下，"季度"级别的成员将显示为子标题，度量值也会按季度进一步分隔。如果最终用户深化到"季度"级别下，"月"级别的成员将显示为"季度"级别标题下的副标题，度量值也进一步按月份分隔。

请参见

创建和维护专用维度

创建共享维度

数据挖掘模型

维度种类

级别和成员

挖掘模型向导


维度存储模式

维度可以使用以下两种存储模式之一：多维 OLAP (MOLAP) 或关系 OLAP (ROLAP)。MOLAP 是维度的默认存储模式。

存储模式将决定维度数据的位置和形式。MOLAP 维度的数据以多维结构存储在 OLAP 服务器上。该结构是在处理维度时创建的。ROLAP 维度的数据是该维度的一个或多个表。

MOLAP 维度提供的查询性能比 ROLAP 维度更好。但是，具有 1 千万或更多个成员的巨型维度不支持 MOLAP 存储模式。如果特别大的维度采用了 MOLAP 存储模式，那么对其进行处理时将产生错误。推荐您只将 ROLAP 存储模式用于特别大的维度。

说明 只有安装了 Microsoft® SQL Server™ 2000 企业版的 Analysis Services 才能创建 ROLAP 维度。非常大的维度可具有 MOLAP 存储模式，这些维度通常具有 5 百万到 1 千万个成员。

维度存储模式的设置可以在维度编辑器（如果是共享维度）或多维数据集编辑器（如果是专用维度）的属性窗格中的 Storage Mode 属性中进行。

在将一个维度的 Storage Mode 属性设置为 ROLAP 之前，应确保它满足以下要求：

  • 最低级别的 Member Keys Unique 属性设置为 True。

  • 维度不包含成员组。

  • 如果维度为专用维度，并且其 Aggregation Usage 属性当前设置为 Custom，则将该属性设置为 Standard。

  • 如果维度为共享维度，则在所有包含该维度的多维数据集中将 Aggregation Usage 属性设置为下列值之一：
    • Standard。

    • Top Level Only。此值仅当维度的 All Level 属性设置为 Yes 时才有效。

    • Bottom Level Only。

    • Top and Bottom Levels。此值仅当维度的 All Level 属性设置为 Yes 时才有效。

重要 如果一个维度的 Storage Mode 设置为 ROLAP，那么对其源表进行任何更改后，都必须马上处理维度，否则可能导致在查询包括该维度的多维数据集时出现不一致的结果。为确保正确地进行处理，应将该维度源表的更新与维度处理包括在同一个事务中。如果已经安装了 SQL Server 7.0 或更高版本，就可以使用数据转换服务 (DTS) 将表更新和维度处理作为连续任务（用成功优先约束连接）来执行。有关更多信息，请参见使用数据转换服务处理对象。如果是共享维度，则使用"增量更新"选项进行处理。如果是专用维度，则使用"刷新数据"选项进行处理。

虚拟维度和父子维度总是使用 MOLAP 存储模式。

所有使用 ROLAP 进行存储的常规维度也是可更改维度。即它们的 Changing 属性设置为 True。在将一个常规维度的 Storage Mode 属性设置为 ROLAP 时，它的 Changing 属性将自动设置为 True。只要 Storage Mode 是 ROLAP，就无法更改此值。有关更多信息，请参见可更改维度。

ROLAP 维度不支持在分区中进行切片。


维度处理

维度处理有两种方法：重建维度的结构和增量更新维度。"处理维度"对话框提供了这两种方法。要显示该对话框，先右击 Analysis Manager 树窗格中的一个共享维度，然后单击"处理"命令。

重建维度的结构

"重建维度结构"选项将重新创建并装载维度。在进行以下操作后，就应选择此处理选项：

  • 更改了维度的结构。例如，将一个级别添加到层次结构中或从层次结构删除一个级别之后。

  • 更改了维度层次结构中成员之间的关系。例如，在重新定义了销售区域，使得城市现在所处的区域与以前不同之后。

注意 如果对一个共享维度的结构进行了编辑和保存但并未进行处理，那么在处理任何一个包含了该维度的多维数据集时，都会对该维度进行自动处理。这时用户将立即无法使用所有其它包含了该维度的多维数据集，必须对这些多维数据集进行处理，然后才能再次使用。

根据结构或关系的更改类型，可更改维度有可能不需要使用此选项进行处理。有关可更改维度的更多信息，请参见可更改维度。

重要 当使用"重建维度结构"选项处理共享维度时，用户将立即无法使用所有包含了此共享维度的多维数据集，必须处理这些多维数据集后才能再次使用它们。

增量更新维度

当一个维度中的基础表已发生更改，但该维度本身并未发生结构更改时，则可以使用"增量更新"处理选项来更新该维度。这种非结构更改可能包括添加新成员、更改现有成员、删除现有成员，或者更改成员属性或现有成员的自定义成员选项。例如，将新客户的记录添加到客户维度表中，就可以使用此选项。当对共享维度进行增量更新时，用户将一直可以使用包括该共享维度的多维数据集，并且在更新完毕后即可在多维数据集内使用所添加的维度成员。由于可以通过更改基础维度表中的适当字段，更改一个成员的几乎所有属性，所以在维度增量更新后有可能会具有更新过的成员名称。

请参见

更新和重建维度


维度层次结构

层次结构是维度中成员的集合以及这些成员之间的相对位置。对于由数据挖掘模型创建的维度，其层次结构代表该挖掘模型的节点结构。

有时用金字塔结构表示层次结构。唯一例外的情况是其所有成员都处于同一级别的层次结构。Measures 维度的层次结构就是这样一个例子。

在金字塔形层次结构中，成员是从顶部到底部逐步细化的。例如，用 Continent、Country 和 City 定义的 Geography 维度中，各成员将按定义顺序显示，成员 Europe 显示在层次结构的顶层，成员 France 显示在中层，而成员 Paris 显示在底层。France 比 Europe 更具体，而 Paris 比 France 更具体。

在金字塔形层次结构中，级别越低，包含的成员越多。比如在上述例子中，国家/地区比洲多，而城市比国家/地区多。

Microsoft® SQL Server™ 2000 Analysis Services 支持以下几种层次结构类型：均衡层次结构、不均衡层次结构和不规则层次结构。

均衡层次结构和不均衡层次结构

在均衡层次结构中，层次结构的所有分支都降至同一级别，而且每个成员的逻辑父代就是其上一级成员。在不均衡层次结构中，层次结构的分支降至不同级别。

有关均衡层次结构和不均衡层次结构的更多信息，请参见均衡层次结构和不均衡层次结构。

不齐整层次结构

在不齐整层次结构中，一个成员的逻辑父代至少有一个并不直接位于该成员上一级。这将导致层次结构的分支降至不同的级别。

有关不齐整层次结构的更多信息，请参见不齐整层次结构。

具有多个层次结构的维度

Analysis Services 支持具有多个层次结构的维度。这些维度提供的多维数据集数据视图相类似，而且可以相互替代。例如，具有两个层次结构的 Time 维度可以由一个常规日历层次结构和一个财务日历层次结构组成。在 Analysis Services 中，多重层次结构维度定义为两个或两个以上维度，这些维度的名称具有相同的前缀，后面接一个句点，再加上不同的后缀（例如，维度名称为 Time.Calendar 和 Time.Fiscal）。后缀不能与维度中当前或以后的级别名称或成员名称相同，因为这样将可能使使用该维度进行的查询变得含混不清。

请参见

创建有多重层次结构的维度

数据挖掘模型

相关性维度

父子维度

不齐整层次结构

不齐整维度支持

常规维度

虚拟维度


不齐整维度支持

不齐整维度是指维度中至少有一个成员的逻辑父代不直接位于该成员的上一级。例如，Geography 维度由级别 Country、Province 和 City 组成。Geneva 的逻辑父代是 Switzerland，因为 Switzerland 没有划分省份。因为缺少 Province 级别的信息，所以 Geography 维度变成了一个不齐整维度。

在不齐整维度表中，逻辑上缺少的成员（比如上例中应包含 Geneva 的省份）可以用不同的方式来表示。表的单元可以包含无或空字符串，也可以包含与它们父代相同的值作为占位符。例如，在 Province 级别的列中，包含 Switzerland 的城市的行值就是 Switzerland。而不存在的 Switzerland 省份则存储为占位符，因为其在 Country 级别的父代就是 Switzerland。

占位符的表示法由子成员的占位符状态和 PivotTable 服务的 MDXCompatibilityValue 注册表设置（或 MDX Compatibility 连接字符串属性）确定。如果占位符拥有包含数据的子成员，那么它对客户端应用程序的可见性则取决于 MDXCompatibilityValue 注册表设置。如果占位符没有子成员，或者如果占位符的所有子成员也是没有子成员的占位符，则无论 MDXCompatibilityValue 注册表设置是什么，都始终跳过占位符。

请参见

维度层次结构

不齐整层次结构

MDX 兼容性属性

使用 MDX 兼容性属性


维度特征

除了支持多种维度种类外，还可利用其它特征为这些基本维度种类提供所增加的功能，例如不齐整层次结构。

下表显示各维度种类（行）所支持的维度特征（列）。

 | 共享维度 | 专用维度 | 可更改维度 | 相关性维度 | 写启用的维度 | 均衡层次结构 | 不均衡层次结构 | 不齐整层次结构
常规 | 是 | 是 | 是* | 是 | 否 | 是 | 否 | 是
虚拟 | 是 | 是 | 是** | 是 | 否 | 是 | 否 | 否
父子 | 是 | 是 | 是** | 是 | 是 | 否 | 是 | 是
挖掘模型 | 是 | 否 | 是** | 否 | 否 | 是 | 否 | 否

*使用关系 OLAP (ROLAP) 的常规维度所必需的。
**必需的。


共享维度和专用维度

可在单个多维数据集和多个多维数据集中创建维度以供使用。专用维度是为个别多维数据集创建的维度。在 Analysis Manager 中，可以在多维数据集编辑器树窗格中找到专用维度。共享维度是可用于多个多维数据集的维度。在 Analysis Manager 树窗格中，共享维度显示在一个数据库（共享维度在此数据库中创建）下的"共享维度"文件夹中。当编辑过的多维数据集中包含共享维度后，它们也会显示在多维数据集编辑器树窗格中。

在树窗格中，共享维度由下面的图标标识：

专用维度由下面的图标标识：

这一规则的唯一例外是虚拟维度。共享或专用虚拟维度始终由虚拟维度图标标识。有关虚拟维度的更多信息，请参见虚拟维度。

共享同一数据源的共享维度可以包括在数据库中的任何多维数据集或虚拟多维数据集中。通过创建共享维度并在多个多维数据集中使用，可以节省大量时间，否则，就要在每个多维数据集内创建重复的专用维度。

共享维度还允许多维数据集之间实现商务跃点的标准化。例如，时间和地域位置的标准化共享维度将确保用相似的方式组织从不同的多维数据集分析得来的数据。当从某项业务的不同方面集成数据以进行分析时这一点十分重要。

请参见

创建和维护专用维度

创建共享维度


可更改维度

可更改维度是一种为便于频繁更改而优化过的维度。可更改维度允许更多的更改类型，而无需以后对该维度或包含该维度的多维数据集进行完整处理。完整维度处理会中断用户对包含该维度的任何多维数据集的访问。而且当多维数据集的处理包括完整维度处理时，完整多维数据集处理也会中断最终用户对多维数据集的访问，因此，可更改维度对于减少最终用户访问的中断次数具有潜在的优势。

当一个常规维度表经常不定期进行更新时，或者最终用户与包含该维度的多维数据集连接时，使该常规维度成为可更改维度会有更多好处。但只有在最终用户必须在更改后立即看到更新的情况下，才需要使维度成为可更改维度。如果不是一定要将维度表的更新并入到多维数据集中，通常最好使维度仍保持为不可更改维度，并在最终用户没有与 Analysis Manager 连接时处理该维度以及使用该维度的多维数据集。

以下维度种类始终是可更改维度：

  • 虚拟

  • 父子

  • 使用关系 OLAP (ROLAP) 存储的常规维度。

尽管可更改维度能够比不可更改维度提供更好的访问性，但使用可更改维度的查询会稍微慢一些。

在可更改维度中，可以对顶层和底层之间的级别进行添加、移动、重命名和删除等操作，而无需进行后续的处理。（在保存该维度时，会自动更新相关的维度和多维数据集数据。）例外情况是添加的级别包含成员组。有关更多信息，请参见创建成员组。

处理要求

成员更新的处理要求将根据可更改维度是共享维度还是专用维度而不同。

  • 共享维度

    在可更改共享维度中，可在最顶层与最底层之间添加、更改和删除成员。（如果维度有"（全部）"级别，该级别就是最高级别。在父子维度中，为确定该处理要求，将叶成员当作底层的成员。）除了已删除的成员，唯一需要的后续处理是用"增量更新"选项处理维度。如果成员已删除，则必须重新处理多维数据集。当增量更新完成后，会自动刷新包含该维度的多维数据集。维度的增量更新和多维数据集的自动刷新都不会中断最终用户的访问。当刷新完成后，最终用户将看到多维数据集的新版本。

  • 专用维度

    在可更改专用维度中，可以在顶层和底层之间添加、移动、更改和删除成员，而唯一需要进行的后续处理是用"刷新数据"选项处理包含该维度的多维数据集。（如果维度有"（全部）"级别，该级别就是最高级别。在父子维度中，为确定该处理要求，把叶成员当作底层的成员。）多维数据集的刷新不会中断最终用户的访问。当刷新完成后，最终用户将看到多维数据集的新版本。

例外情况是那些在 Analysis Manager 中或通过客户端应用程序进行成员更新的写启用维度，这些维度以及包含它们的多维数据集并不要求后续处理。

创建要求

创建可更改维度之前，一定要使维度满足以下要求（除非该维度是虚拟维度或父子维度）：

  • 最底层的 Member Keys Unique 属性必须设置为 True。

  • 如果维度为专用维度，并且其 Aggregation Usage 属性当前设置为 Custom，则将该属性设置为 Standard。

  • 如果维度为共享维度，则必须在所有包含该维度的多维数据集中将 Aggregation Usage 属性设置为下列值之一：
    • Standard。

    • Top Level Only。此值仅当维度的 All Level 属性设置为 Yes 时才有效。

    • Bottom Level Only。

    • Top and Bottom Levels。此值仅当维度的 All Level 属性设置为 Yes 时才有效。

若要使一个维度成为可更改维度，可在维度编辑器（如果是共享维度）或多维数据集编辑器（如果是专用维度）的属性窗格中将该维度的 Changing 属性设置为 True。


相关性维度

相关性维度是其成员由另一维度的成员决定的维度。常规维度、虚拟维度和父子维度均支持这种维度特征。

当两个维度的成员的矢量积结果导致无法共存的组合百分比很高时，最好让一个维度与另一个维度相关。例如，Customer Gender 维度与 Customers 维度相关。由这两个维度的最低级别成员的矢量积所导致的不能共存的组合占百分之五十，因为每位客户只能有一种性别。

若要使一个维度与第二个维度相关，请在维度编辑器（如果第一个维度是共享维度）或多维数据集编辑器（如果第一个维度是专用维度）中编辑第一个维度，并在属性窗格中的 Depends on Dimension 属性内选择第二个维度。无需同时在两个维度中指定相关性。例如，如果在维度 A 中指定 Depends on Dimension 是维度 B，那么就不用在维度 B 中再指定 Depends on Dimension 是维度 A。

所有的虚拟维度都是相关性维度。但由于聚合不适用于虚拟维度，因此 Depends on Dimension 属性在虚拟维度中的作用与在常规维度和父子维度中的作用不同。虚拟维度的 Depends on Dimension 属性标识包含该虚拟维度所基于的成员属性或列的维度。

在 Microsoft® SQL Server™ 2000 Analysis Services 数据库中，多个维度的 Depends on Dimension 属性值可以相同。

相关性维度与聚合设计

对于某些维度种类，如果一个维度设置为相关性维度，则会影响到它的聚合设计特征。如果一个常规或父子维度是相关性维度，就会根据该常规维度或父子维度所依赖的维度，为包含该维度的分区优化聚合设计。

为包括相关性维度的分区设计聚合时，将会从估计的存储大小中排除不存在的成员组合的聚合。例如，如果 Pat Coleman 是男性，那么估计的存储大小将排除 Pat Coleman 成员和 Female 成员交集的聚合。因为在处理分区时没有创建这些交集的聚合（不论是否为相关性维度），所以如果是相关性维度，实际存储大小将更接近估计存储大小。

说明 如果您在到达不存在的成员组合的聚合之前就停止聚合设计进程，估计的存储大小就不会减少。

在 Analysis Manager 中，聚合设计是在存储设计向导和基于使用的优化向导中的"设置聚合选项"步骤中执行的。

请参见

维度层次结构

虚拟维度


写启用的维度

写启用维度使得最终用户可以修改维度的内容并即时查看修改对多维数据集的影响。这就为最终用户提供了添加的分析选项。例如，在 Employee 维度中，最终用户可以移动不同经理下一级的员工成员，以访问度量值的变化（如 Budget 和 Staffing Level）。仅有父子维度支持此维度特征。

说明 只有在安装了 Microsoft® SQL Server™ 2000 企业版的 Analysis Services 之后才能使用该功能。

最终用户可以用客户端应用程序更新写启用维度。管理员可以用 Analysis Manager 更新写启用维度的成员。在写启用维度中，最终用户和管理员都可以更改、移动、添加和删除成员。他们还可以更新成员属性值。在 Analysis Services 中，这些更新统称为维度回写。

说明 写启用多维数据集的更新存储在一个回写表中，该表独立于多维数据集的源表。与此不同的是，写启用维度的更新直接记录在维度的表中。此外，如果写启用维度包含于具有多个分区的多维数据集，该多维数据集中分区的某些或全部数据源具有维度表的复本，则回写进程中只更新原始维度表。

写启用维度和写启用多维数据集拥有互不相同而又相互补充的功能。写启用维度使得最终用户可以更新成员，而写启用多维数据集则让最终用户可以更新多维数据集单元。可以选择组合使用这两个功能。例如，一个并非写启用的多维数据集中可以包括写启用维度。可用不同的过程写启用维度和多维数据集以及维护它们的安全性。父子维度是唯一可以写启用的维度种类。

只有被赋予读/写权限的多维数据集角色中的最终用户才能更新写启用维度。对于每个角色，您都可以控制哪些成员可以更新，哪些成员不能更新。要让最终用户能更新写启用维度，他们的客户端应用程序必须支持此功能。

对于共享写启用维度，管理员可以在维度编辑器或维度浏览器中的维度成员窗格中，更新写启用维度的成员及相关的成员属性值。对于专用写启用维度，则可以通过多维数据集编辑器打开维度浏览器，以便更新写启用维度的成员和相关的成员属性值。这些操作要求要包括在多维数据集中的写启用维度自上次更改后曾经处理过。

分布式分区多维数据集不支持维度回写。您无法写启用包含在分布式分区多维数据集中的维度，也无法在分布式分区多维数据集中添加写启用维度。有关分布式分区多维数据集的更多信息，请参见分布式分区多维数据集。

若要写启用一个维度，请将维度编辑器（如果是共享维度）或多维数据集编辑器（如果是专用维度）的属性窗格中的 Write-enabled 属性设置为 True。

所有写启用维度同时也是可更改维度。即它们的 Changing 属性为 True。该值无法更改。除维度回写不要求后续处理以外，写启用维度的处理要求与可更改维度相同。

请参见

写启用的维度

多维数据集角色管理器

多维数据集编辑器（架构视图）

维度编辑器（架构视图）

链接多维数据集

远程分区

写启用的多维数据集


均衡层次结构和不均衡层次结构

在均衡层次结构中，层次结构的所有分支都降至同一级别，而且每个成员的逻辑父代就是其上一级成员。例如，在上述 Geography 维度中，如果国家/地区成员限制为 France 和 Germany，那么维度的层次结构就是均衡的。层次结构的所有分支都终止于 City 级别的城市。每个城市的父代可能是 France，也可能是 Germany，而 Europe 则是这两个国家的父代。

在不均衡层次结构中，层次结构的分支降至不同级别。例如，Organization 维度包含公司中每位员工的成员。CEO 是层次结构中的顶级成员，部门经理和执行秘书直接位于 CEO 下面。部门经理还有下属成员，但执行秘书没有。

在 Analysis Services 中，常规维度和虚拟维度都支持均衡层次结构。只有父子维度支持不均衡层次结构。

最终用户可能无法区别不均衡层次结构和不齐整层次结构。但您可使用不同的技术和属性来支持这两种层次结构类型。

请参见

维度层次结构

不齐整维度支持

不齐整层次结构

MDX 兼容性属性


不齐整层次结构

在 Microsoft SQL Server 2000 Analysis Services 中，常规维度和父子维度均支持不齐整层次结构。如果层次结构是在父子维度中，则不齐整层次结构就是不均衡的。

在不齐整层次结构中，至少一个成员的逻辑父成员不直接位于该成员的上一级。这将导致层次结构的分支降至不同的级别。

例如，用 Continent、Country 和 City 定义的 Geography 维度中，各成员将按定义顺序显示，成员 Europe 显示在层次结构的顶层，成员 France 显示在中层，而成员 Paris 显示在底层。France 比 Europe 更具体，而 Paris 比 France 更具体。对此常规层次结构进行以下更改：

  • 将国家 Switzerland 添加到 France 和 Germany 中。

  • 将 Cities 添加到 Switzerland 中。

  • 将级别 Province 添加到 Country 和 City 之间，并将各成员填入其中，而 Switzerland 没有省，所以它的下一级没有成员。

因为这些更改，该维度的层次结构现在成为不齐整层次结构。城市 Geneva 的父代是国家 Switzerland，而它并不直接位于 Geneva 的上一级。

若要使一个层次结构不齐整，可以在维度编辑器（如果是共享维度）或多维数据集编辑器（如果是专用维度）的属性窗格中，在一个级别的 Hide Member If 属性中选择不同的方法。

而当不齐整维度是父子维度时，该级别的 Skipped Levels Column 属性将用于支持不规则结构。如果您使用这个属性，就应确保维度表包含存储了介于每个成员及其父代之间的级别数目的一列。

两种属性都可以隐藏逻辑上缺少的成员，使最终用户在浏览多维数据集时看不到这些成员。虚拟维度中不支持这两种属性。

只有满足某些条件时，最终用户才能看到不齐整层次结构是不齐整的。也就是说，尽管成员的逻辑父代不直接位于这些成员的上一级，但只有满足这些条件，成员的逻辑父代才能显示为直接位于成员的上一级。这些条件是：

  • 正确设置支持不齐整层次结构的属性。在常规维度中，级别的 Hide Member If 属性不能设置为 Never hidden 值。选定的值必须适用于维度表的内容。而在父子维度中，级别的 Skipped Levels Column 属性必须设置为包含整型值的一列，该整型值表示介于成员及其父代之间的级别数目。如果是共享维度，就在维度编辑器中设置这些属性，如果是专用维度，就在多维数据集编辑器中设置。

  • 客户端应用程序支持不规则层次结构的显示。

  • 从客户端应用程序到分析服务器的连接字符串中的 MDX Compatibility 属性设置为 2，或者 PivotTable 服务的 MDXCompatibilityValue 注册表设置设置为 2。

请参见

维度层次结构

不齐整维度支持

均衡层次结构和不均衡层次结构

MDX 兼容性属性


维度种类

Microsoft® SQL Server™ 2000 Analysis Services 包括几种维度。最常见的划分是常规维度、虚拟维度、父子维度和数据挖掘维度。所有维度均是常规维度、虚拟维度、父子维度或数据挖掘维度；每个种类均可以具有由该维度的属性设置所确定的其它维度特征。

有关维度种类使用的各种维度特征的更多信息，请参见维度特征。


常规维度

常规维度是指那些既不是虚拟维度、父子维度，也不是数据挖掘维度的维度。与虚拟维度不同，常规维度在使用它们的多维数据集中有相关的聚合数据。与父子维度不同（其层次结构是不均衡层次结构），常规维度中的层次结构要么均衡层次结构，要么是不齐整层次结构。（每个维度都是常规、虚拟、父子或数据挖掘维度中的一种。）

常规维度包含的级别数目与定义时选择的列数目相同。这些级别一般按照常规到特定的顺序排列。就这一点而言，虚拟维度与常规维度相似，但父子维度总是包含单个元数据级别（该级别在最终用户的视图中一般会产生出多个级别）。

与父子维度（总是基于单个表）不同，常规维度可以基于多个联接表。如果一个常规维度基于多个表，而且它没有雪花架构，则将它添加到多维数据集中时将采用这种架构。（如果多维数据集已经具有雪花架构，它将保留雪花架构。）如果一个常规维度基于单个表，而且用星型架构将该维度添加到多维数据集中，则该多维数据集将保留星型架构。

常规维度既可以是共享的，也可以是专用的。有关共享维度和专用维度的更多信息，请参见共享维度和专用维度。

创建常规维度的方法是：可以通过使用维度向导或维度编辑器，创建共享常规维度；或者使用多维数据集编辑器创建专用常规维度。有关维度向导和维度编辑器的更多信息，请参见维度向导和维度编辑器 — 架构视图。

使用维度向导创建共享维度

Analysis Manager

Analysis Manager

使用维度编辑器创建共享维度

Analysis Manager

Analysis Manager

在 Analysis Manager 树窗格和多维数据集编辑器树窗格中，共享常规维度由下面的图标标识：

在多维数据集编辑器树窗格中，专用常规维度由下面的图标标识：

默认情况下，常规维度不是可更改维度，但您也可以指定常规维度是可更改维度。相反，虚拟维度和父子维度总是可更改维度。

与虚拟维度和父子维度不同，常规维度能使用关系 OLAP (ROLAP) 的存储模式。该存储模式支持超大型维度和巨型维度，这依赖于系统功能。使用 ROLAP 作为存储模式的常规维度始终是可更改维度。

请参见

维度存储模式

可更改维度

创建和维护专用维度

创建共享维度

父子维度

虚拟维度


虚拟维度

虚拟维度是基于物理维度列的逻辑维度。这些内容可以是：

  • 物理维度中的成员属性。成员属性必须在创建虚拟维度之前创建。有关更多信息，请参见成员属性。

    -或-

  • 物理维度表中的列。

例如，Store 维度的 Store Name 级别具有成员属性 Store Sqft，它用平方英尺标识出商店 (store) 的面积。您可以使用 Store Sqft 成员属性创建一个名为 Store Size in SqFt 的虚拟维度。还可以将此虚拟维度添加到任何包含 Store 维度的多维数据集中。

说明 虚拟维度基于一个维度所提供的成员属性或列，只有在所涉及的维度包括在多维数据集中时，才能将此虚拟维度添加到同一多维数据集中。

最终用户可以象使用任何其它维度一样使用虚拟维度。如果虚拟维度基于成员属性，那么它将使最终用户可以基于成员属性来分析多维数据集数据。此外，虚拟维度根据其级别个数而定的深度取决于用于定义该虚拟维度的成员属性的个数。

与常规维度或父子维度不同，虚拟维度没有聚合数据，所以将虚拟维度添加到多维数据集中并不会增大多维数据集的大小。虚拟维度也不会影响多维数据集的处理时间，因为它们的计算是需要时在内存中进行的。尽管如此，使用虚拟维度的查询仍可能会比使用常规维度或父子维度的查询慢一些。

Microsoft® SQL Server™ 2000 Analysis Services 提供维度向导以方便地创建基于成员属性的虚拟维度。

根据成员属性创建虚拟维度

Analysis Manager

Analysis Manager

在 Analysis Manager 中，虚拟维度由如下所示的图标标识：

在维度编辑器和多维数据集编辑器中，虚拟维度的 Virtual 属性总是 True。其 Depends On Dimension 属性表明包含该维度所基于的成员属性或列的维度。

当维度的 Virtual 属性设置为 True 时，如果不存在"（全部）"级别，则创建该级别。

所有的虚拟维度同时也是可更改维度。即它们的 Changing 属性为 True。当维度的 Virtual 属性设置为 True 时，该值是无法更改的。

虚拟维度的存储模式总是多维 OLAP (MOLAP)。

请参见

可更改维度

创建虚拟维度


在版本 7.0 中创建的虚拟维度

创建于 Microsoft® SQL Server™ 2000 Analysis Services 中的虚拟维度与创建于 SQL Server 7.0 版 OLAP 服务中的虚拟维度存在显著不同。除非另外注明，本文档中的其它主题均描述创建于 SQL Server 2000 Analysis Services 中的虚拟维度。本主题将描述在 SQL Server 2000 Analysis Services 中创建的虚拟维度与在 7.0 版中创建的虚拟维度的不同之处。

在 SQL Server 2000 Analysis Services 中，您可以继续使用在 7.0 版中创建的虚拟维度。但是对 7.0 版的虚拟维度则存在某些限制。（这些限制适用于所有 7.0 版中的虚拟维度。）在 SQL Server 2000 Analysis Services 中创建的虚拟维度通常还提供更好的查询性能。如果要克服这些限制，或获得 SQL Server 2000 Analysis Services 的性能改进，就需要在 SQL Server 2000 Analysis Services 中重新创建 7.0 版的虚拟维度。有关更多信息，请参见创建虚拟维度。

下表汇总了 7.0 版中创建的虚拟维度的限制。

虚拟维度 | 在 SQL Server 2000 Analysis Services 中创建 | 在 7.0 版中创建
最大成员数限制为 759 | 否 | 是
可具有多个级别（不包括"（全部）"级别） | 是 | 否
必须基于成员属性 | 否 | 是
可在维度编辑器中编辑 | 是 | 否
可用 Analysis Manager 定义为专用 | 是 | 否
可更改为常规维度 | 是 | 否
可包含成员属性 | 是 | 否
在多维表达式 (MDX) 中支持以下函数：Cousin, ClosingPeriod, LastPeriods, OpeningPeriod, ParallelPeriod, PeriodsToDate, WTD, MTD, QTD, YTD | 是 | 否
可用于定义 OLAP 数据挖掘模型 | 是 | 否


父子维度

父子维度基于两个维度表列，这两列一起定义了维度成员中的沿袭关系。一列称为成员键列，标识每个成员；另一列称为父键列，标识每个成员的父代。该信息用于创建父子链接，该链接将在创建后组合到代表单个元数据级别的单个成员层次结构中。

例如，在下面的 Employee 表中，标识每个成员的列是 Employee_Number。表示每个成员父代的列是 Manager_Employee_Number。（该列存储了每个员工上级经理的员工号。）

这些列可用于定义包含以下成员层次结构的父子维度。（该层次结构反映了 Employee 表中成员的组织机构图。）

两列必须有相同的数据类型，而且在同一个表内。

说明 默认情况下，任何成员的父键只要等于其自身的成员键、空、0（零）或一个未出现在成员键列中的值，则该成员将被认为是顶层中的成员（不包括"（全部）"级别）。

默认情况下，顶层成员（不包括"（全部）"级别）由其父键所标识，该键等于其自身的成员键、空、0（零）或一个未包含在成员键列中的值。例如，在上面的组织图中，唯一的顶层成员是 Paul West。Paul West 的 Manager_Employee_Number 值和 Employee_Number 值都是 3。这两个值相等是因为将 Paul West 指定为 Paul West 的经理。默认情况下，如果 Paul West 的 Manager_Employee_Numberwould 值是空、0（零）或一个未包含在 Employee_Number 列中的值，也会将 Paul West 当成是顶层成员。

您可以使用级别的 Root Member If 属性设置标识顶层成员的条件，该属性位于维度编辑器（如果是共享维度）或多维数据集编辑器（如果是专用维度）的属性窗格中。

当定义父子维度时，您还可以选择第三列提供成员名称，这些名称将在最终用户浏览多维数据集时显示。这个第三列就是成员名列，默认为成员键列。如果要显示另一个值，则可以选择其它列。在上图中，员工姓名只会在成员名列为如下设置时显示：

"Employee"."Employee_Name"

父子维度的深度随其层次结构的分支而变化。例如在上面的组织图中，James Smith 分支有更低级别的成员，而 Jones 和 Jill Kelley 分支则没有。所以父子维度的层次结构通常是不均衡的。

与常规维度和虚拟维度不同（它们在定义时的级别数目就决定了最终用户所看到的级别数目），父子维度是用特殊类型的单个级别定义的，该特殊类型通常产生最终用户所看到的多个级别。存储成员键和父键的列的内容将决定显示出的级别数目。当更新该维度表并进而处理使用该维度的多维数据集时，这个数目可能会更改。

创建父子维度时可以使用维度向导，但不能使用维度编辑器。只有从多维数据集编辑器内启动维度向导时，才能用多维数据集编辑器创建父子维度。在维度向导的第二步中，选择"父子维度：单个维度表中的两个相关列"选项才会显示此向导步骤。

创建父子维度之后，您就可以在维度编辑器（如果是共享维度）或多维数据集编辑器（如果是专用维度）中进行编辑。在维度编辑器或多维数据集编辑器中，您可以访问"级别命名模板"对话框，在其中指定显示给最终用户的级别名称。

父子维度的表用包含成员键的列与包含成员父键的列之间的联接，以图表形式表示。该联接可以在维度向导和维度编辑器及多维数据集编辑器的"架构"选项卡中看到。

重要  如果多维数据集中包括父子维度，并且一个事实数据表的行与维度的非叶成员相关联，那么您必须将维度的 Members With Data 属性设置为 Nonleaf data visible 或 Nonleaf data hidden。否则该多维数据集的处理将失败。

Members With Data 属性表示是否允许父子维度的非叶成员具有相关的事实数据表数据。默认情况下不允许非叶成员具有相关事实数据表数据，所以该属性的初始设置为 Leaf members only。当 Members With Data 属性设置为 Nonleaf data visible 时，相关的 Data Member Caption Template 属性控制数据成员的名称。有关这些属性的更多信息，请参见属性窗格（多维数据集编辑器数据视图）和属性窗格（维度编辑器数据视图）。

父子维度是唯一可以写启用的维度种类。所有的父子维度同时也是可更改维度。即它们的 Changing 属性为 True。您无法更改此值。

父子维度的存储模式总是多维 OLAP (MOLAP)。

请参见

可更改维度

维度向导

写启用的维度


数据挖掘维度

虽然数据挖掘维度是共享维度，但它们在有些方面不同于其它类型的共享维度。与其它类型的共享维度不同，数据挖掘维度不能在维度编辑器中创建，而必须基于 OLAP 数据挖掘模型。而且，它们在创建后无法编辑，在数据库角色或多维数据集角色中不支持维度安全性，而且只能包含在虚拟多维数据集中。

可以在维度向导或挖掘模型向导中创建数据挖掘维度。如果用维度向导创建数据挖掘维度，则可以使用现有的 OLAP 挖掘模型。如果使用挖掘模型向导创建数据挖掘维度，则可以在创建新 OLAP 挖掘模型的同时，基于该模型创建新的维度。使用挖掘模型向导创建维度时，还可以选择创建一个虚拟多维数据集，用以包含新的数据挖掘维度和挖掘模型的源多维数据集。如果使用挖掘模型向导时未选择创建包含数据挖掘维度的虚拟多维数据集，则可以在以后用虚拟多维数据集向导将其添加到现有的或新的虚拟多维数据集中。

若要查看数据挖掘维度的成员，请使用维度浏览器。除挖掘模型的顶层节点是基于 Microsoft 决策树或 Microsoft 聚集算法外，维度的其余每个级别成员均代表了挖掘模型中节点的对应规则。可以在维度浏览器的自定义成员公式窗格中，查看用于生成该规则的多维表达式 (MDX) 语句。

重要 数据挖掘维度可能包含自定义汇总公式和自定义成员，因而，数据挖掘维度不能与包含非重复计数度量值的常规多维数据集一起使用。这一局限性不适用于虚拟多维数据集。

请参见

数据挖掘模型简介

创建 OLAP 数据挖掘模型

挖掘模型向导

创建维度和虚拟多维数据集（挖掘模型向导）

维度浏览器

虚拟多维数据集

虚拟多维数据集向导

查看数据挖掘模型

自定义汇总公式和自定义成员公式

数据挖掘算法


级别和成员

级别是维度层次结构的一个元素。级别描述了数据的层次结构，从数据的最高（汇总程度最大）级别直到最低（最详细）级别。

级别仅存在于维度内。级别基于维度表中的列或维度中的成员属性。

级别在维度内定义，以指定维度层次结构的内容和结构。即，级别的定义确定层次结构中包含的成员以及它们在层次结构中的相互位置。

在维度向导、维度编辑器或多维数据集编辑器中创建维度时也就创建了级别。创建维度后，可以在维度编辑器（如果维度是共享的）或多维数据集编辑器（如果维度是专用的）中维护维度的级别。在编辑器中可以设置级别的属性。

创建了共享维度和它们的级别之后，一般会接着创建度量值。然而，度量值是在创建包含它们的多维数据集的过程中创建的。

例如，"日历"维度包含级别"年"、"季度"和"月"。"日历"维度（常规维度）的级别和成员之间的关系如下面的关系图所示：

例如，"日历"维度包含级别"年"、"季度"和"月"。

年 | 季度 | 月
1999 | 第一季度 | 一月
1999 | 第一季度 | 二月
1999 | 第一季度 | 三月
1999 | 第二季度 | 四月
1999 | 第二季度 | 五月
1999 | 第二季度 | 六月
1999 | 第三季度 | 七月
1999 | 第三季度 | 八月
1999 | 第三季度 | 九月
1999 | 第四季度 | 十月
1999 | 第四季度 | 十一月
1999 | 第四季度 | 十二月

根据定义级别所基于的维度的不同类型，可以使用三种方法之一来定义级别。对于常规维度，从维度表中选择一列；该列提供级别的成员或组件。

在使用父子维度时，区分层次结构中的级别对象和级别很重要。父子维度始终只包含一个级别对象，而维度的层次结构通常包含多个级别。对于父子维度，从维度表中选择两列。一列用来标识维度的成员，一列用来标识成员的父代。这两列为表中的每一行标识一个父子链接。所有链接合起来确定维度的层次结构。包含成员标识符的列就是提供维度所有成员的列。

对于虚拟维度，在另一个维度或另一个维度表的一列中选择一个成员属性。该成员属性或列提供了级别的成员。

级别中所包含成员的标识由级别的 Member Key Column 属性控制。该列就是本主题前面提到的提供级别成员的列。（当使用维度向导创建一个维度时便设置了该属性的初始值。）

在常规维度或虚拟维度中，维度层次结构中成员的垂直位置由维度定义中的级别顺序来控制。定义中的每个级别在层次结构中产生一个级别。定义中的级别顺序与层次结构中的级别顺序相匹配。成员的垂直位置由包含它的级别决定。

在父子维度中，确定成员垂直位置的方式有所不同。在父子维度中，只能定义一个级别（除了可选的"（全部）"级别外），但这个级别在层次结构中通常会产生多个级别。成员的垂直位置由级别的 Parent Key Column 和 Root Member If 属性确定。级别中成员的水平位置由级别的 Order By 属性确定。

"（全部）"级别是一种特殊类型的级别。除在虚拟维度中以外，"（全部）"级别在其它维度中都是可选级别。如果定义了"（全部）"级别，它在维度中就是最高级别。它只包含一个成员，该成员的值为直接从属级别中所有成员值的聚合。

级别直接从属于对象层次结构中的下列对象：

  • 直接在数据库之下的维度（共享维度）

    这些级别位于在数据库中的多维数据集之间共享的维度中。

  • 直接在多维数据集之下的维度（共享或专用维度）

    这些级别位于多维数据集所包含的维度中。这些维度可以从数据库中的共享维度中导出，也可以是专用维度（即：不共享）。

成员属性直接从属于级别。成员属性是可选对象，这些对象为最终用户提供有关成员的附加信息。

在 Analysis Manager 中，级别由包含很小方块的图标来标识。方块的数量表明级别在维度定义中的位置。除"（全部）"级别外，最高级别的图标中有一个方块，比它低一级的级别图标中有两个方块，依此类推。例如，下列三个图标代表维度中的前三个级别：

"（全部）"级别的图标在维度编辑器或多维数据集编辑器中不显示，而显示在一些对话框中。"（全部）"级别的图标如下所示：

如果正在用决策支持对象 (DSO) 编程，则与级别关联的类类型是 clsAggregationLevel、clsDatabaseLevel、clsCubeLevel 和 clsPartitionLevel。

请参见

"（全部）"级别和"全部"成员

clsAggregationLevel

clsCubeLevel

clsDatabaseLevel

clsPartitionLevel


"（全部）"级别和"全部"成员

 Analysis Services

（全部）级别和全部成员

"（全部）"级别是一种特殊类型的级别。它的名称始终是"（全部）"。如果维度中包含"（全部）"级别，那么"（全部）"级别就是最高级别。该级别只包含一个成员，该成员的值是直接从属级别中所有成员值的聚合。由于"（全部）"级别中的成员位于维度层次结构的顶层，因此成员的值是层次结构中所有成员值合并计算的聚合。

根据默认设置，所有维度都包含"（全部）"级别。不过，除虚拟维度中的"（全部）"级别是必需的以外，其它"（全部）"级别可以删除。

"（全部）"级别中的单个成员叫"全部"成员。"全部"成员是系统生成的成员，在维度表中不包含该成员。"全部"成员的名称可更改。在默认情况下，它的名称由单词 All 后接一个空格再加上维度的名称构成。

若要从维度中添加或删除"（全部）"级别，或者更改"全部"成员的名称，请使用维度编辑器（如果维度是共享的）或多维数据集编辑器（如果维度是专用的）的属性窗格。"（全部）"级别包含的成员由维度的 All Level 属性控制。"全部"成员的名称可在维度的 All Caption 属性中设置。

维度中是否包含"（全部）"级别会影响对包含该维度的多维数据集的查询。如果一个查询既没有在某个维度上明确地切分，又没有将该维度投影在轴上，根据默认设置，该查询将在维度的默认成员上切分。如果维度包含"（全部）"级别，根据默认设置，默认成员是"全部"成员。使用"全部"成员切片不会限制检索的数据，因此，查询检索出的数据集对于所讨论的维度而言是完整的。但是，如果维度不包含"（全部）"级别，或者所指定的默认成员不是"全部"成员，则查询检索出的数据集对于所讨论的维度而言是不完整的。（一个特例是当维度不包含"（全部）"级别，而维度的最高级别只包含一个作为默认成员使用的成员时。该成员的作用类似于"全部"成员，因为它对检索的数据没有限制。）数据集不完整这一事实对发出查询的最终用户来说可能不太明显。因此，在维度中保留"（全部）"级别通常是一种很好的做法，尤其当没有选择默认成员时。

维度的默认成员在维度编辑器（如果维度是共享的）或多维数据集编辑器（如果维度是专用的）的属性窗格中的 Default Member 属性中指定。在一个维度中，可以为每个角色选择不同的默认成员。有关更多信息，请参见维度安全性中的自定义规则。


数据成员

在 Analysis Services 中，通常会对成员的内容做出假设。叶成员包含从基础数据源派生的数据；而非叶成员包含从在子代成员上执行的聚合派生的数据。

但是在父子维度中，一些非叶成员除包括从子代成员聚合的数据外，还可能包括从基础数据源派生的数据。对于父子维度中的这些非叶成员，可创建包含基础事实数据表数据的系统生成的特殊子代成员。对于数据成员，它们包含与非叶成员直接相关的值，而非叶成员独立于从该非叶成员的后代计算的汇总值。

数据成员仅可为父子维度可用，且仅当父子维度允许使用带数据的非叶成员时才可为父子维度所用。可通过将 Members with Data 属性设置为 Nonleaf data visible 或者 Nonleaf data hidden 用维度编辑器启用此功能，或者使用 SubClassType 为 sbclsParentChild 的 Dimension 对象的 MembersWithData 属性用决策支持对象 (DSO) 库启用此功能。如果父子维度在与非叶成员相关的事实数据表中包含数据，而且 Members with Data 属性设置为 Leaf members only，则将发生处理错误。

在维度编辑器中将 Members with Data 属性设置为 Nonleaf data hidden 可以使非叶成员具有数据，但此设置替代了非叶成员的正常聚合行为。这可能引起混淆，因为非叶成员的值不是从子代成员的集合派生而是从非叶成员的基础事实数据表数据派生的。

在维度编辑器中将 Members with Data 属性设置为 Nonleaf data visible 可使非叶成员具有数据，但此设置创建额外的系统生成子代成员，而且该成员包含非叶成员的基础事实数据表数据。此设置不替代非叶成员的正常聚合行为；为进行聚合，将数据成员视为子代成员。虽然自定义汇总公式可以用于替代此行为，但多维表达式 (MDX) DataMember 函数使您得以访问相关的数据成员值，无论聚合行为如何。

此功能的好处对于大多数客户端应用程序并不十分明显。但是，在某些特定条件下，数据成员确实十分有益。例如，下列关系图具有三个级别的表示产品总销售量的维度。第一个级别显示所有推销员 (salesperson) 的总销售量。第二个级别包括按销售经理 (sales manger) 的全体销售职员 (sales staff) 的总销售量，第三个级别包括按推销员 (salesperson) 的全体销售职员的总销售量。

在销售经理 1 (Sales Manager 1) 成员中，聚合推销员 1 (Salesperson 1) 和推销员 2 (Salesperson 2) 成员的值将正常派生该成员的值。但是，因为销售经理 1 (Sales Manager 1) 也可销售产品，所以该成员也可能包含从事实数据表派生的数据，原因是可能存在与销售经理 1 (Sales Manager 1) 相关的总销售量。

每个销售职员成员的单个佣金可能不同。对于销售经理，与其下属推销员所产生的总销售的合计相比，计算其单个总销售的佣金需要使用两种不同的计数法。在这种情况下，访问非叶成员的基础事实数据表数据的能力变得重要起来。MDX DataMember 函数可用来检索销售经理 1 (Sales Manager 1) 成员的单个总销售量，而自定义汇总表达式可用来将数据成员从销售经理 1 (Sales Manager 1) 成员的聚合值中排除，从而提供与该成员相关的推销员的总销售量。

请参见

父子维度

维度编辑器 — 架构视图

维度接口

MembersWithData


成员名称和成员键

级别中的成员名称可以从一个不同于成员键的列中导出。因此，一个级别可以从两列中导出。

成员名称在最终用户浏览包含维度的多维数据集时显示出来。在级别的 Member Key Column 属性中选择用来提供级别成员名称的列。

在 Microsoft® SQL Server™ 2000 Analysis Services 中，成员键标识级别中的成员。在级别的 Member Key Column 属性中选择用来提供级别成员键的列。

创建维度时，选择用来定义级别的列被记录在 Member Name Column 属性和 Member Key Column 属性中。（如果基于成员属性创建虚拟维度，该列即被间接选择。成员属性的源列被用作这两个属性的值。）以后可以更改这些属性之一，以使它们引用不同的列。在使用维度向导创建维度时可以设置这两个属性。以后可以在维度编辑器（如果维度是共享的）或多维数据集编辑器（如果维度是专用的）的属性窗格中更改这两个属性。


自定义汇总运算符

自定义汇总运算符提供简单方法来控制级别成员值如何汇总到其父级成员值。当列指派自定义汇总运算符后，当在维度向导中将列创建为新父子维度的可选功能，或将列添加到维度编辑器或多维数据集编辑器中的维度时，该列的内容就用作每个成员的汇总运算符。当计算成员父级的值时，此自定义汇总运算符应用到成员。

在维度编辑器中，将级别的 Unary Operator 属性设置为 Ture 就能启用自定义汇总运算符。自定义汇总运算符的值存储在"定义一元运算符列"对话框列出的列中，并应用到每一列。

自定义汇总运算符提供的功能与自定义成员公式的功能相似但更简化。自定义成员公式使用多维表达式 (MDX) 确定如何汇总成员，与此相比，自定义汇总运算符使用简单的数学运算符确定成员的值如何影响父级成员。与自定义成员公式类似，自定义汇总运算符的值对于每个级别的成员都是唯一的。

在优先级方面，级别的自定义汇总运算符替代前一级别的自定义汇总表达式。而上一级的自定义成员公式替代下一级的自定义汇总运算符。

共享和专用维度都可以启用自定义汇总运算符。若要在一个级别中启用自定义汇总运算符，请在维度编辑器（如果维度是共享的）或多维数据集编辑器（如果维度是专用的）的属性窗格中使用级别的 Unary Operators 属性。单击该属性值旁边的编辑（"..."）按钮显示"定义一元运算符列"对话框，您可以在其中选择或创建一列来存储公式。关闭此对话框后，如果共享维度是写启用父子维度，则可以在维度编辑器或维度浏览器的自定义成员公式窗格中为 UNARY_OPERATOR 成员属性选择值。（若要执行此操作，请确保写启用的维度所在的多维数据集自该维度上次更改后曾经过处理。）如果维度不处于写启用状态，则必须使用 Analysis Manager 之外的某种工具将公式插入到列中。

说明 如果多维数据集有一个 Aggregate Function 属性设置为 Distinct Count 的度量值，则将自定义汇总运算符或表达式添加到一个级别中将导致多维数据集的结构变得无效。

请参见

自定义汇总公式和自定义成员公式

属性窗格（多维数据集编辑器数据视图）

使用自定义汇总运算符


自定义汇总公式和自定义成员公式

自定义汇总公式和自定义成员公式是使用多维表达式 (MDX) 编写的表达式，用来确定与成员相关联的多维数据集的单元值。自定义汇总公式适用于级别中除计算成员以外的所有成员。自定义成员公式适用于单个成员。

自定义汇总公式和自定义成员公式不同于计算成员。自定义汇总公式和自定义成员公式适用于存在于维度表中的成员。而计算成员不存储在维度表中。计算成员还提供除维度表中成员以外的成员。

自定义汇总公式和自定义成员公式计算使用类似的 MDX 表达式。

自定义汇总公式和自定义成员公式都替代与度量值相关联的聚合函数。例如，在指定自定义汇总公式之前，使用 Sum 聚合函数的度量值对 Time 维度的如下成员产生如下值：

  • 1997: 2100
    • Quarter 1: 700

    • Quarter 2: 500

    • Quarter 3: 100

    • Quarter 4: 800
  • 1998: 1500
    • Quarter 1: 600

    • Quarter 2: 200

    • Quarter 3: 300

    • Quarter 4: 400

为 Year 级别指定如下自定义汇总公式：

Time.CurrentMember.LastChild

该自定义汇总公式替代 Sum 聚合函数并为 Year 成员产生如下新值：

  • 1997: 800

  • 1998: 400

Quarter 成员的值不变。

自定义成员公式的操作方式与自定义汇总公式类似，但每个公式只影响一个成员。自定义成员的值由自定义成员公式提供。例如，下列自定义成员公式可用来为 Time 维度中 1998 成员的 Quarter 4 子代成员提供值。

Time.[Quarter 3] * 1.5

自定义成员公式存储在维度表的一列中。启用自定义成员公式时，会出现一个对话框，可以在该对话框中选择或创建此列。此过程将在本主题后面的部分加以总结。

若要将自定义汇总公式只应用于级别中的某些成员，请使用 IIf 和 Rollupchildren 函数。RollupChildren 函数可使用函数中指定的一元运算符对指定成员的子代进行汇总。例如，若要将自定义汇总公式 Sales* 0.10 只应用于 SalesPersons 的子代，请键入下面的自定义汇总公式：

IIf(Employees.CurrentMember.Parent.Name = "SalesPersons", Sales * 0.10,
    RollupChildren(Employees.CurrentMember,
    Employees.CurrentMember.Properties("UNARY_OPERATOR"))

有关这些函数的更多信息，请参见 IIf 和 RollupChildren。

在求值次序方面，如果级别既有自定义汇总公式又有自定义成员公式，则自定义成员公式重写自定义汇总公式。在解析自定义汇总公式和自定义成员公式之前，系统会先解析计算成员。如果一个多维数据集中包含多个具有自定义汇总公式或自定义成员公式的维度，系统则按将维度添加到多维数据集的顺序解析公式。可以在多维数据集编辑器树窗格中查看或更改该顺序。有关各种公式的求值次序的更多信息，请参见理解传递次序和求解次序。

若要在除"（全部）"级别以外的任何级别中指定自定义汇总公式，请使用级别的 Custom Rollup Formula 属性。若要在"（全部）"级别中指定自定义汇总公式，请使用维度的 All Member Formula 属性。可以在多维数据集编辑器的属性窗格中访问这些属性。单击这些属性值旁边的编辑（"..."）按钮显示 MDX 生成器，您可以在其中构造自定义汇总公式。

在共享或专用维度中都可以指定自定义汇总公式。如果在两种维度中都指定了自定义汇总公式，则多维数据集专用维度中的自定义汇总公式优先。

若要在一个级别中启用自定义成员公式，请在维度编辑器（如果维度是共享的）或多维数据集编辑器（如果维度是专用的）的属性窗格中使用级别的 Custom Members 属性。单击该属性值旁边的编辑（"..."）按钮显示"定义自定义成员列"对话框，您可以在其中选择或创建一列来存储公式。关闭该对话框后，如果维度为写启用状态，则可以在维度编辑器（如果维度是共享的）或维度浏览器的自定义成员公式窗格中创建公式。（若要执行此操作，请确保写启用的维度所在的多维数据集自该维度上次更改后曾经过处理。）如果维度不处于写启用状态，则必须使用 Analysis Manager 之外的某种工具将公式插入到列中。

说明 如果多维数据集有一个 Aggregate Function 属性设置为 Distinct Count 的度量值，则将自定义汇总运算符或表达式添加到一个级别中将导致多维数据集的结构变得无效。

请参见

创建自定义成员公式

属性窗格（多维数据集编辑器数据视图）

使用自定义汇总运算符


成员组

成员组是系统生成的、连续维度成员集合的父代。它是在成员组子代所在级别的上一个级别中创建的。当最终用户浏览成员组所在的级别时，会看到成员组的名称和单元值。对于最终用户，成员组就象普通成员。

级别可以包含成员组或成员，但不能同时包含二者。

成员组取决于下一个级别的 Order By 属性。该属性指定所显示成员的排序次序。在该排序次序中，成员组的子代是连续的。

成员组的名称是自动创建的。成员组名称的组成方式为成员组第一个子代的名称加一个连字符 (-) 再加成员组最后一个子代的名称。

成员组有两种常见用途。可用成员组在成员较少的级别与成员众多的级别之间提供一个中间级别，以便于深化。若要这样做，请在紧靠原来级别的上面创建包含众多成员的级别的一个复本，然后在此新级别中创建成员组。也可以使用成员组以满足在单个的父成员下最多只能有 64,000 个成员的限制条件。若要这样做，请在紧靠原来级别的上面创建包含过剩成员的级别的一个复本，然后在此新级别中创建成员组。每个成员组包含的子代少于 64,000 个。例如，Client 维度只包含一个"（全部）"级别和一个有 500,000 个成员的 Client Name 级别。在 Client Name 级别之上创建一个级别复本并命名为 Client Group。在 Client Group 级别中创建成员组。现在每个 Client Name 成员在 Client Group 级别中都有一个新的父代。如果要隐藏 Client Group 级别，请将它的 Visible 属性设置为 False。

只能在可变维度中创建成员组。而不能在维度的顶层或底层中创建成员组。如果有这种需要，可以添加一个级别，以使将在其中创建成员组的级别不再处于顶层或底层。可以将其 Visible 属性设置为 False 来隐藏所添加的级别。不能在维度的两个连续级别中创建成员组。

成员组不支持 ROLAP 维度。

若要在一个级别中创建成员组，请在维度编辑器（如果维度是共享的）或多维数据集编辑器（如果维度是专用的）的属性窗格中将级别的 Grouping 属性设置为 Automatic。

将级别的 Grouping 属性更改为 Automatic 会影响级别的以下属性：

  • Member Keys Unique：为最低级别设置为 True

  • Member Names Unique：设置为 False 和只读

  • Order By：设置为 Name 和只读

  • Member Key Column：设置为空字符串和只读

  • Member Name Column：设置为空字符串和只读

还有，如果包含级别的维度是专用维度并且其 Aggregation Usage 属性设置为 Custom，则该专用维度的 Aggregation Usage 属性设置为 Standard。

如果成员组所在维度的维度表经过更新，并且该维度随后得到处理，则会生成一个成员组的新集合。新成员组的名称和子代与旧成员组的不同。

请参见

可更改维度

创建成员组


度量值

在多维数据集中，度量值是一组值，这些值基于多维数据集的事实数据表中的一列，而且通常为数字。此外，度量值是所分析的多维数据集的中心值。即，度量值是最终用户浏览多维数据集时重点查看的数字数据。您所选择的度量值取决于最终用户所请求的信息类型。一些常见的度量值有 sales、cost、expenditures 和 production count 等。

对于多维数据集中的每个度量值，该多维数据集中的每个单元都包含一个值，但用于其它度量值的单元除外。因此，不论在查询中使用成员的何种组合，都可检索到度量值。可以从下列位置检索此值：多维数据集的聚合、多维数据集的源数据、它在服务器上的副本、客户端高速缓存或某种程度上由多维数据集存储设置决定的这些源的组合。

Microsoft SQL Server 2000 Analysis Services 对度量值进行汇总，并存储所得聚合，以便最终用户查询多维数据集时可快速检索。有关更多信息，请参见聚合。

例如一个多维数据集具有以下架构和单个度量值 Sales（基于 Sales 事实数据表中的 Sales_Amount 列）。

假定一个维度对于每个其它的表具有对应于每个 customer、retail store 和 product 的成员。如果查询请求每个 customer、每个 retail store 以及 product A 的 Sales，则返回的数据集中的每个单元包含用相应的 Sales_Amount 值聚合得到的 Sales 值。例如，customer A、retail store A 和 product A 的单元中的 Sales 值可通过只对 Sales 表中包含所有这些成员的键值的行取值来生成。

在对象层次结构中，度量值仅次于多维数据集。创建多维数据集时将创建多维数据集的度量值。当用多维数据集向导或多维数据集编辑器建立常规多维数据集时，可以选择用于常规多维数据集的度量值。在使用虚拟多维数据集向导建立虚拟多维数据集时，也可以选择度量值。建立常规多维数据集后，可以在多维数据集编辑器中维护其度量值。建立虚拟多维数据集后，可以在虚拟多维数据集编辑器中维护其度量值。

每个度量值都是从事实数据表中的一列获得的。因为常规多维数据集的架构中只能有一个事实数据表，所以事实数据表中必须包含多维数据集的所有度量值。

创建度量值及其多维数据集后，下一个要创建的对象通常是分区或聚合。只有当多维数据集要包含多个分区时才创建分区；创建多维数据集时将自动为多维数据集创建一个分区。有关更多信息，请参见分区和聚合。

在 Analysis Manager 中，度量值通过以下图标标识：

每个度量值都指定了聚合函数，以确定度量值的源列中值的聚合方式。此函数也决定了如何聚合兄弟成员的度量值以生成它们父代的值。最常使用的聚合函数是 Sum，但也可以使用 Min、Max、Count 和 Distinct Count。有关更多信息，请参见聚合函数。

Analysis Services 支持基于可加列和不可加列的度量值。可加列可以求和。例如，货币列就是可加列。可加列适于作为多维数据集中的度量值，与所使用的聚合函数无关。而对不可加列求和是无意义的。例如，包含标识符的数字列 Account Number 就是不可加列。不可加列也适于作为多维数据集中的度量值，但必须使用 Count 或 Distinct Count 聚合函数来汇总这些不可加列才有意义。

使用 Distinct Count 聚合函数对某些多维数据集功能加以限制。有关更多信息，请参见使用聚合函数。

可以用表达式组合多列以获得度量值。例如，Profit 度量值是下面这两个数字列的差值：Sales 和 Cost。有关将此类度量值添加到多维数据集的信息，请参见向多维数据集添加多列度量值。

可以将计算成员用作度量值。浏览多维数据集时将用公式创建计算成员值，但不会保存该值。因此，计算成员节省了存储空间。有关更多信息，请参见计算成员。

多维数据集包含一个特殊类型的维度，此维度对每个度量值包含一个成员。此维度称为"度量值"维度。当最终用户浏览多维数据集时，能够利用"度量值"维度中的成员对数据进行切片，以便只浏览单个度量值的数值，或者将"度量值"维度放到轴上，以便查看多维数据集的全部度量值的数值。"度量值"维度与其它维度不同，表现在：

  • 它在创建多维数据集时自动创建。

  • 不能在维度编辑器中显示或编辑。（使用"多维数据集编辑器"或"虚拟多维数据集编辑器"来维护度量值。）

  • 它总是平面的（即始终只包含一个级别）。

对任何维度，包括"度量值"维度，都可以制定一个自定义规则来保证维度安全性，以限制最终用户对个别成员的访问。由于"度量值"维度是平面的，所以这些自定义规则中有关祖先和后代的复杂性不适用于"度量值"维度。有关更多信息，请参见维度安全性中的自定义规则。

限制对度量值访问的另一种方法是使用单元安全性。有关更多信息，请参见单元安全性。

如果用决策支持对象 (DSO) 编程，则与度量值相关的类为：

  • clsCubeMeasure

  • clsPartitionMeasure

  • clsAggregationMeasure
度量值如何向最终用户显示

度量值构成了提供给最终用户的多维数据集信息的核心。显示形式是表格还是图形，取决于最终用户用来浏览多维数据集的客户端应用程序，但度量值却是最终用户所关心的信息。

使用表格时，度量值是以行和列的形式显示的。尽管多维数据集的维度决定了列标题和行标题，但度量值仍是行和列中的数据。然而，如果您在多维数据集中指定多个度量值，那么它们也会提供多个标题来区分度量值。

使用图形方式时，度量值可以用多种方式显示，其中包括线条、形状、颜色、底纹和阴影。但是，和使用表格方式一样，度量值占据中心主要区域，而维度提供外围标签。

clsAggregationMeasure

clsCubeMeasure

clsPartitionMeasure

多维数据集编辑器 — 架构视图

多维数据集向导

维度

虚拟多维数据集编辑器

虚拟多维数据集向导


聚合函数

Microsoft SQL Server 2000 Analysis Services 提供下面的聚合函数以便在度量值中使用。

聚合函数 | 返回值
Sum | 输入值之和。
Min | 最小输入值。
Max | 最大输入值。
Count | 输入值的数目。
Distinct Count | 不重复的输入值的数目。

在度量值的 Aggregate Function 属性中可选择函数。可在多维数据集编辑器的属性窗格中访问此属性。有关在实际操作中如何使用这些函数的更多信息，请参见使用聚合函数。

MDX 函数列表


使用聚合函数

此主题包含在度量值中使用聚合函数（Sum、Min、Max、Count 和 Distinct Count）的示例。查询的示例和以下示例基于相同的多维数据集单元，以便能看到更改函数之后的效果。

这些示例使用的多维数据集具有单一度量值 Sales，它基于 Sales 事实数据表中的 Sales_Amount 列。该多维数据集有三个维度：

  • Customers，基于 Customers 表，并包括下列从最高到最低的级别：
    • （全部）

    • 以 Customer_Name 为成员名列和 Customer_ID 为成员键列的 Customer
  • Retail Stores，基于 Retail_Stores 表，并包括下列从最高到最低的级别：
    • （全部）

    • 以 Retail_Store_Name 为成员名列和 Retail_Store_ID 为成员键列的 Retail Store
  • Products，基于 Products 表，并包括下列从最高到最低的级别：
    • （全部）

    • 以 Product_Category 为成员名列和成员键列的 Product Category

    • 以 Product_Name 为成员名列和以 Product_ID 为成员键列的 Product

有关维度和级别的更多信息，请参见维度和级别。

多维数据集的架构如下所示。

多维数据集的事实数据表 Sales 如下所示。

Transaction_ID | Customer_ID | Product_ID | Retail_Store_ID | Sales_ Amount
1 | 1 | 1 | 1 | 300
2 | 1 | 1 | 1 | 250
3 | 1 | 1 | 1 | 250
4 | 1 | 2 | 1 | 100
5 | 1 | 4 | 1 | 700
6 | 2 | 1 | 2 | 290
7 | 2 | 2 | 2 | 90
8 | 2 | 3 | 3 | 510
9 | 3 | 1 | 4 | 350
10 | 3 | 2 | 3 | 110
11 | 4 | 3 | 4 | 550
12 | 4 | 4 | 4 | 750

多维数据集的维度表 Customers 如下所示。

Customer_ID | Customer_Name | Customer_Address_ Line_1 | Customer_Address_ Line_2
1 | A | 1 A Street | Aville, AA 55555
2 | B | 2 B Street | Bville, BB 55555
3 | C | 3 C Street | Cville, CC 55555
4 | D | 4 D Street | Dville, DD 55555

多维数据集的另一个维度表 Retail_Stores 如下所示。

Retail_ Store_ID | Retail_Store_ Name | Retail_Store_ Address_Line_1 | Retail_Store_ Address_Line_2
1 | A | 1 A Avenue | Atown, AA 55555
2 | B | 2 B Avenue | Btown, BB 55555
3 | C | 3 C Avenue | Ctown, CC 55555
4 | D | 4 D Avenue | Dtown, DD 55555

多维数据集的最后一个维度表 Products 如下所示。

Product_ID | Product_Name | Product_Description | Product_Category
1 | A | aaaa aaaa aaaa | AB
2 | B | bbbb bbbb bbbb | AB
3 | C | cccc cccc cccc | CD
4 | D | dddd dddd dddd | CD

Sum

如果度量值的 Aggregate Function 属性值是 Sum，那么多维数据集单元的度量值将通过累加度量值源列中的值得到，累加时只使用定义该单元及其后代的成员组合所对应的行。

示例

下列示例返回 Sales 的累加值。

A：查询一个原子多维数据集单元

对 customer A，retail store A 和 product A 的 Sales 度量值的查询返回 800。

B：查询一个非原子多维数据集单元

对 customer A，retail store A 和 product category AB 的 Sales 度量值的查询返回 900。

C：查询多个多维数据集单元

对 Sales 度量值的查询将各 retail store 放在 X 轴上，将 product 嵌套在 product category 下，放在 Y 轴上，并按 All Customers 对数据进行切片。它返回下列数据集。

 |  |  | All Retail Stores | A | B | C | D
All Products |  |  | 4250 | 1600 | 380 | 620 | 1650
 | AB |  | 1740 | 900 | 380 | 110 | 350
 |  | A | 1440 | 800 | 290 |  | 350
 |  | B | 300 | 100 | 90 | 110 |
 | CD |  | 2510 | 700 |  | 510 | 1300
 |  | C | 1060 |  |  | 510 | 550
 |  | D | 1450 | 700 |  |  | 750

Min

如果度量值的 Aggregate Function 属性值是 Min，那么多维数据集单元的度量值将通过取度量值源列中的最小值得到，求最小值时只使用定义该单元及其后代的成员组合所对应的行。

示例

下列示例返回 Sales 价格的最小值。

A：查询一个原子多维数据集单元

对 customer A，retail store A 和 product A 的 Sales 度量值的查询返回 250。

B：查询一个非原子多维数据集单元

对 customer A，retail store A 和 product category AB 的 Sales 度量值的查询返回 100。

C：查询多个多维数据集单元

对 Sales 度量值的查询将各 retail store 放在 X 轴上，将 product 嵌套在 product category 下，放在 Y 轴上，并按 All Customers 对数据进行切片。它返回下列数据集。

 |  |  | All Retail Stores | A | B | C | D
All Products |  |  | 90 | 100 | 90 | 110 | 350
 | AB |  | 90 | 100 | 90 | 110 | 350
 |  | A | 250 | 250 | 290 |  | 350
 |  | B | 90 | 100 | 90 | 110 |
 | CD |  | 510 | 700 |  | 510 | 550
 |  | C | 510 |  |  | 510 | 550
 |  | D | 700 | 700 |  |  | 750

Max

如果度量值的 Aggregate Function 属性值是 Max，则多维数据集单元的度量值将通过取度量值源列中的最大值得到，求最大值时只使用定义该单元及其后代的成员组合所对应的行。

示例

下列示例将返回 Sales 价格的最大值。

A：查询一个原子多维数据集单元

对 customer A，retail store A 和 product A 的 Sales 度量值的查询返回 300。

B：查询一个非原子多维数据集单元

对 customer A，retail store A 和 product category AB 的 Sales 度量值的查询返回 300。

C：查询多个多维数据集单元

对 Sales 度量值的查询将各 retail store 放在 X 轴上，将 product 嵌套在 product category 下，放在 Y 轴上，并按 All Customers 对数据进行切片。它返回下列数据集。

 |  |  | All Retail Stores | A | B | C | D
All Products |  |  | 750 | 700 | 290 | 510 | 750
 | AB |  | 350 | 300 | 290 | 110 | 350
 |  | A | 350 | 300 | 290 |  | 350
 |  | B | 110 | 100 | 90 | 110 |
 | CD |  | 750 | 700 |  | 510 | 750
 |  | C | 550 |  |  | 510 | 550
 |  | D | 750 | 700 |  |  | 750

Count

如果度量值的 Aggregate Function 属性值是 Count，那么多维数据集单元的度量值将通过累加度量值源列中值的数目得到，计算数目时只使用定义该单元及其后代的成员组合所对应的行。

示例

下列示例将返回代表 Sales 事务数目的值。

A：查询一个原子多维数据集单元

对 customer A，retail store A 和 product A 的 Sales 度量值的查询返回 3。

B：查询一个非原子多维数据集单元

对 customer A，retail store A 和 product category AB 的 Sales 度量值的查询返回 4。

C：查询多个多维数据集单元

对 Sales 度量值的查询将各 retail store 放在 X 轴上，将 product 嵌套在 product category 下，放在 Y 轴上，并按 All Customers 对数据进行切片。它返回下列数据集。

 |  |  | All Retail Stores | A | B | C | D
All Products |  |  | 12 | 5 | 2 | 2 | 3
 | AB |  | 8 | 4 | 2 | 1 | 1
 |  | A | 5 | 3 | 1 |  | 1
 |  | B | 3 | 1 | 1 | 1 |
 | CD |  | 4 | 1 |  | 1 | 2
 |  | C | 2 |  |  | 1 | 1
 |  | D | 2 | 1 |  |  | 1

Distinct Count

如果度量值的 Aggregate Function 属性值是 Distinct Count，那么多维数据集单元的度量值将通过累加度量值源列中唯一值的数目得到，计算数目时只使用定义该单元及其后代的成员组合所对应的行。

Aggregate Function 属性值为 Distinct Count 的度量值称为非重复计数度量值。非重复计数度量值可以用来计算维度的最低级别成员在事实数据表中的出现次数。因为计数是非重复的，所以如果一个成员出现多次，计数也只计一次。

非重复计数度量值一般用于确定对于维度的每个成员，另一个维度有多少非重复的最低级别成员与之在事实数据表中共享相同的行。例如，在 Sales 多维数据集中，每个 customer 和 customer group 购买了多少种不重复的产品？（也就是说，对于 Customers 维度的每一个成员，Products 维度有多少非重复的最低级别成员在事实数据表中与之共享相同的行？）又例如在 Internet Site Visits 多维数据集中，每个站点访问者和访问组访问了多少不同的主页？（也就是说，对于 Site Visitors 维度的每一个成员，Pages 维度有多少非重复的最低级别成员在事实数据表中与之共享相同的行？）在上述每个示例中，第二个维度的最低级别成员由非重复计数度量值计数。

这种分析方法不一定限制在二维。事实上，非重复计数度量值能按多维数据集维度的任意组合来分隔和切片，包括被计数成员所在的维度。

对成员计数的非重复计数度量值基于事实数据表中的外键列。（也就是说，度量值的 Source Column 属性标识了此列。）此列联接了维度表列，该维度表列标识了非重复计数度量值所计数的成员。

常规多维数据集在使用非重复计数度量值时是受限制的。在常规多维数据集中只允许一个非重复计数度量值，而且仅当常规多维数据集不包含带自定义汇总运算符或自定义汇总公式的维度时，才允许有该值。但是，虚拟多维数据集无这些限制。虚拟多维数据集可使用多个非重复计数度量值，也可以在使用非重复计数度量值的同时使用自定义汇总运算符和自定义汇总公式。

因为非重复计数度量值是不可加的，所以非重复计数度量值的存在会明显地限制 Microsoft SQL Server 2000 Analysis Services 预先聚合多维数据集的能力。因此，建议将每个非重复计数应该放置在它自己的不带有其它度量值的多维数据集中。然后，这些带有非重复计数度量值的多维数据集可以与其它的多维数据集一起联接到一个虚拟多维数据集中，这个虚拟的多维数据集可以有效地管理所有的度量值。

如果多维数据集使用非重复计数度量值，则整个多维数据集都视为不可加的。不可加的多维数据集不支持动态创建的成员，因此动态创建成员的 MDX 函数，如 VisualTotals，如果用在不可加多维数据集上将返回错误。这也会影响涉及动态创建成员的其它功能，如在维度安全性中启用直观合计。

示例

下面的示例返回的值代表用不同 Sales 价格进行的 Sales 事务数目。

A：查询一个原子多维数据集单元

对 customer A，retail store A 和 product A 的 Sales 度量值的查询返回 2。

B：查询一个非原子多维数据集单元

对 customer A，retail store A 和 product category AB 的 Sales 度量值的查询返回 3。

C：查询多个多维数据集单元

对 Sales 度量值的查询将各 retail store 放在 X 轴上，将 product 嵌套在 product category 下，放在 Y 轴上，并按 All Customers 对数据进行切片。它返回下列数据集。

 |  |  | All Retail Stores | A | B | C | D
All Products |  |  | 11 | 4 | 2 | 2 | 3
 | AB |  | 7 | 3 | 2 | 1 | 1
 |  | A | 4 | 2 | 1 |  | 1
 |  | B | 3 | 1 | 1 | 1 |
 | CD |  | 4 | 1 |  | 1 | 2
 |  | C | 2 |  |  | 1 | 1
 |  | D | 2 | 1 |  |  | 1

MDX 函数列表

度量值

虚拟多维数据集


显示格式

可以利用度量值的 Display Format 属性选择向最终用户显示度量值的格式。可在多维数据集编辑器的属性窗格中访问此属性。

虽然属性窗格提供了 Display Format 属性的下拉列表，但也可以指定不在列表中的其它格式。您可以指定在 Microsoft Visual Basic 中有效的已命名或用户定义的格式。下表包含了一些示例。这些示例假定在客户端计算机"控制面板"中的区域设置为"英语（美国）"。

源数据类型 | 已命名/用户定义的格式 | Display Format 值 | 示例输出
Numeric | 已命名 | 通用数值 | 123456789
 |  |  | 0
 |  | 固定 | 123456789.00
 |  |  | 0.00
 | 用户定义文件组 | $#,#.00 | $123,456,789.00
 |  |  | $.00
 |  | #,#0.0000 | 123,456,789.0000
 |  |  | 0.0000
Date/time | 已命名 | 缩写日期 | 31-Dec-99
 |  | 长日期 | Friday, December 31, 1999
 | 用户定义文件组 | mm/dd/yyyy | 12/31/1999
 |  | mmm-dd-yyyy | Dec-31-1999
Boolean | 已命名 | Yes/No | 是
 |  | True/False | True

有关有效的已命名和用户定义格式的更多信息，请在 的 MSDN 库中"Visual Basic"一节查找"format expression"。

在客户端应用程序中，某些显示格式不能对所有的区域设置都进行适当的解释。如果要支持多个区域设置或者与分析服务器不同的区域设置，则应在具有这些区域设置的计算机上的客户应用程序中测试显示格式。

多维数据集编辑器 — 架构视图

单元属性的使用


单元

单元是多维数据集的原子元素，或者为来自与该多维数据集相关联的每个维度的某个成员的唯一逻辑交集。实质上，多维数据集由按度量值、级别以及维度组织的单元组成。

例如，下列关系图描述的多维数据集有一个带阴影的单元。

带阴影的单元是下列成员和维度的交集：

  • "源"维度的"航空"成员。

  • "路线"维度的"非洲"成员。

  • "时间"维度的"第四季度"成员。

  • "度量值"维度的"包"成员。

可从多个源获得单元中的值。在上述的示例中，单元中的值由多维数据集的事实数据表中派生而来，就好象所有指定的成员都是叶成员；从层次结构上讲，叶成员下无成员。

但是，单元可指定为具有非叶成员；在这种情况下，单元的值由与非叶成员相关联的成员的聚合派生而来。

例如，下列成员和维度的交集是指其值由聚合提供的单元：

  • "源"维度的"航空"成员。

  • "路线"维度的"非洲"成员。

  • "时间"维度的"下半年"成员。

  • "度量值"维度的"包"成员。

"时间"维度的"下半年"成员是非叶成员，所以与其相关联的所有成员都必须选择并聚合，如下列关系图所示。

假定"第三季度"和"第四季度"成员的聚合为汇总，则指定单元的值是前一关系图中所有带阴影单元的总计。

一些称为数据成员的非叶成员可以有与其相关联的内在数据，以及从非叶成员下的成员的聚合派生而来的数据。有关数据成员的更多信息，请参见数据成员。

为自定义成员、自定义汇总以及成员组所使用的成员而派生的单元值的处理方式类似。但是，为计算成员而派生的单元值完全基于用来定义计算成员的多维表达式 (MDX) 表达式，因此可能不涉及实际的单元数据。

另外，通过使用计算单元，可由为一组特定单元而执行的公式派生出单元值。通过提供有选择地将公式应用于多维数据集的节或子多维数据集中的特定单元的能力，计算单元在执行推测分析方面提供极大的灵活性。对于子多维数据集，所基于的条件是子多维数据集中的单元必须首先实现。

空单元

并非多维数据集中的每个单元都必须包含一个值；没有值的多维数据集也可以有交集。这些称为空单元的交集经常出现在多维数据集中，因为并非维度的每个交集都可在事实数据表中包含一个相应的记录。经常将多维数据集中空单元与多维数据集中单元总数的比率称为多维数据集的稀疏度。

例如，下列关系图中所示的多维数据集与本主题中的示例类似。

但是，在本示例中，在第三季度没有到非洲的空运或者在第四季度没有到澳大利亚的航空运输。因此，在事实数据表中无数据支持这些维度和度量值的交集，所以这些交集的单元为空。

在 Microsoft SQL Server 2000 Analysis Services 中，空单元是具有特殊质量的单元。因为空单元可扭曲交叉联接、计数等的结果，因此为了生成结果，许多 MDX 函数提供忽略空单元的能力。

有关空单元的更多信息，请参见使用空单元。

计算单元

度量值

维度

级别

自定义汇总公式和自定义成员公式

成员组


单元属性

单元可包含一些附加信息，用来确定与其相关联的数据的内容、字体以及格式等。客户端应用程序可使用这些信息来表示单元数据。

下表包含一列支持的单元属性及其描述。

属性 | 描述
BACK_COLOR | 显示 VALUE 或 FORMATTED_VALUE 属性的背景颜色。有关更多信息，请参见 FORE_COLOR 和 BACK_COLOR 内容。
CELL_EVALUATION_LIST | 适用于单元的求值公式的列表，以分号分隔，以最低到最高的顺序排列。
CELL_ORDINAL | 数据集中单元的序列号。
FORE_COLOR | 显示 VALUE 或 FORMATTED_VALUE 属性的前景颜色。有关更多信息，请参见 FORE_COLOR 和 BACK_COLOR 内容。
FONT_NAME | 用来显示 VALUE 或 FORMATTED_VALUE 属性的字体。
FONT_SIZE | 用来显示 VALUE 或 FORMATTED_VALUE 属性的字体大小。
FONT_FLAGS 字体的掩码细节效果。可以是以下的一个或多个按位 OR 操作的结果：
  • MDFF_BOLD

  • MDFF_ITALIC

  • MDFF_UNDERLINE

  • MDFF_STRIKEOUT
FORMAT_STRING 用来创建 FORMATTED_VALUE 属性值的格式字符串。

有关更多信息，请参见 FORMAT_STRING 内容。
FORMATTED_VALUE | 表示 VALUE 属性的格式化显示的字符串。
VALUE | 单元的未格式化值。

除表中所列属性外，其它提供程序可能支持提供程序特有的单元属性。MDSCHEMA_PROPERTIES 架构行集包括有关支持单元属性的信息，包括数据类型和提供程序支持。

有关所支持的单元属性及其用法的更多信息，请参见单元属性的使用。

MDSCHEMA_PROPERTIES


计算单元

计算单元是其值在运行时计算的单元，计算时所用的多维表达式 (MDX) 表达式是定义计算单元时指定的。另外，根据定义计算单元时同时指定的 MDX 逻辑表达式，可有条件地将表达式应用于特定单元。

计算单元使您得以将以前为计算成员、自定义成员以及自定义汇总公式保留的功能应用到单元的特定范围，甚至应用到单个单元，以允许精细地调整多维数据集或查询的性能。

计算单元由 MDX 集合表达式所定义的单元的多维部分组成，根据 MDX 逻辑表达式中所描述的条件，MDX 值表达式将有选择地应用到 MDX 集合表达式。

计算单元由下列三个元素构造：

计算子多维数据集

用来定义多维数据集切片的MDX 集表达式，计算单元功能将在该切片上起作用。计算子多维数据集由一列单维度集合定义，每个集合包含下列选项之一：

  • 维度（包括 Measures 维度）的所有成员。

    该选项通常不包括计算成员。若要将计算成员包括在内，请用使用 AllMembers MDX 函数的 MDX 表达式。

  • 维度（包括 Measures 维度）的单个指定的成员。

  • 维度中指定级别上的所有成员。

    该选项通常不包括计算成员。若要将计算成员包括在内，请用使用 AllMembers MDX 函数的 MDX 表达式。

  • 维度中指定成员的所有后代。

  • 维度中指定级别上指定成员的所有后代。

  • 解析为包含上述集合之一的集合中的 MDX 表达式。

    该列集合与该列集合中未指定的所有其它维度的每个其它成员的组合定义计算子多维数据集。

计算条件

进一步限制计算单元功能应用的 MDX 逻辑表达式。计算单元条件表达式与计算子多维数据集中的每个单元相比较。如果逻辑表达式对该单元取值为 True，则应用计算单元公式而且该单元返回计算值。如果它取值为 False，那么该单元返回原始单元值。
计算子多维数据集与计算单元条件的组合称为计算范围。

计算公式

用来计算包含于计算子多维数据集中的单元的值的 MDX 值表达式。

该功能在很多方面与计算成员、自定义成员以及自定义汇总公式的作用类似，因此确实可以代替这些功能。但是，计算单元的功能还不止于此。

例如，下列关系图描述一个具有三个维度（不包括 Measures 维度）的多维数据集。

查看该多维数据集后，现在希望执行一些与第四季度在西半球 (Western Hemisphere) 航线空运包裹的数量有关的推测。您希望计算等于同一航线第三季度空运包裹数量的 125% 的这些单元，但仅当第四季度的数量少于第三季度的 125% 时才计算。

可为 Source 维度的 Air 成员创建自定义成员，但这会影响该成员的所有单元，包括那些与所有其它成员相交的单元，如下列关系图所示。

当然，该自定义成员影响所有其它路线和时间。另一种途径是为 Time 维度的 4th quarter 成员创建一自定义成员，但这会影响所有其它路线和源，如下列关系图所示。

也可为 Western Hemisphere 的每条路线创建自定义成员，但这会影响所有源和时间，如下一个关系图所示。

最后，可组合前面的示例，创建多个自定义成员以包括所有可能的交集，从而为每个成员提供一复杂的 MDX 公式，以仅为两个单元派生计算值，如下列关系图所示。

上述这些解决方法都没有真正提供仅处理特定多维数据集切片所需的灵活性，因为它们都影响整个成员，而不是单元的特定范围。使用计算单元，可定义单元的特定范围，提供应用公式的条件，以及对单元的特定范围应用公式。

对于本主题前面详细介绍的示例，使用此功能，可首先定义下列关系图中所示的计算子多维数据集。

然后创建计算条件，检查每个适用的单元以确定它是否少于上一季度中单元的 125%。这会消除单元中的一个，如下列关系图所示。

然后将计算公式应用到适用的单元，以返回相应单元的值，如下列关系图所示。

若要创建计算单元，请使用计算单元向导或多维数据集编辑器。有关计算单元向导和多维数据集编辑器的更多信息，请参见计算单元向导和多维数据集编辑器 — 架构视图。

在 Analysis Manager 中，下列图标标识计算单元定义：

可用计算单元向导或多维数据集编辑器创建具有全局范围的计算单元，浏览多维数据集（在其中定义计算单元）的所有用户均可使用它们。但是，计算单元也可创建为具有会话范围，它们仅对计算单元在其中创建的会话内执行的 MDX 查询可用。此功能对客户端应用程序允许更大的灵活性。

创建计算单元

CREATE CELL CALCULATION 语句

使用 WITH 创建计算单元


多维数据集

多维数据集是包含维度和度量值的多维结构。维度定义多维数据集的结构，而度量值提供最终用户感兴趣的数值。多维数据集内的单元位置由各维度成员的交集确定，通过对度量值进行聚合得到单元中的值。

下列主题提供多维数据集的基本概念的概述。

主题 | 描述
多维数据集简介 | 介绍多维数据集的概念和行为，包括对结构、存储和多维数据集的处理的讨论。
多维数据集结构 | 详述多维数据集的组件，如度量值和维度，并讨论多维数据集架构的重要性。
多维数据集存储 | 描述各种技术和存储模式，包括分区、链接多维数据集、分布式分区多维数据集以及实时多维数据集的各种使用。
多维数据集处理 | 描述处理多维数据集的细微差别，包含有关实时 OLAP 的信息。
多维数据集种类 | 提供 Microsoft® SQL Server™ 2000 Analysis Services 中可用的各种多维数据集的简短概述。
常规多维数据集 | 讨论基于表的常规多维数据集。常规多维数据集有自己的聚合，需要使用存储空间。常规多维数据集与链接多维数据集、虚拟多维数据集以及本地多维数据集截然不同。
链接多维数据集 | 讨论链接多维数据集。链接多维数据集基于在另一台分析服务器上定义和存储的常规多维数据集。链接多维数据集使用它所基于的多维数据集的聚合，因此它不需要用于聚合的存储空间。
分布式分区多维数据集 | 讨论分布式分区多维数据集，它是分区存储在另一个分析服务器上的常规多维数据集。分布式分区多维数据集使用既可基于本地分析服务器也可基于远程分析服务器的聚合，因此可在多个分析服务器间分布处理。
虚拟多维数据集 | 讨论虚拟多维数据集。虚拟多维数据集是基于一个或多个常规多维数据集或链接多维数据集的逻辑多维数据集。虚拟多维数据集使用其组件常规多维数据集的聚合和其组件链接多维数据集所基于的多维数据集的聚合。因此，虚拟多维数据集不需要用存储空间保存聚合。
本地多维数据集 | 讨论本地多维数据集。本地多维数据集包含在便携式文件中，用户无须连接到分析服务器即可浏览。本地多维数据集基于表。没有聚合。
实时多维数据集 | 讨论实时多维数据集，它是维度和/或分区为实时 OLAP 而启用的常规多维数据集。为实时 OLAP 而启用且由实时多维数据集使用的维度和/或分区不需要用于聚合的存储空间。
写启用的多维数据集 | 讨论写启用的多维数据集。授权的最终用户可以更新写启用的多维数据集内的单元值。


多维数据集简介

多维数据集是联机分析处理 (OLAP) 中的主要对象，是一项可对数据仓库中的数据进行快速访问的技术。多维数据集是一个数据集合，通常从数据仓库的子集构造，并组织和汇总成一个由一组维度和度量值定义的多维结构。

多维数据集提供一种便于使用的查询数据的机制，不但快捷，而且响应时间一致。最终用户使用客户端应用程序连接到分析服务器，并查询该服务器上的多维数据集。在大多数客户端应用程序中，最终用户通过使用用户界面控件对多维数据集进行查询，所使用的控件决定查询内容。这使得最终用户不必编写基于语言的查询。称为聚合的预先计算好的汇总数据提供快捷且响应时间一致的查询机制。多维数据集的聚合在最终用户访问之前即已创建。查询结果可从下列源或其组合中检索：聚合、数据仓库中多维数据集的源数据、分析服务器上该数据的复本以及客户端高速缓存。分析服务器可支持许多不同的多维数据集，如销售多维数据集、清单多维数据集以及客户多维数据集等。

每个多维数据集都有一个架构，架构是数据仓库中已联接的各表的集合，多维数据集从数据仓库提取其源数据。架构中的核心表是事实数据表，事实数据表是多维数据集度量值的源。其它的表有维度表，维度表为多维数据集维度的源。有关架构的更多信息，请参见多维数据集结构。

多维数据集由其所包含的度量值和维度定义。例如，一个用于销售分析的多维数据集内包括度量值 Item_Sale_Price 和 Item_Cost 以及维度 Store_Location、Product_Line 和 Fiscal_Year。该多维数据集使最终用户得以按 Store_Location、Product_Line 和 Fiscal_Year 将 Item_Sale_Price 和 Item_Cost 分成各种类别。

每个多维数据集的维度均可以包含级别层次结构，以指定最终用户可用的类别细目。例如，Store_Location 维度包含的级别层次结构为：Continent、Country、Region、State_Province、City、Store_Number。维度中的每个级别均比其父代的粒度更为精细。例如，洲 (continent) 包含国家 (country)，州 (state) 或省 (province) 包含城市 (city)。同理，Fiscal_Year 维度的层次结构中可包含级别 Year、Quarter、Month 和 Day。

维度级别是功能强大的数据建模工具，因为它们使最终用户得以在高级别上提问，然后展开维度层次结构以显示更详细的信息。例如，最终用户开始时可以要求查看过去三个财政年度 (fiscal year) 产品的 Item_Cost 值，然后可能注意到 1998 的 Item_Cost 值比其它年份高，于是将 Fiscal_Year 维度展开到 Month 级别，发现一月 (January) 和八月 (August) 的 Item_Cost 值特别高。随后，最终用户可能浏览 Store_Location 维度中的级别，以查看是否是某个特定地区造成 Item_Cost 值明显偏高，或展开 Product_Line 维度以查看是否是某特定的产品组或产品的 Item_Cost 值偏高。这种称为深化的浏览类型在客户端应用程序中非常普遍。

有关维度、级别和度量值的更多信息，请参见维度、级别和度量值。

例如，考察下面的 Imports 多维数据集，其中包含"包"和"上一次"两个度量值和"路线"、"源"和"时间"三个维度。

多维数据集周围更小的字母数字值是维度的成员。示例成员有"陆地"、"非洲"和"第一季度"。

多维数据集内的值为度量值。示例度量值为"包：190"和"上一次：Feb-17-99"。这些值存在于多维数据集内的所有单元中，但只对前台中的单元进行显示。（在真正的多维数据集内，多维数据集单元内不会显示"包"和"上一次"这两个词，这里将其显示出来是为了与度量值区分。在真正的多维数据集内，各度量值在称为"度量值"维度的特殊维度中彼此分隔。）

"包"度量值代表进口包的数量，通过 Sum 函数聚合；"上一次"度量值代表收到的日期，通过 Max 函数聚合；"路线" 维度代表进口货物到达目的地的方式；"源"维度代表进口货物的原产地；"时间"维度代表一年的四个季度及上半年及下半年。

多维数据集的最终用户可以确定每个维度上各个成员的度量值。之所以有此可能是因为度量值是由成员聚合的。例如，上图中所示的度量值按下面的方式在"时间"维度内聚合。

除可以在一个维度内聚合之外，度量值还可以聚合来自不同维度的成员的各种组合，从而使最终用户得以同时按多个维度中的成员对度量值进行评估。例如，如果最终用户想分析各个季度通过航空运输从东半球和西半球进口的货物，最终用户可以在该多维数据集上发出相应的查询以检索下列数据集。

 |  |  | 包 |  |  | 上一次 |  |
 |  |  | 全部源 | 东半球 | 西半球 | 全部源 | 东半球 | 西半球
全部时间 |  |  | 25110 | 6547 | 18563 | 99/12/29 | 99/12/22 | 99/12/29
 | 上半年 |  | 11173 | 2977 | 8196 | 99/06/28 | 99/06/20 | 99/06/28
 |  | 第一季度 | 5108 | 1452 | 3656 | 99/03/30 | 99/03/19 | 99/03/30
 |  | 第二季度 | 6065 | 1525 | 4540 | 99/06/28 | 99/06/20 | 99/06/28
 | 下半年 |  | 13937 | 3570 | 10367 | 99/12/29 | 99/12/22 | 99/12/29
 |  | 第三季度 | 6119 | 1444 | 4675 | 99/09/30 | 99/09/18 | 99/09/30
 |  | 第四季度 | 7818 | 2126 | 5692 | 99/12/29 | 99/12/22 | 99/12/29

一个多维数据集最多可包含 128 个维度（每个维度中可包含数百万成员）和 1,024 个度量值。具有适当数目的维度和度量值的多维数据集通常能够满足最终用户的要求。

Microsoft® SQL Server™ 2000 Analysis Services 中有几种不同的多维数据集。尽管常规多维数据集拥有本主题及其子主题中所介绍的多维数据集特性，但其它种类的多维数据集并不具备所有这些特性。有关多维数据集种类的更多信息，请参见多维数据集种类。

在对象层次结构中，多维数据集直接从属于数据库。数据库是相关的多维数据集及其所共享的对象的容器。在创建多维数据集之前必须首先创建数据库。有关更多信息，请参见数据库。

在对象层次结构中，下列对象直接从属于多维数据集：

  • 数据源

    一个多维数据集有一个数据源。该数据源既可以从数据库内的数据源中选择，也可以在创建多维数据集时创建。多维数据集维度的数据源必须与多维数据集的数据源相同，但其分区可以有不同的数据源。

  • 度量值

    多维数据集的度量值不与其它多维数据集共享。在创建多维数据集时创建度量值。一个多维数据集最多可包含 1,024 个度量值。

  • 维度

    多维数据集的维度既可以与数据库中的其它多维数据集共享，也可以为该多维数据集所专用。共享维度可在创建多维数据集之前或创建期间创建，专用维度则在创建多维数据集时创建。虽然术语"立方体"使人想起三个维度，但一个多维数据集最多可包含 128 个维度。

  • 分区

    在创建多维数据集时，将自动为该多维数据集创建一个分区。如果安装了 SQL Server 2000 企业版 Analysis Services，则在创建多维数据集后，可在该多维数据集内创建附加分区。

  • 多维数据集角色

    每个多维数据集必须至少有一个多维数据集角色，以便向最终用户提供访问权限。多维数据集角色出自数据库角色，数据库角色可在创建多维数据集之前或之后创建。多维数据集角色在创建多维数据集之后创建。

  • 命令

    命令是可选的。可在创建多维数据集之后创建命令。

在创建多维数据集之后，接下来要创建的对象通常是分区或聚合。有关更多信息，请参见分区和聚合。

创建多维数据集包括以下三步：

定义

多维数据集的定义基于最终用户的分析要求。若要定义一个多维数据集，请选择一个事实数据表并标识事实数据表中的度量值。然后选择或创建维度，每个维度包含来自其它表中的一列或多列。多维数据集向导提供一种定义多维数据集的简便方法。而多维数据集编辑器则为定义及修改多维数据集结构提供更大的灵活性。有关更多信息，请参见生成多维数据集。

聚合设计

在定义新多维数据集后，请使用存储设计向导设计其聚合。设计聚合即是指定汇总策略。有关更多信息，请参见设计存储选项和聚合。

处理

在设计新多维数据集的聚合后，用"完全处理"选项对该多维数据集进行处理。这一操作将创建聚合。有关用"完全处理"选项处理多维数据集的更多信息，请参见处理多维数据集。

在创建多维数据集之后，使用多维数据集编辑器对其进行维护。

如果在处理多维数据集之后对其进行了更改或多维数据集的源数据发生了更改，则通常需要对该多维数据集再次进行处理。不同处理选项适用于不同情况。有关多维数据集可用的处理选项的更多信息，请参见处理多维数据集。

有关多维数据集安全性选项的信息，请参见多维数据集安全性。

如果编程时所使用的是决策支持对象 (DSO)，则与该多维数据集相关联的类的类型是 clsCube。有关更多信息，请参见 clsCube。

请参见

多维数据集编辑器 — 架构视图

度量值

维度

级别和成员

数据源

分区

角色

命令


多维数据集结构

多维数据集的结构由其度量值及维度定义。度量值及维度均出自多维数据集数据源中的表。这些产生多维数据集度量值及维度的源表的集合称为该多维数据集的架构。每个多维数据集架构均包括一个事实数据表以及一个或多个维度表。多维数据集的度量值出自事实数据表中的列，多维数据集的维度出自维度表中的列。

例如，某个多维数据集的架构如下所示。

该多维数据集的度量值及维度出自下面的列。

度量值或级别 | 成员 | 源表 | 源列 | 列值示例
"包"度量值 | 不可用 | Imports_ Fact_Table | "包" | 12
"上一次"度量值 | 不可用 | Imports_ Fact_Table | 上一次 | 99/05/03
"路线"维度中的"路线分类"级别 | 非陆地， 陆地 | Route_ Dimension_ Table | Route_ Category | 非陆地
"路线"维度中的"路线"级别 | 航空， 海路， 公路， 铁路 | Route_ Dimension_ Table | 路线 | 海路
"源"维度中的"半球"级别 | 东半球， 西半球 | Source_ Dimension_ Table | 半球 | 东半球
"源"维度中的"洲"级别 | 非洲， 亚洲， 澳大利亚， 欧洲， 北美洲， 南美洲 | Source_ Dimension_ Table | 洲 | 欧洲
"时间"维度中的"半年"级别 | 上半年， 下半年 | Time_ Dimension_ Table | 半年 | 下半年
"时间"维度中的"季度"级别 | 第一季度， 第二季度， 第三季度， 第四季度 | Time_ Dimension_ Table | 季度 | 第三季度

一个多维数据集的单元通常出自事实数据表中的多个行。例如，Imports 多维数据集内"航空"成员、"非洲"成员及"第一季度"成员的单元出自 Imports_Fact_Table 中的下列行。

Import_ Receipt_ID | Route_ID | Source_ID | Time_ID | 包 | 上一次
3516987 | 1 | 6 | 1 | 15 | 99/01/10
3554790 | 1 | 6 | 1 | 40 | 99/01/19
3572673 | 1 | 6 | 1 | 34 | 99/01/27
3600974 | 1 | 6 | 1 | 45 | 99/02/02
3645541 | 1 | 6 | 1 | 20 | 99/02/09
3674906 | 1 | 6 | 1 | 36 | 99/02/17

上表中，每行的 Route_ID、Source_ID 和 Time_ID 中的值均相同，说明这些行组成相同的多维数据集单元。

多维数据集架构有两种常见的类型：星型和雪花型。在星型架构中，每个维度表均联接到事实数据表上。本主题前面所示的 Imports 多维数据集架构是星型架构。在雪花架构中，有一个或多个维度表联接到其它维度表上，而不是事实数据表上。未联接到事实数据表上的维度表对应于有多个维度表的维度。例如，Imports 多维数据集的管理员想将该多维数据集扩展到多个年份。为完成此操作，管理员将 Year_ID 列添加到 Time_Dimension_Table，将 Time_Dimension_Table_2 添加到多维数据集架构，将"年"级别添加到"时间"维度。（"年"级别基于 Time_Dimension_Table_2.Year 列。）在完成这些更改后，"时间"维度将基于两个维度表，多维数据集的架构将成为雪花型，如下图所示。

在更改多维数据集的结构后，通常情况下必须用"完全处理"选项对该多维数据集进行处理，以便最终用户可以看到所做更改。有关更多信息，请参见处理多维数据集。

请参见

维度

度量值


多维数据集存储

可以使用不同的技术和多种模式存储多维数据集的数据和聚合。

多维数据集需要大量存储空间，用以包含多维结构中的数据和聚合。影响存储空间要求的一个因素是稀疏度。例如，如果一个维度包含销售代表，另一个维度包含地区，则 Northeast 销售代表与 Southwest 地区交集处的单元可能为空。

Microsoft SQL Server 2000 Analysis Services 使用以下几种技术将多维数据存储空间要求降到最低：

  • 存储空间不分配给空单元，这可以弥补稀疏度可能引起的性能问题。

  • 使用数据压缩。

  • 通过一个复杂的算法设计有效的汇总聚合，在不牺牲速度的前提下将存储空间要求降至最低。

存储选项使您得以通过选择相应的存储模式及多维数据集数据的位置，按照自己的需要创建 OLAP 存储策略。

有关更多信息，请参见分区存储和聚合。

分区

多维数据集可划分为分区，每个分区均可用不同的存储模式来存储。例如，可以创建一个多维数据集，其中包含若干年的事务的数据，然后以年份为边界进行分区。可在聚合百分比高的多维 OLAP (MOLAP) 结构中存储当前年份的分区，以快速响应用户。可使用混合 OLAP (HOLAP) 存储上一年的分区，以提供更好的汇总查询响应，同时降低存储空间需要。可以将上一年之前各年份的数据保存在一个或多个聚合百分比低的关系 OLAP (ROLAP) 分区中，以节省存储空间，同时在查询响应方面做出一定牺牲。

注意 对多维数据集进行分区及合并分区是高级技术。有可能会创建包含错误数据的分区多维数据集。有关特定预防措施的更多信息，请参见合并分区时事实数据表考虑事项和合并具有数据切片的分区。

最终用户看不到多维数据集的分区。在上面的例子中，将执行任何对整个多维数据集均有效的查询，但那些返回较早数据的查询需要的时间比请求较新信息的查询要长。

Analysis Services 提供分区向导以帮助创建分区。但是，有一点非常重要，即在定义分区时，各分区所包含的数据应互斥。如果多维数据集内部分数据包含在一个以上的分区中，则该多维数据集可能会对某些查询返回错误结果。

分区可存储在不同的分析服务器上，提供访问多维数据集存储空间的聚合方法，并在分析服务器间分布工作量。有关更多信息，请参见分布式分区多维数据集和远程分区。

可以将多维数据集的两个分区合并为一个分区，然后再将合并后的分区合并到另一个分区，以此类推，直到剩下一个分区为止。例如，可以将分别包含一个季度数据的四个分区合并为一个包含全年数据的分区。在合并分区时应考虑有关注意事项，以确保合并后的分区所包含的数据正确。

链接多维数据集

通过使用链接多维数据集代替多维数据集的复本，可大大降低不同分析服务器上一个多维数据集的多个复本的存储空间要求。链接多维数据集基于另一个分析服务器上的多维数据集，该多维数据集称为源多维数据集。链接多维数据集使用其源多维数据集的聚合，自身没有数据存储空间要求。因此，通过在一台分析服务器上维护单个源多维数据集，同时在需要该多维数据集的其它分析服务器上创建链接多维数据集，可以节省大量的存储资源。有关更多信息，请参见链接多维数据集。

实时多维数据集

实时多维数据集提供使用为实时 OLAP 而启用的关系 OLAP (ROLAP) 维度和分区的机会。ROLAP 分区可用来处理快速变化的事实数据表数据，消除了频繁重新处理多维数据集的需要以及由此导致的不方便和不可用问题。在这种情况下，为实时 OLAP 而启用的 ROLAP 分区不需要额外的存储空间，因为所有聚合都按需要执行。与 ROLAP 维度不同，ROLAP 分区如果要与实时 OLAP 一起使用，则必须满足特殊的要求。ROLAP 分布必须要么不包括存储的聚合，要么基于索引视图。有关这些要求的更多信息，请参见实时多维数据集。

合并分区

远程分区


多维数据集处理

在对多维数据集的结构进行更改之后，在浏览其数据之前必须先处理该多维数据集。请在完成下列任意一项操作之后处理多维数据集：

  • 生成多维数据集并设计它的存储选项和聚合

  • 更改多维数据集的结构（度量值、维度等）并将更改保存在多维数据集中

  • 更改多维数据集中使用的共享维度的结构

如果添加或更改多维数据集的数据仓库中的数据，则建议您进行处理以确保浏览多维数据集时结果精确。

在处理多维数据集时，将计算为多维数据集所设计的聚合，并为多维数据集装载已计算的聚合和数据。处理多维数据集包括读取维度表以从实际数据向级别填充成员、读取事实数据表、计算指定聚合以及在多维数据集中存储结果。在处理多维数据集之后，用户即可对其进行查询。

处理多维数据集有三种方法。如果要更改多维数据集的结构，则可能需要使用"完全处理"选项处理多维数据集。如果要向多维数据集内添加新数据，则可以使用"增量更新"选项处理多维数据集。若要清除并替换多维数据集的源数据，则可以使用"刷新数据"处理选项。

除了这三个互相排斥的选项之外，还有一个选项可以与此三项中的任何一项同时选定。该选项使您得以增量更新多维数据集的维度以作为多维数据集处理的一部分。该选项称为"增量更新该多维数据集的维度"。

这些选项在"处理多维数据集"对话框中可用，当右击 Analysis Manager 树窗格中的多维数据集并单击"处理"命令时将显示此对话框。

实时 OLAP

处理多维数据集可能需要很长时间，尤其对于其维度包含数百万成员的复杂多维数据集。频繁处理基于快速变化的数据（如联机事务处理 (OLTP) 数据库中的数据）的多维数据集会是一项困难的任务。此类多维数据集常常包含陈旧数据，而且其聚合基于不再有效的数据视图上。

实时 OLAP 提供当更改基础维度或事实数据表时，自动处理基于 Microsoft® SQL Server™ 2000 关系表的关系 OLAP (ROLAP) 维度和/或分区的方法。这使得可自动更新基于快速变化数据的实时多维数据集，而且使其始终可为最终用户所用。有关实时多维数据集的更多信息，请参见实时多维数据集。

请参见

处理多维数据集

更新和刷新多维数据集数据


多维数据集种类

Analysis Services 提供多种多维数据集。除本地多维数据集外的所有多维数据集都部分基于常规多维数据集。本地多维数据集可基于常规多维数据集上，但创建时不需要常规多维数据集。

下表显示各种多维数据集支持的功能。

 | 常规 | 虚拟 | 链接 | 脱机 | 写启用 | 分布式分区 | 实时
常规 | ---- | 否 | 否 | 否 | 是 | 是 | 是
虚拟 | 是** | 否 | 是** | 否 | 否 | 否 | 是*
链接 | 是*** | 是*** | 否 | 否 | 否 | 否 | 是
脱机 | 否 | 否 | 否 | ---- | 否 | 否 | 否
写启用 | 是 | 否 | 否 | 否 | ---- | 是 | 是
分布式分区 | 是 | 否 | 否 | 否 | 是 | ---- | 是
实时 | 是 | 是* | 是 | 否 | 是 | 是 | ----

* 仅当基于源实时多维数据集时支持该功能；虚拟多维数据集不直接支持实时更新。
** 虚拟多维数据集只能基于常规多维数据集或链接源多维数据集。
*** 链接多维数据集只能基于常规多维数据集或虚拟源多维数据集。


常规多维数据集

常规多维数据集是一种有别于链接多维数据集、虚拟多维数据集或本地多维数据集的多维数据集。（每个多维数据集必然属于常规、链接、虚拟或本地多维数据集当中的一种。）

常规多维数据集基于该多维数据集分区数据源中所指定的数据库中的表。而链接多维数据集和虚拟多维数据集则基于其它多维数据集。

一个常规多维数据集必须至少包含一个分区。假设已安装了 Microsoft SQL Server 2000 企业版的 Analysis Services，则常规多维数据集可包含多个分区。链接多维数据集、虚拟多维数据集和本地多维数据集不包含分区。

常规多维数据集有聚合，需要存储空间进行存储。而链接、虚拟和本地多维数据集则没有聚合。链接和虚拟多维数据集使用它们所基于的多维数据集的聚合。根据存储模式及多维数据集分区的类型，常规多维数据集的聚合数据存储在下列位置：定义该多维数据集的分析服务器 Data 文件夹下的子文件夹中；另一台分析服务器 Data 文件夹下的子文件夹中；该多维数据集分区数据源所指定的数据库中；或上述这些位置的组合。有关更多信息，请参见分区存储和远程分区。

如果常规多维数据集包含存储模式为多维 OLAP (MOLAP) 的分区，则该多维数据集还需要额外的存储空间来存储这些分区的源数据的复本。相反，链接和虚拟多维数据集则不需要用于此目的的存储空间。但是，存储模式为 MOLAP的本地多维数据集包含该本地多维数据集事实数据表数据的压缩复本。

常规多维数据集是唯一一种可以写启用的多维数据集。有关更多信息，请参见写启用的多维数据集。

在 Analysis Manager 中，常规多维数据集由下列图标标识：

请参见

聚合

多维数据集概述

链接多维数据集

本地多维数据集

分区

虚拟多维数据集


链接多维数据集

链接多维数据集基于在另一台分析服务器上定义和存储的另一个多维数据集。对最终用户而言，链接多维数据集的显示及使用与常规多维数据集相似。通过使用链接多维数据集，可在一台分析服务器上创建、存储并维护某个多维数据集，同时在多个分析服务器上可将该多维数据集作为链接多维数据集使用。这种方式有很多优点，如：

  • 与在多台分析服务器上存储和维护多维数据集的多个复本相比，总的存储及维护需求较低。

  • 一个组织单位可拥有多维数据集的所有权和独占更新权，同时可将该多维数据集作为链接多维数据集提供给其它单位使用。

  • 可将保密信息存储在安全的服务器计算机上的数据源和多维数据集中，同时可通过其它服务器计算机以链接多维数据集的方式使用这些信息。

说明 只有在安装 Microsoft® SQL Server™ 2000 企业版的 Analysis Services 之后，才能创建链接多维数据集。

这里有一些与链接多维数据集相关的术语。链接多维数据集所基于的多维数据集为源多维数据集。存储源多维数据集的分析服务器是发布服务器。存储链接多维数据集的分析服务器是订阅服务器。

链接多维数据集的源多维数据集可以是常规或虚拟多维数据集。

在创建链接多维数据集时，发布服务器与订阅服务器不能是同一台服务器。

链接多维数据集始终具有 ROLAP 存储模式但没有聚合。链接多维数据集使用其源多维数据集的聚合。

下列安全性要求适用于链接多维数据集：

  • 若要创建链接多维数据集，必须具有访问源多维数据集的权限。通过将您的用户名添加到发布服务器中的下面二项之一，即可获得该访问权限：OLAP Administrators 组或源多维数据集的多维数据集角色。如果该帐户没有访问该源多维数据集的权限，则对链接多维数据集的处理将失败。

  • 如果链接多维数据集在分析服务器上定义，而且使用 Microsoft Windows NT 集成安全性进行用户身份验证，则分析服务器服务 (MSSQLServerOLAPService) 登录帐户可以是具有源多维数据集访问权限的域用户帐户或系统帐户。但是，如果系统帐户用于创建链接多维数据集，虽然当不使用 HTTP 或安全 HTTP (HTTPS) 身份验证而且数据源连接字符串中的 Security Support Provider Interface (SSPI) 属性为空时，仍可创建链接多维数据集，但将收到警告信息。

  • 只要发布服务器能识别帐户凭据，也可使用由"安全性支持提供程序接口"(SSPI) 提供程序（如 Negotiate、Kerberos 或 NTLM）管理的数据源创建链接多维数据集。

  • 创建链接多维数据集时，也支持使用 HTTP 或安全 HTTP 身份验证的数据源。

  • 如果在多维数据集的发布服务器上强制单元安全性，则不可能定义指向该多维数据集的链接。

在 Analysis Manager 中，链接多维数据集由下列图标标识：

在某些情况下，链接多维数据集内的维度对其最终用户可能不适合，但可用一些功能（如维度的成员属性）解决此问题。例如，源多维数据集内包含为说英语的人而创建的维度，但链接多维数据集却要供说法语的人使用。或者，源多维数据集内包含 Calendar 维度，该维度是为将一年划分为四个学期的大学创建的，而链接多维数据集却要供将一年划分为两个学期的大学使用。如果发布服务器和订阅服务器的语言不同，则可以在订阅服务器上创建成员属性，以根据最终用户计算机上的区域设置 ID 来替换成员标题。通过向维度中添加成员属性，向表中添加列，该维度即可支持多语言。有关更多信息，请参见使用成员属性实现多语言支持。

在设计链接多维数据集之前，请考虑下列事项：

  • 链接多维数据集中不支持回写。

  • 链接多维数据集不能从包含共享或专用 ROLAP 维度的源多维数据集创建。

  • 如果已对源多维数据集做过结构更改，如添加或删除度量值或维度，则链接多维数据集必须重新处理，以便最终用户可看到这些更改。

  • 在发布服务器上注册并由源多维数据集引用的包含用户定义函数的 DLL 必须也在订阅服务器上注册，否则链接多维数据集无法引用它们。由于维护问题，不推荐已发布多维数据集使用用户定义函数。

  • 如果源多维数据集有带自定义成员公式或自定义汇总公式的成员，而且这些公式引用发布服务器上的其它多维数据集，那么在发布服务器上引用的多维数据集必须在订阅服务器上引用。通过创建另一个基于在公式中引用的多维数据集的链接多维数据集，可以在订阅服务器上进行引用。该链接多维数据集在订阅服务器上的名称必须与在发布服务器上的源多维数据集相同。

请参见

生成链接多维数据集

管理链接多维数据集


分布式分区多维数据集

分布式分区多维数据集是在多个分析服务器上使用分区的常规多维数据集。如果分区及其元数据没有存储在同一台分析服务器上，则分区称为远程分区，它在处理基于具有数百万个成员的维度的复杂多维数据集时很有用。

分布式分区多维数据集使查询的处理能够在多个分析服务器间分布，因为每个分区的处理在存储分区数据的分析服务器上执行。这样，当查询和处理分布式分区多维数据集时可提高性能。但是，网络速度可能影响性能的提高，因为信息需要从远程分析服务器传递到处理分布式分区多维数据集的分析服务器。

与其它多维数据集一样，分布式分区多维数据集在客户端应用程序可浏览它之前必须处理。处理分布式分区多维数据集建立与包含远程分区数据的远程分析服务器之间的链接。只有在定义分区及其父分布式分区多维数据集的分析服务器上才能查看及更新该远程分区的元数据。在远程分析服务器上则无法查看或更新这些元数据。因而，可以在单个分析服务器上管理包含远程分区的多维数据集及其分区。

请参见

远程分区

分区向导


虚拟多维数据集

虚拟多维数据集是一个逻辑多维数据集内多个多维数据集的组合，它和将其它视图和表组合在一起的关系数据库视图有些相似。在创建虚拟多维数据集时，需从基础组件多维数据集的维度和度量值的合并集合内选择度量值和维度。最终用户所看到的该虚拟多维数据集是一个多维数据集。

虚拟多维数据集也可只基于一个多维数据集，以只表现该多维数据集度量值和维度的所选子集。

虚拟多维数据集可以包含常规多维数据集或链接多维数据集作为组件多维数据集。

由于虚拟多维数据集只存储其定义，而不存储其组件多维数据集的数据，因此，它们实际上不需要物理存储空间。可以使用虚拟多维数据集创建已有多维数据集的组合及变形，而不需要使用大量的额外存储空间。

通过限制部分用户查看基础多维数据集时的访问权限，虚拟多维数据集可以提供很有意义的安全性功能。如果多维数据集的部分信息很敏感，不适合让所有用户查看，则可以从现有多维数据集创建虚拟多维数据集并略去敏感信息。然后创建两个安全角色：第一个角色中包含允许查看敏感信息的用户，第二个角色中包含其他用户。最后，向第一个角色授予该多维数据集的访问权限，向第二个角色授予该虚拟多维数据集的访问权限。

虚拟多维数据集在处理 OLAP 数据挖掘模型时也非常有用。例如，当创建 OLAP 挖掘模型时，也可创建维度以存储挖掘模型分析的结果以及包含该维度和挖掘模型的源多维数据集的虚拟多维数据集。

在 Analysis Manager 中，虚拟多维数据集由下列图标标识：

在创建虚拟多维数据集后，必须首先对其进行处理，然后才能通过客户端应用程序进行浏览。处理虚拟多维数据集将建立起指向其基础多维数据集内所指定的维度和度量值的内部链接。该链接操作执行速度非常快。但是，处理虚拟多维数据集将自动触发所有需要处理的基础多维数据集的处理过程，从而大大增加了时间。

请参见

生成虚拟多维数据集

数据挖掘模型

挖掘模型向导


本地多维数据集

本地多维数据集适用于分析服务器不可用的情况。本地多维数据集存储在一个便携式文件中，该文件可以存储在服务器计算机和非服务器计算机上。最终用户可以在不连接到分析服务器的情况下浏览本地多维数据集。本地多维数据集是唯一具有该功能的多维数据集。

本地多维数据集基于表。本地多维数据集没有聚合，也不包含分区。

本地多维数据集的存储模式既可以是多维 OLAP (MOLAP)，也可以是关系 OLAP (ROLAP)。如果存储模式为 MOLAP，则最终用户可以在不连接到其源数据的情况下浏览本地多维数据集。

与其它种类的多维数据集不同，本地多维数据集不是在 Analysis Manager 树窗格的对象层次结构中显示的对象。

在创建本地多维数据集之后，如果其源数据发生更改，则可对该本地多维数据集进行刷新，以包含源数据的新版本。

可使用 Microsoft Excel 2000 创建、刷新和浏览本地多维数据集。在 Excel中，本地多维数据集文件称为脱机多维数据集文件。有关更多信息，请参见 Excel 文档。

默认情况下，与本地多维数据集文件相关的文件扩展名为 .cub。

请参见

生成本地多维数据集

对象构架概述

PivotTable 服务


实时多维数据集

实时多维数据集是常规多维数据集，所使用的关系 OLAP (ROLAP) 分区或维度支持 Microsoft SQL Server 2000 Analysis Services 的实时 OLAP 功能。

使用常规多维数据集，当每次支持多维数据集的维度或分区的数据发生变化时，多维数据集必须重新处理以重新创建其聚合。这可能会长时间锁定该多维数据集，妨碍用户对其进行查询。对于经常发生变化的事实数据表数据，这种方法不切实际。经常采用的解决办法是允许多维数据集快速更新，如设计具有零聚合的多维数据集并编写使用决策支持对象 (DSO) 代码的应用程序，以在每当基础事实数据表数据发生变化时，挂起并继续执行多维数据集。但是，这些解决办法都不是很有效和实用。

实时 OLAP 通过使 ROLAP 维度和分区在其基础维度或事实数据表中的数据发生变化时能够自动进行自我刷新来解决此问题。当与 SQL Server 2000 共同作为关系数据源使用时，Analysis Services 可定期轮询数据源，以获得有关维度或事实数据表的更新通知，这些维度或事实数据表与为进行实时更新而启用的特定 ROLAP 维度或分区相关联。如果分析服务器发现维度或事实数据表已发生更改，它将用刷新分析服务器高速缓存并自动重新处理相关联的 ROLAP 维度或分区的方式响应该通知。

对于每个非重复 SQL Server 2000 服务器，分析服务器维护一个"监听程序"线程，该线程支持使用 SQL Server 2000 数据源的所有 ROLAP 维度和 ROLAP 分区的通知进程。分析服务器监视 ROLAP 维度或分区的 FROM 子句中指定的表，并在每当从 SQL Server 2000 收到有关所监视的某个表的通知时重新处理维度或分区。

客户端应用程序上实时 OLAP 的作用是允许实时查看 OLAP 数据，而不必象常规多维数据集那样，每次与多维数据集的维度或分区相关联的维度或事实数据表中的数据发生变化时重新处理多维数据集。实时 OLAP 扩展 Analysis Services 基于快速变化的数据构造多维数据集的能力，包括支持直接基于 OLTP 数据的实时多维数据集的能力，而没有这类多维数据集在 Analysis Services 的早期版本中所引起的维护和管理困难。

虽然 ROLAP 维度可轻松支持实时更新，但 ROLAP 分区必须满足特定限制才能支持此新特性。它们必须具有零聚合或者必须基于 SQL Server 2000 索引视图，而且不能为远程分区。有关 ROLAP 分区的索引视图的要求的更多信息，请参见 ROLAP 分区的索引视图。

通过使用维度编辑器或维度向导启用 ROLAP 维度上的实时更新，或使用存储设计向导在满足本主题前述限制的 ROLAP 分区上启用实时更新，可启用实时 OLAP。

请参见

维度编辑器 — 架构视图

维度向导

存储设计向导


写启用的多维数据集

如果写启用多维数据集，则客户端应用程序可以记录对该多维数据集数据的更改。这些更改称为回写数据，存储在与该多维数据集及其基础数据不同的表中，但会将其合并到查询结果中，就象它们是多维数据集数据的一部分。写启用的多维数据集使最终用户可通过更改单元值以及分析更改多维数据集数据所产生的影响来研究方案。

最终用户的更改将按与当前显示值的差值存储在回写表中。例如，如果最终用户将某个单元值从 90 改为 100，则回写表中将存储 +10 以及更改发生的时间和进行更改的最终用户的有关信息。累积更改的净效果显示给客户端应用程序。保留多维数据集内的原值，并在回写表中记录更改的审核记录。

对原子多维数据集单元和非原子多维数据集单元的更改的处理是不同的。（原子单元代表多维数据集中每个维度最低级别的成员，原子单元的值不能通过深化或切片减少。）如果多维数据集是写启用的，则可对原子单元进行更改。只有在客户端应用程序能提供一种方法，可以分发组成非原子单元的原子单元中的更改时，才能对非原子单元进行更改。客户端应用程序的编程人员可使用 UPDATE CUBE 语句来分发对非原子单元的更改。有关更多信息，请参见 UPDATE CUBE 语句。

无论客户端应用程序是否分发对非原子单元的更改，在评估查询时，都会将回写表中的更改应用到非原子单元和原子单元值，从而使最终用户可以查看更改对整个多维数据集的影响。

最终用户的更改保存在单独的回写表中，该表可以：

  • 转换为分区，以永久性地将更改合并到该多维数据集。本操作使该多维数据集变为只读。您可以指定筛选表达式以选择要转换的更改。

    说明 只有安装了 Microsoft® SQL Server™ 2000 企业版的 Analysis Services 才能转换为分区。

  • 废弃，以将多维数据集恢复到其原来状态。本操作使该多维数据集变为只读。

有关写启用多维数据集、将回写表转换为分区以及删除回写数据的更多信息，请参见维护写启用的多维数据集和写回数据。

只有在最终用户属于对该多维数据集单元有读/写权限的多维数据集角色时，才允许该最终用户在多维数据集的回写表中记录更改。对于每个多维数据集角色，您均可以对哪些多维数据集单元可以更新，哪些多维数据集单元不能更新进行控制。有关更多信息，请参见单元安全性。

写启用的多维数据集和写启用的维度是两个不同但又可以互补的功能。写启用的多维数据集使用户可以更新多维数据集单元，而写启用的维度使用户可以更新成员。可以选择组合使用这两个功能。例如，写启用的多维数据集可以不包括任何写启用的维度。写启用多维数据集和写启用维度使用不同的过程，维护二者安全性也使用不同的过程。有关写启用维度的更多信息，请参见写启用的维度。

如果要写启用数据源为 Microsoft Access 数据库的多维数据集，则不要在多维数据集及其分区或维度的数据源定义中使用用于 OLAP 服务的 Microsoft OLE DB 提供程序。而应使用 Microsoft Jet 4.0（或更高版本）OLE DB 提供程序。

只有当一个多维数据集的所有度量值均使用 Sum 聚合函数时，该多维数据集才能写启用。

说明 如果写启用多维数据集的任何一个度量值使用除 Sum 之外的聚合函数，则不能使用 Microsoft SQL Server 2000 Analysis Services 处理在 Microsoft SQL Server 7.0 OLAP 服务中创建的写启用多维数据集。

链接多维数据集和本地多维数据集不能写启用。虚拟多维数据集不能写启用，但如果该虚拟多维数据集的一个或多个组件多维数据集是写启用的，则完全出自这些写启用的多维数据集的虚拟多维数据集单元可以进行更新。


分区

分区用于存储和管理预先计算好的聚合，有时还用于存储和管理源数据。它们还提供在多个位置存储这样的数据以及优化其访问的灵活性；它们对于管理多维数据集随时间的增长也十分有用。

以下主题描述分区结构上需要考虑的事项。

主题 | 描述
分区简介 | 描述分区的基本特征，并提供多个分区的多维数据集的示例
分区结构 | 确定关于分区结构的要求
分区存储 | 描述三种存储模式之间的区别
ROLAP 分区的索引视图 | 确定 Microsoft SQL Server 2000 Analysis Services 创建聚合的索引视图所必需的条件
远程分区 | 描述远程分区及其限制
增量更新和分区 | 确定与增量更新分区有关的考虑事项


分区简介

分区允许多维数据集的源数据和聚合数据分布在多台服务器计算机中。多维数据集中的每个分区都可以有不同的数据源。这些数据源可以引用不同计算机中的关系数据库。此外，每一分区的聚合数据都可存储在定义了该分区的分析服务器计算机中，也可存储在别的分析服务器计算机中，或存储在该分区的源数据所在的同一数据库中。

每个多维数据集都至少有一个用于包含该多维数据集数据的分区；当定义多维数据集时，将自动为其创建一个分区。为多维数据集创建新分区时，该新分区就添加到多维数据集已有的分区集合中。多维数据集反映了其所有分区所包含的组合数据。多维数据集划分为分区的方式对于该多维数据集的最终用户是不可见的。可用分区向导创建或编辑分区。

说明 只有安装了 Microsoft® SQL Server™ 2000 企业版的 Analysis Services，才能在一个多维数据集内创建多个分区。

分区即是进行管理多维数据集的强大而灵活的工具，尤其是管理大的多维数据集。例如，某个包含销售信息的多维数据集可以含有一个存储过去每一年数据的分区和四个针对当年每一季度的分区。在年末这四个针对季度的分区可以合并成一个单独的针对全年的分区。

可以使用不同的选项组合方式存储分区，这些选项涉及源数据位置、聚合、数据位置、存储模式和聚合设计。这种灵活性使您得以按照需要设计多维数据集的存储策略。

数据源和存储

每个分区都有一个可以与该分区的多维数据集的数据源相同或不同的数据源。如果使用的是同一个数据源，则分区和多维数据集无须拥有相同的事实数据表。如果使用了不同的数据源，则必须引用这样的数据库，即其中所包含的一组表本质上应与多维数据集的架构所具有的表相同。允许有一些微小的变动，例如，事实数据表名称可以不同。

每个分区可以将其聚合数据存储在定义该分区的分析服务器计算机上，这是默认情况。分区聚合数据还可存储在别的分析服务器计算机上；该分区为远程分区。

每个分区都有一种存储模式，它决定了该分区的聚合数据是存储在分析服务器计算机上，还是存储在分区的数据源中所指定的数据库中。存储模式还决定了在分析服务器计算机上是否存储分区源数据的复本。

每个分区可以有一个不同的聚合设计，它决定了为该分区所创建的聚合的数目和内容。应用存储设计向导，通过指定对存储的利用进行约束或增加查询性能，可以精细制作分区的聚合设计。应用基于使用的优化向导，可以执行这些相同的操作，并且还可以借助先前向分区多维数据集发送的查询来优化聚合设计。可以选择用于进行优化的查询。

可以使用存储设计向导和基于使用的优化向导进行聚合数据的设计，但聚合设计是在处理分区或其多维数据集时创建的。

对象层次结构

分区直属于多维数据集。多维数据集的数据是其所有分区的数据的组合。如果添加或删除了某个分区，然后对多维数据集进行处理，则该多维数据集的数据会更改。分区的更改及后继处理也可以导致其多维数据集数据的更改。

在对象层次结构中，下列对象直属于分区：

  • 数据源

    分区有单个数据源。在默认情况下，该数据源即是分区多维数据集的数据源。可以从数据库中的数据源选择或在分区创建期间创建另一个数据源。

  • 聚合

    分区的聚合仅适用于该分区。

注意 如果多维数据集包含多个分区，而分区又经过不正确地定义或处理，则该多维数据集有可能含有不正确的数据。创建具有多分区的多维数据集之前，有必要了解需要考虑的事项。

处理分区

可用分区向导创建或编辑分区。

在 Analysis Manager 中，本地分区由以下图标所标识：

远程分区则由以下图标所标识：

分区创建后，一般情况下，聚合成为要创建的下一个对象。

对多维数据集所进行的某些结构上的更改，例如对其源数据、事实数据表或筛选的更改，要求重新创建多维数据集中所有分区的聚合。

可以合并同一个多维数据集中的两个分区。要合并的分区必须具有相同的存储模式和一样的聚合设计。分区向导包含为复制现有分区的聚合设计而设置的选项。

如果使用决策支持对象 (DSO) 编程，则与分区相关联的类别类型是 clsPartition。

示例：四分区多维数据集

下列关系图显示了四分区多维数据集如何在五个服务器计算机中分配其源数据和聚合数据。定义、存储设计、处理以及查询活动是在四个不同的时期进行的。

多维数据集 1996-1999 及其四个分区在分析服务器 1 上定义。这些分区的数据源指定了分区源数据的位置：

  • 分区 1996 的源数据存储在 SQL Server 1 上，该 SQL Server 1 安装在分析服务器 1 所在的同一台计算机上。

  • 分区 1997 的源数据存储在 SQL Server 2 上。

  • 分区 1998 的源数据存储在 SQL Server 3 上。

  • 分区 1999 的源数据存储在 SQL Server 4 上。

与分区 1996、1997 和 1998 不同，分区 1999 定义为一个远程分区。其聚合数据存储在另一台分析服务器计算机分析服务器 2 中（只有当该分区的存储模式为多维 OLAP (MOLAP) 或混合 OLAP (HOLAP) 时，聚合数据才存储在分析服务器计算机上；否则，数据存储在该分区的源数据所在的同一数据库中）。

说明 源数据可以存储在关系数据库产品而不是 SQL Server 的数据库中。有关更多信息，请参见规范和限制。

存储设计和处理

为多维数据集 1996-1999 中的每个分区选择一种存储模式并设计聚合。存储模式决定了聚合数据是将要存储在分析服务器计算机上（即存储模式为 MOLAP 或 HOLAP）还是与分区的源数据存储在一起（即存储模式为关系 OLAP (ROLAP)）。聚合设计决定要创建的聚合的数目。

当处理多维数据集 1996-1999 时，将创建其分区的聚合数据。对于分区 1996、1997 和 1998，聚合数据存储在分析服务器 1 中，或存储在分区的源数据所在的同一数据库中。对于分区 1999，聚合数据存储在分析服务器 2 中，或存储在分区的源数据所在的同一数据库中。

查询

当连接到分析服务器 1 的客户端向多维数据集 1996-1999 发出查询时，可能会引用下列源的一个或多个以解决该查询：

  • 客户端缓存

    只要所请求的单元值可以从存储在客户端缓存里的先前查询的结果中找到或派生出，则将从该客户端缓存中检索该值。

  • 聚合数据

    如果所请求的单元的值可从聚合数据中找到或派生出，则将从聚合数据中检索该值。

  • 源数据

    如果所请求的单元的值不能从聚合数据中找到或派生出，则将从存储在 OLAP 服务器计算机上的源数据中检索该值，前提是分区的存储模式为 HOLAP 或 ROLAP。

  • 存储在分析服务器计算机上的源数据的复本

    如果所请求的单元的值不能从聚合数据中找到或派生出，则从存储在分析服务器计算机中的源数据的复本中检索该值，前提是分区的存储模式为 MOLAP。

单个查询可从多个分区请求数据。

请参见

设计存储选项和聚合

管理多维数据集存储

基于使用优化性能

分区向导


分区结构

分区的结构必须与其多维数据集的结构相匹配。分区中还必须有用于定义多维数据集结构的维度和度量值的集合。因此，在创建分区时，分区将自动从其多维数据集中继承这个度量值和维度的集合；此集合无法在 Analysis Manager 内部编辑。

但是，分区及其多维数据集可以有不同的事实数据表和/或数据源。多维数据集中不同的分区可以有不同的事实数据表和/或数据源。在以上情况下，分区的和多维数据集的事实数据表和数据源之间需要具有更高的相似性，以确保分区和其多维数据集二者相匹配的结构不会破坏。

多维数据集及其所有分区都必须具有结构相同的事实数据表。在多维数据集度量值定义中用到的所有列都必须在所有事实数据表中出现并且同名。其它列可以在某些事实数据表中出现，而在另外的事实数据表中不出现。事实数据表的名称可以不同。

多维数据集及其分区的所有数据源必须引用含有与多维数据集定义中相同的架构的数据库。（可以在多维数据集编辑器"架构"选项卡中显示此架构。）在多维数据集架构中的所有维度表都必须在所有数据库中出现并且同名。满足此主题前文所述要求的事实数据表必须在每个数据库中出现。多维数据集架构中联接表的所有列都必须在所有数据库中出现并且同名。维度表在所有的数据库中必须有相同的结构。在多维数据集的级别定义和成员属性定义中所用到的所有列都必须在所有数据库中出现并且必须同名。其它列可以在某些数据库中出现，而在另外的数据库中不出现。所要求的架构之外的其它表可以在某些数据库中出现，而在另外的数据库中不出现。

请参见

多维数据集结构


分区存储

物理存储选项影响分区及其父多维数据集的性能、存储要求和存储位置。其中的一个选项是分区的存储模式。分区可以具有以下三种存储模式之一：

  • 多维 OLAP (MOLAP)

  • 关系 OLAP (ROLAP)

  • 混合 OLAP (HOLAP)

Microsoft® SQL Server™ 2000 Analysis Services 支持所有的三种存储模式。应用存储设计向导，可以选择最适合于分区的存储模式。或者也可使用基于使用的优化向导，以便根据已发送到多维数据集的查询选择存储模式并优化聚合设计。当使用三种存储模式之一时，还可以使用显式定义的筛选来限制读入到分区内的源数据。

当 MOLAP 和 ROLAP 存储模式用于维度和本地多维数据集而不是应用于分区时，它们的含义会有所不同。HOLAP 存储模式不能用于维度或本地多维数据集。

MOLAP

MOLAP 存储模式使得分区的聚合和其源数据的复本以多维结构存储在分析服务器计算机上。根据分区定义为是本地分区还是远程分区，该计算机可以是定义分区的分析服务器计算机，或别的分析服务器计算机。用于存储分区数据的多维结构位于分析服务器 Data 文件夹的子文件夹中。有关 Data 文件夹的更多信息，请参见分析服务器。

由于分析服务器计算机上驻留有源数据的一个复本，所以即使查询结果无法从分区的聚合中获得，也可以不用访问分区的源数据而解决查询。根据分区聚合的百分比和设计，MOLAP 存储模式为达到最快查询响应时间提供了潜在可能性。总而言之，MOLAP 更加适合于频繁使用的多维数据集中的分区和对快速查询响应的需要。

ROLAP

ROLAP 存储模式使得分区的聚合存储在关系数据库的表（在分区数据源中指定）中。但是，可为分区数据使用 ROLAP 存储模式，而不在关系数据库中创建聚合。有关更多信息，请参见设置聚合选项（存储设计向导）或设置聚合选项（基于使用的优化向导）。

同样，如果分区源数据存储在 SQL Server 2000 中，而且满足特定条件，则将创建索引视图而不创建表。有关更多信息，请参见 ROLAP 分区的索引视图。

与 MOLAP 存储模式不同，ROLAP 不会使源数据的复本存储起来；当结果无法从聚合或客户端高速缓存派生时，将访问分区的事实数据表以回答查询。在 ROLAP 存储模式下，查询响应一般较其它两种存储模式下要慢。ROLAP 通常用于不经常查询的大数据集，如年份较早的历史数据。

说明 如果数据源为 Analysis Services（即如果提供程序是用于 Analysis Services 的 Microsoft OLE DB 提供程序），则无法为采用 ROLAP 存储模式的分区创建聚合。

HOLAP

HOLAP 存储模式结合了 MOLAP 和 ROLAP 二者的特性。同 MOLAP 一样，HOLAP 使得分区的聚合按多维结构存储在分析服务器计算机上。HOLAP 不会使源数据的复本存储起来。对于只访问包含于分区聚合中的汇总数据的查询，HOLAP 与 MOLAP 特性相同。访问源数据的查询（例如深化至原子多维数据集单元，而该单元没有对应的聚合数据）必须从关系数据库中检索数据，并且将不如源数据存储在 MOLAP 结构中那样快速。

按 HOLAP 存储的分区小于同一个按 MOLAP 存储的分区，而比 ROLAP 分区响应涉及汇总数据的查询要快。一般情况下，HOLAP 存储模式适用于要求对基于大量源数据的汇总能够实现快速查询响应的多维数据集中的分区。

请参见

聚合

设计存储选项和聚合

基于使用优化性能

维度存储模式


ROLAP 分区的索引视图

如果分区的存储模式为关系 OLAP (ROLAP)，并且其源数据存储在 Microsoft SQL Server 2000 中，则 SQL Server 2000 Analysis Services 将尝试创建索引视图以包含分区的聚合。如果 Analysis Services 无法创建索引视图，它将自动生成并使用聚合表以代替索引视图。当 Analysis Services 处理在 SQL Server 2000 上创建索引视图的会话要求时，聚合的索引视图的创建和使用需要 ROLAP 分区以及其架构中的表满足下列条件：

  • 分区不能包含使用聚合函数 Min 或 Max 的度量值。

  • ROLAP 分区架构中的每个表必须只能使用一次。例如，架构不能包含 "dbo"."Address" AS "Customer Address" 和 "dbo"."Address" AS "SalesRep Address"。

  • 每个表都必须是表而不是视图。

  • 分区架构中的所有表名都必须具有合法的所有者名称，例如 "dbo"."Customer"。

  • 分区架构中的所有表都必须具有相同的所有者，例如，不能有类似如下所示的 FromClause："tk"."customer"、"john"."store" 或 "dave"."sales_fact_1999"。

  • 分区度量值的源列不能为空。

  • 视图中使用的所有表在创建时都必须将以下选项设为 ON：
    • ANSI_NULLS

    • QUOTED_IDENTIFIER
  • SQL Server 2000 中索引键的总大小不能超过 900 字节。当处理 CREATE INDEX 语句时，SQL Server 2000 将根据固定长度键列断言该条件。但是，如果索引键中有可变长度列，SQL Server 2000 将为基表的每次更新断言该条件。因为不同的聚合有不同的视图定义，所以使用索引视图的 ROLAP 处理可能成功，也可能失败，这要取决于聚合设计。

  • 创建索引视图的会话时以下选项必须为 ON：ARITHABORT、CONCAT_NULL_YIELDS_NULL、QUOTED_IDENTIFIER、ANSI_NULLS、ANSI_PADDING 和 ANSI_WARNING。该设置可以在 SQL Server 企业管理器中进行。

  • 创建索引视图的会话时以下选项必须为 OFF：NUMERIC_ROUNDABORT。该设置可以在 SQL Server 企业管理器中进行。

有关 SQL Server 2000 上索引视图的要求的更多信息，请参见创建索引视图。

请参见

实时多维数据集

远程分区


远程分区

远程分区的数据存储在一个分析服务器计算机上，而不存储在包含分区及其父多维数据集的定义（即元数据）的服务器计算机上。远程分区在分区及其父多维数据集所定义到的同一分析服务器上进行管理。

当创建远程分区时，将指定存储分区数据的分析服务器计算机。该分析服务器计算机称为远程分区的远程分析服务器。

说明 如果管理服务器计算机运行的是 SQL Server 2000 Analysis Services，则远程服务器计算机必须安装有 Microsoft® SQL Server 2000 Analysis Services。运行 SQL Server 7.0 OLAP 服务的服务器计算机上的远程分区不受支持。

根据远程分区的存储模式，下列数据将存储到其远程分析服务器上。

存储类型 | 存储
MOLAP | 分区的聚合和分区源数据的复本
HOLAP | 分区的聚合
ROLAP | 无分区数据

这样，如果一个多维数据集包含存储在多个远程分析服务器上的多个远程多维 OLAP (MOLAP) 或混合 OLAP (HOLAP) 分区，则该多维数据集将在那些分析服务器之间分发其数据。

如果若干个远程分区包含于多维数据集中，则该多维数据集的内存占用和 CPU 利用率将得以重新分配。例如，当处理远程分区时（单独处理或作为其父多维数据集的一部分加以处理），内存和 CPU 利用率的绝大部分都是在远程分析服务器上进行的。

只有在分区及其父多维数据集所定义到的分析服务器上才能查看及更新该远程分区的元数据。在远程分析服务器上则无法查看或更新这些元数据。因而，可以在单个分析服务器上管理包含远程分区的多维数据集及其分区。

在 Analysis Manager 中，远程分区由其唯一的图标所标识：

若要创建远程分区，请使用分区向导。在"指定分区类型"步骤中，单击"远程"，然后选择一个远程分析服务器。有关更多信息，请参见创建分区。

若要创建或维护远程分区，在定义分区的分析服务器和该分区的远程分析服务器的 OLAP Administrators 组中都必须有您的用户名。

远程分区只能与具有同一个远程分析服务器的其它远程分区合并。

远程分区中的数据不与数据库一起存档或还原。还原一个具有远程分区的数据库后，必须处理该远程分区。有关存档和还原数据库的更多信息，请参见存档和还原数据库。若要处理分区，请参见如何处理分区。

如果远程分区是在分析服务器上定义的，则分析服务器服务的登录帐户 (MSSQLServerOLAPService) 必须是域用户帐户。否则，远程分区的处理将失败。如果帐户更改，则必须重新处理远程分区或者重新保存该分区。通过在 Analysis Manager 中使用分区向导编辑分区并在不做更改的情况下完成向导，或者通过使用客户端应用程序（使用决策支持对象 (DSO)）在不做更改的情况下更新分区，来重新保存远程分区。每一操作都将重新同步分析服务器上定义的远程分区。

说明 不支持对远程分区的并行处理。

包含远程分区的多维数据集不能包含写启用维度。有关写启用维度的更多信息，请参见写启用的维度。

请参见

分区向导


增量更新和分区

在多分区多维数据集中创建及管理分区时，必须十分留心确保多维数据集数据的准确性。虽然这种留心通常不适用于单分区多维数据集，但当对这些多维数据集进行增量更新时就会十分适用。

增量更新某个多维数据集时，将会创建一个临时分区并且该分区将与某个现有分区合并。运行增量更新向导时，需要指定该临时分区的数据源和事实数据表。还可以指定一个筛选以限制临时分区的内容。如果多维数据集包含多个分区，则须指定要与临时分区合并的分区。如果多维数据集只有一个分区，则临时分区将与该分区合并。

为确保多维数据集数据的准确性，在任何多维数据集上执行增量更新之前，请确保了解与适用于多分区多维数据集的数据完整性有关的特别注意事项。有关更多信息，请参见管理分区。

请参见

处理多维数据集


聚合

聚合是预先计算好的数据汇总，由于在问题提出之前已经准备了答案，聚合可以改进查询响应时间。例如，当数据仓库事实数据表中包含有数十万行时，如果不得不扫描事实数据表以计算答案，则请求某个特定产品系列每周销售总额的查询需花费很长时间。但是，如果用于回答此查询的汇总数据已经预先计算好，则几乎可以立即响应。预先计算汇总数据是 OLAP 技术快速响应时间的基础。

多维数据集是 OLAP 技术将汇总数据组织成为多维结构所使用的方式。维度及其层次结构级别反映了可以向多维数据集提出哪些查询。聚合按维度所指定的坐标存储在多维结构单元中。例如，问题"What were the sales of product X in 1998 for the Northwest region?"（"1998 年产品 X 在西北地区的销售额是多少？"）涉及到三个维度（product、time 和 geography）和一个度量值 (sales)。在多维数据集中坐标 (product X, 1998, Northwest) 处 sales 单元的值就是这个问题的答案，这是一个单一的数值。

其它问题可能会返回多个值，例如，"What were the sales of hardware products by quarter by region for 1998?"（"1998 年硬件产品按季度和地区的销售额如何？"）。这类查询会从满足所指定条件的坐标处返回很多单元集合。查询返回的单元数目取决于 product 维度 hardware 级别中的项目数、1998 年的四个季度和 geography 维度中的地区数目。如果所有的汇总数据都已经预先计算到聚合中，则类似这种查询的响应时间仅仅取决于提取指定单元所需的时间。无需从事实数据表中计算或读取数据。

对多维数据集中所有可能的聚合进行预先计算可以给所有查询带来几乎最快的响应时间。但是，聚合的存储和处理需要大量时间。存储要求不仅取决于维度和度量值的数目，而且还取决于维度中级别的数目和每一级别成员的数目。

在存储要求和预先计算好的可能聚合百分比之间有一个权衡关系。如果未曾预先计算聚合 (0%)，则在存储基本数据所必须的存储空间以外几乎不需要其它的存储空间。但在这种情况下查询响应时间将可能变得非常慢，因为每一个查询的答案都必须从基本数据中计算得出。为了回答上面第一个查询——"What were the sales of product X in 1998 for the Northwest region"（"1998 年产品 X 在西北地区的销售额是多少"），返回单一数值可能要读取数千行数据，再从每一行提取销售额并计算总和。

Microsoft® SQL Server™ 2000 Analysis Services 采用了一种复杂算法来选择要进行预先计算的聚合，这样其它聚合就可以很快通过预先计算好的值计算出来。例如，如果时间 (time) 维度中月份 (month) 级别的聚合已经预先计算好，则某个季度的计算只要求对三个数字进行汇总，从而可以很快计算出结果。此项技术在保存存储时对查询响应时间影响很小。

存储设计向导提供某些选项，允许指定存储和算法的百分比约束，以便取得查询响应时间和存储要求之间令人满意的权衡关系。有关使用存储设计向导的更多信息，请参见设计存储选项和聚合。基于使用的优化向导允许您通过分析客户端应用程序所提交的查询来调整多维数据集的聚合设计。可以调整多维数据集的聚合设计，以便能对频繁查询提供快速响应，对非频繁查询提供稍慢的响应，从而不会严重影响多维数据集所需的存储。有关使用基于使用的优化向导的更多信息，请参见基于使用优化性能。

聚合在前面所述的向导中进行设计，在处理多维数据集或分区（聚合即为之设计）时得以创建。聚合创建后，如果多维数据集的结构更改或者多维数据集源表中的数据有所增加或更改，通常都有必要重新设计多维数据集的聚合并重新处理该多维数据集。有关更多信息，请参见处理多维数据集。

在对象构架概述中显示的对象层次结构里，聚合直接从属于分区。聚合通常从属于一个特定的分区，但如果一个多维数据集只有一个分区，则可以认为其聚合从属于这个多维数据集。因此，如果前面所述的向导在一个多维数据集上运行，则仅当该多维数据集包含多个分区时才需要选择分区。

依据存储模式和分区类型，分区的聚合可存储在下列三个位置之一。

存储模式 | 类型 | 聚合的位置
多维 OLAP (MOLAP) 或混合 OLAP (HOLAP) | 本地 | 在其上定义该分区的分析服务器 Data 文件夹的子文件夹
多维 OLAP (MOLAP) 或混合 OLAP (HOLAP) | 远程 | 创建分区时指定的远程分析服务器 Data 文件夹的子文件夹
关系 OLAP (ROLAP) | 本地或远程 | 分区数据源中指定的数据库中的专用表或索引视图

说明 可以对分区的数据使用 ROLAP 存储模式，而不用在关系数据库中创建聚合。有关更多信息，请参见设置聚合选项（存储设计向导）或设置聚合选项（基于使用的优化向导）。

有关 Data 文件夹的更多信息，请参见分析服务器。

聚合创建后，接下来要创建的对象通常是角色。有关更多信息，请参见角色。

如果使用决策支持对象 (DSO) 编程，则与聚合相关联的类的类型是 clsAggregation。有关更多信息，请参见 clsAggregation。

请参见

分区

远程分区

分区存储


角色

当最终用户通过客户应用程序连接到分析服务器时，使用角色控制最终用户对多维数据集数据或数据挖掘模型的访问。每个角色定义包括一列 Microsoft Windows NT 4.0 或 Microsoft Windows 2000 用户帐户和组，并指定所允许的访问类型和范围。

Microsoft SQL Server 2000 Analysis Services 包括三种类型的角色：

  • 数据库角色

    数据库角色是在 Analysis Services 数据库级别上定义的，它可以被指派给数据库中的多个多维数据集，从而授予该角色的用户对这些多维数据集的访问权。这种分配将创建与数据库角色同名的多维数据集角色。数据库角色将为同名的多维数据集角色提供默认值。有关更多信息，请参见数据库角色。

  • 多维数据集角色

    多维数据集角色是当将数据库角色指派给一个多维数据集时在多维数据集级别上创建的，它仅适用于该多维数据集。多维数据集角色中的默认值是从同名的数据库角色中派生的，但这些默认值中的一部分可在多维数据集角色中用其它值替代。多维数据集角色包含一些数据库角色中没有的额外选项，例如单元安全性。有关更多信息，请参见多维数据集角色。

    在对多维数据集各部分授予"读"和"读/写"访问权时均有很大的灵活性。可以指定角色可以对哪些维度成员和多维数据集单元进行查看和更新。有关更多信息，请参见维度安全性和单元安全性。

  • 挖掘模型角色

    与多维数据集角色类似，当将数据库角色指派给一个挖掘模型时，在挖掘模型级别上创建挖掘模型角色，而且挖掘模型角色仅适用于该模型。挖掘模型角色的默认值是从同名的数据库角色中派生的，但在挖掘模型角色中可以替代角色成员资格。有关更多信息，请参见挖掘模型角色。

创建安全角色

数据库、多维数据集和挖掘模型角色

安全性和身份验证


数据库角色

数据库角色应用于单个数据库，它包括一列 Windows NT 4.0 或 Windows 2000 用户帐户和组。当最终用户通过客户应用程序连接到分析服务器时，数据库角色中的规范即应用于他们对分析服务器上对象的访问。数据库角色不是用来授权或拒绝对于对象的管理访问。

通常，数据库角色创建后指派给多维数据集或数据挖掘模型，每一指派都授予对多维数据集或挖掘模型的访问权，并且创建一个与数据库角色同名的多维数据集或挖掘模型角色。数据库角色为多维数据集或挖掘模型角色提供默认值，然后即可调整多维数据集角色，使其为多维数据集中的不同元素提供不同的许可；然而，对挖掘模型角色的自定义则仅限于更改访问该模型的角色成员资格。

在数据库角色中，可以控制对数据库中维度的访问，可以指定角色能够查看维度的哪些级别和成员。如果维度是写启用的，则可以指定角色能够对哪些级别和成员进行更新。

数据库角色是直接从属于数据库的，一个数据库中的数据库角色仅适用于该数据库和其中的对象。

在对象层次结构中，命令直接从属于数据库角色，这些命令是角色命令。角色命令只能为特定的数据库角色执行，例如，作为角色命令而创建的计算成员，只能显示给某个数据库角色中的最终用户，必须通过使用 clsRoleCommand 以编程方式创建和维护角色命令。

在 Analysis Manger 中，数据库角色是如下图标标识：

在 Analysis Manger 中，数据库角色是通过数据库角色管理器和"数据库角色"对话框创建和维护的。将数据库角色指派给多维数据集，是在"数据库角色"对话框的"多维数据集"选项卡中或者在多维数据集角色管理器中完成的。

如果用决策支持对象 (DSO) 编程，那么与数据库角色相关的类的类型就是 clsDatabaseRole。

管理员安全性

clsDatabaseRole

clsRoleCommand

创建数据库角色

多维数据集角色

数据库、多维数据集和挖掘模型角色

数据挖掘模型

数据库角色管理器

数据库安全性

维度安全性

挖掘模型角色


多维数据集角色

多维数据集角色适用于单个多维数据集，它包括一列 Windows NT 4.0 或 Windows 2000 用户帐户和组，并指明它们在多维数据集中可以访问的对象以及对这些对象所具有的访问类型。

当最终用户通过某个客户应用程序连接到分析服务器时，多维数据集角色中的规范适用于他们对分析服务器中多维数据集的访问。多维数据集角色不是用来授权或拒绝对于对象的管理访问。有关管理访问的详细信息，请参见管理员安全性。

通常，数据库角色创建后被指派给多维数据集，每一指派都授予对多维数据集的访问权，并且创建一个与数据库角色同名的多维数据集角色。数据库角色为多维数据集角色提供默认值，然后可以针对多维数据集专门定义该多维数据集角色。

在多维数据集角色中，可以控制对多维数据集中维度的访问。可以指定角色能够查看维度的哪些级别和成员。如果维度是写启用的，则可以指定角色能够对哪些级别和成员进行更新。有关更多信息，请参见维度安全性。

在多维数据集角色中，还可以控制对多维数据集中的单元的访问。可以指定角色能够查看哪些单元。如果多维数据集是写启用的，还可以指定角色能够更新哪些单元。有关更多信息，请参见单元安全性。

在多维数据集角色中，还可指定角色能否对单元的源数据进行钻取。要使用这项功能，必须还要启用该多维数据集或者至少其中一部分的钻取特性。有关更多信息，请参见指定钻取选项。

多维数据集角色是直接从属于多维数据集的。一个多维数据集中的多维数据集角色仅适用于该多维数据集以及其中的对象。然而，对一个多维数据集角色内某些规范的更改，将传播到与其同名的数据库角色和所有多维数据集角色。这些规范包括用户帐户和用户组的列表，以及对维度的读/写权限。

在对象层次结构中，命令直接从属于多维数据集角色。这些命令是角色命令。角色命令只能为特定的多维数据集角色执行。例如，作为角色命令而创建的计算成员，它仅显示给某个多维数据集角色中的最终用户。必须通过使用 clsRoleCommand 以编程方式创建和维护角色命令。

在 Analysis Manager 中，多维数据集角色由如下图标标识：

在 Analysis Manager 中，多维数据集角色是通过多维数据角色集管理器和"多维数据集角色"对话框创建和维护的。将数据库角色指派给多维数据集，是在"数据库角色"对话框的"多维数据集"选项卡中或者在多维数据集角色管理器中完成的。

多维数据集角色通常是为部署多维数据集而最后创建的对象。

如果用决策支持对象 (DSO) 编程，那么与多维数据集角色相关的类的类型就是 clsCubleRole。

clsCubeRole

clsRoleCommand

创建多维数据集角色

多维数据集角色管理器

多维数据集角色对话框

多维数据集安全性

数据库角色

数据库、多维数据集和挖掘模型角色

挖掘模型角色

对象构架概述


挖掘模型角色

挖掘模型角色适用于单个挖掘模型，而且包括有权访问该模型的一列 Microsoft Windows NT 4.0 或 Microsoft Windows 2000 用户帐户和组。

当最终用户通过某个客户应用程序连接到分析服务器时，挖掘模型角色中的规范适用于他们对分析服务器中挖掘模型的访问。挖掘模型角色不是用来授权或拒绝对于模型的管理访问。

通常，数据库角色创建后被指派给挖掘模型，每一指派都授予对模型的访问权，并且创建一个与数据库角色同名的挖掘模型角色。数据库角色为挖掘模型角色提供了默认成员，可以在挖掘模型角色的默认成员中增加或删除用户。

挖掘模型角色直属于挖掘模型。挖掘模型中的挖掘模型角色仅适用于该挖掘模型。但是，在挖掘模型角色中对角色成员的更改会传播给数据库角色及所有与发生更改的挖掘模型角色同名的挖掘模型角色。

在 Analysis Manager 中，挖掘模型角色是在挖掘模型角色管理器和"挖掘模型角色"对话框中创建和维护的。通过"数据库角色"对话框中的"挖掘模型"选项卡或挖掘模型角色管理器，可以将数据库角色指派给挖掘模型。

挖掘模型角色通常是为部署挖掘模型而最后创建的对象。

如果用决策支持对象 (DSO) 进行程序设计，则与多维数据集角色相关联的类的类型就是 clsMiningModelRole。

管理员安全性

数据挖掘模型

挖掘模型安全性


命令

命令由管理员定义，可在客户访问数据库、多维数据集或角色时自动执行。尽管"命令"这一术语在通常意义下使用非常普遍，但在本主题中是指在 Analysis Services 中用于特定目的的命令对象。

命令是可选的，通常用于增强多维数据集。

可以创建命令使最终用户得以在多维数据集上执行额外操作，或丰富、自定义其在客户端应用程序上的使用。例如，可以创建称为对策的命令类型，以允许最终用户选择多维数据集的一部分，并在其上开始操作。例如，他们可以打开 Internet 浏览器以显示有关某个特定成员的信息。也可以创建称为计算成员的其它命令类型，它可以将出自表达式的自定义成员添加到多维数据集内。

可以为数据库、多维数据集、数据库角色或多维数据集角色定义命令。命令直接从属于这四类对象。为数据库定义的命令称为数据库命令。必须通过使用决策支持对象 (DSO) 以编程方式创建和维护数据库命令。为多维数据集定义的命令称为多维数据集命令。可以在 Analysis Manager 中创建和维护多维数据集命令。也可通过使用 DSO 以编程方式创建和维护多维数据集命令。为数据库角色或多维数据集角色定义的命令称为角色命令。它们提供将命令限定给特定角色的灵活性。必须通过使用 DSO 以编程方式创建和维护角色命令。

在最终用户使用客户端应用程序访问数据库、多维数据集、数据库角色或多维数据集角色时执行命令。这些操作中的任何一项均触发为数据库定义的数据库命令。当任何最终用户浏览某个多维数据集或访问其元数据时即为开始访问该多维数据集。本操作将触发为该多维数据集定义的各种多维数据集命令。当属于数据库角色的最终用户访问与该数据库角色相关联的数据库时即为开始访问该数据库角色。本对策将触发为该数据库角色定义的角色命令。当某个多维数据集角色中的最终用户浏览与该多维数据集角色相关联的多维数据集时即为开始访问该多维数据集角色。本对策将触发为该多维数据集角色定义的角色命令。

可以创建的命令类型如下表所示。所有这些类型均可通过使用用于常规多维数据集的多维数据集编辑器或用于虚拟多维数据集的虚拟多维数据集编辑器作为多维数据集命令加以创建。

在多维数据集内，操作、计算成员或命名集之类的命令不能共用同一名称。各个命令必须具有唯一的名称。

命令类型 | 描述 | 有关更多信息，请参见
对策 | 最终用户发起的对选定的多维数据集或多维数据集的部分进行的操作。该操作可以用所选项目作为参数打开应用程序，也可以检索关于所选项目的信息。 | 对策
计算成员 | 一个维度成员，在运行时将使用定义计算成员时指定的表达式计算其值。 | 计算成员
命名集 | 维度成员集或为重复使用而创建的集合表达式，例如多维表达式 (MDX) 查询。 | 命名集
库注册 | 注册一个文件，该文件中包含一个或多个可在 MDX 中使用的函数。 | 库注册

决策支持对象

对象构架概述

检索架构信息


对策

对策是指最终用户启动的、在所选多维数据集或其某部分上执行的操作。操作可以通过将所选项目作为参数来启动应用程序，也可以检索有关所选项目的信息。

对策使最终用户得以根据分析结果进行操作。通过使用对策，最终用户可以超越传统的分析方法，对所发现问题和不足着手进行解决。对策还能将客户端应用程序从复杂的数据提供工具变为企业操作系统的一个完整部分。对策向最终用户提供一个简便的方法，可以从集中于特定数据跨越到将这些数据作为输入发送到运行的应用程序中。

例如，最终用户在浏览 Inventory 多维数据集时发现 white shoes（白鞋）的库存不足，即可在 white shoes（白鞋）成员上选择 Order 对策。本对策将启动一个新订单，在订单输入系统中订购白鞋。

在创建对策时可以体验到其灵活性。有多种类型的对策，可以启动不同的应用程序，也可以检索不同种类的信息。此外，还可以创建从多维数据集不同部分（包括维度、级别、成员和单元）触发的对策。还可以为多维数据集同一部分创建多个对策。还可以将字符串参数传送到所启动的应用程序以及指定显示给最终用户的对策标题。

可使用对策向导创建对策。有关更多信息，请参见创建对策。

最终用户若要使用对策，其客户端应用程序必须支持对策。

当最终用户访问命令对象所定义的对象时，命令对象会被自动执行，但如果该命令对象是一个对策，则该对策本身不会被自动执行。该命令的执行将创建对策，以便最终用户使用。对策在最终用户执行与客户端相关的且启动该操作的对策时才被执行。

对策向导中创建的对策也被保存，以便浏览包含对策的多维数据集时可使用它们。也可创建只在会话持续时间内有效而且不保存的对策。若要创建一个用于会话持续时间的对策，请使用 CREATE ACTION 语句。在使用决策支持对象 (DSO) 以编程方式创建对策时，本语句还会在 Statement 属性中用到。有关更多信息，请参见 CREATE ACTION 语句。

在 Analysis Manager 中，对策由以下图标标识：


计算成员

计算成员是维度成员，其值于运行时通过在定义计算成员时所指定的表达式计算而得到。计算成员也可定义为度量值。只对计算成员的定义进行存储，值则在需要答复查询时在内存中计算。

计算成员使您得以向多维数据集内添加成员和度量值，而不增加多维数据集的大小。尽管计算成员必须基于多维数据集内已存在的数据（例如成员），但是可以通过将数据与算术运算符、数字和各种函数进行组合而创建复杂的表达式。Analysis Services 中有一个包含 100 多个函数的库，而且允许您注册并使用其它函数库。

例如，假如某运输公司的管理人员想根据每单位体积所发生的利润确定运输哪种货物的利润率更高，他们使用包含维度 Cargo、Fleet 和 Time 以及度量值 Price_to_Ship、Cost_to_Ship 和 Volume_in_Cubic_Meters 的 Shipments 多维数据集，该多维数据集内没有代表收益率的度量值。可以通过在下面表达式中使用现有度量值在该多维数据集内创建名为 Profit_per_Cubic_Meter 的计算成员：

([Measures].[Price_to_Ship] - [Measures].[Cost_to_Ship]) /
[Measures].[Volume_in_Cubic_Meters]

下次浏览 Shipments 多维数据集时，Profit_per_Cubic_Meter 将与其它度量值一起显示。

若要创建计算成员，请使用计算成员生成器。有关更多信息，请参见创建计算成员和计算成员生成器。

在 Analysis Manager 中，计算成员由下面的图标标识：

计算成员有 Format String 属性，以控制显示给最终用户的单元值的格式。可在多维数据集编辑器或虚拟多维数据集编辑器的属性窗格中访问此属性。Format String 属性与度量值的 Display Format 属性接受同样的值。

尽管可保存在计算成员生成器中创建的计算成员，以便在浏览其多维数据集时使用，但也可只创建计算成员，而不保存。若要创建用于一个会话持续时间的计算成员，请使用 CREATE MEMBER 语句。在使用决策支持对象 (DSO) 以编程方式创建计算成员时，本语句还会在 Statement 属性中用到。若要创建用于单个查询持续时间的计算成员，请使用 SELECT 语句的 WITH 子句。

CREATE MEMBER 语句

显示格式

使用 WITH 创建计算成员


命名集

命名集是维度成员集或所创建的可以再度使用的集合表达式。例如，某个多维数据集内包含 Salesperson 维度，该多维数据集的最终用户希望有一个方便的方法，可以显示销售额最高的前 10 位销售员以及销售额最低的后 10 位销售员。可以创建两个命名集，分别用于每个销售员分组。然后，在客户端应用程序内，最终用户可以与维度相似的方式将命名集放置在一个轴上。

若要创建销售额最高的前 10 位销售员的命名集，请在命名集定义中使用下列表达式（按多维表达式 (MDX) 编写）：

TopCount([Salesperson].[Salesperson Name].Members,10,[Measures].[Sales])

若要创建销售额最低的后 10 位销售员的命名集，请在命名集定义中使用下列 MDX 表达式：

BottomCount([Salesperson].[Salesperson Name].Members,10,[Measures].[Sales])

命名集内可包含固定的成员集，也可包含能解析为集合的表达式。如果命名集内包含表达式（如上例所示），则其中的成员集会发生变化。

若要创建命名集，请使用命名集生成器。

最终用户要使用命名集，其客户端应用程序必须支持命名集。

在命名集生成器中创建的命名集被保存，以便浏览包含命名集的多维数据集时可使用它们。也可创建只在会话持续期间有效且不保存的命名集。若要创建用于一个会话持续时间的命名集，请使用 CREATE SET 语句。在使用决策支持对象 (DSO) 以编程方式创建命名集时，本语句还会在 Statement 属性中用到。若要创建用于单个查询持续时间的命名集，请使用 SELECT 语句的 WITH 子句。

在 Analysis Manager 中，命名集由以下图标标识：

创建命名集

CREATE SET 语句

命名集生成器

使用 WITH 创建命名集


库注册

如果文件中包含要在多维表达式 (MDX) 中使用的函数，可以对这些文件进行注册。本操作可以在Analysis Manager 中通过使用"注册函数库"对话框完成。在下列任意一个工具中单击"注册"按钮即可显示该对话框：

  • MDX 生成器

  • 计算成员生成器

  • 命名集生成器

用于库注册的命令包括 USE LIBRARY 语句，如果在"注册函数库"对话框中注册库，则会自动创建该语句。

无须注册 Analysis Services 函数库、Microsoft Excel 工作表函数库或 Microsoft Visual Basic for Applications Expression Services 函数库。这些函数库会自动注册。但是，Microsoft Excel 工作表函数库必须与要注册的 Analysis Services 分开安装。

注册函数库对话框

符合 MDX 语法的用户定义函数


成员属性

成员属性是维度成员的一个特性。它为最终用户提供关于成员的其它信息。有关维度成员的更多信息，请参见维度结构。

术语成员属性有时指成员的任意属性，包括与所有成员相关联的属性的标准集合。但在本主题中，成员属性指 Microsoft® SQL Server™ 2000 Analysis Services 中的成员属性对象。这些对象是您创建的标准集合外的其它成员属性。

成员属性是可选的，但它们通常用于增强维度。

在一些客户端应用程序中可以方便地查看成员属性。显示成员属性的方法随不同的应用程序而不同；例如，最终用户可以右击某个成员查看其成员属性。这种显示无须打乱默认的视图就可以获得关于成员的有用信息。

成员属性有多种用途。除提供关于成员的信息外，在分析多维数据集的数据时，还可在查询中使用成员属性为最终用户提供多个选项。成员属性还可作为虚拟维度中级别的基础。有关更多信息，请参见虚拟维度。

成员属性仅从属于级别。成员属性在级别中创建，该级别应包含应用该成员属性的那些成员。

在维度编辑器中，通过将包含成员属性值的列与包含成员的级别相关联，可以创建成员属性。例如，若要创建 Store Name 级别中成员的成员属性 Store Type，须确保 Store Type 列与 Store Name 列在相同的表中，然后将 Store Type 作为成员属性插入到 Store Name 级别中。

可以使用维度编辑器在共享维度中创建成员属性。在 Analysis Manager 中，成员属性由以下图标标识：

如果您在编程时使用决策支持对象 (DSO)，则与成员属性相关联的类的类型是 clsMemberProperty。

请参见

clsMemberProperty

创建成员属性

维度编辑器 — 数据视图


使用成员属性实现多语言支持

可以使用成员属性的 Member Caption 属性以客户在本地指定的语言显示成员标题和成员属性值。例如，如果一个在法国的最终用户从使用"法语"区域设置的工作站上访问多维数据集，则此最终用户看到的成员标题和成员属性值就是法文的。但是，如果一个在德国的最终用户从使用"德语"区域设置的工作站上访问同一个多维数据集，则此最终用户看到的成员标题和成员属性值就是德文的。实现成员标题的多语言支持与实现成员属性值的多语言支持虽有相似之处，但彼此独立。您可以做到只实现其中一种多语言支持。

若要实现成员标题的多语言支持，则包含这些成员的维度表对每种所支持的语言都必须包含一列。每一列都必须包含用于所支持语言之一的成员标题的值。最好有一列专用于默认语言。当工作站上的区域设置与任何专门支持的语言不一致时，此列为最终用户提供成员标题。当未定义类型 Caption 的成员属性时，成员名称将用作成员标题。

说明 若要实现成员标题的多语言支持，客户端应用程序必须使用成员构架行集和轴构架行集的 MEMBER_CAPTION 列来提供显示的成员名称。

若要实现成员属性值的多语言支持，则包含这些成员的维度表对每种所支持的语言都必须包含一列。该列必须包含与所支持的某种语言对应的成员属性值。最好有一列专用于默认语言。当工作站上的区域设置与任何专门支持的语言不一致时，此列为最终用户提供成员属性值。

后台示例

一个连锁咖啡店的 Inventory 多维数据集包含一个 Item 维度，此维度包含各店持续供应的商品项目 (Item) 的成员。这些成员位于 Item Name 级别中。计划在此级别中使用一个称为 Rotation Interval 的成员属性。在添加列以支持法语、德语以及默认语言英语的成员标题和成员属性值后，Item 维度表（名为 Item）如下所示：

Item ID | French Item Name | German Item Name | English Item Name | French Rotation Interval | German Rotation Interval | English Rotation Interval
1 | Café | Kaffee | Coffee | Mensuellement | Monatlich | Monthly
2 | Sucre | Zucker | Sugar | Annuellement | Jahrlich | Yearly
3 | Crème | Kreme | Cream | Par semaine | Wochentlich | Weekly
4 | Lait | Milch | Milk | Par semaine | Wochentlich | Weekly

成员名称示例

为了支持在法国工作站上以法文显示成员名称、在德国工作站上以德文显示成员名称，而在所有其它工作站上以英文显示成员名称，可在 Item Name 级别中创建具有下列属性的三个成员属性。可以在维度编辑器中设置这些属性。

  • 用于法文的成员属性
    • Name 属性值为法文的 Member Name

    • Source Column 属性值为 "Item"."French Item Name"

    • Language 属性值为 French

    • Type 属性值为 Caption

    • Caption 属性值为 MEMBER_CAPTION
  • 用于德文的成员属性
    • Name 属性值为德文的 Member Name

    • Source Column 属性值为 "Item"."German Item Name"

    • Language 属性值为 German

    • Type 属性值为 Caption

    • Caption 属性值为 MEMBER_CAPTION
  • 用于英文（默认语言）的成员属性
    • Name 属性值为英文的 Member Name

    • Source Column 属性值为 "Item"."English Item Name"

    • Language 属性值为 (All)

    • Type 属性值为 Caption

    • Caption 属性值为 MEMBER_CAPTION

Name 属性值可以改变。

英语成员属性的 Language 属性值 (All) 表明英语为默认语言。

这些成员属性不会作为客户端应用程序的成员属性出现。

成员属性值示例

为了支持在法国工作站上以法文显示 Rotation Interval 成员属性值、在德国工作站上以德文显示 Rotation Interval 成员属性值以及在所有其它工作站上以英文显示 Rotation Interval 成员属性值，可在 Item Name 级别中创建具有下列属性的三个成员属性。可以在维度编辑器中设置这些属性。

  • 用于法文的成员属性
    • Name 属性值为法文的 Rotation Interval

    • Source Column 属性值为 "Item"."French Rotation Interval"

    • Language 属性值为 French

    • Type 属性值为 Regular

    • Caption 属性值为 Rotation Interval
  • 用于德文的成员属性
    • Name 属性值为德文的 Rotation Interval

    • Source Column 属性值为 "Item"."German Rotation Interval"

    • Language 属性值为 German

    • Type 属性值为 Regular

    • Caption 属性值为 Rotation Interval
  • 用于英文（默认语言）的成员属性
    • Name 属性值为 Rotation Interval

    • Source Column 属性值为 "Item"."English Rotation Interval"

    • Language 属性值为 (All)

    • Type 属性值为 Regular

    • Caption 属性值为 Rotation Interval

Name 属性值可以改变，但是每个值都应当使用用户的语言。

英语成员属性的 Language 属性值 (All) 表明英语为默认语言。

Caption 属性值可能与 Rotation Interval 不同，但对所有语言则必须相同。

请参见

维度编辑器 — 数据视图


数据挖掘模型

在此版本中，Microsoft® SQL Server™ 2000 Analysis Services 引入了一种新特性，此功能称为数据挖掘，它将重要数据分析和预测能力集成到 Analysis Services 中。除 Analysis Manager 的功能扩展外，决策支持对象 (DSO) 和 PivotTable® 服务也都已经扩展其功能来支持这一强大的新特性。

  • Analysis Services 支持来自关系数据源和多维数据源这两者的数据挖掘。利用来自任何支持 OLE DB 访问的关系数据源的数据及来自通过 Analysis Services 创建的多维度多维数据集的数据，Analysis Services 算法能够培训数据挖掘模型。

  • 可扩展性使 Analysis Services 能够与第三方工具（如挖掘模型查看器组件）一起使用，从而提高了灵活性和性能。

  • 已使用用于数据挖掘规范的 OLE DB，从而增强了 OLE DB 支持。

  • 已经通过添加有助于设计、创建、培训和浏览数据挖掘模型的新向导和新工具升级了 Analysis Manager。也可以基于 OLAP 数据挖掘模型创建维度和虚拟多维数据集。

  • 已经通过添加 MiningModel 对象和其它辅助支持对象扩展了 DSO。

  • 按照与 Analysis Services 中所用的同样方式将数据挖掘集成到了 PivotTable 服务中。总之，PivotTable 服务将数据挖掘模型当作多维数据集：因而您可以创建本地数据挖掘模型，或从服务器多维数据集中检索信息等。


数据挖掘模型简介

数据挖掘模型是数据挖掘的中央对象，这是 Microsoft SQL Server™ 2000 Analysis Services 的一个新特性。数据挖掘模型是一个虚拟结构，它表示关系或多维数据的分组和预测分析。数据挖掘模型的结构在许多方面与数据库表的结构相似。但是，数据库表代表的是记录的集合（或记录集），而数据挖掘模型将记录的解释表示为规则和模式时，这些统计信息的组成称为事例。数据挖掘模型的结构表示定义数据挖掘模型的事例集，而所存储的数据则表示来自处理事例数据的规则和模式。

若要理解事例和事例集的组成，这里举一个为跟踪顾客定单而设计的数据库的例子。该数据库可能包含一个顾客数据表、一个定单数据表和一个定单项目表，如下所示。

给定表中的每条信息就是一个记录。对于每个顾客记录，可能有一个或多个定单记录，每个定单记录有一个或多个定单项目记录。定单记录和定单项目记录之间的关系意味着：对于每个顾客在此关系中可能存在许多记录。单个客户的相关数据的集合称作一个事例，而一组客户的相关记录的相同集合则称作一个事例集。定单项目信息可以看作是顾客事例的特性。

事例集只是查看物理数据的一种方式；实际上，相同的物理数据可以构造不同的事例集。客户事例集示例所依据的前提是您需要以客户作为焦点来挖掘定单项目信息。此焦点容易改变为以定单项目为焦点来挖掘客户的数据。此时物理数据不会更改，但是可以轻易构造独立的数据挖掘模型以反映焦点的更改，这样顾客信息就成为定单项目事例的特性。

由于这些信息本身就有层次结构特性，数据挖掘模型将事例集按数据挖掘列的集合的表现形式存储起来。每个数据挖掘列可以包含一组数据挖掘列而不是单个数据项目（如字符串或整数）；每个数据挖掘列可以包含单个数据项目或另一组列，等等。在客户事例示例中，对于每一客户示例，都有一个描述该客户的行。此行包含客户 ID 列和客户信息列，以及一个名为 Order Items 的列。Order Items 列包含了一组行。每一行描述与客户行中指定的客户相关的订单项目。下列关系图解释了此类事例集的结构。

在本例中，客户的一些特性（如年龄和性别）可能会用来对将来客户的行为进行进一步的分类和预测。数据挖掘过程中最重要的任务之一就是确定这些特性的每一个特性在分类和预测中的作用。

培训数据挖掘模型

若要确定数据挖掘模型中每个特性的相对重要性，该模型需经历称为挖掘模型培训的过程。在培训过程中，将向模型提供数据以便进行分析。然后，模型所用的数据挖掘算法以各种方式检查这些培训数据集并进行测试，以便在数据的分类和预测方面得到一些结论。

例如，决策树挖掘模型使用名为递归分区的过程根据事例集提供的特性将数据划分为若干个分区。然后，它将这些新建分区划分为更多的分区，并且一直划分下去，直到无法执行有用的划分。该算法将自行确定有用划分的定义；这会因所采用技术的不同而有所变化。

在递归分区的过程中，按照用来确定划分的特性来收集信息。例如，如果使用 Age 列，模型将先把年龄值分为两组：等于或大于某一特定年龄的一组；小于某一特定年龄的一组。通过分析培训集中符合以上分类中某一分类的记录的数量，就可以确定该分类的可能性。随着划分的继续进行（或划分深度的增加），可以收集到更多有关该培训数据的可能性信息。当决策树无法对某个给定的分类进行有用的划分时，这里的决策树级别就称为叶节点。叶节点包含符合决策树中特定路径的培训数据的信息。叶节点中有关培训的信息称作分发，分发作为数据挖掘模型的一部分来保存。

所以，根据所提供的培训数据集，决策树挖掘模型将建立有关客户事例集中特性的必然可能性。将这些可能性应用于其它客户数据后，就可以根据数据挖掘模型的分发信息或内容来对客户的行为进行预测。

有关所使用的数据挖掘算法的更多信息，请参见数据挖掘算法。

使用两个对象表示决策支持对象 (DSO) 库中的事例集的结构。MiningModel 对象包含有关数据挖掘算法、查询等（在描述和分析事例集时需要这些信息）以及数据挖掘列对象的集合的信息。除了包含关于其数据类型的信息之外，每个数据挖掘列对象还包含描述该对象在数据挖掘模型中的用途的特性，例如它与其它数据挖掘列的关系，它是否用作可预测的列，它是否包含其它列，它是否用作数据挖掘进程的输入等等。这些数据挖掘列由 MiningModel 对象中的 Column 对象集合表示。

数据挖掘模型是一个抽象对象；换言之，不保存用于构造事例集的培训数据。相反，将保存模型本身的抽象性，还有培训数据分析的结果，因而同一个数据挖掘模型可以和适用于其事例集的其它数据一起使用以提供预测分析。

有关 MiningModel 对象的更多信息，请参见 clsMiningModel。

有关 Column 对象的更多信息，请参见 clsColumn。

OLAP 服务和关系数据源的集成

数据挖掘模型可以使用 OLAP 多维数据集或关系数据库的数据进行培训。对于关系数据库，仅有的要求是提供程序支持 OLE DB。在创建和培训挖掘模型后，不需要连接到模型最初的数据源。例如，在下面的方案中：

一个大型电话公司正计划在一个新的市场区域展开高速 Internet 访问。根据在其它市场区域中的经验，公司认定：索求高速 Internet 访问的人符合特定的背景特征。描述该背景特征的数据存储在一个集中管理的关系数据库中。还创建了一个包含所有元素（即特性）列的挖掘模型。然后使用从先前存在的市场区域得出的信息培训该模型。然后将此模型分发应用于新的市场区域，以对在此市场中的顾客信息进行批处理。此外，可以将此模型应用于公司的新服务电话中心，在那里可以向符合特定背景特征的顾客推广高速 Internet 服务。在任意一种场合中，预测顾客的 Internet 需求都不需要以前存在的市场原始数据。该模型本身包含预测所需的所有信息。


数据挖掘模型结构

数据挖掘模型的结构主要由一组数据挖掘列和数据挖掘算法来定义。培训进程创建的数据挖掘模型内容将作为挖掘模型节点而存储。

每个数据挖掘列可以包含几种不同的内容类型，这取决于该列在数据挖掘模型中的用途。每个列类型都有其自己的属性和行为。有关更多信息，请参见数据挖掘列。

数据挖掘算法使用数据挖掘列定义来生成预测模型，即对提交给数据挖掘模型的培训数据应用此算法。然后，数据挖掘模型存储在分析培训数据后得到的结果。即使可将大量培训数据插入数据挖掘模型中，但并不存储培训数据本身。仅有通过处理该数据获得的分析信息和用作分析一部分的非重复列值才作为数据挖掘模型内容存储。

数据挖掘模型节点

数据挖掘模型节点表示数据挖掘模型的内容。每个节点包含有关定义该节点所需要的特性、相关规则的信息和对节点进行事例处理时所需要的其它信息，还包含培训节点所得的分析。每个节点也可以与其它节点相联系，以支持公用结构中复杂的决策树和聚集算法。可以浏览数据挖掘模型节点以进一步理解由使用的算法所生成的决策或聚合，而且可以对它们作修改以进一步调整数据挖掘模型。

请参见

数据挖掘列

数据挖掘算法

数据挖掘模型节点


数据挖掘算法

作为数据挖掘进程的中心，数据挖掘模型算法决定如何分析数据挖掘模型的事例。数据挖掘模型算法提供了用于处理数据挖掘列的分类、分割、关联和分析数据所需的决策制定能力，这些数据挖掘列提供有关事例集的预测、变化或可能性的信息。

许多数据挖掘算法是面向目标的；给定一个事例集后，数据挖掘算法将对该事例（通常是事例的某个特性）进行某一方面的预测。大部分算法都需要一个事例培训集，在该培训集要预测的特性为已知，算法基于该培训集构造对事例（事例的特性为未知）的这些特性具有预测能力的数据挖掘模型。有关培训数据挖掘模型的更多信息，请参见数据挖掘模型简介。

每个数据挖掘算法都由一个数据挖掘算法提供程序来支持，该程序是支持用于数据挖掘规范的 OLE DB 的 OLE DB 提供程序。因为每个数据挖掘算法提供程序的需求和功能各不相同，所以客户应用程序应首先确定数据挖掘算法提供程序的功能。

并不是所有的数据挖掘算法提供程序都支持所有的数据挖掘选项。有些提供程序可以使用某些数据挖掘列数据或内容类型，而其它提供程序可能不支持某些用于源数据查询的选项。若要确定数据挖掘算法提供程序的能力，MINING_SERVICES 架构行集详细列出了每个提供程序的数据挖掘支持选项。同样，因为每个提供程序都是一个 OLE DB 提供程序，所以标准的 OLE DB 提供程序架构行集（如 PROVIDER_TYPES 架构行集）可以用来提供其它信息。

数据挖掘算法提供程序

数据挖掘算法分为三大类。这里没有完整的可供使用的各种数据挖掘算法；其它数据挖掘算法提供程序可以根据向后传播神经网络或遗传算法来构建。

决策树

决策树是以树的结构显示的分类形式，其中树结构中的节点代表进一步对数据进行分类的单个问题。创建决策树的各种方法数十年来广泛使用，而且有大量的著作讲述这些统计技术。有关决策树技术和 Microsoft® 决策树算法的更多信息，请参见 Microsoft 决策树。

聚集

与决策树相似，聚集是一种经过实践证明的数据挖掘技术。简而言之，聚集是按特定的标准将数据归类成组。论述 Microsoft 聚集算法的主题将进一步详细论述关于聚集作为数据挖掘技术的细节。有关聚集技术和 Microsoft 聚集算法的更多信息，请参见 Microsoft 聚集。


Microsoft 决策树

Microsoft® 决策树算法是基于分类概念的。算法构造树，此树将基于培训集中的剩余列预测列值。因此，树中的每个节点代表一列的特定事例。将此节点放在何处的决策由算法作出，而且与其兄弟在不同深度的节点可能代表每列不同的事例。例如下列培训表：

共享文件 | 使用扫描仪 | 以前曾感染病毒 | 危险度
是 | 是 | 否 | 高
是 | 否 | 否 | 高
否 | 否 | 是 | 中
是 | 是 | 是 | 低
是 | 是 | 否 | 高
否 | 是 | 否 | 低
是 | 否 | 是 | 高

对于这些培训数据，可以生成如下的决策树。

需要注意：对于共享文件的用户，确定他们计算机感染病毒的危险度的最重要因素（即培训列）为是否"以前感染过"。对于不共享文件的用户，最重要的因素是"使用扫描程序"。这显示了有关决策树算法的一个关键概念：一列可用在树中多个位置，其在预测中的重要性可能因此而改变。

挖掘参数

Microsoft 决策树算法提供程序当前支持两个挖掘参数，当用 CREATE MINING MODEL 命令创建模型时，可用这些参数更改算法的行为。参数在 MINING_PARAMETERS 架构行集中定义，下表提供了每个参数的描述。

参数 | 描述
COMPLEXITY_PENALTY 范围在 0 和 1 之间的浮点数。用来抑制决策树的增长，该值从 1 中减去，而且用作确定拆分可能性的一个因子。决策树的分支越深，实现拆分的可能性越小；罚点复杂性影响该可能性。低复杂性的罚点增加拆分的可能性，而高复杂性的罚点降低拆分的可能性。此挖掘参数的作用取决于挖掘模型本身；可能需要做些实验和观察以精确调整数据挖掘模型。

默认值基于给定模型的特性数：

  • 对于 1 到 9 个特性，该值为 0.5。

  • 对于 10 到 99 个特性，该值为 0.9。

  • 对于 100 或更多个特性，该值为 0.99。
MINIMUM_LEAF_CASES | 范围为 0 到 2,147,483,647 之间的非负整数。确定在决策树中生成拆分所需的叶事例的最少数量。小的值将在决策树中引起较多拆分，但可增加过度臃肿的可能性。大的值减少决策树中拆分的数量，但可抑制决策树的增长。默认值为 10。

请参见

MINING_SERVICE_PARAMETERS

CREATE MINING MODEL 语句


Microsoft 聚集

Microsoft 聚集算法是一种期望方法，它使用迭代完善技术将记录分组到附近区域（聚集），以展示相似、可预测的特征。通常，这些特性可能是隐藏的或者非直观的。例如，假定一个旅游公司希望确定人口年龄组成以推销整套度假服务。他们的数据仓库里有下列培训数据：

顾客年龄 | 旅游过的国家/地区
23 | 墨西哥
45 | 加拿大
32 | 加拿大
47 | 加拿大
46 | 加拿大
34 | 加拿大
51 | 加拿大
28 | 墨西哥
49 | 加拿大
29 | 墨西哥
26 | 墨西哥
31 | 加拿大

绘制二维图形时，可以看到数据中有三个主要的分组：年龄在 23 和 29 岁之间的人大都去墨西哥。年龄在 30 到 51 之间的人大都去加拿大。聚集算法也显示了一个有趣的事实，但直接观察数据不易发觉：35 到 44 岁年龄段的人可能根本不旅行。换一种说法：去加拿大旅游的人员可分为两个主要聚集：年龄在 30 和 34 岁之间的人和年龄在 45 到 51 之间的人。

本示例中的数据聚集很容易观察到。对于更高维度的数据，使用此方式编制数据可能不方便，或者维度根本不容易编制。聚集算法将自动查找更高维度的数据分组。

挖掘参数

Microsoft 聚集算法提供程序当前不支持任何附加挖掘参数。


 Analysis Services

数据挖掘模型节点

生成和培训数据挖掘模型后，所得的数据挖掘模型内容将作为数据挖掘模型节点存储。一个节点存储它表示的模型元素的特性、描述、可能性和分发信息，以及该节点拥有的与其它节点相关的任何基数信息。

节点类型

每个节点都有一相关联的节点类型来帮助表示数据挖掘模型。节点类型主要用于导航，而不是定义节点的功能。例如，虽然决策树模型的每个节点都可能有一个与其相关联的分发，但并不是决策树模型中的所有节点都将归类为分发节点。当前有六种支持的节点类型。

模型

无论模型的实际结构如何，模型节点都是任何数据挖掘模型中最顶端的节点。所有模型都从一个模型节点开始。

树

对于所有基于树的模型，这种节点作为树的根节点。一个数据挖掘模型可能有许多树组成，但所有其它节点只能从一个树节点与每个树相关联。基于决策树的模型总有一个模型节点和至少一个树节点。

内部

内部节点表示模型的一般内部节点。例如，在决策树中，此节点通常表示该树中的一次拆分。

分发

分发节点一定有一个到嵌套分发表的有效链接。一个分发节点根据此节点所表示的数据描述一个或多个特性值的分发。决策树的叶节点就是分发节点的一个很好的范例。

聚集

聚集节点存储特定聚集摘要的特性和数据。也就是说，它存储着构成数据挖掘模型的事例聚集的分发集合。基于聚集的模型总有一个模型节点和至少一个聚集节点。

未知

当节点不符合所提供的任何其它节点类型并且算法无法解析该节点类型时，需要使用未知节点类型。

下图表显示了各种节点类型和它们支持的算法之间的区别。

浏览数据挖掘模型节点

经过培训的数据挖掘模型节点可以深入分析数据，从而提供有价值的信息。节点定义通过分析培训数据而创建的模式和规则，而且它们可提供有关新数据预测的更多信息。浏览数据挖掘模型的能力允许在更细微的程度上改进模型。对应于在数据挖掘模型的创建中所使用的特定数据挖掘算法，在某个模型上内容类型可能随模型而改变。

可用下列几种方法浏览数据挖掘模型内容。

Analysis Services

Analysis Manager 为以图形化浏览数据挖掘模型及其内容提供了一个有用的工具：数据挖掘模型浏览器。有关更多信息，请参见数据挖掘模型浏览器。

行集

对模型的查询将以单个行集的形式直接返回数据挖掘模型内容。

SELECT * FROM <mining model>.CONTENT

节点的特性和结果存储在一个特殊的架构行集 MINING_MODEL_CONTENT 中，此行集允许对数据挖掘模型内容进行浏览。

有关存储架构的更多信息，请参见数据挖掘模型存储。

XML

浏览数据挖掘模型内容的另一种方法是以扩展标记语言 (XML) 文档的形式进行。但是，最好采用能够分析此复杂数据的客户端应用程序查看 XML 信息。

有关 XML 文档的文档类型定义 (DTD) 的更多信息，请参见"用于数据挖掘规范的 OLE DB"。


数据挖掘模型存储

数据挖掘模型元数据可以由客户端应用程序使用 MINING_MODELS 架构行集获得，而数据挖掘模型的数据挖掘列的架构存储在 MINING_COLUMNS 的架构行集中。

数据挖掘模型的内容存储在 MINING_MODEL_CONTENT 的架构行集中。对应于存储在 MINING_MODEL_CONTENT 中的数据挖掘模型节点的特性，统计分发信息表示为使用 DISTRIBUTION 结构的 DISTRIBUTION 列（在 OLE DB 中表示为章节列）中的嵌套表格。

请参见

MINING_MODELS

MINING_MODEL_CONTENT

MINING_COLUMNS

分发 (clsColumn)


数据挖掘列

数据挖掘列用于定义数据挖掘模型使用的输入和输出。数据挖掘列还提供标准结构，通过该结构可以使用常见的 SQL 语法，例如将 INSERT 用于培训数据或将 SELECT 用于预测分析。

数据挖掘列的结构和行为可以使用关系挖掘模型编辑器或 OLAP 挖掘模型编辑器进行查看和更改。在这两个编辑器中，结构窗格包含用于定义数据挖掘模型的数据挖掘列；每个数据挖掘列的属性（例如数据类型和内容类型）都可在属性窗格中查看。

根据数据挖掘模型的类型，数据挖掘列在挖掘模型向导中的不同步骤中添加到数据挖掘模型中。对于关系数据挖掘模型，"选择键列"步骤和"选择输入列和可预测列"步骤将键、输入和可预测数据挖掘列添加到数据挖掘模型中。但是，对于 OLAP 数据挖掘模型，需要使用三个步骤。"选择事例"步骤选择用于创建键数据挖掘列的事例维度和级别，"选择被预测实体"步骤创建可预测数据挖掘列，"选择训练数据"步骤创建输入数据挖掘列。

数据挖掘列结构

数据挖掘列主要通过其数据类型和内容类型设置来定义。这些设置将在其它主题中予以详述。由于可能的数据挖掘算法提供程序的多样性，所以我们将数据挖掘列定义设计为灵活并可扩展。

请参见

关系挖掘模型编辑器

OLAP 挖掘模型编辑器

数据挖掘模型

数据挖掘列数据类型

数据挖掘列内容类型

clsMiningModel

clsColumn


数据挖掘列数据类型

数据挖掘列数据类型可以作为工具使用，帮助数据挖掘算法提供程序处理来自培训数据的输入并设置输出数据格式以便分析。

请不要将列数据类型与列内容类型相混淆。例如，数据类型为 TEXT 的列可以同样方便地用作键、特性或关系列。列数据类型是数据挖掘算法提供程序为数据挖掘列进行转换和处理培训数据的准则。

在 1996 年 3 月的 OLE DB 2.6 规范（2.6 版）的附录 A 中列出了所支持的数据类型。

说明 不是所有的数据挖掘算法提供程序都支持所有的数据类型。有关所支持的列数据类型的更多信息，请参见数据挖掘算法提供程序文档。


数据挖掘列内容类型

共有五种基本的列内容类型，将在本主题稍后部分对每种类型予以介绍。请不要将列内容类型与列数据类型相混淆，列内容类型提供了列为数据挖掘模型所担任的角色。例如，键列可具有 LONG 或 TEXT 的列数据类型且仍担任键列的角色。特性列和表列（这两种列类型将在本主题稍后进行讨论）也可用作预测列。

列类型及与其相关的属性使数据挖掘算法提供程序能够理解培训进程中提供给它的培训数据。

下面的事例关系图将在本主题稍后部分使用以解释列类型。

有关事例的更多信息，请参见数据挖掘模型简介。

键列

一个或多个键列唯一标识一行。例如，事例关系图中的 CustomerID 和 OrderItemID 列为键列。事例可由一个或多个键列唯一标识。

特性列

特性列提供有关事例直接特性的信息。在事例关系图中，Age 和 Gender 列均为特性列。特性列通过域和处理提示进一步定义。

域

域或可出现在特性列中的可能值的集合进一步定义特性列。域分为几个基本类型，详细信息见下面的列表。

DISCRETE

特性列的值离散，这是特性列最普通的形式。事例关系图中的 Gender 列为典型的离散特性列，因为其数据为性别类别的有限、计数数字。离散特性列中的值即使是数字类型，也不表示有序数据，这些值明确离散，且不可能为小数值。电话区号即为数字离散数据的典型示例。

ORDERED

特性列的值定义一有序集合。尽管存在有序集合，但并不暗含间隔和量级信息。例如，如果定义了提供有关从一到五的技术等级分类信息的有序特性列，则技术等级之间不存在相对值，五级技术等级并不必然比一级技术等级好五倍。有序特性列就内容类型而言是离散的。

CYCLICAL

特性列的值定义一循环有序集合。循环有序集合的一个示例为一周内顺序编号的七天，第一天接着第七天。

循环特性列就内容类型而言既有序又离散。

CONTINUOUS

特性列的值定义一连续曲线集合。连续曲线内的值自然有序且具有隐性间隔和量级语义。与表示有限、计数数据的离散列不同，连续列表示可能具有无限小数值的度量数据。事例关系图中的 Age 列是连续特性列的示例，该列中的值表示以年为单位的度量值，可以用无限数量的小数值表示，如 21.1、21.003 等。

DISCRETIZED

特性列的值定义一个由提供给模型的连续数据转换和模拟得到的有序集合。一些数据挖掘算法提供程序不能接受连续特性列作为输入，或者不能预测连续值。对于这些情况，具有连续域的列可以作为离散化特性列使用，此时将连续值分组为离散分类，以便连续数据可以作为离散数据进行分析。对于一些数据挖掘算法提供程序，离散化列可以获得参数来替代默认离散化行为。下面的列表详述了当前支持的离散化行为标志。

AUTOMATIC
数据挖掘算法提供程序选择其默认离散化方法。
EQUAL_AREAS
数据挖掘算法提供程序尝试将数据分为含相等连续值个数的组。本方法最适用于正态分布曲线，但不适用于连续数据中狭窄组内具有高计数值的情况。例如，如果事例关系图中指定的定单项目有一半免费，或者 Cost 值为零，那么一半数据位于曲线内的一个点以下。对于这样的分发，本方法尝试将形成等区域离散化部分的数据分为多个区域，从而产生不良结果。
THRESHOLDS
数据挖掘算法提供程序尝试通过检查连续数据曲线和搜寻拐点来将数据分组，本方法适用于不符合正态分布的连续数据，因为这类数据的拐点暗示着合理的离散化边界。
CLUSTERS
数据挖掘算法提供程序尝试通过取样培训数据、初始化为许多随机点和运行几次期望—极大化 (EM) 聚集算法的迭代来将数据分组。本方法的好处是适用于任何分布曲线，但就处理时间而言花费较大。

SEQUENCE_TIME

特性列的值表示时间度量单元。时间列不必包含任何特定格式的数据类型，例如，表示周期或季度的数字均是有效的。序列时间特性列通常用来将序列时间与购买时间之类的个别特性值相关联。

分发

连续类的特性列域也可有与其关联的分发。它是提供给数据挖掘算法提供程序的信息，描述培训时将插入到模型中的列值的预期分发。特定值可能已知具有某些典型分发。对于一些算法，预先知道分发尤其有用。如果分发未知或未给定，则提供程序采用任何其认为适宜的分发。下表包含了一些分发标志的示例和关系图。

关系图 | 分发
 | NORMAL 连续特性列的值构成正态高斯分发直方图。例如，收入值可构成这种分发曲线。
 | LOG_NORMAL 连续特性列的值构成所有值均大于零的高斯分发柱状图，其曲线具有延长的上尾部且向曲线下末端方向倾斜。如果未明确记录零值且大多数消费者趋向购买较小数量的定单项目，则与所购买的定单项目数相关联的数可构成这种曲线。
 | UNIFORM 连续特性列的值构成平坦曲线，曲线上的所有值具有相同概率。

支持的其它分发标志包括：

  • BINOMIAL

  • MULTINOMIAL

  • POISSON

  • T-DISTRIBUTION
提示

可以向数据挖掘算法提供程序提供其它信息，以帮助生成适宜该培训数据的模型。这些建模标志是提供程序特有的，但所支持的示例有以下几个。

MODEL_EXISTENCE_ONLY

特性列值的重要性次于特性的存在。例如，事例关系图显示了与给定客户相关的定单项目的列表，包括 ID、价格和定单项目的产品类型。出于建模目的，客户购买某给定定单项目这个事实可能比定单项目本身的成本更重要。这种情况下应标记 Cost 列为只模型存在。

NOT NULL

特性列的值不应包含空值，并且如果培训进程中在该特性列遇到空值，将产生错误。

IGNORE NULL

特性列的值可包含空值，而且数据挖掘模型不应将空值视为有效信息。如果培训过程中在此特性列中遇到空值，则空值将被忽略。

NULL INFORMATIVE

特性列的值可包含空值，而且数据挖掘模型应将空值视为有效信息。如果培训过程中在此特性列中遇到空值，则空值将作为丢失状态的模型。

限定符列

限定符列是特性列的特殊类型，它向数据挖掘算法提供程序提供有关另一个特性列的信息。下面的列表详述了当前所支持的限定符列类型，但第三方提供程序可添加另外的限定符列类型。

PROBABILITY

本特性列内的值为相关值的零到一之间的概率数字。

VARIANCE

本特性列内的值是相关值的方差。

STDEV

本特性列内的值是相关值的标准偏差。

SUPPORT

本特性列内的值是相关值的权（事例复制因子）。

PROBABILITY_VARIANCE

本特性列内的值是相关值概率的方差。

PROBABILITY_STDEV

本特性列内的值是相关值概率的标准偏差。

ORDER

本特性列内的值是相关值的排列次序。

关系列

关系列是事例中通过指出事例集内特性列间的层次关系来将另一个特性、关系或键列进一步分类的列。例如，ProductType 列将本主题前面所展示事例关系图中的 ProductID 列进一步分类，提供某些产品适合的分类。实际上，它建立了一种层次结构，所有产品均属于一种产品类型。给定关系值必须与它所描述的另一个列的所有实例值始终一致。如果某产品与给定产品类型相关，则它必须在数据中始终与该产品类型相关。

表列

表列是表示数据挖掘列集合的一种列，也称作嵌套列，它由包含在命名表列定义内的一组列来描述。事例关系图中的 OrderItems 列为表列。

预测列

特性列或表列可用作输入列、输出列或既作输入列又作输出列。数据挖掘算法提供程序将建立能够基于输入列的值来预测或解释输出列的值的数据挖掘模型。

除用作输出列外，预测列还可用作一个事例内其它预测列的输入列，供复杂预测分析使用。不是所有的数据挖掘算法提供程序都支持以预测为目的的所有内容类型，各个数据挖掘算法提供程序的功能可以在 MINING_SERVICES 架构行集中检查。

有关 MINING_SERVICES 架构行集的更多信息，请参见 MINING_SERVICES。

预测不仅可以传送客户估计年龄之类的简单信息，还可以传送附加的统计信息，如置信度和标准偏差。此外，预测实际上可能是预测的集合，如某客户基于某特定客户事例可能购买的定单项目的集合。集合中的每一个预测也可能包含伴随以柱状图表示的一组统计。柱状图提供多个可能的预测值，每个都伴随有概率及其它统计。在这种情况下，每个预测（本身可以是预测集合的一部分）可具有组成柱状图的可能值的集合。

因为预测信息可以十分详细和复杂，所以经常有必要仅析取预测的一部分。例如，可能需要检查某个特定预测值或值的范围。不是每个提供程序和每个数据挖掘模型都能支持所有可能的请求。因此，输出列有必要使用转换函数指出可从它析取哪一类信息。

一组标准转换函数已作为数据挖掘 OLE DB 规范的一部分予以定义。

有关用于数据挖掘的 OLE DB 规范的更多信息，请参见 Microsoft Web 站点上的 Microsoft OLE DB Web 页。


嵌套数据挖掘列

数据挖掘列结构的更高级功能之一是能够嵌套数据挖掘列。数据挖掘模型对输入数据和输出数据均使用这种嵌套列结构，因为用于以培训数据填充数据挖掘模型的语法允许嵌套列表示为子查询。数据挖掘事例可能不容易通过使用典型关系表来描述，单个事例可能依靠几组支持信息来完成预测分析。为说明这一点，请考察电话公司客户的事例：一个客户可能有多条电话线和多个 ISP 帐户。

若要检索所有的客户信息、每个客户的所有电话线以及所有 ISP 帐户，可以采用几种方法：

  • 使用三个查询，重申于客户查询过程中并且颁发相同的两个查询来一再地为客户查询中的每一行检索电话线和 ISP 帐户。

  • 使用两个查询，为第一个查询联接表"客户"和表"电话线"，为第二个查询联接表"客户"和表"ISP 帐户"。

  • 使用一个查询，用 UNION 联接上个方法中用到的两个子查询，并在每个子查询中构造空列来表示另一个子查询的返回值。

这三种方法均十分笨拙，包含重复的数据和操作，并且效率极低。

可是，如果单个列能够容纳一组列，则可以构造单个查询，此查询将返回表"客户"中的每个客户的一行（包含表"客户"中的所有列）、包含给定客户的所有"电话线"行的一个附加列以及包含给定客户的所有"ISP 帐户"行的一个附加列，如下面的关系图所示。

如关系图所示，在返回的行集中没有客户的冗余数据，每个客户的一行是所需的所有数据，并且行集的嵌套列包含与该客户有关的数据。以这种方式构造的行集（称为层次行集）完全为 OLE DB 所支持。

数据挖掘模型的事例信息可能不驻留于单个事例表中，但可能包含提供用来定义事例的附加信息的支持表。在关系图中，"电话线"和"ISP 帐户"表用作"客户"事例表的支持表。它们提供有关事例的附加信息，如客户可能拥有的 ISP 帐户的数目和类型，或客户所使用的电话线的数目。数据挖掘模型可以利用嵌套数据挖掘列来处理此支持信息并基于支持表中的数据为客户创建附加的规则和模式。


数据挖掘列存储

数据挖掘列的架构信息由客户应用程序通过使用 MINING_COLUMNS 架构行集来进行访问，此行集不仅包含列的数据和内容表达，还包含有关它在数据挖掘模型内的关系以及列所支持的标量函数和表函数等信息。有关更多信息，请参见 MINING_COLUMNS。


安全性和身份验证

可以限制对 Microsoft® SQL Server™ 2000 Analysis Services 管理的数据进行访问。对于获许通过 Analysis Manager 访问 Analysis Services 数据和执行管理功能的管理员，也可以对其加以限制。对于那些通过客户应用程序访问分析服务器上数据的最终用户，同样可以进行限制。可以指定哪些最终用户能访问数据以及他们能执行哪种类型的操作。另外，可以控制最终用户在各种 Analysis Services 数据级别上的访问，包括多维数据集、维度和多维数据集单元。

管理员安全性是使用名为 OLAP Administrators 的 Microsoft Windows NT® 4.0 或 Windows® 2000 组进行控制的。

最终用户安全性由如下方式控制：

  • 连接到分析服务器时的身份验证。

  • 在 Analysis Manager 中定义的数据库角色、多维数据集角色和挖掘模型角色。

每个角色定义了用户集以及他们能共享的访问。角色在 Analysis Services 数据库级别上定义，然后指派给允许角色中用户访问的多维数据集。指派完成之后，允许在多维数据集级别上对角色作一些更改。这些更改对数据库级别的角色没有影响。（一个例外是对多维数据集角色中用户和组的更改。）这样，角色对于它被指派给的每一个多维数据集都有不同的定义。

Analysis Services 支持 Windows 集成的安全性系统。

以下主题更详细地描述了安全性。

主题 | 描述
管理员安全性 | 提供有关管理安全性角色的信息
最终用户安全性 | 确定与实现最终用户安全性有关的问题
用户帐户和组 | 提供有关建立 Analysis Manager 角色所需的用户帐户的信息
数据库、多维数据集和挖掘模型角色 | 描述在 Analysis Services 中使用的三种安全性角色类型
最终用户安全性级别 | 确定安全性角色可以应用到的 Analysis Services 对象
服务器安全性和身份验证 | 提供有关信息，介绍如何使用身份验证在 Analysis Services 中应用服务器安全性
数据库安全性 | 描述数据库安全性角色如何与数据库安全性结合使用的信息
多维数据集安全性 | 描述多维数据集安全性角色如何与多维数据集安全性结合使用的信息。
维度安全性 | 描述维度安全性规范如何与多维数据集安全性结合使用的信息
单元安全性 | 描述单元安全性规范如何与多维数据集安全性结合使用的信息
操作方面的注意事项 | 提供有关为确保系统安全性而应遵循的分析服务器过程的信息
挖掘模型安全性 | 提供有关如何将挖掘模型角色用于挖掘模型安全性的信息


管理员安全性

管理员安全性涉及用户通过 Analysis Manager 对 Microsoft® SQL Server™ 2000 Analysis Services 数据的访问以及他们执行管理功能的能力。管理员安全性通过 OLAP Administrators 组的成员资格来授予。

默认情况下，用于在特定计算机上安装分析服务器的用户帐户被授予在该计算机上的管理权限。在最初安装时，Analysis Services 建立名为 OLAP Administrators 的 Microsoft Windows NT® 4.0 或 Windows® 2000 组，并且将登录用户加入到此组。OLAP Administrators 组是安装 Analysis Services 所在的计算机上的本地组。只有该组成员才能进行以下操作：

  • 通过 Analysis Manager 访问分析服务器，并执行管理功能。

  • 在分析服务器上通过使用决策支持对象 (DSO) 编程方式来执行管理功能。

管理功能包括维护安全性角色和处理 Analysis Services 对象。

可以使用 Windows NT 4.0 下的用户管理器或 Windows 2000 下的计算机管理来管理 OLAP Administrators 组。

管理员安全性没有多重等级或多重级别。用户要么是管理员，要么不是，而这取决于用户是否属于 OLAP Administrators 组。

当通过客户应用程序连接到分析服务器时，OLAP Administrators 组的成员对该服务器上所有多维数据集和维度具有完全读取权限。他们对所有写启用的多维数据集和写启用的维度也具有完全读/写权限。此权限的授予与分析服务器上的角色定义无关。

请参见

操作方面的注意事项


最终用户安全性

最终用户安全性涉及用户通过客户端应用程序（如 Microsoft® Excel）对分析服务器上数据的访问。它影响用户连接到分析服务器的能力，包括他们能访问哪些数据，以及他们是否具有读取或读/写权限。

最终用户安全性依赖于 Microsoft Windows NT® 4.0 或 Windows® 2000 中用户帐户和组的定义，也依赖于 Microsoft SQL Server™ Analysis Services 安全性角色的创建，它们都指定了用户和组的集合。实现最终用户安全性的过程总结如下表。

阶段 | 描述 | 有关更多信息
1 | 审阅和修订 Windows NT 4.0 或 Windows 2000 用户帐户和组，使之与最终用户的不同访问要求一致。 | 用户帐户和组
2 | 创建安全性角色并且将每个角色指派给允许角色中用户访问的多维数据集或数据挖掘模型。 | 数据库、多维数据集和挖掘模型角色和创建安全性角色
3 | 定义指派给多维数据集或挖掘模型的每个角色。每个角色的定义可能随它被指派给的每个多维数据集或挖掘模型的不同而不同。 | 最终用户安全性级别和创建安全性角色


用户帐户和组

在 Microsoft® SQL Server™ 2000 Analysis Services 中创建角色之前，必须在 Microsoft Windows NT® 4.0 的用户管理器（或 Windows® 2000 中的计算机管理）中创建用户帐户和组。一个角色必须包含至少一个用户帐户或组才能被创建。只有在 Windows NT 4.0 或 Windows 2000 中创建用户帐户或组之后，才能将它添加到角色中。

在 Analysis Services 中创建角色之前，通常最好为组的成员资格完成并实施一个设计。这种方法能减少所需的角色维护数量。

如果使用 NTLM 安全性支持提供程序作为身份验证方法，那么对于将被授予对分析服务器上多维数据集的访问权的所有用户帐户和组，它们必须和安装分析服务器时使用的用户帐户处于同一个域中，或者处于一个受信任域中。其它域中的用户帐户和组则无法连接到分析服务器。


数据库、多维数据集和挖掘模型角色

角色（也称为安全性角色）定义了一组 Microsoft® Windows NT® 4.0 或 Windows® 2000 用户帐户和组，它们对于 Microsoft SQL Server™ 2000 Analysis Services 数据具有相同的访问权限。角色是用来实现最终用户安全性的，实现方法是通过从客户应用程序连接的用户来控制对分析服务器上数据的访问。Analysis Services 包括三类角色：数据库角色、多维数据集角色和挖掘模型角色。

数据库角色可以被指派给数据库中多个多维数据集或挖掘模型，因此授予角色中的用户访问这些多维数据集或挖掘模型的权限。这样的指派创建和数据库角色同名的多维数据集角色或挖掘模型角色。数据库角色将为同名的多维数据集或挖掘模型角色提供默认值。虽然在数据库角色中可以指定对多维数据集的维度成员访问的类型和作用域，但是直到将数据库角色指派给多维数据集之后，这种访问权限才真正授予。数据库角色是在 Analysis Services 数据库级别上定义的，并且在数据库角色管理器中进行维护。

默认情况下，一个数据库角色仅指定读取权限，并且不限制最终用户可见的维度成员或多维数据集单元。把这样的数据库角色指派给多维数据集后，角色中的用户能查看整个多维数据集。但是，无论在数据库角色还是在多维数据集角色中，都可以指定读/写权限并且限制可见和可更新的维度成员。在多维数据集角色中，可以限制可见和可更新的多维数据集单元。另一方面，挖掘模型角色提供了对模型内容的只读访问权限。

多维数据集角色只应用于单个多维数据集。多维数据集角色中的默认值是从同名的数据库角色中派生的，但这些默认值中的一部分可在多维数据集角色中用其它值替代。多维数据集角色包含一些数据库角色中没有的额外选项，例如单元安全性。当将数据库角色指派给多维数据集时，则在多维数据集级别上创建多维数据集角色，并且在多维数据集角色管理器中维护多维数据集角色。

在多维数据集角色中，可以指明角色中的最终用户是否可以钻取到单元的数据源。该功能还要求对多维数据集或它的至少一个分区启用钻取。有关更多信息，请参见指定钻取选项。

挖掘模型角色应用在单个挖掘模型中。挖掘模型角色中的默认成员资格是从同名的数据库角色中派生的，但是默认成员资格在挖掘模型角色中可被替代。当将数据库角色指派给模型时，则在模型级别上创建挖掘模型角色，并且在挖掘模型角色管理器中维护挖掘模型角色。

一个最终用户可以包含在分析服务器的多个角色中。在这种情况下，用户就具有了在这些角色中指定的组合访问权限。如果角色中任一角色允许用户访问某个对象，用户就具有对该对象的访问权。例外情况是维度安全性中的自定义规则。来自多个角色的自定义规则组合并非都是可以解析的。有关更多信息，请参见适用于最终用户的多重维度自定义规则。

当最终用户通过客户应用程序连接到分析服务器时，由角色提供的安全性强制必须在该最终用户的身份验证成功之前进行。如果身份验证不成功，用户将无法访问分析服务器上的数据，这与用户在那台服务器上角色中的成员资格以及那些角色的定义无关。有关更多信息，请参见服务器安全性和身份验证。

请参见

创建安全角色

多维数据集角色管理器

数据库角色管理器

挖掘模型角色管理器


最终用户安全性级别

最终用户安全性可以通过几个详细的级别来强制执行。这些级别总结在下表中，按最不详细到最详细排序。

级别 | 可选/ 必需 | 描述 | 有关更多信息
服务器 | 必需 | 控制最终用户是否可以通过客户应用程序连接到分析服务器。 | 服务器安全性和身份验证
数据库 | 必需 | 确定已连接的最终用户可以查看哪些 Microsoft® SQL Server™ 2000 Analysis Services 数据库。 | 数据库安全性
多维数据集/挖掘模型 | 必需 | 确定已连接的最终用户可以查看哪些多维数据集或挖掘模型。 | 多维数据集安全性
维度成员 | 可选 | 限制已连接的最终用户可以查看的维度成员。可提供对写启用的维度的读/写访问权限并限制最终用户可更新的成员。 | 维度安全性
单元 | 可选 | 限制已连接的最终用户能查看的多维数据集单元。可提供对写启用的多维数据集的读/写访问权限并限制最终用户能更新的单元。 | 单元安全性


服务器安全性和身份验证

在分析服务器级别的最终用户安全性是由身份验证控制的。若要成功地连接到分析服务器，最终用户必须成功地在那台分析服务器上通过身份验证。只有在成功地进行身份验证之后，分析服务器上的角色才被评估以确定最终用户对分析服务器上的对象的访问类型和作用域。

身份验证可以通过不同方法来完成。可用的方法部分地取决于最终用户连接分析服务器所要采取的方式。如果最终用户试图直接连接到分析服务器，则可以使用一组身份验证方法。如果最终用户试图通过 Internet 信息服务 (IIS) 连接到分析服务器，则可以使用另一组身份验证方法。有关更多信息，请参见直接连接的身份验证和连接的身份验证。


身份验证方法

Microsoft® SQL Server™ 2000 Analysis Services 支持三种身份验证提供程序：

  • NTLM 协议（Microsoft Windows® 身份验证）

  • Kerberos

  • 协商

若要通过使用这些安全性提供程序中的一种来连接 Analysis Services，请使用 Security Support Provider Interface (SSPI) 属性。有关更多信息，请参见 SSPI 属性。

有关更多信息，请参见 Windows 2000 安全性文档。


直接连接的身份验证

当最终用户试图直接连接到分析服务器时，分析服务器对用户进行身份验证。这些连接有如下特点：

  • 连接字符串包含与连接服务器名称等价的"数据源"属性值。

  • 使用传输控制协议/网际协议 (TCP/IP)。

当最终用户试图直接连接到分析服务器时，Microsoft® SQL Server™ 2000 Analysis Services 试图对最终用户进行身份验证，此验证基于最终用户登录到域中时操作系统授予其的凭据。Analysis Services 自动检测连接的最终用户的凭据。如果在连接字符串中，最终用户指定了与其登录用户名和密码不同的用户名和密码，指定的用户名和密码将被忽略。如果最终用户的凭据允许该用户从网络上访问分析服务器计算机，则在分析服务器上的身份验证会成功，最终用户会被允许连接分析服务器。如果最终用户的凭据不允许该用户从网络上访问分析服务器计算机，则在分析服务器上的身份验证就会失败，并且将不会允许最终用户连接到分析服务器。

对于身份验证，Analysis Services 使用"安全性支持提供程序接口"(SSPI) 作为到 Microsoft Windows NT® 4.0 或 Windows® 2000 安全性的接口。Analysis Services 支持 Kerberos、NTLM 安全性支持提供程序以及其它使用 SSPI 的提供程序。可以通过在连接字符串中设置 SSPI 属性来选择提供程序。有关更多信息，请参见 SSPI 属性。

如果提供程序是 NTLM 安全性支持提供程序，则对分析服务器的访问要求最终用户与安装分析服务器时使用的用户帐户是同一域的成员，或者是受信任域的成员。如果最终用户帐户无法通过这些域中某个域的身份验证，用户的访问会被拒绝。

也可以尝试通过 Internet 信息服务 (IIS) 进行的的另一类型连接。有关更多信息，请参见连接的身份验证。

请参见

注册服务器

连接到 Analysis Services


连接的身份验证

当最终用户试图通过 Microsoft® Internet 信息服务 (IIS) 连接到分析服务器时，分析服务器会对最终用户进行身份验证。这些连接有如下特点：

  • 连接字符串包含与 URL 等价的 Data Source 属性值。

  • 使用超文本传输协议 (HTTP)。

说明 只有安装了 Microsoft SQL Server™ 2000 企业版的 Analysis Services，才能从 Analysis Manager 或客户端应用程序（通过 PivotTable® 服务连接）通过 HTTP 和 IIS 进行连接。

也可以进行直接连接。有关更多信息，请参见直接连接的身份验证。

当最终用户试图通过 ISS 连接到分析服务器时，Analysis Services 会借助于 ISS 上的身份验证。如果在 ISS 上的身份验证成功，那么分析服务器上的身份验证也会成功，从而允许最终用户连接到分析服务器。如果在 ISS 上的身份验证不成功，那么分析服务器上的身份验证也不成功，进而将不允许最终用户连接到分析服务器。

IIS 提供了几种身份验证方法。例如，用户登录和密码可以用于 HTTP 或安全 HTTP 连接的基本身份验证。其它方法可以和 Analysis Services 中的角色集成。有关更多信息，请参见 IIS 文档。

请参见

注册服务器

连接到 Analysis Services

使用 HTTP 连接


数据库安全性

数据库安全性由数据库角色来控制。当最终用户成功地连接到分析服务器之后，会在那个服务器上的数据库角色中查找最终用户的用户名。

如果在数据库角色中找到了用户名，则最终用户可以查看该数据库的名称和其中的多维数据集的列表（包括虚拟的和链接的多维数据集）。但是，最终用户只能访问那些已经指派了数据库角色的多维数据集。

如果在数据库角色中没有找到用户名，最终用户不能查看或访问服务器上的任何对象。

在授予最终用户对数据库中多维数据集的访问权限之前，必须授予他们数据库访问权限，这可以通过把他们包含进数据库角色中来实现。

请参见

创建数据库角色

多维数据集安全性

数据库、多维数据集和挖掘模型角色

数据库角色管理器


多维数据集安全性

在多维数据集角色中最终用户对多维数据集的访问类型和作用域由多维数据集角色中的设置来确定。最终用户只能访问那些指派了角色的多维数据集，这些角色中包含最终用户的用户名。

数据库角色为同名的多维数据集角色提供了默认值，但这些默认值中的一部分可在多维数据集角色中用其它值替代。创建数据库角色之后，可以把它指派给数据库中的任意多维数据集（包括虚拟的和链接的多维数据集）。此操作授予数据库角色中的最终用户对多维数据集的访问权限，并且创建和数据库角色同名的多维数据集角色。通过"数据库角色"对话框中的"多维数据集"选项卡或多维数据集角色管理器，可以把数据库角色指派给多维数据集。

如果多维数据集角色没有指定对维度成员的限制，则多维数据集角色中的最终用户能查看相关多维数据集中的所有成员。如果某个维度已是写启用的，并且已授予多维数据集角色对该维度的读/写权限，那么最终用户也可以更新维度中的成员。但是，数据库角色或多维数据集角色能指定一些成员可以被查看并且更新，但另一些却不可以。有关更多信息，请参见维度安全性。

类似地，默认情况下，多维数据集角色中的最终用户能查看相关多维数据集中的所有单元。如果多维数据集已是写启用的，并且已授予多维数据集角色对多维数据集的读/写权限，最终用户也能更新多维数据集单元。但是，多维数据集角色能指定一些单元可以被查看并且更新，但另一些却不可以。有关更多信息，请参见单元安全性。

默认情况下，多维数据集角色中的最终用户不能钻取到多维数据集单元的任何源数据。但是，在多维数据集角色中可以授予此能力。如果授予了此能力，那么必须对多维数据集或者至少它的一个分区启用钻取。

请参见

创建安全角色

数据库、多维数据集和挖掘模型角色

指定钻取选项


维度安全性

在数据库角色或多维数据集角色中，可以实施维度安全性来指定维度成员，这样角色中最终用户在浏览多维数据集时就可以查看这些成员。还可以授予对写启用的维度的读/写权限并且指定角色中最终用户可以更新的成员。

维度安全性是可选的。如果不指定维度安全性，最终用户会看到他们被授权访问的多维数据集中的所有维度成员。如果维度是写启用的，他们则不能更新成员。

既可以在数据库级别也可以在多维数据集级别指定维度安全性。在数据库角色中，对共享维度可以定义适用于包含此维度的数据库的所有多维数据集的规范。这些规范为与数据库角色同名的多维数据集角色提供默认值。在多维数据集角色中，可以对某一特定的多维数据集替代这些规范。

说明 与对多维数据集单元的更新不同，对维度成员的更新会直接记录到源表中。这些更新可以包括添加、删除、重命名和移动等。

在数据库角色中，维度安全性是在"数据库角色"对话框的"维度"选项卡中定义的。而在多维数据集角色中，它是在"多维数据集角色"对话框的"维度"选项卡中定义的。

权限和规则

可以对在 Microsoft® Windows NT® 4.0 或 Windows® 2000 中定义的组设定权限和规则，以便管理维度安全性。此外，还可以指定可以更新和不可以更新的单独成员或成员组。有关更多信息，请参见维度安全性中的自定义规则。

当在角色中指定维度安全性时，可以为每个维度定义权限。

权限 | 描述
读取 | 决定哪些成员是可查看的。此权限影响到可见多维数据集的大小，因为它限制了显示的成员。
读/写 | 决定哪些成员是可更新的。仅当维度已是写启用的，才可以定义和授予此权限。如果授予了此权限而维度是后来才写启用的，则此权限将被禁用，最终用户不能更新维度成员。

在读/写权限中指定的成员也是可查看的。因此，如果读/写权限包含了不在读取权限中的成员，则读/写权限也影响到可见多维数据集的大小。

对于读取权限，可以选择下列规则之一。

规则 | 描述
无限制 | 最终用户可以查看所有成员。这是默认规则。
完全受限 | 最终用户不能查看成员。当他们浏览包含维度的多维数据集时，他们看不见它。
自定义 | 这一规则可提供最高的灵活性。指定"顶层"，指示了可以查看的最顶端级别。

对读/写权限，可以选择下列规则之一。

规则 | 描述
无限制 | 最终用户可以更新所有成员。仅当读取权限的规则为"无限制"时，才能使用此规则。
完全受限 | 最终用户不能更新成员。这是默认规则。仅当读取权限的规则为"无限制"或"完全受限"时，才能使用此规则。
自定义 | 这一规则可提供最高的灵活性。仅当读取权限的规则为"无限制"或"自定义"时，才能使用此规则。指定"顶层"（指示可以更新的最顶端维度级别）或"底层"（指示可以更新的最底端维度级别）。

请参见

创建安全角色

维度安全性中的自定义规则

写启用的维度


维度安全性

 Analysis Services

维度安全性中的自定义规则

在数据库角色或多维数据集角色中，通过对维度定义自定义规则，可以指定角色中的最终用户可以访问哪些维度成员。为此，可以选择可访问的级别，或指定可访问的成员，或组合使用这些方法。还可以为直观合计指定选项以及选择默认成员。

级别选择

通过选择下列一个或两个选项，可对每个维度指定一个可以访问的维度级别的范围：

  • 顶层

    指示可以访问的最顶端级别。在顶层以上的级别是无法访问的。默认情况下，顶层是维度的最高级别。

  • 底层

    指示可以访问的最底端级别。在底层以下的级别是无法访问的。默认情况下，底层是维度的最低级别。

    示例 1、2 和 3 说明了此概念。

说明 虽然不能访问所选顶层以上的成员，但如果客户应用程序暴露了位于顶层上方成员祖先的名称（例如，显示完全合法成员名），最终用户有可能对顶层以上的成员减少单元值。

成员规范

通过允许对一些成员的访问和拒绝对另外一些成员的访问，可以指定能访问的成员。

可以用成员规范来组合顶层和底层选择。但是，不允许访问顶层以上或底层以下的成员。

特定成员的后代共享相同的访问权限。例如，如果显式地允许访问 England，那么也隐含地允许访问 London、Manchester 和 England 的其它后代。但是，有三个例外：

  • 允许对某个成员的访问，但需要选择一个底层。位于该底层以下的后代是无法访问的。

  • 允许对某个成员的访问，但拒绝对其后代的访问。例如，允许对 England 的访问，但拒绝对 London 的访问。在这种情况下，可以访问除了 London 及其后代之外的 England 的后代。

  • 拒绝对某个成员的访问，但允许对其后代的访问。此时，可以访问允许访问的成员和其上面的祖先以及被拒绝的成员本身。也可以访问被允许成员的后代。但是，不可以访问被拒绝成员的其它后代。例如，不允许访问 Europe 但允许访问 London。则可以访问 London、England 和 Europe，也可以访问 London 的后代，但不能访问 Europe 的其它后代。

也可以访问显式许可成员的祖先，除非它们是位于顶层上方。即使祖先被显式拒绝，依然可以访问它。

在成员规范中，有三个基本选择：仅允许、仅拒绝、允许和拒绝。

仅允许(成员规范)

可以访问显式允许访问的成员和它们的后代，除非它们位于底层下方。仅有的可被访问的非后代是位于顶层及顶层下方的允许成员的祖先。

下列图表显示了显式允许对单一成员访问的成员层次结构。

示例 4 和 7 说明了此概念。

仅拒绝(成员规范)

不能访问显式拒绝访问的成员及其后代。非后代可被访问，除非它们位于顶层上方或底层下方。

下列图表显示了显式拒绝对单一成员访问的成员层次结构。

示例 5 和 8 说明了此概念。

允许和拒绝（成员规范）

在被允许的成员和被拒绝的成员之间有两种常见的关系：

  • 所有显式拒绝的成员是显式允许成员的后代。

  • 所有显式允许的成员是显式拒绝成员的后代。

如果所有显式拒绝的成员是显式允许成员的后代，则可以访问显式允许访问的成员及其后代，但有以下例外情况：(1) 不能访问显式拒绝访问的后代及其后代；(2) 不能访问位于底层以下的后代。仅有的可访问的显式允许成员的非后代是允许成员的位于顶层及顶层下方的祖先。

下列图表显示了成员层次结构，包括对单一成员显式允许访问和对它的一个后代的显式拒绝访问。

示例 6 和 9 说明了此概念。

如果所有显式允许的成员是显式拒绝成员的后代，则不能访问显式拒绝访问的成员及其后代，但有以下例外情况：(1) 可以访问显式允许访问的后代及其后代，除非它们是位于底层下方；(2) 可以访问显式允许访问的后代和其上面的祖先以及被拒绝成员本身。显式拒绝成员的非后代也是可访问的，如果它们位于顶层和底层之间的话。

下列图表显示了成员层次结构，包括对单一成员显式拒绝访问和对它的一个后代的显式允许访问。

示例 10 说明了此概念。

说明 不能在"自定义维度安全性"对话框的"基本"选项卡中定义允许成员和拒绝成员之间的这种关系。必须使用"高级"选项卡。

允许的成员和拒绝的成员之间还可能存在其它形式的关系。

直观合计

对每个维度都可以为直观合计指定选项。这些选项决定了是否要计算显示的或聚合的单元值，计算是根据成员的所有后代或只根据可查看的后代进行的。在第一种情况下，角色中的最终用户看到的是实际总计；而在第二种情况，他们看见的是直观合计。第三个选项可以用来显示在特定级别以上（包括该级别）的直观合计，但显示位于它下面的实际总计。此选项需要多维表达式 (MDX) 形式的表达式。该表达式必须命名或解析为特定的级别，在此级别以上（包括该级别本身）显示的是直观合计。示例 11 说明了此概念。

说明 对于包含非重复计数度量值的多维数据集，不能启用直观合计。有关更多信息，请参见使用聚合函数。

默认情况下，直观合计是被禁用的。此时，将根据成员的所有后代计算显示的、聚合的单元值，而不管这些成员是否可查看。如果一些成员不是可查看的，默认设置会引起一些单元值对最终用户显示不正确。

重要 如果允许最终用户减少他们被拒绝访问的成员的值，默认设置（即禁止直观合计）会产生安全漏洞。示例 4，6，8 和 9 描述了此概念。

默认成员

对每个维度可以选择一个默认成员。默认成员影响在包含该维度的多维数据集上的查询所返回的数据集。当维度没有在轴上显示时，默认情况下会使用默认成员对数据集进行过滤（即切片）。示例 12 说明了此概念。

如果没有选择默认成员，默认成员则由维度的 Default Member 属性决定，可在维度编辑器（如果维度是共享的)或多维数据集编辑器（如果维度是专用的）的属性窗格中访问该属性。

自定义维度安全性对话框

维度安全性的自定义规则在"自定义维度安全性"对话框中定义。要指示能访问的级别和成员，可以从两种方法里选择：

  • 用下拉列表、成员树和对话框的其它元素来选择项目。此方法用于"基本"选项卡。

  • 编写 MDX。用这种方法，可以实施前一方法中允许的所有技术，再加上几个不常使用的技术。此方法用于"高级"选项卡。

直观合计的选项和默认成员在"公用"选项卡中指定。

维度安全性中的自定义规则示例

这些示例用于由下列级别所定义的 Offices 维度：

  • （全部），只包含 All Offices 成员

  • Continent

  • Country

  • City

  • Office

在实施维度安全性之前，从具有此维度的多维数据集返回的数据集如下所示。（维度被全部展开以显示所有成员。）

每个示例都为该维度定义了不同的维度安全性。每个示例包含了一个或多个 MDX 表达式，该表达式位于一个针对读取权限的自定义规则中。 将对每个示例（示例 12 除外，它仅包含一个默认成员的表达式）显示前一数据集上的结果。

示例适用于读取权限，这样在 Offices 维度上的 MDX 表达式的效果才能直观地演示出来。但是，这些示例同样可用于读/写权限。也就是说，如果示例的表达式在读/写权限中使用了，它们将允许和禁止对与读取权限相同成员的访问。例外情况是示例 11 和 12，它们演示了每个维度定义一次的选项并且不能在读取和读/写权限之间变动。

示例 1

此示例只包含一个顶层选择内容。

在"自定义维度安全性"对话框的下列框和区域中指定下列 MDX 表达式：

  • 高级选项卡
    • "顶层"框：
      [Offices].[Office]
    • "底层"框：不指定表达式。然而，默认情况下 Microsoft® SQL Server™ 2000 Analysis Services 将提供下列表达式以表示维度的最低级别：
      [Offices].[Office]
    • "允许的成员"框：不指定表达式。

    • "拒绝的成员"框：不指定表达式。
  • "公用"选项卡
    • "直观合计"区域：不指定表达式，但启用直观合计。（即选择了"启用 — 显示直观合计"。）

    • "默认成员"区域：不指定表达式。

在读取权限中，这些表达式导致以如下方式修改示例数据集。（下列维度被全部展开以显示所有可查看的成员。）

示例 2

此示例只包含一个底层选择内容。

在"自定义维度安全性"对话框的下列框和区域中指定下列 MDX 表达式：

  • "高级"选项卡
    • "顶层"框：不指定表达式。然而，默认情况下 Analysis Services 将提供下列表达式以表示维度的顶层：
      [Offices].[(All)]
    • "底层"框：
      [Offices].[Country]
    • "允许的成员"框：不指定表达式。

    • "拒绝的成员"框：不指定表达式。
  • "公用"选项卡
    • "直观合计"区域：不指定表达式，但启用直观合计。（即选择了"启用 — 显示直观合计"。）

    • "默认成员"区域：不指定表达式。

在读取权限中，这些表达式导致以如下方式修改示例数据集。（下列维度被全部展开以显示所有可查看的成员。）

示例 3

此示例只包含一个顶层选择和底层选择。

在"自定义维度安全性"对话框的下列框和区域中指定下列 MDX 表达式：

  • "高级"选项卡
    • "顶层"框：
      [Offices].[Country]
    • "底层"框：
      [Offices].[City]
    • "允许的成员"框：不指定表达式。

    • "拒绝的成员"框：不指定表达式。
  • "公用"选项卡
    • "直观合计"区域：不指定表达式，但启用直观合计。（即选择了"启用 — 显示直观合计"。）

    • "默认成员"区域：不指定表达式。

在读取权限中，这些表达式导致以如下方式修改示例数据集。（下列维度被全部展开以显示所有可查看的成员。）

示例 4

此示例允许对一些成员的访问，但不包括顶层选择或底层选择。

在"自定义维度安全性"对话框的下列框和区域中指定下列 MDX 表达式：

  • "高级"选项卡
    • "顶层"框：不指定表达式。然而，默认情况下 Analysis Services 将提供下列表达式以表示维度的顶层：
      [Offices].[(All)]
    • "底层"框：不指定表达式。然而，默认情况下 Analysis Services 将提供下列表达式以表示维度的底层：
      [Offices].[Office]
    • "允许的成员"框：
      {[Offices].[All Offices].[Africa]}
    • "拒绝的成员"框：不指定表达式。
  • "公用"选项卡
    • "直观合计"区域：不指定表达式，但启用直观合计。（即选择了"启用 — 显示直观合计"。）

    • "默认成员"区域：不指定表达式。

在读取权限中，这些表达式导致以如下方式修改示例数据集。（下列维度被全部展开以显示所有可查看的成员。）

说明 因为启用了直观合计，所以 All Offices 的显示 Sales 是 8400，尽管实际的 Sales 是 27300。如果禁用直观合计（默认情况），会存在安全漏洞，因为最终用户通过从 All Offices 的实际 Sales 中减去 Africa 的 Sales 便能计算出 Europe 的 Sales。

示例 5

此示例拒绝对某些成员的访问，但不包括顶层选择或底层选择。

在"自定义维度安全性"对话框的下列框和区域中指定下列 MDX 表达式：

  • "高级"选项卡
    • "顶层"框：不指定表达式。然而，默认情况下 Analysis Services 将提供下列表达式以表示维度的顶层：
      [Offices].[(All)]
    • "底层"框：不指定表达式。然而，默认情况下 Analysis Services 将提供下列表达式以表示维度的底层：
      [Offices].[Office]
    • "允许的成员"框：不指定表达式。

    • "拒绝的成员"框：
      {[Offices].[All Offices].[Europe].[England].[London].[Office 6],
[Offices].[All Offices].[Europe].[England].[London].[Office 7]}
  • "公用"选项卡
    • "直观合计"区域：不指定表达式，但启用直观合计。（即选择了"启用 — 显示直观合计"。）

    • "默认成员"区域：不指定表达式。

在读取权限中，这些表达式导致以如下方式修改示例数据集。（下列维度被全部展开以显示所有可查看的成员。）

示例 6

此示例允许访问某些成员，但是拒绝访问它们后代的子集。不包括顶层选择或底层选择。

在"自定义维度安全性"对话框的下列框和区域中指定下列 MDX 表达式：

  • "高级"选项卡
    • "顶层"框：不指定表达式。然而，默认情况下 Analysis Services 将提供下列表达式以表示维度的顶层：
      [Offices].[(All)]
    • "底层"框：不指定表达式。然而，默认情况下 Analysis Services 将提供下列表达式以表示维度的底层：
      [Offices].[Office]
    • "允许的成员"框：
      {[Offices].[All Offices].[Europe].[Italy]}
    • "拒绝的成员"框：
      {[Offices].[All Offices].[Europe].[Italy].[Milan]}
  • "公用"选项卡
    • "直观合计"区域：不指定表达式，但启用直观合计。（即选择了"启用 — 显示直观合计"。）

    • "默认成员"区域：不指定表达式。

在读取权限中，这些表达式导致以如下方式修改示例数据集。（下列维度被全部展开以显示所有可查看的成员。）

说明 因为启用了直观合计，所以 Italy 的显示 Sales 是 4600，尽管实际的 Sales 是9600。Europe 的显示 Sales 是 4600，尽管实际 Sales 是 18900。All Offices 的显示 Sales 是 4600，尽管实际 Sales 是 27300。如果禁用直观合计（默认情况），会出现安全漏洞。例如，通过从 Italy 的实际 Sales 中减去 Rome 的 Sales，最终用户便可以计算出 Milan 的 Sales。

示例 7

此示例包括了一个顶层选择和底层选择，并允许对顶层和底层之间的某些成员进行访问。

在"自定义维度安全性"对话框的下列框和区域中指定下列 MDX 表达式：

  • "高级"选项卡
    • "顶层"框：
      [Offices].[Continent]
    • "底层"框：
      [Offices].[City]
    • "允许的成员"框：
      {[Offices].[All Offices].[Europe]}
    • "拒绝的成员"框：不指定表达式。
  • "公用"选项卡
    • "直观合计"区域：不指定表达式，但启用直观合计。（即选择了"启用 — 显示直观合计"。）

    • "默认成员"区域：不指定表达式。

在读取权限中，这些表达式导致以如下方式修改示例数据集。（下列维度被全部展开以显示所有可查看的成员。）

示例 8

此示例包括了一个顶层选择和底层选择，但拒绝对顶层和底层之间的某些成员进行访问。

在"自定义维度安全性"对话框的下列框和区域中指定下列 MDX 表达式：

  • "高级"选项卡
    • "顶层"框：
      [Offices].[Continent]
    • "底层"框：
      [Offices].[City]
    • "允许的成员"框：不指定表达式。

    • "拒绝的成员"框：
      {[Offices].[All Offices].[Africa].[Kenya]}
  • "公用"选项卡
    • "直观合计"区域：不指定表达式，但启用直观合计。（即选择了"启用 — 显示直观合计"。）

    • "默认成员"区域：不指定表达式。

在读取权限中，这些表达式导致以如下方式修改示例数据集。（下列维度被全部展开以显示所有可查看的成员。）

说明 由于启用了直观合计，所以 Africa 的显示 Sales 是 4000，尽管实际 Sales 是 8400。如果直观合计被禁用（默认情况），可能会出现安全漏洞，因为通过从 Africa 的实际 Sales 中减去 Egypt 的 Sales，最终用户便可以计算出 Kenya 的 Sales。

示例 9

此示例包括了一个顶层选择和底层选择。它也允许对顶层和底层之间某些成员的访问，但拒绝对它们后代的子集的访问。

在"自定义维度安全性"对话框的下列框和区域中指定下列 MDX 表达式：

  • "高级"选项卡
    • "顶层"框：
      [Offices].[Country]
    • "底层"框：
      [Offices].[Office]
    • "允许的成员"框：
      {[Offices].[All Offices].[Africa].[Egypt],
[Offices].[All Offices].[Europe].[England]}
    • "拒绝的成员"框：
      {[Offices].[All Offices].[Africa].[Egypt].[Cairo]}
  • "公用"选项卡
    • "直观合计"区域：不指定表达式，但启用直观合计。（即选择了"启用 — 显示直观合计"。）

    • "默认成员"区域：不指定表达式。

在读取权限中，这些表达式导致以如下方式修改示例数据集。（下列维度被全部展开以显示所有可查看的成员。）

说明 由于启用了直观合计，所以 Egypt 的显示 Sales 是 1100，尽管实际 Sales 是 4000。如果直观合计被禁用（默认情况），可能会出现安全漏洞，因为通过从 Egypt 的实际 Sales 中减去 Alexandria 的 Sales，最终用户便可以计算出 Egypt 的 Sales。

示例 10

此示例包括了一个顶层选择和底层选择。它也拒绝对顶层和底层之间某些成员的访问，但允许对它们后代的子集的访问。

在"自定义维度安全性"对话框的下列框和区域中指定下列 MDX 表达式：

  • "高级"选项卡
    • "顶层"框：
      [Offices].[Continent]
    • "底层"框：
      [Offices].[City]
    • "允许的成员"框：
      {[Offices].[All Offices].[Europe].[Italy].[Rome]}
    • "拒绝的成员"框：
      {[Offices].[All Offices].[Europe]}
  • "公用"选项卡
    • "直观合计"区域：不指定表达式，但启用直观合计。（即选择了"启用 — 显示直观合计"。）

    • "默认成员"区域：不指定表达式。

在读取权限中，这些表达式导致以如下方式修改示例数据集。（下列维度被全部展开以显示所有可查看的成员。）

说明 由于启用了直观合计，所以 Europe 的显示 Sales 是 4600，尽管实际 Sales 是 18900。Italy 的显示 Sales 是 4600，尽管实际 Sales 是 9600。

示例 11

此示例包括一个用于自定义直观合计的 MDX 表达式。

Europe 管理员角色被授权访问 Europe 成员、它的所有后代、Alexandria 成员以及它的所有后代的值。但没有授权访问 Africa 成员的值。允许对 Alexandria 的访问隐含地允许对 Africa 的访问，但为直观合计选择 Continent 级别保证了角色不能访问 Africa 的实际值。只要角色保留对 Europe 及其所有后代的访问权，这个直观合计选择将不会妨碍角色查看 Europe 实际值的能力。

在"自定义维度安全性"对话框的下列框和区域中指定下列 MDX 表达式：

  • "高级"选项卡
    • "顶层"框：不指定表达式。然而，默认情况下 Analysis Services 将提供下列表达式以表示维度的顶层：
      [Offices].[(All)]
    • "底层"框：不指定表达式。然而，默认情况下 Analysis Services 将提供下列表达式以表示维度的底层：
      [Offices].[Office]
    • "允许的成员"框：
      {[Offices].[All Offices].[Europe],
[Offices].[All Offices].[Africa].[Egypt].[Alexandria]}
    • "拒绝的成员"框：不指定表达式。
  • "公用"选项卡
    • "直观合计"区域：
      [Offices].[Continent]

      所选的选项是"自定义 - 显示从下列级别开始向上的各个级别的直观合计"。

    • "默认成员"区域：不指定表达式。

在读取权限中，这些表达式导致以如下方式修改示例数据集。（下列维度被全部展开以显示所有可查看的成员。）

示例 12

此示例包括一个指定默认成员的 MDX 表达式。默认成员是从示例维度中选择的。

在"自定义维度安全性"对话框的下列框和区域中指定下列 MDX 表达式：

  • "高级"选项卡
    • "顶层"框：不指定表达式。然而，默认情况下 Analysis Services 将提供下列表达式以表示维度的顶层：
      [Offices].[(All)]
    • "底层"框：不指定表达式。然而，默认情况下 Analysis Services 将提供下列表达式以表示维度的底层：
      [Offices].[Office]
    • "允许的成员"框：不指定表达式。

    • "拒绝的成员"框：不指定表达式。
  • "公用"选项卡
    • "直观合计"区域：不指定表达式，但启用直观合计。（即选择了"启用 — 显示直观合计"。）

    • "默认成员"区域：
      [Offices].[All Offices].[Africa]

      选择了"定义默认成员并用 MDX 指定"选项。

只要 Offices 维度未投影到轴上，默认情况下 Africa 成员会筛选（即切片）数据集。数据集中的单元值反映 Africa 而非 Europe。

例如，如果多维数据集中只有 Offices 和 Time 维度，并且 Sales 与 y 轴上的 Time 维度一起显示，则 All Time 成员的显示 Sales 为 8400。All Time 和 All Offices 的 Sales 为 27300，但是数据集并不显示此值，因为 Europe 值未包括在内。

请参见

定义维度安全性的自定义规则


适用于最终用户的多重维度自定义规则

如果在分析服务器上，某个最终用户包含在多个多维数据集角色中（这些角色含有对维度安全性的自定义规则），则并不总是能够解析自定义规则的组合。要测试组合是否可以解析和怎样解析，最容易的方法是执行下列过程。

对维度安全性测试多重自定义规则的组合

  1. 在 Analysis Manager 树窗格中，在包含多维数据集角色的数据库下展开"多维数据集"文件夹。

  2. 右击多维数据集角色适用的多维数据集，然后单击"管理角色"命令。

  3. 在多维数据集角色管理器中，限制包含最终用户名的角色的列表：
    1. 在"显示"旁边的第一个框中，选择"包含用户的角色"。

    2. 在下一个框中，键入用户名。

    3. 单击放大镜按钮。
  4. 选择包含最终用户的多维数据集角色：
    1. 单击列表中第一个多维数据集角色。

    2. 在按下 SHIFT 键的同时，单击列表中最后的多维数据集角色。
  5. 单击"测试角色"。多维数据集浏览器将显示出来，以模拟最终用户的浏览过程。如果无法解析自定义规则的组合，会显示错误信息。

  6. 在多维数据集浏览器中，将受限制的维度拖动到数据查看窗格并且深化以标识允许和拒绝的级别和成员。


单元安全性

在多维数据集角色中，可以实施单元安全性来限制当角色中的最终用户浏览多维数据集时，他们能查看的多维数据集单元。还可以授予对写启用的多维数据集的读/写权限并且限制角色中的最终用户能更新的单元。这一目的可以通过选择策略并为每个权限选择规则或定义自定义规则来实现。

单元安全性是可选的。如果没有指定单元安全性，最终用户会看见他们有权访问的多维数据集中的所有单元值。（但是，如果指定了维度安全性，某些成员的单元有可能成为不可查看的。）如果多维数据集是写启用的，那么最终用户就无法更新单元值。如果虚拟多维数据集的一个或多个组件多维数据集是写启用的，则最终用户就无法更新虚拟多维数据集的单元值。

如果策略或规则允许更新单元，那么只要它是原子单元就可以更新它。如果单元不是原子的，那么只有客户端应用程序提供了一种在从属的原子单元上分散更新的方法后才能更新它。例如，在客户端应用程序中，写启用的多维数据集随同除 Time 之外的每个维度的最低级别一起显示。在 Time 维度轴上，显示月份的非原子单元，但天的从属原子单元不显示出来。（天是 Time 维度中的最低级别。）如果客户端应用程序提供一种更新方法，将 +$90 的更新分成 30 份 +$3 的更新，每份作用于六月的 30 天的每个单元，那么加 $90 就可以更新一个六月的单元。也可以使用简单分割之外的分散方法。UPDATE CUBE 语句提供了几种方法。有关更多信息，请参见 UPDATE CUBE 语句。

单元安全性在"多维数据集角色"对话框的"单元"选项卡中定义。

策略

在指定单元安全性时，对每个多维数据集角色都可以选择下列策略之一。

策略 | 描述
无限制读取 | 最终用户可以查看所有单元值。这是默认策略。
无限制读/写 | 最终用户可以查看和更新所有单元值。
高级 | 最终用户只能查看和更新在权限和规则中为单元安全性指定的单元值。

仅当多维数据集已是写启用的，方可为它选择"无限制读/写"策略。如果选择此策略，并且随后多维数据集变成写禁用的，此策略将无效，最终用户无法更新多维数据集的单元值。仅当虚拟多维数据集的一个或多个组件多维数据集是写启用的，方可为它选择此策略。如果选择此策略，并且随后所有组件多维数据集变成写禁用的，则此策略将无效，最终用户无法更新虚拟多维数据集的单元值。

高级策略的权限和规则

如果选择了"高级"策略，可以定义三种权限：读取、读附随和读/写。其它策略不包括权限或规则。为高级策略所定义的权限允许通过规则进一步定义。这些规则与为角色设置的规则类似。

读取权限（高级策略）

此权限确定哪些单元值可查看。无论此权限中指定的单元是否从其它不可查看单元派生而来，它们都是可查看的。例如，计算成员 Profit 是从度量值 Sales 和 Cost 的单元派生的。（Profit 等于 Sales 减去 Cost。）如果 Profit 包含在读取权限中，则即使 Sales 或 Cost 的单元不可查看，其单元也是可查看的。

说明 在读取权限中包含派生单元将招致一种危险：最终用户可以确定他们无法查看的单元值。例如，如果 Profit 和 Cost 的单元是可查看的，而 Sales 的单元不可查看，最终用户可以通过将 Profit 的值加上 Cost 的值来确定 Sales 的值。

可以为读取权限选择下列规则。

规则 | 描述
无限制 | 最终用户可以查看所有单元值。这是默认规则。
完全受限 | 最终用户只能查看在读/写权限或读附随权限中指定的单元值，并且受此主题后面描述的读附随权限的限制。
自定义 | 这一规则可提供最高的灵活性。可以编写多维表达式 (MDX) 形式的表达式，来标识可查看以及不可查看的单元值。

读附随权限（高级策略）

此权限确定哪些单元值可查看。但是，若要此权限中指定的单元以及从其它单元派生的单元可查看，则前提必须是所有其它的单元都可查看（即包含在读取权限中或包含在非派生的读附随权限中）。在此权限中指定的单元如果不是派生自其它单元，则是可查看的。

例如，若 Profit 包含在读附随权限中，则其单元可查看的前提是 Sales 和 Cost 的单元必须都包含在读取权限中，或包含在读附随权限中但并不是派生自其它单元。如果 Cost 包含在读附随权限中，而且派生自其它单元，则 Profit 为可查看的前提是那些单元都包含在读取权限中，或包含在读附随中但不是派生自其它单元。因此，对于读附随权限，单元派生自其它单元，而后者又派生自其它单元，如此循环往复，这样就产生了一条附随链。

如果某单元既包含在读取权限中，又包含在读附随权限中，则读取权限是强制实施的，但读附随权限不是。

规则 | 描述
无限制 | 最终用户可以查看非派生自其它单元的所有单元值。如果某一单元值派生自其它单元，那么只有当所有其它单元都包括在读取或读/写权限中时，该单元值才可以查看。
完全受限 | 最终用户只能查看在读取权限或读/写权限中指定的单元值。这是默认规则。
自定义 | 这一规则可提供最高的灵活性。可以编写 MDX 表达式，来标识可查看和不可查看的单元值，它受到此主题前面描述的读附随权限的限制。

如果规则将单元定义为不可查看，则单元本身可见，而它的值却不可见。因此，单元安全性并不限制可见的成员，也不限制可见多维数据集的大小。相反，它可以限制能否查看与指定成员相关的单元值。若要限制这些可查看的成员，请使用维度安全性。有关更多信息，请参见维度安全性。

如果规则将某单元定义为不可查看，且多维数据集角色中的某个最终用户查询此单元，则在默认情况下，分析服务器返回带格式值 #N/A。最终用户看到的就是此单元值，除非客户端应用程序翻译了此值，或者通过在连接字符串中设置"安全的单元值"属性而指定了另一值。有关此属性的更多信息，请参见安全的单元值属性。

读/写权限（高级策略）

此权限确定哪些单元值是可以更新的。

仅当多维数据集已是写启用的，才可以对它定义和授予此权限。如果授予此权限，而此后多维数据集又变成写禁用的，则此权限无效，最终用户无法更新多维数据集的单元值。

在读/写权限中指定的单元也是可查看的，就如同它们是在读取权限而非读附随权限中指定的一样。

规则 | 描述
无限制 | 最终用户可以更新所有单元值。
完全受限 | 最终用户无法更新单元值。
自定义 | 这一规则可提供最高的灵活性。可以编写 MDX 表达式，以标识可被更新和不可被00000值。

请参见

创建多维数据集角色

自定义单元安全性规则

维护写启用的多维数据集和回写数据

写启用的多维数据集


自定义单元安全性规则

在多维数据集角色中，通过定义自定义单元安全性规则，可以指定哪些多维数据集单元可以被角色中的最终用户访问。

每个自定义规则都包含一个用多维表达式 (MDX) 编写的表达式，该表达式允许或拒绝对特定单元或单元组的访问。对于多维数据集内的每个单元（原子和非原子），MDX 表达式均解析为 True 或 False。（如果 MDX 表达式解析为数字值，则任何非零值均取值为 True，而零则取值为 False。）如果表达式对单元解析为 True，则允许访问。如果解析为 False，则拒绝访问。

自定义规则在"多维数据集单元安全性"对话框中定义。

自定义规则为多维数据集中的每个维提供了两种可选方式。可以指定其单元能够被访问的成员，也可以指定其单元不能被访问的成员。

如果可以指定某成员其单元能够被访问，则其它成员的单元就不能被访问。可以在 MDX 表达式中使用等号运算符 (=) 来标识可以被访问的单元。示例 1 说明了此概念。

如果指定某成员其单元不能被访问，其他成员的单元就能够被访问。可以在 MDX 表达式中使用不等号运算符 (<>) 来标识不能被访问的单元。示例 2 说明了此概念。

在 MDX 表达式中，没有必要包含多维数据集中的所有维度。被省略的维度不会对单元的访问加以限制，即单元对于其所有成员都是可访问的，除非被 MDX 表达式中的维度所拒绝。如果希望仅通过一个维度限制访问，则通常相对简单的 MDX 表达式就可以满足。MDX 表达式的复杂性很大程度上取决于其包含的维度个数。

通过允许对某些维度中特定成员的单元的访问，而拒绝对其它维度中特定成员的单元的访问，可以极其灵活地定义单元安全性。事实上，可以允许或拒绝对单元的任意可能组合进行访问。以下是在某些场合下使用的函数示例。

若要允许或拒绝特定成员或度量值访问单元，可以组合使用 MDX 函数 CurrentMember 和 Name。示例 1 和 2 说明了此概念。如果指定了在维度中不唯一的成员名称，请使用 UniqueName 函数，而不是 Name 函数。

若要允许或拒绝一个成员及其后代访问单元，请在表达式中使用 Ancestor 函数。示例 3 说明了此概念。若要根据多个维度中的条件允许或拒绝访问单元，请为每个维度都创建一个表达式，然后用 AND 或 OR 将它们组合成一个表达式。示例 4、5 和 6 说明了此概念。

自定义单元安全性规则示例

示例用于如下定义的多维数据集：

  • 度量值：
    • 成本

    • 收入

    • 税
  • 具有级别的时间维度:
    • 年，限制成员为 1997 和 1998

    • 月
  • 具有级别的地理维度
    • 洲，限制成员为"亚洲"、"欧洲"和"北美洲"

    • 国家/地区，限制成员为"日本"、"韩国"、"法国"、"德国"、"加拿大"和"美国"

    • 城市

实施单元安全性之前，从该多维数据集返回的数据集与如下所示类似。

每个示例为此多维数据集定义单元安全性的其它选择。每个示例在读取权限的自定义规则中包含用多维表达式 (MDX) 编写的表达式。将对每个示例显示前一数据集上的结果。

示例假设客户应用程序将带格式的值 #N/A（表明对单元的访问被拒绝）转换为空值。

这些示例应用于读取权限，以便直观地演示 MDX 表达式在数据集上的效果。但是，这些示例同样可用于读/写权限。即，如果示例的表达式用于读/写权限，则在读取权限中它将允许和拒绝对相同单元的访问。这些示例还可适用于读附随权限，前提是显示的单元都不是从其它单元派生而来的。

示例 1

以下 MDX 表达式允许对度量值"成本"的单元的访问，但拒绝对所有其它度量值的单元的访问。

Measures.CurrentMember.Name = "Cost"

在读取权限中，此表达式导致以如下方式修改示例数据集。

示例 2

以下 MDX 表达式拒绝对度量值"税"的单元的访问，但允许对所有其它度量值的单元的访问。

Measures.CurrentMember.Name <> "Tax"

在读取权限中，此表达式导致以如下方式修改示例数据集。

示例 3

以下 MDX 表达式允许对"地理"维度中成员"欧洲"及其后代（"法国"、"德国"和它们的"城市"级别成员）的单元的访问，但是拒绝对此维度中所有其它成员的单元的访问。

Ancestor(Geography.CurrentMember,[Continent]).Name = "Europe"

在读取权限中，此表达式导致以如下方式修改示例数据集。

示例 4

以下 MDX 表达式允许对"地理"维度中成员"北美洲"及其后代的单元的访问，但是拒绝对此维度中所有其它成员的单元的访问。它还允许对"时间"维度中成员 1998 及其后代的单元的访问，但是拒绝对此维度中所有其它成员的单元的访问。

Ancestor(Geography.CurrentMember,[Continent]).Name = "N. America" AND
   Ancestor(Time.CurrentMember,[Year]).Name = "1998"

在读取权限中，此表达式导致以如下方式修改示例数据集。

示例 5

以下 MDX 表达式允许对"地理"维度中成员"亚洲"及其后代的单元的访问，但拒绝对此维度中所有其它成员的单元的访问。它还拒绝对度量值"收入"的单元的访问，包括"亚洲"及其后代的"收入"单元。

Ancestor(Geography.CurrentMember,[Continent]).Name = "Asia" AND
   Measures.CurrentMember.Name <> "Revenue"

在读取权限中，此表达式导致以如下方式修改示例数据集。

示例 6

以下 MDX 表达式拒绝对度量值"收入"的单元的访问，除非那些"收入"单元也是维度"地理"中"欧洲"及其后代的单元。

Ancestor(Geography.CurrentMember, [Continent]).Name = "Europe" OR
   Measures.CurrentMember.Name <> "Revenue"

在读取权限中，此表达式导致以如下方式修改示例数据集。

请参见

Ancestor

CurrentMember

Name

UniqueName


挖掘模型安全性

在挖掘模型角色中最终用户对数据挖掘模型的访问类型和范围是由挖掘模型角色中的设置决定。最终用户只能访问那些指派了角色的挖掘模型，该角色中包含最终用户的用户名。

数据库角色为同名挖掘模型角色提供默认值，但是默认角色成员资格在挖掘模型角色中可以被替代。在创建数据库角色后，可以将其指派给数据库中的任意挖掘模型。此操作授予数据库角色中最终用户对挖掘模型的访问权限，并且创建和数据库角色同名的挖掘模型角色。通过"数据库角色"对话框中的"挖掘模型"选项卡或挖掘模型角色管理器，可以将数据库角色指派给多维数据集。

请参见

创建挖掘模型角色

创建安全角色

数据库、多维数据集和挖掘模型角色

数据库角色管理器

挖掘模型角色管理器


操作方面的注意事项

本主题描述 Microsoft® SQL Server™ 2000 Analysis Services 中安全性方面的操作注意事项。这些注意事项与分析服务器管理有关。

对于数据源的服务登录帐户权限

Analysis Services 的服务名是 MSSQLServerOLAPService。如果使用了 Microsoft Windows NT® 4.0 或 Windows® 2000 集成安全性，那么和此服务相关的登录帐户必须具有访问数据源的权限，Analysis Services 管理员可以通过 Analysis Manager 访问这些数据源。否则，Analysis Services 管理员将无法通过使用 Analysis Manager 处理他们维护的对象。

若要维护登录帐户，请使用控制面板中的"服务"应用程序。

从其它工作站访问多维数据集

创建多维数据集的管理员也有可能被拒绝访问此多维数据集。当管理员登录到一台不提供 Analysis Services 的工作站，并且试图查看服务器计算机上多维数据集的数据时，即会发生这种情况。此问题的常见原因是管理员在创建多维数据集时以本地帐户登录到服务器上的，然后又以本地帐户登录到第二台计算机上。多维数据集所有者的访问控制列表 (ACL) 记录了服务器上的本地帐户，而没有记录第二台计算机上的本地帐户，因此管理员被拒绝访问。

若要避免此问题，可以有两种选择：

  • 创建多维数据集时总是以域帐户登录，然后在其它计算机上以相同的域帐户登录。

  • 在多维数据集创建后为它分配一个角色。然后，只要以该角色授权访问的帐户登录，就能够从其它计算机上访问多维数据集。
对最终用户访问权限的更改和更改生效之间的间隔

对在 Analysis Services 角色中定义的最终用户访问权限的更改和更改生效之间的时间间隔，取决于初始化属性 Auto Synch Period 的值、最终用户的操作以及最终用户维持连接的时间长度。此属性的值控制客户端/服务器同步的频率（以毫秒计），包括重新验证最终用户的访问权限。此值默认为 10,000 毫秒（10 秒），但在每个连接字符串中传递给 Analysis Services。因此，默认值可以被最终用户和客户应用程序替代，并且每个最终用户、每个客户应用程序的取值都各不相同。

如果 Auto Synch Period 属性被设为空值或 0（零），则同步不会以固定时间间隔发生。最终用户的操作将引发同步，因此同步发生的时间无法精确预测。这种情况下，最终用户连接到多维数据集时对其访问权限进行的更改不会立即生效，要一直等到同步发生或最终用户断开与多维数据集的连接时，更改才生效。最终用户被授权访问多维数据集后，该用户可以在查询会话期间一直保持与多维数据集的连接，直到同步发生为止。授予访问权限后，在查询会话期间不能强行中断最终用户与多维数据集的连接。如果最终用户的访问权限在查询会话期间被删除，该最终用户在断开连接后将无法重新连接到多维数据集。

如果 Auto Synch Period 属性被设为非空、非零值，则在指定间隔，最终用户的登录用户名和授权会与他们在 Analysis Services 角色中定义的访问权限相比较。那时，从上一次同步以来发生的对最终用户访问权限的更改将立即生效。例如，如果某个最终用户对多维数据集的访问权限已被删除，该最终用户便立即无法访问此多维数据集。

有关 Auto Synch Period 属性的更多信息，请参见 Auto Synch Period 属性。

保护数据

保护数据的安全性非常重要。和所有数据库产品一样，这包括对管理访问权限明智的分配。所有具有分析服务器管理访问权限的用户都应该在使用 Web 浏览器、生产力应用程序和电子邮件时加倍小心。

建议用户建立特定的 Windows NT 4.0 或 Windows 2000 用户帐户来管理 Analysis Services，并且要求管理员在使用这些管理帐户时，避免访问支持脚本或宏的 Web 页、生产力应用程序和电子邮件应用程序。如果以管理员身份登录后，有必要使用支持脚本或宏的应用程序，请将安全性设为最高级别，并且绝不要接受任何未标明脚本安全的控件或对象。决策支持对象 (DSO) 未被标明为脚本安全，浏览器在装载 DSO 之前会提供提示。除非确信装载它的应用程序是可信的，否则应该拒绝这样装载 DSO。

另外，还建议在进行分析服务器与作为数据源使用的 SQL Server 之间的连接时，使用 Windows NT 4.0 或 Windows 2000 集成安全性。

请参见

用户帐户和组


数据仓库和 OLAP

虽然数据仓库和联机分析处理 (OLAP) 这两个术语有时可互换使用，但它们却适用于通常称为决策支持系统或业务智能系统的不同组件。这些类型的系统的组件包括一些数据库和应用程序，用于为分析人员提供支持组织机构决策制定所需的工具。

数据仓库是一个数据库，包含那些通常表示某个组织机构业务历史的数据。通过分析这些历史数据，可以支持对分散的组织单元进行从策略计划到性能评估的多级业务决策。对数据仓库中的数据进行组织是为了支持分析，而不象在联机事务处理系统 (OLTP) 中那样是为处理实时事务。

OLAP 技术使数据仓库能够快速响应重复而复杂的分析查询，从而使数据仓库能有效地用于联机分析。OLAP 的多维数据模型和数据聚合技术可以组织并汇总大量的数据，以便能够利用联机分析和图形工具迅速对数据进行评估。当分析人员搜寻答案或试探可能性时，在得到对历史数据查询的回答后，经常需要进行进一步查询。OLAP 系统可以快速灵活地为分析人员提供实时支持。

创建和使用数据仓库概述


关于数据仓库

数据仓库经常用作决策支持系统的基础。一个组织机构尝试使用用于联机事务处理 (OLTP) 的同一数据库执行策略分析时可能会遇到问题，而数据仓库的设计目的是要克服这些问题。

OLTP 系统有如下的典型特性：

  • 支持主动添加和修改数据的大量并发用户。

  • 能反映某个组织机构随时变化的状态，但不保存其历史记录。

  • 包含大量的数据，其中包括用来验证事务的大量数据。

  • 具有复杂的结构。

  • 可以进行优化以对事务活动做出响应。

  • 提供支持组织机构日常使用的技术基础设施。

当 OLTP 数据库用于联机分析时常会遇到下列问题：

  • 分析人员不具备针对复杂数据结构创建特殊查询所需的技术专业知识。

  • 需要汇总大容量数据的分析查询对系统响应联机事务的能力会产生不良影响。

  • 对复杂分析查询做出响应时，系统性能会变慢或不可预测，因而无法为进行联机分析的用户提供充分支持。

  • 经常变化的数据会破坏分析信息的一致性。

  • 联机分析与联机事务处理结合在一起时，安全性变得更复杂。

通过组织数据用于分析，数据仓库提供下列方案之一来解决这些问题。数据仓库：

  • 可以将异类数据源中的数据组合成一种单一的同类结构。

  • 采用更简化的结构组织数据，目的是提高分析查询的效率，而不是进行事务处理。

  • 包含已转换的数据，这些数据在用于分析时应是有效、一致并经过合并和格式化的。

  • 提供代表业务历史记录的稳定数据。

  • 随着数据的增加而定期更新，而不是随频繁发生的事务而更新。

  • 简化安全性要求。

  • 提供一个为 OLAP 而不是为 OLTP 组织的数据库。

数据集市是数据仓库的一种特殊形式，典型的数据集市包含面向专门主题的适合特定业务功能的企业数据子集。

Microsoft SQL Server 2000 为生成数据仓库和数据集市提供了许多基本工具，其中包括数据转换服务 (DTS)。


关于 OLAP

在数据仓库和数据集市中存储的是用于分析的数据，而联机分析处理 (OLAP) 是使客户端应用程序实现对这些数据进行高效率访问的一种技术。OLAP 给进行分析的用户带来了很多好处。例如：

  • 直观的多维数据模型使用户很容易就能选择、浏览和研究数据。

  • 分析查询语言为研究复杂的业务数据关系提供了强大功能。

  • 对频繁查询的数据预先进行计算，以便非常快地响应特殊查询。

Microsoft SQL Server 2000 Analysis Services 是一个可靠的 OLAP 工具，可用于存储在各种数据仓库数据库（包括 SQL Server、Microsoft Access 和 Oracle 数据库）中的数据。有关更多信息，请参见 Analysis Services 功能。


OLAP 和数据仓库

通过组织和汇总数据而为高效分析查询创建多维数据集，OLAP 为数据仓库数据提供了一种多维表现方式。数据仓库结构的设计会影响多维数据集设计和建立的难易程度。

Microsoft SQL Server 2000 Analysis Services 依赖于数据仓库所提供数据的准确性、稳定性和引用完整性。创建与 Analysis Services 一起使用的数据仓库时，应考虑下列设计因素：

  • 如果可能，应使用星型架构。

    如果需要雪花架构，则应使事实数据表第一级别以上的维度表的数量最小。

  • 为用户设计维度表。

    维度表应包含用户想研究的有关事实的有意义信息，例如产品的颜色和大小。

  • 将常识规范化方法应用于维度表设计。

    不相关的数据不应组合到单一维度表中，而且在多个维度表中数据不应重复。例如，应创建单独的客户维度，而不应在多个维度表中重复客户信息。

  • 不要在事实数据表中进行过度的汇总。

    保持用户需要的最为精细的访问粒度，并使所有事实数据表记录保持同样的详细程度。Analysis Services 旨在创建和管理粒度很细的数据仓库中的汇总数据，而不会牺牲用户的查询响应时间。

  • 对相似数据使用公用事实数据表结构。

    可以把要在同一个多维数据集中使用的数据存储在多个事实数据表中，条件是这些事实数据表必须具有相同的结构。

  • 不要创建汇总数据的辅助表。

    Analysis Services 预先计算汇总，使其具有为高效查询而设计的结构。不使用其它的辅助汇总表。

  • 在关键字段上创建索引。

    对每个维度表，在其键列上创建一个索引。对每个事实数据表，在列的组合上创建一个单独的索引（这个列的组合包含与事实数据表相关联的维度表的外键）。Analysis Services 在装载多维数据结构和计算汇总数据时会用到这些索引。这些索引可以极大改进处理多维数据集的性能。

  • 确保引用完整性。

    全部事实数据在所有维度表中均有所表示是很重要的。事实数据和维度表在同一个多维数据集中使用时，如果这些事实数据表中的事实数据在维度表中没有相应的键，则可能会造成错误或者事实数据表的行被忽略。

  • 设计数据更新策略。

    在数据仓库中添加或更改数据时，利用先前数据生成的多维数据集必须在用户使用新数据之前进行更新。将添加的数据并入多维数据集所花的时间比现有数据更改时重建多维数据集所花的时间要少。有关更多信息，请参见维护 OLAP 数据。

创建和使用数据仓库概述


维护 OLAP 数据

Microsoft SQL Server 2000 Analysis Services 的目的是提供对数据仓库数据的快速分析访问。为达到这一目的，Analysis Services 通过数据仓库事实数据表和维度表中的数据创建多维数据集。在多维数据集的创建过程中，数字度量值也被汇总为预聚合的值。多维数据集存储在为快速响应查询而设计的多维结构中，将预聚合的信息与原始事实数据合并以响应各种查询。

多维数据集可以包含直接从数据仓库汇总、复制或读取的数据。修改数据仓库结构或其中所包含的数据将影响从数据仓库中创建的多维数据集的完整性和准确性。Analysis Services 对多维数据集提供连续的联机访问，因此若要修改基础数据仓库，必须完全了解所做的修改对多维数据集的影响，以及如何管理数据仓库中的数据使之与多维数据集内的数据保持同步。

修改数据仓库中的数据之后必须更新 OLAP 数据。需要处理 OLAP 多维数据集、维度和分区以包含数据仓库中的新数据或所修改的数据。处理 OLAP 对象的方法取决于对象和对数据仓库所做修改的类型，如添加数据、修改数据或改变结构等。

实时 OLAP 是使用实时多维数据集使多维数据集数据与基础关系数据库中的修改自动同步的功能。实时多维数据集可用于需要监视和分析实时数据的应用程序，并且旨在扩展 OLAP 功能而不是替换传统的多维数据集设计和应用程序。

数据仓库中的修改

通常需要定期向数据仓库中添加数据，以包含组织业务活动的最新信息。但不经常修改数据仓库中现有的数据，而只是在发现数据的获取来源中有错误需要纠正，或是因组织变动需重新构造数据时才需修改数据仓库中的数据。一般很少修改数据仓库的设计结构。

添加数据

需要经常向数据仓库中添加新数据。在数据仓库中添加数据时，由于数据与多维数据集分区之间的交互作用，客户端应用程序可以联机使用的多维数据集信息会受到影响。可以通过仔细地定义分区筛选以及设计同步 OLAP 和数据仓库数据的策略，来管理向数据仓库中添加数据所带来的影响。

修改数据

若认真对待数据转换、验证和清理等操作，就可以减少因纠正数据仓库中的错误而进行的修改。组织或其产品的结构若发生改变，也需对数据仓库中已有的数据进行修改。例如，将产品重新组织成不同的类别就需要对数据仓库中的数据以及出自数据仓库的报告做重大修改。在某些情况下，这样的修改可能需要对多维数据集进行重新设计。在另外一些情况下，所要做的工作可能只是重新设计维度和处理所有使用那些维度的多维数据集。

应将因修改基础数据中的错误而进行的修改合并到源数据库中，通常是 OLTP 商业数据库，然后在受监控的状态下迁移到数据仓库中。许多商业 OLTP 数据库的设计都要求修改由事务来完成，该事务抵消错误数据并应用新的正确数据。在 OLAP 数据上管理此类纠错事务的影响通常更容易。多维数据集可以包含更正值错误（如不正确的销售值）的新数据事务。然而，将一个维度成员的事实移到另一个成员的事务，比如将一个销售数据发布给了错误的客户，会影响 Avg 等聚合函数的结果。对于非 OLAP 数据库也是如此；如果原来的销售订单被取消但记录仍保留在数据库中，则其将包含在销售记录的计数中并影响计算结果。

根据多维数据集的存储设计，修改事实数据表中的数据会影响对多维数据集查询的准确性，直到对多维数据集进行处理为止。可以使用"刷新数据"处理选项重新装载多维数据集的数据并重新计算聚合。由于聚合设计保持不变，"刷新数据"处理选项会比完整的"完整处理"处理选项的速度快。

即使表架构保持不变，维度层次结构也会受数据仓库维度表中数据改动的影响。维度层次结构基于维度表中成员间的关系。当改变这些关系时（例如，将城市重新组织成不同的销售区域时），必须重新生成维度结构。

添加、修改或删除数据仓库中的数据时必须保持引用的完整性。引用完整性损失会导致多维数据集处理过程中出现错误、避开事实数据表记录或产生不准确的 OLAP 信息。

改变结构

OLAP 多维数据集和维度的结构会受数据仓库设计改变的影响，比如添加、删除、修改表或表之间的关系。当结构改变时，必须修改受影响的多维数据集和维度的设计，重新定义分区和聚合，并彻底处理所修改的多维数据集和维度。

同步 OLAP 和数据仓库数据

当分析服务器正在运行时，有效的多维数据集处于联机状态，随时可由客户端应用程序使用。由于 OLAP 多维数据集分区与数据仓库数据之间存在潜在的交互，因此在设计数据仓库时应考虑同步策略，使添加数据时不会导致多维数据集在可由联机客户端应用程序使用的多维数据集内提供错误的查询答案。

管理数据仓库和 OLAP 数据库的数据添加的策略之一是设计一个批处理更新系统。在该策略中，数据仓库事实数据表中的所有数据在每个记录中都包含一个批号。在设计多维数据集时，在多维数据集的每个分区的筛选中添加一个表达式以指定适用的最大批号，例如，"...AND DWBatch <= 33 ..."。当需要向事实数据表中添加数据时，在新记录中包含一个更大的新批号。这些添加的记录并不影响多维数据集，因为多维数据集的分区被限制为只从以前的批处理中读取数据。

添加到维度表中的数据并不影响多维数据集内现有的专用或共享维度，直到维度被处理时为止。批号在维度表记录中不是必需的，但在保证连续的引用完整性方面很有用。

将一批数据添加到事实数据表和维度表之后，可以对维度和多维数据集或分区进行处理，使其包含新数据。共享维度的处理应在包含它们的多维数据集之前。若要向维度中添加不影响维度结构的新成员，请使用"增量更新"选项。若要添加新成员并重建维度的结构，请使用"重建维度结构"选项。注意，当使用"重建维度结构"选项处理共享维度时，所有包含该维度的多维数据集都将立即变得不可用，只有在处理后才能重新由客户端应用程序使用。然而，当使用"增量更新"选项处理共享维度时，使用该共享维度的多维数据集将显示新成员，但与那些新成员相关联的单元仍保留为空，直到用与新成员相关的事实数据表中的新数据更新多维数据集。

要将一批新数据合并到多维数据集内，可在多维数据集的每个分区中更新筛选表达式以包含新的批号，然后处理或增量更新多维数据集。如果多维数据集的数据分散在多个分区中，可以用其中的一个分区来聚集这批新数据，然后只处理那一个分区。多维数据集的其它分区必须有不接纳新数据的筛选，这样新数据将只添加到那个聚集分区中。

对客户端应用程序的可视性

当正处于联机状态的多维数据集由三个处理选项（"完整处理"、"增量更新"或"刷新数据"）之一处理时，多维数据集将保持联机状态直到处理过程结束，结束时联机多维数据集会被新的多维数据集版本取代。当使用"完整处理"选项处理多维数据集时，联机客户端应用程序与多维数据集的连接将在多维数据集切换到新的版本时断开，每个客户端应用程序必须分别重新连接才能访问新版本。当使用"增量更新"或"刷新数据"选项处理多维数据集时，联机客户端应用程序与多维数据集的连接在处理过程结束时不会中断。即使在不中断服务的情况下，客户端也能立即看到多维数据集的新版本。

共享维度的处理过程会影响在设计中包含该维度的多维数据集。如果使用"重建维度结构"选项处理共享维度，所有使用该维度的多维数据集都将立即变得不可用，必须在处理之后才能重新由客户端应用程序使用。如果使用"增量更新"选项处理共享维度，则使用该维度的多维数据集仍可由客户端应用程序使用，任何添加到该维度的新成员将在维度处理结束时自动由客户端应用程序使用。在没有用新的相关事实更新多维数据集之前，上述任何新成员均没有关联的事实数据。

生成和处理多维数据集

更新多维数据集和维度


管理 Analysis Services

下列主题包含有关管理 Microsoft™ SQL Server™2000 Analysis Services 的概念性信息。

主题 | 描述
在管理 Analysis Services 之前 | 描述在管理 Analysis Services 之前必须采取的预备步骤，如准备数据仓库和定义数据源。
管理工具 | 描述与 Analysis Services 一起使用的用户接口工具，包括 Analysis Manager、数据转换服务 (DTS)、多维表达式 (MDX) 和 msmdarch 命令。
管理任务 | 概括了必要的管理任务和进程。


在管理 Analysis Services 之前

在开始管理 Microsoft® SQL Server ™2000 Analysis Services 之前，应准备数据仓库，以便从中创建多维数据集或数据挖掘模型。同样，如果计划指定通过 ODBC 驱动程序访问的数据源，请为这些数据库创建系统数据源名称 (DSN)。

准备数据仓库

Analysis Services 中的多个对象是从下列数据仓库中的数据创建的：多维数据集、分区、维度和数据挖掘模型。从中创建对象的数据仓库是在该对象的数据源中指定的。有关数据源的更多信息，请参见数据源。

在创建这些对象之前，应准备数据仓库，以便能有效地创建及维护对象。有关准备数据仓库所需执行的具体操作，请参见 OLAP 和数据仓库。

在 ODBC 数据源管理器中定义数据源

Analysis Services 支持 OLE DB 和 ODBC 数据源。如果仅使用 OLE DB 数据源作为 Analysis Services 的输入，则无须使用 ODBC 数据源管理器。

如果打算使用 ODBC 驱动程序的 Microsoft OLE DB 提供程序来连接到 ODBC 数据源，则应在启动 Analysis Manager 之前，确保在 ODBC 数据源管理器中已将所有这些 ODBC 数据源定义为系统 DSN。

说明 Analysis Services 的远程管理员也必须在其计算机上定义相同的数据源。

请参见

指定数据源


管理工具

Microsoft® SQL Server™ 2000 Analysis Services 提供几种管理工具，我们将在以下主题中进行总结。

主题 | 描述
Analysis Manager | 描述用于管理 Analysis Services 的用户接口。
结合 Analysis Services 使用 Active Directory | 详细描述在 Active Directory™ 上注册分析服务器。
对 Analysis Services 使用数据转换服务 | 概括了 Analysis Services 处理任务，该任务用于处理多维数据集、数据挖掘模型和其它对象。
结合 Analysis Services 使用 MDX | 描述用于操作多维度数据的多维度表达式 (MDX) 语法的使用、操作和函数。
Msmdarch 命令 | 描述用于存档及还原 Analysis Services 数据库的命令。


Analysis Manager

Microsoft® SQL Server™ 2000 Analysis Services 包括 Analysis Manager，它是一个提供用户界面以访问分析服务器及其元数据知识库的控制台应用程序。使用 Analysis Manager 可以：

  • 管理分析服务器。多个用户可以使用 Analysis Manager 管理分析服务器。锁定只能应用于被编辑的对象和它们的从属对象。

  • 创建数据库和指定数据源。

  • 生成并处理多维数据集。

  • 创建并处理数据挖掘模型。

  • 指定存储选项并优化查询性能。

  • 管理安全性。

  • 浏览数据源、共享维度、安全角色和其它对象。

  • 查找有关第三方客户应用程序、支持资源、帮助信息更新和产品信息的链接。

  • 遍历 Analysis Manager 教程。这个循序渐进的教程引导您建立、部署、管理以及增强 OLAP 多维数据集。该教程也提供一些有关如何创建数据挖掘模型的说明。

  • 获得有关完整的 SQL Server 2000 产品的信息。

除了教程之外，Analysis Manager 的 HTML（即右侧）窗格可帮助您学习有关联机分析处理 (OLAP) 和数据挖掘方面的概念和术语，以及学习如何存储和管理相关联的数据。


MMC

Microsoft® 管理控制台 (MMC) 是用于服务器和网络管理应用程序（即管理单元）的公用控制台框架。管理单元可使管理员更加有效地管理网络资源。Analysiss Manager 是 MMC 的管理单元。


启动 Analysis Manager

启动 Analysis Manager

  • 在桌面上单击"开始"菜单，指向"程序"子菜单、"Microsoft SQL Server"子菜单、"Analysis Services"子菜单，然后单击"Analysis Manager"命令。


Analysis Manager 树窗格

 Analysis Services

Analysis Manager树窗格

位于 Console Root 文件夹下的名为 Analysis Servers 的文件夹代表 Analysis Manager。此主题描述 Analysis Manager 层次结构及其组件的位置，它们构成 Analysis Manager 树窗格。

分析服务器

Analysis Servers 文件夹中包含代表每个在 Analysis Manager 中注册的分析服务器的图标。图标旁的名称与服务器名称一致。

数据库

每个分析服务器都包括一个或多个数据库。分析服务器图标下的图标用来表示每个数据库。

每个数据库图标下面都有一个：

  • 数据库中指定数据源的 Data Sources 文件夹。

  • 数据库中多维数据集的 Cubes 文件夹。

  • 数据库中指定共享维度的 Shared Dimensions 文件夹。这些维度在数据库级别中定义，并可在数据库的多维数据集之间共享。

  • 数据库中存储数据挖掘模型的 Mining Models 文件夹。

  • 代表数据库中所有数据库角色的 Database Roles 图标。
数据源

每个数据库图标下都有一个在数据库中指定的数据源的 Data Sources 文件夹。数据源维护 OLE DB 提供程序信息、服务器连接信息、网络设置、连接超时和访问权限方面的信息。数据库可在其 Data Sources 文件夹中包含多个数据源。

多维数据集

每个数据库图标下都有一个数据库中的多维数据集的 Cubes 文件夹。每个图标代表一个多维数据集。在 Analysis Manager 树窗格中描述了三种多维数据集：常规多维数据集、链接多维数据集以及虚拟多维数据集。

常规多维数据集

在 Cubes 文件夹中，每个常规多维数据集都由一个图标来表示。每个常规多维数据集图标下面都有一个：

  • Partitions 文件夹，对于多维数据集中的每个分区，均包含一个对应的图标。

  • Cube Roles 图标，表示该多维数据集的所有多维数据集角色。

若要查看常规多维数据集中的维度、度量值和其它组件，请右击它的图标，然后单击"编辑"命令。

链接多维数据集

在 Cubes 文件夹中，每个链接多维数据集都用一个图标来表示。每个链接多维数据集图标下都有一个 Cube Roles 图标，它表示该多维数据集的所有多维数据集角色。

虚拟多维数据集

在 Cubes 文件夹中，每个虚拟多维数据集都用一个图标表示。每个虚拟多维数据集图标下都有一个 Cube Roles 图标，它表示该多维数据集的所有多维数据集角色。

若要查看虚拟多维数据集的维度、度量值和其它组件，请右击其图标，然后单击"编辑"命令。

分区

多维数据集中的 Partitions 文件夹为多维数据集中的每个分区都包含一个图标。在 Analysis Manager 树窗格中描述了两类分区：本地分区和远程分区。

本地分区

在 Partitions 文件夹中，每个本地分区都用一个图标来表示。若要访问分区的设置，右击该分区的图标，然后单击"编辑"命令。

远程分区

在 Partitions 文件夹中，每个远程分区都用一个图标来表示。若要访问分区的设置，右击该分区的图标，然后单击"编辑"命令。

多维数据集角色

在多维数据集下有一个 Cube Roles 图标，它表示该多维数据集的所有多维数据集角色。若要访问这些角色，请右击该图标，然后单击"管理角色"命令。

共享维度

每个数据库图标下都有一个 Shared Dimensions文件夹，它为数据库中的每个共享维度都包含一个图标。这些维度可以包含在数据库的任何多维数据集中。在 Analysis Manager 树窗格中描述了四种共享维度：常规维度、虚拟维度、父子维度和数据挖掘维度。

常规维度

在 Shared Dimensions 文件夹中，每个常规维度都用一个图标来表示。

若要查看维度中的级别、成员和其它组件，请右击其图标，然后单击"编辑"命令。

虚拟维度

在 Shared Dimensions 文件夹中，每个虚拟维度都用一个图标来表示。

若要查看维度中的级别、成员和其它组件，请右击其图标，然后单击"编辑"命令。

父子维度

在 Shared Dimensions 文件夹中，每个父子维度都用一个图标来表示。

若要查看维度中的级别、成员和其它组件，请右击其图标，然后单击"编辑"命令。

数据挖掘维度

在 Shared Dimensions 文件夹中，每个数据挖掘维度都用一个图标来表示。

若要查看维度中的级别、成员和其它组件，请右击其图标，然后单击"编辑"命令。

挖掘模型

在每个数据库图标下是一个 Mining Models 文件夹，该文件夹为数据库中的每一个挖掘模型包含了一个图标。在 Analysis Manager 中描述了两种类型的挖掘模型，关系型及 OLAP 型。

关系挖掘模型

在 Mining Models 文件夹中，每个关系挖掘模型都用一个图标来表示。

若要查看或修改挖掘模型的结构，请右击它的图标，然后单击"编辑"命令。若要查看挖掘模型的内容，请右击它的图标，然后单击"浏览"命令。

OLAP 挖掘模型

在 Mining Models 文件夹中，每个 OLAP 挖掘模型都用一个图标来表示。

若要查看或修改挖掘模型的结构，请右击它的图标，然后单击"编辑"命令。若要查看挖掘模型的内容，请右击它的图标，然后单击"浏览"命令。

挖掘模型角色

在挖掘模型下有一个 Mining Model Roles 图标，它表示该挖掘模型的所有挖掘模型角色。若要访问这些角色，请右击该图标，然后单击"管理角色"命令。

数据库角色

在数据库下面有一个 Database Roles 图标，它表示该数据库中的所有数据库角色。这些角色可指派给数据库中的任何多维数据集。若要访问这些角色，请右击该图标，然后单击"管理角色"命令。

请参见

对象构架


结合 Analysis Services 使用 Active Directory

Microsoft® SQL Server™ 2000 Analysis Services 支持 Active Directory™。可用 Active Directory 注册分析服务器，为用户提供使用 Microsoft Windows 2000 搜索功能搜索已注册服务器的简便途径。

对于注册的每个分析服务器，均可暴露一些服务器信息，用户随后使用这些信息来选择服务器。例如，可提供有关详细资料，如服务器的位置、维护服务器的人员的姓名、如何使用服务器、它所存储的是数据类型等。在遵守严格命名约定的企业中，使用附加条件定位服务器的能力可帮助规避那些不直观或难于记住的服务器名称。

在 Analysis Services 中，分析服务器支持 Active Directory。无法用 Active Directory 注册特定数据库和多维数据集。

用 Active Directory 注册分析服务器

在安装过程中，Active Directory 配置为接受 SQL Server 和 Analysis Services 实例的注册条目。安装完成后，可注册分析服务器，使其可作为 Intranet 上的共享资源使用。注册分析服务器后，Windows 2000 将新条目通知给 Active Directory。

用 Active Directory 注册分析服务器不能作为创建用户帐户或设置权限的替代方法。选择注册服务器的用户服务遵守您已为特定服务器、数据库以及多维数据集设置的安全性措施。

若要注册分析服务器，请使用"属性"对话框。可通过右击 Analysis Manager 树窗格中的某个服务器名称，然后单击"属性"命令来访问"属性"对话框。使用"Active Directory"选项卡注册服务器并设置附加属性。

可设置的属性与用户定义的搜索条件对应。指定属性时，请提供对用户最有帮助的值。有关更多信息，请参见 Active Directory 选项卡（属性对话框）。

使用 Active Directory 搜索分析服务器需要您提供的代码。为支持 Active Directory 搜索，可创建一个简单的应用程序或工具，以使用户得以通过基于名称搜索或关键字搜索查找分析服务器。创建 Active Directory 应用程序需要 Active Directory 服务接口 (ADSI)。可使用 Active Directory 对象的函数和属性来支持浏览。有关 ADSI 的更多信息，请访问 Microsoft Web 站点 MSDN® Web 页。


对 Analysis Services 使用数据转换服务

可以使用 Microsoft® SQL Server™ 2000 的数据转换服务 (DTS) 部分处理多维数据集、数据挖掘模型和其它对象，并创建基于挖掘模型的预测任务。对于处理活动，提供了称为 Analysis Services 处理任务的 DTS 任务；对于挖掘模型预测，提供了数据挖掘预测查询任务。可在 DTS 设计器内访问这两种任务，DTS 设计器提供了一个用来定义 DTS 包和任务的用户界面。在定义完包含 Analysis Services 处理任务或数据挖掘预测查询任务的程序包后，可以调度它自动执行。有关更多信息，请参见用数据转换服务处理对象。

请参见

DTS 基础


结合 Analysis Services 使用 MDX

多维表达式 (MDX) 用于各种管理任务中。可以使用 MDX 创建下列项目：

项目 | 描述 | 有关更多信息，请参见
对策 | 最终用户发起的对选定的多维数据集或多维数据集的部分进行的操作。 | 对策
计算成员 | 一个维度成员，在运行时将使用定义计算成员时指定的表达式计算其值。 | 计算成员
计算单元 | 确定与选择的特定单元相关联的多维数据集单元值的表达式。该表达式替代度量值的聚合函数。 | 计算单元
命名集 | 为重复使用而创建的一组维度成员或集合表达式，例如用于 MDX 查询中。 | 命名集
自定义汇总公式 | 确定与维度级别成员相关联的多维数据集单元值的表达式。该表达式替代度量值的聚合函数。 | 自定义汇总公式和自定义成员公式
自定义成员公式 | 确定与成员相关联的多维数据集单元值的表达式。该表达式替代度量值的聚合函数。 | 自定义汇总公式和自定义成员公式
维度安全性中的自定义规则 | 指定角色可访问的维度级别和成员的规则。 | 维度安全性中的自定义规则
自定义单元安全性规则 | 指定角色可访问的多维数据集单元的规则。 | 自定义单元安全性规则

有关 MDX 的更多信息，请参见 MDX。


Msmdarch 命令

可以使用 msmdarch 命令存档及还原 Microsoft® SQL Server™ 2000 Analysis Services 中的数据库。可在"命令提示符"窗口中或从 .bat 文件来执行该命令。如果失败，则 msmdarch 命令将返回退出代码 1。有关更多信息，请参见存档和还原数据库。

使用 msmdarch 命令存档 Analysis Services 数据库

命令提示符

命令提示符

使用 msmdarch 命令还原 Analysis Services 数据库

命令提示符


管理任务

在首次执行 Microsoft ®SQL Server ™2000 Analysis Services 中的管理任务或过程之前，应先阅读以下主题所包含的信息。这些主题在适当位置提供了指向分步操作过程的链接。有关 Analysis Services 中特定对象以及各个对象之间如何协同工作的更多信息，请参见 Analysis Services 构架。

主题 | 描述
配置分析服务器 | 包含有关注册服务器、设置服务器属性、迁移知识库以及配置服务器以便从 Internet 进行访问等信息。
为多维数据集创建必备对象 | 包含有关创建数据库、指定数据源和创建维度的信息。
生成和处理多维数据集 | 描述生成多维数据集的不同方法，以及处理要使用的多维数据集前后浏览数据的各种途径。
创建安全角色 | 提供关于为不同的安全级别创建角色和规则的背景信息。
管理分区 | 包含有关创建和合并分区的信息。
用可选功能增强维度 | 描述加入附加信息、创建维度数据（包括成员属性、自定义成员公式及成员组）自定义视图的不同方式。
用可选功能增强多维数据集 | 描述如何使用专门类型的多维数据集数据和配置，包括计算成员、命名集、操作、写启用多维数据集和钻取。
更新多维数据集和维度 | 描述更新和重建多维数据集和维度数据及结构的不同方法。
建立和使用数据挖掘模型 | 包含有关使用挖掘模型的信息。
存档、还原和复制数据 | 包含有关在 Analysis Manager 中存档和还原数据库以及复制和粘贴对象的信息。
分析和优化性能 | 描述如何使用 Analysis Manager 生成查询历史记录的报表以及根据该历史记录优化存储及性能。
自动处理和调度管理任务 | 描述如何在 Analysis Manager 中使用数据转换服务 (DTS) 和批处理文件执行某些管理任务。

请参见

管理工具

在管理 Analysis Services 之前


配置分析服务器

下列主题包含有关在 Microsoft SQL Server 2000 Analysis Services 中配置分析服务器的概念性信息。

主题 | 描述
注册服务器 | 包含与注册分析服务器时所发生的动作以及如何注册服务器有关的信息。
设置服务器属性 | 描述如何使用"属性"对话框来设置服务器属性。
迁移 Analysis Services 知识库 | 描述使用迁移知识库向导将 Analysis Services 知识库从一种格式和位置移动到另一种格式和位置。


注册服务器

安装 Microsoft SQL Server 2000 Analysis Services 的计算机被自动注册为一个服务器。它会直接显示在 Analysis Manager 树窗格中 Analysis Servers 文件夹的下面。若要访问和维护其它服务器上的元数据，必须对它们分别进行注册。

每个服务器均存储其自身的 Analysis Services 数据库。

注册分析服务器

Analysis Manager


设置服务器属性

"属性"对话框授予您对许多存储在注册表中的分析服务器设置的访问权限。右击 Analysis Manager 树窗格中的分析服务器节点，然后单击"属性"命令，则会显示该对话框。

可利用"属性"对话框优化服务器。这使您得以获得来自 Microsoft SQL Server 2000 Analysis Services 的最佳性能，同时它还可尽可能减少在手工编辑存储于注册表中的设置时所发生的危险。还可以使用"属性"对话框把该对话框中的选项重置为默认的安装值。

"属性"对话框包含控制用户界面、服务器环境、处理、日志记录以及加载项的选项。

属性对话框


迁移 Analysis Services 知识库

对于每个分析服务器，Microsoft SQL Server 2000 Analysis Services 创建了一个称作"Analysis Services 知识库"的知识库，以便为分析服务器的对象（多维数据集、维度等）存储元数据。默认情况下，该知识库是安装 Analysis Services 的服务器计算机上的 Microsoft Access (.mdb) 数据库。默认情况下，该数据库为：

C:\Program Files\Microsoft Analysis Services\Bin\msmdrep.mdb。

可使用迁移知识库向导将该知识库迁移到同一或不同服务器计算机上的 SQL Server (.mdf) 数据库。然后，可使用该向导将知识库迁移到另外一个 SQL Server 数据库。

在将知识库迁移到 SQL Server 数据库之后，无法再将知识库迁移回 Microsoft Access 数据库。

将知识库从默认的 Microsoft Access 数据库迁移到某个 SQL Server 数据库或者从一个 SQL Server 数据库迁移到另一个 SQL Server 数据库时，可以更改知识库的格式。默认情况下，知识库是 SQL Server 7.0 OLAP 服务格式。迁移知识库时，可以保持该格式，或者更改该格式以使用 SQL Server 2000 Meta Data Services 知识库格式。如果选择使用 Meta Data Services 格式，则建议您将知识库存储在 msdb 数据库中，使用这种格式的其它 SQL Server 组件也将其知识库存储在该数据库中。将知识库从一个 SQL Server 数据库迁移到另一个 SQL Server 数据库时，还可以将其从 Meta Data Services 格式更改为 SQL Server 7.0 OLAP 服务格式。

在启动迁移知识库向导之前，创建或标识要将 Analysis Services 知识库迁移到的 SQL Server 数据库。

启动迁移知识库向导

Analysis Manager

Analysis Manager

迁移之后将保留旧的和新的数据库，但 Analysis Services 只使用新的数据库。您可以通过在 Windows 资源管理器中删除文件来手工删除旧数据库。

如果出现错误使迁移知识库向导不能成功完成其操作，则取消迁移，Analysis Services 将继续使用启动该向导之前所使用的知识库。


为多维数据集创建必备对象

创建多维数据集之前，必须事先创建或者确定支持对象（例如数据库和维度）。以下主题提供有关这些对象以及它们如何与多维数据集一起工作的基本信息。

主题 | 描述
创建数据库 | 包含有关数据库以及它们在 Microsoft SQL Server 2000 Analysis Services 中所存储的内容的信息。
指定数据源 | 包含有关多维数据集数据源的信息，以及生成使用不同数据源的多维数据集后指定不同数据源所产生的影响。
创建共享维度 | 描述共享维度的创建，它可用于多个多维数据集。
创建虚拟维度 | 描述虚拟维度的创建，它是由现有维度组合而成。
查看维度数据 | 包含有关如何浏览维度数据的信息。


创建数据库

在每个分析服务器上可以创建一个或多个数据库来存储多维数据集、数据挖掘模型和相关对象。为每组相关的计划创建的多维数据集和挖掘模型创建一个数据库。每个数据库存储它自己的多维数据集、挖掘模型、数据源、共享维度和数据库角色。在多个多维数据集和挖掘模型中共享的对象应该存储在同一个数据库中。

若要创建数据库，请使用"数据库"对话框。

创建数据库

Analysis Manager

Analysis Manager

请参见

数据库


指定数据源

为每个数据库指定一到多个数据源，使这些数据源可以为多维数据集、数据挖掘模型和其它对象提供数据。当指定数据源时，Analysis Manager 检索可用的 OLE DB 提供程序的列表。如果要将可通过 ODBC 驱动程序访问的数据库用作数据源，请选择 ODBC 驱动程序的 Microsoft OLE DB 提供程序作为 OLE DB 提供程序，然后从单独的下拉列表中为"ODBC 数据源管理器"中所定义的数据库选择 ODBC 数据源名称 (DSN)。可以很方便地选择一个提供程序，而且若有必要，还可从这些列表中选择一个 DSN。

说明 "ODBC 数据源管理器"中定义的 DSN 必须定义为系统 DSN。

若以后编辑了数据源并且更改了提供程序，在随后的对象处理中就会发生错误。例如，在一个时间维度中，级别的 Member Key Column 和 Member Name Column 属性值是经常出现的 SQL 表达式。如果原来的提供程序支持该表达式语法，而新的提供程序并不支持，则处理维度将会失败。

若要指定数据源，请使用"数据链接属性"对话框。

指定数据源

Analysis Manager

Analysis Manager

请参见

数据源


创建共享维度

维度是一些描述性的分类，通过这些分类，可以对多维数据集中的数值数据（即度量值）进行划分以便分析。例如，如果多维数据集的度量值是 Cost，维度是 Time、Supplier 和 Item Description，那么多维数据集用户就可以将 Cost 划分成 Time、Supplier 和 Item Description 等不同分类。

共享维度指可用于数据库中多个多维数据集的维度。对于将要添加到多个多维数据集的公用维度（例如 Time），应该创建共享维度。可以通过使用维度向导或维度编辑器创建共享维度，而且您具有在创建 OLAP 挖掘模型时，创建共享维度的选项以便存储数据挖掘分析的结果。

以下主题描述了创建常规共享维度的方法。

主题 | 描述
用向导创建共享维度 | 描述在维度向导中创建常规共享维度的步骤。
用编辑器创建共享维度 | 描述在维度编辑器中新建共享维度的步骤。
创建虚拟维度 | 提供有关虚拟维度的信息，虚拟维度是基于列或成员属性的维度。
查看维度数据 | 描述如何使用维度浏览器浏览数据。

挖掘模型向导


用向导创建共享维度

若要快速方便地创建常规共享维度，请使用维度向导。此向导将引导您逐步指定共享维度的结构：

  • 必需的功能，例如维度的源数据

  • 某些条件下必需的功能，例如维度级别、维度表联接，以及各种类型的维度表列

  • 可选功能，例如特殊属性和自定义公式
指定维度数据源

可以指定是从单个维度表、多个维度表、OLAP 数据挖掘模型，还是从另一个维度的成员属性创建共享维度。所选的维度表、表或挖掘模型应该包含希望在共享维度中出现的列。如果从单个维度表创建维度，那么在将共享维度添加到多维数据集，并且将共享维度表只联接到事实数据表时，多维数据集将具有星型架构。如果共享维度是从多个维度表创建的，那么多维数据集将具有雪花架构。不论何种情况，如果在向导中看不到要使用的表，那么可以定义新数据源。

如果要从 OLAP 挖掘模型创建维度，则从具有由挖掘模型预测的内容的列来创建维度，而且在将维度添加到多维数据集时，挖掘模型维度与从表创建的维度对多维数据集的架构有相同的影响。

如果使用另一维度的成员属性，那么可以创建虚拟维度。将虚拟维度添加到多维数据集时，其使用方法类似于其它维度。

当所使用的单个维度表是父子维度时，就可以创建另一类型的维度。维度表中的两列用于定义维度，其中一列确定每个维度成员，另一列则用来定义其父代。如果需要，也可以为父子定义新数据源。

某些情况下必需的步骤

在特定情况下需要采取下列措施，如下所述。

选择维度类型

如果维度表同时包含日期格式列和其它格式列，则应指定共享维度是标准维度还是时间维度。

创建时间维度级别

如果指定创建时间维度，则也指定了时间维度的级别。

创建和编辑联接

如果要创建雪花架构维度，则可以确认、删除或指定维度表间的新联接。

选择级别

对于星型架构、雪花架构或虚拟维度，可以为它们定义要在维度中使用的级别。每个级别由列来定义（在一些时间维度中除外）。

常规共享维度中的级别按层次进行组织。例如，在维度 Location 中，有 Country、State、City 等级别。每个级别中的值（即成员）决定最终用户使用表格格式浏览器浏览多维数据集时，可以看到的列和行标题。（在图形浏览器中，最终用户可以看到由成员产生的其它类型的描述性标签。例如，每个成员会在轴的刻度上生成值）。所选的列用于提供成员名称和成员键。

指定成员键列

对于星型架构或雪花架构维度，如果向导提供的默认值不唯一地标识级别成员，则可以更改成员键列。

选择用于父子维度的列

如果要创建父子维度，请选择父子维度所依据的两列。

选择带有成员属性的维度

如果要创建虚拟维度，请选择含有将用于定义维度的成员的源维度。

选择用于虚拟维度的级别

如果要创建虚拟维度，则还需要选择源维度的成员属性以定义维度级别。

选择挖掘模型和可预测列

只有使用 OLAP 挖掘模型定义数据挖掘维度时才显示此步骤。可以选择挖掘模型以及某个可用的可预测列来创建维度。

可选功能

维度向导中的高级选项使您得以进一步定制共享维度。依据要创建的维度类型，通过从维度向导中的"选择高级选项"步骤进行选择，可以访问这些选项。在向导的最后一步中提供了另一个选项"创建维度的层次结构"。如果是从多维数据集编辑器或多维数据集向导启动的维度向导，则可以将新维度（这种情况下的默认专用维度）更改为共享维度。

可启用的高级选项包括：

可更改维度

如果要从单个或多个表创建维度，则可以将维度作为可更改维度。与其它维度相比，可更改维度允许更多种类的更改，而无需对维度或包含它的多维数据集进行完整处理。

自定义汇总

对于父子维度，可以定义决定如何聚合成员的公式或数学运算符。

有数据的成员

对于父子维度，可以启用维度成员的相关数据。

成员的排序依据和唯一性

对于除数据挖掘维度之外的所有维度类型，可以启用成员排序。从成员名称、成员键或指定列的内容中选择。针对每个级别，也可以指定成员名称和成员键中唯一性的作用域。

存储模式和成员组

如果要从单个或多个表创建维度，那么可以确定维度成员的存储模式并启用成员分组。可以指定维度具有 MOLAP 的存储模式还是具有 ROLAP 的存储模式。首选存储模式为 MOLAP，但是在极大的维度（即通常具有五百万或更多成员的维度）中它不被支持。如果选择 MOLAP，则可以指定成员组在自动插入到维度最低级别之上的级别中创建。这样做的前提条件是最低级别在公用的父代下包含超过 64,000 个成员。

回写

对于父子维度，可以启用回写功能。对维度成员的更改将直接写入维度表。

如前所述，向导的最后一步提供了"创建维度的层次结构"选项。此选项通常被选来用于创建多层次维度的一个层次结构。若要在维度中创建另一层次结构，请再次运行向导并指定同一维度名，但要指定不同的层次结构名。

使用维度向导创建共享维度

Analysis Manager

Analysis Manager

请参见

可更改维度

多维数据集结构

数据源

级别和成员

成员组

成员名称和成员键

维度存储模式


用编辑器创建共享维度

可以使用维度编辑器从单个或多个相关表或虚拟维度中创建新共享维度（例如常规维度）。也可以使用维度编辑器中的多层次结构创建新共享维度。但是，不能使用维度编辑器创建新父子维度或数据挖掘模型，而必须使用维度向导进行创建。

在维度编辑器中，可选择共享维度的若干选项：数据源、维度表和维度级别。

所选数据源应该包含定义共享维度的表和列。数据源名称标识了数据库资源及其所使用的参数。

所选维度表应该包含共享维度中需要的列。维度表指包含维度成员的表。在多维数据集架构中，它是联接到中央事实数据表的外围表。

选择共享维度中需要的级别。各级别由列来定义。常规共享维度中的级别按层次进行组织。例如，在维度 Location 中，有 Country、State、City 等级别。每个级别中的值（即成员）决定最终用户使用表格格式浏览器浏览多维数据集时，可以看到的列和行标题。（在图形浏览器中，最终用户可以看到由成员产生的其它类型的描述性标签。例如，每个成员会在轴的刻度上生成值）。可以修改维度属性及其级别。

使用维度编辑器创建共享维度

Analysis Manager

Analysis Manager

在使用维度编辑器创建带有多层次结构的新共享维度时，在新共享维度的名称中使用句点以标识一个层次结构。可以使用这个新维度和已标识的层次结构创建维度的其它层次结构。

使用维度编辑器创建带有多层次结构的维度

Analysis Manager

Analysis Manager

请参见

创建有多重层次结构的维度

数据源

维度编辑器 — 数据视图

维度编辑器 — 架构视图

维度

维度向导

级别和成员


创建虚拟维度

虚拟维度使您得以在不增加多维数据集大小的情况下，在浏览器中的多个轴上显示来自单个维度表的分类标签。（如果没有虚拟维度，则需要多个常规维度或父子维度。）而且，可以在一个轴上显示维度级别的成员，而在另一个轴上显示那些成员的相关属性（即成员属性）。当最终用户希望依据成员和成员属性间的关系来探究度量值的趋势时，这样的表示法很有用。

例如，某最终用户要求按 Product Name 和 Package Material 来分析 Sales，以探究客户对可回收的 Package Material 的喜好程度。如果维度 Product 已包含 Product Name，那么可以将 Package Material 添加为成员属性并用它创建虚拟维度。将虚拟维度添加到多维数据集后，用户可以交叉引用 Product Name 和 Package Material，并在交叉位置比较 Sales。

虚拟维度的主要优点是节省存储空间，以及减少多维数据集处理时间。不存储虚拟维度的聚合数据。而在内存中计算该数据。因此，如果向多维数据集添加虚拟维度，其存储空间和处理时间不会增加，这一点与添加常规维度或父子维度时不同。所有多维数据集都需要维度，但是并非都需要虚拟维度。

虚拟维度的创建是通过其它非虚拟维度的成员属性或列来进行的。只有当提供成员属性或列的维度也在同一多维数据集中时，才可以将虚拟维度添加到该多维数据集。若要用列创建虚拟维度，则这些列必须存在于另一维度的某个表中，但不必是该维度定义的一部分（例如，级别源）。有关成员属性的更多信息，请参见创建成员属性。

若要创建基于成员属性的虚拟维度，请使用维度向导。向导使您得以选择用于定义虚拟维度的成员属性。无法在维度编辑器中创建基于成员属性的虚拟维度。只有从多维数据集编辑器中启动维度向导后，才能在多维数据集编辑器中创建虚拟维度。但是，一旦创建后，便可以在维度编辑器（如果虚拟维度是共享的）或多维数据集编辑器（如果虚拟维度是专用的）中编辑虚拟维度。

根据成员属性创建虚拟维度

Analysis Manager

Analysis Manager

若要基于列创建虚拟维度，请使用维度向导。向导使您得以选择用于定义虚拟维度的列。

根据列创建虚拟维度

Analysis Manager

Analysis Manager

请参见

维度编辑器 — 数据视图

维度编辑器 — 架构视图

维度向导

虚拟维度


查看维度数据

维度浏览器使您得以在 Analysis Manager 中查看维度数据。可以查看维度的成员、成员属性值和自定义成员公式。

如果维度是写启用的，那么还可以更新这些项目。

浏览共享维度

Analysis Manager

Analysis Manager

浏览专用维度

Analysis Manager

Analysis Manager

请参见

维度浏览器


生成和处理多维数据集

生成和处理多维数据集是 Microsoft® SQL Server™ 2000 Analysis Services 中最常见的管理任务的其中两种。Analysis Manager 提供向导和编辑器以帮助您执行这些任务。生成多维数据集时应考虑多维数据集的数据源、多维数据集将使用的存储类型和希望预先计算的数据的数量。

处理多维数据集时，根据想要采用的更改类型，可以从不同的处理方法中进行选择。此主题包含帮助您做出这些决策的有关信息。

您还可以使用决策支持对象 (DSO) 通过编程方式生成和处理多维数据集。有关更多信息，请参见使用决策支持对象。

主题 | 描述
生成多维数据集 | 描述如何使用多维数据集向导和多维数据集编辑器生成和维护多维数据集，以及在处理过程的每一步中所指定的项目。
设计存储选项和聚合 | 描述使用存储设计向导设计存储选项和聚合时所应采用的步骤和选项。
管理链接多维数据集 | 讨论链接多维数据集的特殊要求，包括同步和用户定义函数的使用。
处理多维数据集 | 描述在多维数据集中执行完整处理的条件。
查看多维数据集数据 | 描述如何使用多维数据集浏览器查看多维数据集数据，同时回顾了可更改维度、深化和切片。

请参见

多维数据集

处理多维数据集


生成多维数据集

可以使用多维数据集向导或多维数据集编辑器来生成多维数据集。多维数据集向导指导您完成该进程的各个步骤。多维数据集允许您按自己的顺序执行其中的某些步骤。若要使用多维数据集向导或多维数据集编辑器生成多维数据集，请务必为多维数据集指定数据源、事实数据表、度量值和维度。

数据源包含要包括在多维数据集中的事实数据表和维度表。数据源名称标识了数据库资源及其所使用的参数。

事实数据表包含要包括在多维数据集中的度量值。事实数据表是架构中的中央表。它包含多维数据集最终用户所主要关心的数字数据（也就是度量值）。事实数据表还包含联接到维度表中主键的外键。

所选择的度量值是您希望最终用户可以使用的度量值。度量值包含最终用户要查看和分析的数字数据（例如 Sales）。每一个度量值对应事实数据表中的一列。该列提供度量值的值。

您所选择的维度最终用户也可以使用。维度是描述性的分类，通过它可将度量值分离出来进行分析。在表格式浏览器中，维度提供列标题、行标题和副标题，通过它们可以将度量值分离并显示给最终用户。（在图形式浏览器中，它们提供其它类型的描述性标志，但功能与表格式浏览器中相同。）例如，度量值是 Sales，维度是 Time、Location 和 Product。最终用户可以将 Sales 分为不同类的 Time、Location 和 Product。Time 中为年提供了标题，为月提供了副标题。Location 和 Product 中也提供了不同的标题和副标题。

每个维度是由维度表中的一列或多列创建的。这些列提供维度的值，并产生最终用户所看到的列标题、行标题和副标题。

每个维度表包含一个主键，它联接到事实数据表中或其它维度表中的外键。

也可以生成虚拟多维数据集，它将以前生成的多个多维数据集中的元素组合在一起。最终用户浏览虚拟多维数据集时会看到这些组合在一起的元素就好像是在一个多维数据集中一样。虚拟多维数据集的优点之一是只存储其定义而不存储其数据。因此，虚拟多维数据集所要求的存储空间比常规多维数据集所要求的少得多。

也可以生成链接多维数据集，以便在向最终用户分配多维数据集数据时提供更多灵活性。

请参见

多维数据集

多维数据集结构

多维数据集向导

多维数据集编辑器 — 数据视图

多维数据集编辑器 — 架构视图

数据源

维度

度量值


用向导生成多维数据集

若要快速而简便地生成多维数据集，请使用多维数据集向导。

启动多维数据集向导

Analysis Manager

Analysis Manager

在您完成向导之后，屏幕上会显示出现多维数据集编辑器，它可以帮助您进一步完善多维数据集。

多维数据集生成后，在您和最终用户查看其数据前必须对其进行处理。处理过程要花费大量时间，具体情况取决于多维数据集的大小。

说明 只有在最终用户重新连接到服务器计算机之后，新处理的虚拟多维数据集才可见

请参见

用编辑器生成多维数据集

多维数据集

处理多维数据集


用编辑器生成多维数据集

多维数据集编辑器使您得以选择执行特定任务及这些任务的变形时所要遵守的顺序。还可以查看并修改对象属性。也还可以使用多维数据集编辑器更新现有的多维数据集。

用多维数据集编辑器生成多维数据集

Analysis Manager

Analysis Manager

请参见

用向导生成多维数据集

多维数据集

多维数据集编辑器 — 数据视图

多维数据集编辑器 — 架构视图

多维数据集向导


创建和维护专用维度

专用维度只能用于一个多维数据集，而不能用于其它的多维数据集。若要创建专用维度，请使用多维数据集编辑器和维度向导。

创建专用维度

Analysis Manager

Analysis Manager

创建专用维度后，请使用多维数据集编辑器对其进行维护。

请参见

多维数据集编辑器 — 数据视图

多维数据集编辑器 — 架构视图

维度

维度向导


向多维数据集添加多列度量值

度量值可以包含组合在一个表达式中的多个列。例如，Profit 度量值是下面这两个数字列的差值：Sales 和 Cost。

当用多维数据集编辑器生成或更新多维数据集时，可以添加这类度量值。

向多维数据集内添加多列度量值

Analysis Manager

Analysis Manager

添加度量值之后，必须使用存储设计向导为多维数据集重新设计存储选项和聚合。

必须在最终用户能够查看多维数据集的数据之前处理该多维数据集。根据多维数据集的大小，处理过程可能需要花相当长的时间。

请参见

多维数据集编辑器 — 数据视图

多维数据集编辑器 — 架构视图

度量值

处理多维数据集

存储设计向导


生成虚拟多维数据集

若要快速而简便地生成虚拟多维数据集，请使用虚拟多维数据集向导。该向导指导您完成指定虚拟多维数据集的多维数据集、度量值和维度的各个步骤。

选择多维数据集，其中应包含您希望包括在虚拟多维数据集中的数据。多维数据集是一个数据的集合，这些数据经过组织后汇总到一个由度量值和维度所定义的多维结构中。通过包含所选的度量值和维度，虚拟多维数据集可以创建这些多维数据集的组合视图。

您所选的度量值即是虚拟多维数据集最终用户可用的度量值。度量值包含最终用户要查看和分析的数字数据（例如 Sales）。每一个度量值对应所选多维数据集事实数据表中的一列。该列提供度量值的值。

您选择的维度即是虚拟多维数据集最终用户可用的维度。维度是描述性的分类，通过它可将度量值分离出来进行分析。在表格式浏览器中，维度提供列标题、行标题和副标题，通过它们将度量值分离并显示给最终用户。（在图形式浏览器中，它们提供其它类型的描述性标志，但功能与表格式浏览器中相同。）例如，如果度量值是 Sales，维度是 Time、Location 和 Product，最终用户可以把 Sales 分成 Time、Location 和 Product类别。Time 中为年提供了标题，为月提供了副标题。Location 和 Product 中也提供了不同的标题和副标题。

每个维度是由维度表中的一列或多列创建的。这些列提供维度的值，维度值产生虚拟多维数据集用户所能看到的列标题、行标题和副标题。

说明 基于链接多维数据集的虚拟多维数据集不支持该链接多维数据集中包括的自定义汇总运算符、自定义汇总公式、单元计算或自定义成员公式。

启动虚拟多维数据集向导

Analysis Manager

Analysis Manager

向导的最后一个步骤是提供给您一个选项，让您决定是现在还是以后处理虚拟多维数据集。在您和最终用户查看多维数据集的数据之前，必须对它进行处理。依据虚拟多维数据集中未处理的多维数据集的大小，处理过程可能会花很长的时间。如果虚拟多维数据集中所有的多维数据集都已处理，则虚拟多维数据集的处理会快得多。

说明 只有在最终用户重新连接到服务器计算机之后，新处理的虚拟多维数据集才可见。

在对一个源多维数据集进行结构性和非结构性更改后，必须处理相关的虚拟多维数据集以使最终用户总是能访问这些虚拟多维数据集。（如果组件多维数据集的结构自上一次处理之后没有更改，则此处理过程将比处理组件多维数据集要快得多。）这些更改包括添加或更改计算成员或度量值、更改安全性角色和更改 Description 属性值。进行非结构性更改时，只要连接到服务器计算机的虚拟多维数据集用户保持连接状态，他们就不会受到影响。但是，在处理相关虚拟多维数据集之前，处于连接状态的最终用户将看不到它们。

请参见

维度

链接多维数据集

度量值

处理多维数据集

虚拟多维数据集

虚拟多维数据集向导


生成链接多维数据集

使用"链接多维数据集"对话框生成链接多维数据集。该对话框允许为发布服务器上的一个新链接多维数据集指定源多维数据集。源多维数据集可以基于任何当前用户有权限的数据源。

生成新的链接多维数据集

Analysis Manager

如何创建链接多维数据集

若要为新的链接多维数据集选择源多维数据集，请从源多维数据集窗格的多维数据集列表中选择一个多维数据集。

重要 如果源多维数据集引用包含在发布服务器上 DLL 中的用户定义函数，DLL 需要在链接多维数据集的订阅服务器上注册，以便链接多维数据集可以调用用户定义函数。并且，如果源多维数据集有带自定义成员公式或自定义汇总公式的成员，则在发布服务器上引用的多维数据集必须在订阅服务器上引用。通过创建另一个基于在公式中引用的多维数据集的链接多维数据集，可以在订阅服务器上进行引用。该链接多维数据集在订阅服务器上的名称必须与在发布服务器上的源多维数据集相同。

指定链接多维数据集的数据源

Analysis Manager

如何指定链接多维数据集的数据源

如果源多维数据集是在"源多维数据集"框中未列出的数据源的成员，则可以用"多维数据源"对话框添加新的数据源。选取多维数据集后，在"名称"框中为其命名。在"维度"框中显示多维数据集的维度列表。在创建链接多维数据集之前，必须决定是否在创建新的链接多维数据集之后立即对其进行处理。如果想立即处理多维数据集，则必须选取"创建新多维数据集后进行处理"复选框。

"多维数据源"对话框用于向数据库中添加新的数据源。名称字段指定新的数据源所驻留服务器的名称。"数据库"列表指定在该服务器上的一个数据库。单击"测试连接"可以测试服务器连接设置。

单击"高级"打开"数据链接属性"对话框。当想对数据源连接使用非默认的选项和属性时，使用这个对话框指定数据源。例如，如果远程服务器的登录帐户与当前的帐户不同，则使用该对话框指定不同的用户名和密码。也可以使用对话框的"高级"和"全部"选项卡设置其它连接属性。

在创建新的多维数据集之后，必须在客户应用程序浏览它之前进行处理。

处理链接多维数据集

Analysis Manager

如何处理链接多维数据集

有关更多信息，请参见链接多维数据集对话框。

请参见

链接多维数据集

管理链接多维数据集


生成分布式分区多维数据集

分布式分区多维数据集是利用远程分区的常规多维数据集，它在多个分析服务器之间分布查询和处理工作负荷。

用于创建分布式分区多维数据集的过程由常规多维数据集的创建开始。若要创建常规多维数据集，请使用多维数据集向导或多维数据集编辑器。

启动多维数据集向导

Analysis Manager

Analysis Manager

用多维数据集编辑器生成多维数据集

Analysis Manager

Analysis Manager

创建常规多维数据集之后，可以使用分区向导为该多维数据集创建远程分区。

启动分区向导

Analysis Manager

Analysis Manager

在分区向导中，使用"指定分区类型"步骤为新分区指定本地存储或远程存储。若要创建远程分区，请选择"远程"。接着，从"选择此分区将要驻留的服务器"下拉列表中选择注册的远程分析服务器，或者单击"注册服务器"按钮，注册一个新的远程分析服务器。

重要 若要创建远程分区，分析服务器服务 (MSSQLServerOLAPService) 的登录的帐户必须是域用户帐户。

请参见

多维数据集

分布式分区多维数据集

多维数据集向导

多维数据集编辑器 — 数据视图

多维数据集编辑器 — 架构视图

处理多维数据集

远程分区


生成实时多维数据集

实时多维数据集是常规多维数据集，它利用为实时更新而启用的关系 OLAP (ROLAP) 共享维度、专用维度或分区。在 Microsoft® SQL Server™ 2000 Analysis Services 中实时多维数据集支持实时 OLAP。

说明 实时 OLAP 功能要求在创建多维数据集时使用 SQL Server 2000 数据源。若要使用实时更新，分析服务器必须使用系统管理员帐户以连接到 SQL Server 2000。

如果希望使用为实时更新而启用的 ROLAP 共享维度，建议在创建实时多维数据集之前创建维度。有关创建共享维度的更多信息，请参见创建共享维度。

创建实时多维数据集的过程由创建常规多维数据集开始。若要创建常规多维数据集，请使用多维数据集向导或多维数据集编辑器。

启动多维数据集向导

Analysis Manager

Analysis Manager

用多维数据集编辑器生成多维数据集

Analysis Manager

Analysis Manager

如果希望使用 ROLAP 专用维度或分区，请在创建常规多维数据集之后创建它们。多维数据集编辑器用于创建为实时更新而启用的 ROLAP 专用维度；分区向导用于创建为实时更新而启用的 ROLAP 分区。

说明 ROLAP 分区必须满足特定条件才能为实时更新而启用。有关更多信息，请参见实时多维数据集。

创建专用维度

Analysis Manager

Analysis Manager

启动分区向导

Analysis Manager

Analysis Manager

请参见

多维数据集

实时多维数据集

多维数据集向导

多维数据集编辑器 — 数据视图

多维数据集编辑器 — 架构视图

处理多维数据集


设计存储选项和聚合

使用存储设计向导可以迅速简便地为分区设置存储选项和设计聚合。由于向导每次可针对一个分区进行操作，因而您可以为每个分区选择不同的选项和设计样式。如果您通过选择多分区多维数据集启动向导，那么向导将会提示您选择一个分区。您还可以通过选择单分区多维数据集或一个分区启动该向导。向导将引导您完成为分区指定存储和聚合选项的各个步骤。

如果不存在聚合，或者如果您选择替换现有聚合，则应选择一个存储选项。下表简要描述了每个选项。

存储选项 | 描述
MOLAP | 多维 OLAP (MOLAP) 将聚合和分区源数据的一个复本存储到分析服务器计算机中的多维结构中。
ROLAP | 关系 OLAP (ROLAP) 将聚合存储在一个关系型结构中，并把分区的源数据保留在它现有的关系型结构中。
HOLAP | 混合 OLAP (HOLAP) 将聚合存储到分析服务器计算机上的多维结构中，并将分区的源数据保留在它现有的关系型结构中。

每个存储选项都各有优缺点。有关更多信息，请参见分区存储。

聚合是预先计算的多维数据集数据的汇总，它帮助启用 Microsoft® SQL Server™ 2000 Analysis Services 以提供迅速的查询响应。先选择一种方法控制向导所要设计的聚合数目，然后让向导自己设计聚合。

目标是设计最优数目的聚合。该数目不仅能提供快速的响应时间，还能防止分区过大。聚合的数目越多，响应时间就越快，但所需要的存储空间也就越大。此外，随着该向导设计越来越多的聚合，早期的聚合比后来的聚合会产生更大的性能提升。通过以下向导中可用的方法之一，您可以控制向导设计的聚合数目：

  • 为聚合指定存储空间限制。

  • 指定一个性能提升的极限。

  • 当显示的"性能与大小"曲线开始稳定在一个可接受的性能提升高度上时，手动停止向导。

有关聚合的更多信息，请参见聚合。

向导的最后一步允许处理或推迟处理。处理创建使用向导设计的聚合，而推迟处理为未来的处理保存所设计的聚合，从而使设计活动不必处理就可以继续。根据分区大小的不同，处理过程可能会需要相当长的一段时间。

启动存储设计向导

Analysis Manager

Analysis Manager

请参见

分区

存储设计向导


处理多维数据集

在处理多维数据集时，将计算为多维数据集所设计的聚合，并为多维数据集装载已计算的聚合和数据。处理多维数据集包括读取维度表以从实际数据向级别填充成员、读取事实数据表、计算指定聚合以及在多维数据集中存储结果。在处理多重数据集之后，用户可以对其进行查询。

注意 在处理过程中，Microsoft® SQL Server™ 2000 Analysis Services 不验证数据仓库的引用完整性。例如，如果多维数据集的事实数据表包含的外键值不存在于已联接的维度表的主键列中，则不处理包含这些值的行。此时，处理不会给出错误信息，但是多维数据集却包含了不完整的数据，从而导致数据不准确。

尝试浏览多维数据集之前，如果执行了下列任意一个任务，就必须处理多维数据集：

  • 生成多维数据集并设计它的存储选项和聚合。

  • 更改多维数据集的结构（度量值、维度等）并将更改保存在多维数据集中。

  • 更改多维数据集中使用的共享维度的结构。

如果添加或更改多维数据集的数据仓库中的数据，则建议您进行处理以确保浏览多维数据集时结果精确。

说明 只有在最终用户重新连接到服务器计算机之后，新处理的虚拟多维数据集才可见

多维数据集处理选项

以下三个处理选项中的每一项各适用于不同的情况：

  • 完全处理

  • 增量更新

  • 刷新数据

除上述三个彼此互斥的选项外，可选择与上述任意选项协同使用的第四个选项"增量更新此多维数据集的维度"。该选项使您得以增量更新多维数据集的维度以作为多维数据集处理的一部分。

这些选项在"处理多维数据集"对话框中可用，当右击 Analysis Manager 树窗格中的多维数据集并单击"处理"命令时将显示此对话框。

处理多维数据集

Analysis Manager

Analysis Manager

取决于多维数据集的大小，处理可能会花费相当长的时间。在处理完成之后而关闭"处理"对话框之前，可以查看用来处理多维数据集的 SQL 语句。

查看用来处理多维数据集的 SQL 语句

Analysis Manager

Analysis Manager

此外，在处理过程中临时文件所要求的存储空间比多维数据集的最终大小要大得多。如果在处理过程中用尽了包含临时文件夹的磁盘的可用空间，则可以在另一个有更多可用空间的磁盘上指定文件夹。

更改 Analysis Services 使用的临时文件夹

Analysis Manager

Analysis Manager

完全处理多维数据集

"完整处理"选项是用来执行多维数据集完全装载的处理选项。将读取所有的维度和事实数据表中的数据，并计算所有指定的聚合。如果多维数据集结构是新的或多维数据集、其维度或度量值历经了结构性的更改，则必须使用"完整处理"选项对其进行处理。另外，虚拟和链接的多维数据集在生成、结构更改或某个共享维度更改之后也需要进行完全处理。若要处理虚拟多维数据集或链接的多维数据集，请使用"处理"对话框。

处理虚拟多维数据集

Analysis Manager

Analysis Manager

处理链接多维数据集

Analysis Manager

Analysis Manager

某些多维数据集可能会是例外，在这些多维数据集中只有可更改维度才得到更改。可更改维度在其结构更改之后，并不总是要求使用"完整处理"选项处理它的父多维数据集。不过，它可能要求使用其它选项执行处理。可更改维度包括虚拟、父子和关系 OLAP (ROLAP) 维度。有关更多信息，请参见可更改维度。

如果有一个大型的事实数据表和许多维度而每个维度有许多级别、每一级别中都有许多项目，则使用"完整处理"选项处理多维数据集会花费相当多的时间。如果只使用多维数据集中预处理过的共享维度，则不需要加载维度信息。

如果数据仓库架构中的更改影响多维数据集的结构，则必须更改这些多维数据集的结构，然后用"完整处理"选项对其进行处理。如果对数据仓库中的数据有更改或添加，则不需要完整处理多维数据集。使用"增量更新"或"刷新数据"处理选项可将这些更改加入现有的多维数据集中，这取决于数据如何更改。

在用户继续查询以前处理过的多维数据集时可以使用"完全处理"选项；然而，处理完成后，用户需要断开并重新连接以重建对多维数据集的访问。

注意 如果更新并保存了共享维度的结构，但未经处理，那么当用"完全处理"选项处理任意一个包括该维度的多维数据集时，就会自动处理该维度。这时用户将立即无法使用所有其它采用了该维度的多维数据集，必须对这些多维数据集进行处理，然后才能再次使用。

增量更新多维数据集

若要向多维数据集添加新数据，而现有数据没有更改而且多维数据集结构不变，则可进行增量更新。"增量更新"选项添加新数据并更新聚合。

增量更新不影响已经处理过的现有数据。它所需要的处理时间往往比使用"完整处理"选项处理要少得多。在用户继续查询多维数据集时可以执行增量更新；更新完成后，用户不用断开并重新连接即可访问新增数据。

因为增量更新用新数据创建了临时分区并将其合并到现有分区中，所以在执行增量更新之前，先要了解对于分区的特殊考虑事项。

刷新多维数据集的数据

"刷新数据"选项清除并重新装载多维数据集的数据并重新计算聚合。当数据仓库中的基础数据已经更改但多维数据集的结构不变时，可使用此选项。

在用户继续查询多维数据集时，可以执行"刷新数据"选项；刷新完成后，用户不必断开并重新连接就可以访问更新数据。

增量更新维度

"增量更新此多维数据集的维度"选项使得处理多维数据集时其维度增量更新。此选项可用于"完全处理"、"增量更新"或"刷新数据"选项。自从最近一次处理多维数据集或维度后，如果任意一个多维数据集的维度表中添加了行，则可使用"增量更新此多维数据集的维度"选项。

用于处理的多维数据集属性

多维数据集的一些属性用于控制其处理。可以在多维数据集编辑器的属性窗格或"多维数据集处理设置"对话框中设置这些属性。当单击"处理多维数据集"对话框中的"设置"按钮时出现"多维数据集处理设置"对话框。下表对这些属性进行描述。

多维数据集编辑器中的属性名称 | "多维数据集处理设置"对话框中的选项 | 描述
Processing Optimization Mode | 处理优化模式 | 如果在多维数据集中选择 Regular 或在"多维数据集处理设置"对话框中选择"计算所有聚合后"，则直到完成处理后新的多维数据集数据才可用。这些值为默认值。如果在多维数据集编辑器中选择 Lazy Aggregations 或在"多维数据集处理设置"对话框中选择"紧接着数据装载之后"选项，则完成处理前即可用新的多维数据集数据；但是，由于新数据可用时还没有完成优化，所以优化完成前查询性能会降低。
Stop Processing on Key Errors | "遇到缺少维度键的错误时停止处理"选项或"忽略所有缺少维度键的错误"选项 | 如果在多维数据集编辑器中选择 Yes 或在"多维数据集处理设置"对话框中选择"遇到缺少维度键的错误时停止处理"选项，则当维度键的错误数目超过指定的限制时将停止并取消处理过程。（参见 Key Error Limit。）当在事实数据表中遇到包含外键值的行，而该外键值在与事实数据表所联接的维度表的主键列中又不存在时，就会发生维度键错误。 如果在多维数据集编辑器中选择 No 或在"多维数据集处理设置"对话框中选择"忽略所有缺少维度键的错误"选项，则不论遇到多少维度键错误都不会停止以至取消多维数据集处理过程。如果遇到一个或多个维度键错误，那么多维数据集的数据就不能反映整个事实数据表。
Key Error Limit | 遇到下列情况后停止处理 | 维度键错误数目的极限值。超过限制时多维数据集处理过程将停止并取消。默认值为 0。如果选择较大的数，则处理完成后多维数据集的数据将不反映整个事实数据表。如果为多维数据集编辑器的 Stop Processing on Key Errors 属性选择 No 或在"多维数据集处理设置"对话框中选择"忽略所有缺少维度键的错误"选项，则将忽略此属性。
Key Error Log File | 文件路径和名称 | 记录维度键错误的日志文件的路径和文件名。

请参见

可更改维度

多维数据集处理

维度处理

增量更新和分区

管理链接多维数据集

更新和刷新多维数据集数据


管理链接多维数据集

在链接多维数据集被创建并处理以后，它的管理方法与管理普通多维数据集一样。此规则的唯一例外是无法写启用此链接多维数据集。链接多维数据集包含所有关于父多维数据集的信息。所有的多维数据集元数据（例如操作和命令）都可以用于已订阅的链接多维数据集。但是，必须确保将发布多维数据集所使用的所有用户定义函数分发到订阅多维数据集。

说明 因为用户定义函数很难在企业范围的应用程序中维护，所以发布的多维数据集不应使用用户定义函数。

无论何时处理链接多维数据集，链接多维数据集及其源多维数据集都同步。无论何时更改链接多维数据集的源多维数据集，都将自动同步链接多维数据集。当链接多维数据集首次连接到自上次链接多维数据集连接后已更改的源多维数据集时将进行此更新。在某些情况下，可能无法立即检测到更改。此时，可明确处理链接多维数据集以对其进行更新。

有关更多信息，请参见使用链接多维数据集。

请参见

链接多维数据集

生成链接多维数据集


查看多维数据集数据

Analysis Manager 提供多维数据集浏览器，使您能方便、快捷地访问多维数据集数据。多维数据集浏览器使您得以快速地以平面二维网格格式浏览多维数据。

右击已处理过的多维数据集，然后单击"浏览数据"命令，或在多维数据集向导最后一步单击"浏览样本数据"按钮，即可显示多维数据集浏览器。

多维数据集浏览器的使用与多维数据集编辑器中的"数据"选项卡相同。但有一处例外，即除非从多维数据集向导显示多维数据集浏览器，否则不能使用多维数据集浏览器查看未经处理的多维数据集的样本数据。如果右击未经处理的多维数据集，然后单击"浏览数据"命令，则多维数据集浏览器不会显示任何数据供查看。有关浏览未经处理的多维数据集以及多维数据集编辑器中"数据"选项卡的更多信息，请参见浏览未经处理的多维数据集和多维数据集编辑器 — 数据视图。


浏览多维数据集数据

在浏览多维数据集数据时，可以查看不同的维度，深化到各个成员，以及对维度进行切片。

可更改维度

通过将维度从数据切片窗格拖动到数据查看窗格，可以快速地更改数据查看窗格。例如，假如目前使用示例 FoodMart 2000 数据库中的 Sales 多维数据集，若要根据销售点 (Store) 位置查看每个产品类别的利润总额，请执行下列操作：

  1. 将 Store 维度拖到行轴上的 Measures 维度。

  2. 将 Product 维度拖到列轴上的 Customers 维度。

多维数据集浏览器将如下所示。

有关这类操作的更多信息，请参见多维数据集浏览器。

深化到成员

若要深化到某个特定成员，请双击该成员。在上例中，若要深化到美国销售点 (USA store) 的利润数量的详细信息，请双击行轴上的 USA。多维数据集浏览器将如下所示。

若要按饮料 (drink) 类别对美国销售点 (USA store) 的利润做进一步深化，请双击列轴上的 Drink。多维数据集浏览器将如下所示。

您可以在级别或多维数据集浏览器内存允许的深度范围内对多维数据集数据进行深化。

多维数据集浏览器有一个内部内存限制值，如果您浏览的数据过多或深化的深度过深，则可能达到该限制值。当达到该极限值时，将显示下列消息：

Unable to display current view of cube.
Unable to Allocate Memory For Flexgrid.

不能通过添加或分配更多的内存来提高该极限值。如果达到该极限值，请减少要浏览的数据量或数据深度，或者使用其它浏览器。

对多维数据集维度进行切片

若要筛选多维数据集的数据，请从一个成员框中选择一个成员。在上面的示例中，若只查看小型食品杂货店 (small grocery store) 的数据，请单击 Store Type 成员框，展开成员，然后单击 Small Grocery。

对 Time 维度进行切片

若要查看 1997 年第二季度小型食品杂货店 (small grocery store) 的利润，请在 Time 成员框中单击，展开成员，然后单击 1997 下面的 Q2。


浏览未经处理的多维数据集

多维数据集浏览器不显示未经处理多维数据集的数据。（但有一处例外，当在多维数据集向导中新建多维数据集时，如果在向导最后一步单击"浏览样本数据"按钮，则多维数据集浏览器会显示样本数据。）样本数据将在多维数据集编辑会话过程中生成，您无需在每次更改后处理该多维数据集即可查看更改的影响。

如果某个多维数据集在上次更改后尚未处理，则在右击该多维数据集，然后单击"浏览数据"命令，打开多维数据集浏览器时会显示下列消息：

Unable to browse the cube 'cube-name'.
Cube not processed. To browse sample data for this cube, open
Cube Editor, and then on the View menu, click Data.

如果收到此消息，可以采取两种做法。

一种做法是关闭多维数据集浏览器，处理该多维数据集，然后再用多维数据集浏览器进行浏览。但是，处理多维数据集需要相当长的时间。有关处理多维数据集的更多信息，请参见处理多维数据集。

另一种做法是关闭多维数据集浏览器，在多维数据集编辑器中浏览样本数据。浏览样本数据使您得以在不查看其实际数据的情况下预览多维数据集的结构。

在多维数据集编辑器中浏览样本数据

Analysis Manager


创建安全角色

以下主题描述了使最终用户得以通过客户端应用程序访问多维数据集数据的方法。有关使管理员得以访问多维数据集数据和元数据，以及执行管理功能的信息，请参见管理员安全性。

主题 | 描述
创建数据库角色 | 标识创建数据库角色的方法。
创建多维数据集角色 | 描述创建多维数据集角色、更改其默认值和指定其单元安全性的方法。
创建挖掘模型角色 | 描述创建挖掘模型角色和更改其默认值的方法。
定义维度安全性的自定义规则 | 描述在数据库角色和多维数据集角色中创建自定义规则的方法。
定义单元安全性的自定义规则 | 描述创建自定义规则的方法。

Microsoft® SQL Server™ 2000 Analysis Services 使用 Microsoft Windows NT® 4.0 或 Microsoft Windows® 2000 用户帐户和组，为访问 Analysis Services 数据库和多维数据集数据的最终用户定义角色。实际上是将用户帐户和用户组结合到角色中，然后将角色分配给多维数据集。在 Analysis Services 中创建角色之前，请在 Windows NT 4.0 用户管理器或 Windows 2000 计算机管理中设置这些用户帐户和组。

OLAP 服务中所包括的三种角色为数据库、多维数据集和挖掘模型角色。

数据库角色定义在 Analysis Services 数据库级别上，它可被分配给数据库中的多个多维数据集，从而授权角色中的用户访问这些多维数据集。这种分配将创建与数据库角色同名的多维数据集角色。数据库角色将为同名的多维数据集角色提供默认值。使用数据库角色管理器可以维护数据库角色。

将数据库角色分配给多维数据集时，即在多维数据集级别上创建了多维数据集角色，多维数据集角色仅应用于该多维数据集。多维数据集角色中的默认值是从同名的数据库角色中派生的，但这些默认值中的一部分可在多维数据集角色中用其它值替代。多维数据集角色包含数据库角色中没有的额外选项，例如单元安全性。使用多维数据集角色管理器维护多维数据集角色。

若要使用角色实施多维数据集特有的安全机制，请执行以下两个步骤：

  1. 通过将用户帐户和用户组结合在一起，并指定角色所许可的访问类型，创建数据库角色。

  2. 通过选择可以访问多维数据集的数据库角色，为数据库中的每个多维数据集创建多维数据集角色。然后可以更改多维数据集角色的默认值。这些默认值由数据库角色提供。

当某个数据库角色被分配至某个挖掘模型时，挖掘模型角色在挖掘模型级别创建；挖掘模型角色只应用于该挖掘模型。挖掘模型角色中的默认值是从同名的数据库角色中派生的，但这些默认值中的一部分可在挖掘模型角色中用其它值替代。

角色提供的默认访问权限为"读取"（即"只读"），但如果多维数据集或维度是写启用的，也可以为选中的数据库或多维数据集角色授予"读/写"访问权限。

写启用的多维数据集允许有"读/写"访问权角色中的用户将更改保存到多维数据集的数据中。但是，因为更改是与多维数据集原始数据分开保存的，所以它们只影响显示的多维数据集数据，并且在必要时可以被删除。分别保存的更改称为回写数据。写启用的维度允许有读/写访问权角色中的用户更新维度的成员。这些更改直接记录在维度表中。

请参见

多维数据集角色管理器

数据库角色管理器

数据库、多维数据集和挖掘模型角色

数据挖掘模型

维护写启用的多维数据集和回写数据

挖掘模型角色管理器

安全性和身份验证

写启用的多维数据集

写启用的维度


创建数据库角色

定义了必要的 Microsoft® Windows NT® 4.0 或 Windows® 2000 用户帐户和组之后，即可创建数据库角色。

说明 数据库角色中的某些值在同名多维数据集角色中可以被替换。

若要创建数据库角色，请使用数据库角色管理器和"数据库角色"对话框。

如何创建数据库角色

Analysis Manager

Analysis Manager

请参见

数据库角色对话框

数据库角色管理器

数据库安全性


创建多维数据集角色

对于数据库中的每个多维数据集，请选择可以访问它们的数据库角色。每次选择都将创建与数据库角色同名的多维数据集角色。多维数据集角色的默认值是从选定的数据库角色派生的，但是您可以更改多维数据集角色中的某些默认值。

此外，无须选择已有数据库角色也可以创建多维数据集角色。该操作将创建与新建多维数据集角色同名的数据库角色。

在多维数据集角色中还可以指定单元安全性，它不能在数据库角色中定义。对单元安全性的指定是可选的。

若要创建多维数据集角色、更改其默认值以及指定单元安全性，请使用多维数据集角色管理器和"多维数据集角色"对话框。

创建多维数据集角色，更改它的默认值和指定单元安全性

Analysis Manager

Analysis Manager

在为多维数据集更改多维数据集角色后，必须处理相关的虚拟多维数据集，从而为用户提供对这些虚拟多维数据集持续的访问权。（如果从上次处理后没有更改组件多维数据集的结构，那么这种处理过程将比处理组件多维数据集快许多。）更改多维数据集角色时，连接到服务器计算机的虚拟多维数据集用户只要保持连接，就不会受到影响。但是，在处理完相关的虚拟多维数据集之前，连接的用户将无法看到它们。

请参见

单元安全性

创建数据库角色

多维数据集角色对话框

多维数据集角色管理器

多维数据集安全性


创建挖掘模型角色

若要创建挖掘模型角色，对于数据库中的每个挖掘模型，选择可以访问该模型的数据库角色。每次选择都将创建与数据库角色同名的挖掘模型角色。挖掘模型角色的默认值是从选定的数据库角色派生的，但是您可以更改挖掘模型角色中的某些默认值。

此外，无须选择已有数据库角色也可以创建挖掘模型角色。该操作将创建与新建挖掘模型角色同名的数据库角色。

若要创建挖掘模型角色并更改其默认值，请使用挖掘模型角色管理器和"挖掘模型角色"对话框。

创建挖掘模型角色并更改其默认值

Analysis Manager

Analysis Manager

请参见

挖掘模型角色管理器

挖掘模型角色对话框


定义维度安全性的自定义规则

对于控制角色中的用户对维度成员的访问来说，自定义规则是最灵活的一种规则。在自定义规则中，可以允许或拒绝对特定维度级别和成员的访问。也可以控制直观合计和选择默认成员。

可以在数据库角色或多维数据集角色中创建维度安全性的自定义规则。多维数据集角色中的自定义规则将替代同名数据库角色中的自定义规则。

若要在数据库角色中创建自定义规则，请使用数据库角色管理器、"数据库角色"对话框和"自定义维度安全性"对话框。

在数据库角色中创建维度安全的自定义规则

Analysis Manager

Analysis Manager

若要在多维数据集角色中创建自定义规则，请使用多维数据集角色管理器、"多维数据集角色"对话框和"自定义维度安全性"对话框。

在多维数据集角色中创建维度安全的自定义规则

Analysis Manager

Analysis Manager

请参见

多维数据集角色对话框

维度安全性中的自定义规则

数据库角色管理器


定义单元安全性的自定义规则

对于控制多维数据集角色中的用户对多维数据集单元的访问，自定义规则是最灵活的一种规则。在自定义规则中，可以允许或拒绝对多维数据集单元的任意组合的访问。对于多维数据集角色中的每个单元权限，可以允许对一些单元的访问而拒绝对另一些单元的访问。

若要创建单元安全性的自定义规则，可以使用多维数据集角色管理器、"多维数据集角色"对话框和"多维数据集单元安全性"对话框。

创建单元安全的自定义规则

Analysis Manager

Analysis Manager

请参见

多维数据集角色对话框

自定义单元安全性规则


管理分区

必须正确地创建及管理分区，以避免结果不一致或不准确。这一要求适用于多分区的多维数据集。它还适用于对任何多维数据集进行增量更新，其中包括对单分区多维数据集，因为增量更新会创建一个临时分区并将其与某个现有分区进行合并。

多维数据集数据的完整性取决于：是否在多维数据集的分区中所分发的数据没有在分区之间重复。在数据从分区中汇总后，多个分区中都出现的数据元素都将汇总，仿佛它们是不同的数据元素。这就会导致最终用户得到不正确的汇总和错误数据。例如，如果 Product X 的销售额事务重复出现于事实数据表的两个分区中，则 Product X 销售额汇总中就会出现该重复事务的两个帐目清算。

分区可以合并；在整个存储和数据更新策略中可利用此功能。只有具有相同存储模式和聚合设计的分区才能合并。若要创建预备以后进行合并的分区，可以在创建分区时复制另一个分区的聚合设计。也可以在分区创建后对其进行编辑，以便复制另一个分区的聚合设计。合并分区必须同样要小心谨慎，以防在最终形成的分区中出现重复数据从而导致多维数据集数据不准确。

在创建或合并分区时，可能需要在基础数据上执行手动操作或创建合适的筛选，以确保多维数据集的分区始终包含正确的数据。本主题叙述在创建或合并分区或执行多维数据集增量更新时需要注意和警惕的事宜。

主题 | 描述
创建分区 | 包含有关如何在不使数据重复的情况下使用筛选或不同事实数据表对数据进行分区的信息。
合并分区 | 包含有关如何在不使数据重复的情况下合并具有不同事实数据表或不同数据切片的分区的信息。

请参见

增量更新和分区


创建分区

可以使用分区向导在多维数据集中创建其它分区。有两种方法可以指定分配给分区的多维数据集数据的部分：

  • 为分区指派一个不同于多维数据集的其它分区所使用的事实数据表。

  • 筛选由多个分区所使用的事实数据表中的数据

有关更多信息，请参见分区的不同事实数据表和多个分区的相同事实数据表。

不论使用何种方法为分区指定数据，都必须确保数据在多维数据集的分区之间不重复。

说明 只有安装了 Microsoft® SQL Server™ 2000 企业版的 Analysis Services，才能在一个多维数据集内创建多个分区。

启动分区向导

Analysis Manager

Analysis Manager

请参见

分区向导


分区的不同事实数据表

为多维数据集创建分区时，可以选择使用为多维数据集的默认分区所指定的事实数据表，也可以选择另一个事实数据表。多维数据集分区的所有事实数据表和维度必须与该多维数据集的事实数据表和维度具有相同的结构。例如，不同的事实数据表可以具有相同结构，同时却包含不同年份或不同产品系列的数据。

当对多维数据集的分区使用不同事实数据表时，确保数据在事实数据表之间没有重复。例如，如果一个事实数据表只包含 1997 年的事务，而另一个事实数据表只包含 1998 年的事务，则二者所包含的数据相互独立。针对非重复的产品系列或非重复的地域的事实数据表也相互独立。

使用包含重复数据的不同事实数据表是可以的，但不建议这样做。在此情况下，必须在分区中使用筛选，以确保分区不使用别的分区所使用的数据。

说明 合并具有不同事实数据表的分区需要经过专门考虑及特别留心。有关更多信息，请参见合并分区时的事实数据表考虑事项。

请参见

分区结构


多个分区的相同事实数据表

当在多维数据集中对多个分区使用同一个事实数据表时，重要的一点是不在多个分区中使用相同行。如果多个分区都使用某一行，则在处理或查询多维数据集时该行可能会多次计算，从而导致查询返回不正确的值。

可以在分区中使用筛选，以确保数据在分区之间没有重复。分区的筛选指定了事实数据表中应用于分区的数据。重要的是多维数据集中对于所有分区的筛选应从事实数据表中提取彼此互为的数据集。例如，以下这些筛选在各个集合中互为排它：

第 1 集合：

"SaleYear" = 1997
"SaleYear" = 1998

第 2 集合：

"Continent" = 'NorthAmerica'
"Continent" = 'Europe'
"Continent" = 'SouthAmerica'

第 3 集合：

"Country" = 'USA'
"Country" = 'Mexico'
("Country" <> 'USA' AND "Country" <> 'Mexico')

在为分区创建互为排它的筛选时，应确保组合分区数据包含全部要让多维数据集具有的数据。

请参见

分区筛选和增量更新筛选


数据切片

数据切片是一种优化功能，有助于将查询引导到适当分区的数据。数据切片不能用作分区筛选的替代或备选工具。也就是说，数据切片不能用于限制从分区事实数据表中所选的数据和包含于分区的数据。使用分区向导创建分区时，可以指定一个数据切片。

分区的数据切片应尽可能真实地反映分区中的数据。例如，如果某个分区仅限于 1997 的数据，则分区的数据切片应该为 Time 维度指定成员 1997。不可能总是能够指定确切地反映分区内容的数据切片。例如，如果分区只包含 January（一月）和 February（二月）的数据，但 Time（时间）维度的级别是 Year（年）、Quarter（季度）和 Month（月），则在分区向导中无法同时选中成员 January 和 February。在此情况下，应选择能够反映分区内容的成员的父代。在此例中，应选择 Quarter 1（第一季度）。

多维数据集的分区包含数据切片时，Microsoft® SQL Server™ 2000 Analysis Services 可以更加高效地确定为解决多维数据集查询所必须访问的分区。

虽然有时数据切片会修改用于填充分区的 WHERE 子句，但这种情况并不常发生。因此，每当需要限制选自分区事实数据表的数据时，都必须使用筛选，而不要使用数据切片。

无法对 ROLAP 维度上的分区进行切片。

请参见

合并具有数据切片的分区

多个分区的相同事实数据表


合并分区

能够合并分区将会是个十分有用的选项，但必须要努力完全了解该进程本身和确保合并操作取得预期结果的方法。

为确保分区能在以后合并，当创建分区时，必须考虑合并分区所涉及到的某些限制。只有符合以下条件，分区才能合并：

  • 各分区处于同一个多维数据集中

  • 具有相同结构（默认情况下）

  • 按相同模式存储（MOLAP、HOLAP 或 ROLAP）

  • 含有相同的聚合设计

远程分区只能与定义到同一个远程分析服务器的其它远程分区合并。

若要创建预备将来进行合并的分区，在使用分区向导创建分区时，可以选择从多维数据集的另一个分区复制聚合设计。这就可以确保这些分区具有相同的聚合设计；合并这些分区时，源分区的聚合就会与目标分区的聚合合并。

合并两个分区

Analysis Manager

Analysis Manager

请参见

分区向导

分区存储


合并分区时的事实数据表考虑事项

合并分区时，两个分区的筛选将组合起来并使用 OR 为所得分区创建筛选。这个组合筛选指定了用于所得分区的事实数据集合。如果源分区和目标分区使用同一个事实数据表，则组合筛选将指定适合所得分区的事实数据表数据。由于所得分区所需的事实数据就在事实数据表中，所以无须再执行其它操作。

重要 合并分区时，事实数据表不会自动合并。如果要合并的分区具有不同的事实数据表，则必须手动合并这些事实数据表。

若合并使用不同的事实数据表的分区，所得分区只引用目标分区的原始事实数据表。必须手工将来自源分区的事实数据表的事实数据合并到目标分区的事实数据表中。如果未曾执行此手动操作步骤，则分区所包含的信息就不完全。

MOLAP 分区

当合并多维 (MOLAP) 分区时，存储在分区多维度结构中的事实数据也将合并。这就产生了一个内部完整而一致的分区。但是，存储在 MOLAP 分区中的事实数据是事实数据表中事实数据的复本。在以后处理分区时，将删除多维度结构中的事实数据，而且将从分区筛选所指定的事实数据表复制数据。如果源分区所使用的事实数据表与目标分区所使用的不同，则必须手动合并源分区的事实数据表和目标分区的事实数据表，以确保当处理所得分区时能有一套完整的数据集。

注意 带有不完全事实数据表的已合并 MOLAP 分区包含一个内部合并的事实数据表数据复本，而且此分区在经过处理之前可以正确地运行。

HOLAP 和 MOLAP 分区

当合并具有不同事实数据表的混合 OLAP (HOLAP) 或关系 OLAP (ROLAP) 分区时，并不会自动合并事实数据表。除非手动合并事实数据表，否则只有与目标分区关联的事实数据表才可用于所得分区。与源分区关联的事实数据无法用于在所得分区中深化数据，并且处理分区时聚合将不从不可用的表中汇总数据。

注意 带有不完全事实数据表的 HOLAP 或 ROLAP 分区包含精确的聚合，但包含的事实不完全。引用丢失的数据的查询将返回不正确的数据。处理分区时，只通过可用的事实数据计算聚合。

除非用户尝试深化到不可用的表中的事实数据，或执行一个要求从不可用的表中得到数据的查询，否则就不会注意到缺少某些不可用的表。因为在合并进程中聚合将组合，所以结果只基于聚合的查询会返回准确数据，而其它查询则可能返回不准确的结果。即使在所得分区处理完成后，也可能注意不到不可用的事实数据表中丢失的数据（尤其是当这些数据只代表组合数据的一小部分时）。

可以在合并分区之前或之后合并事实数据表。但是，除非这两项操作都执行完，否则聚合不能准确代表基本数据。如果有访问不同事实数据表的 HOLAP 或 ROLAP 分区，建议在用户未连接到包含这些分区的多维数据集时将这些分区合并。


合并具有数据切片的分区

当合并在分区向导中指定了数据切片的分区时，所得分区会在经过处理之后包含意外的、不正确的数据。为防止此情况，可以创建一个能在所得分区中指定数据的筛选。

例如，有一个多维数据集包含有关三种软饮料产品的信息，并且该多维数据集有三个使用相同事实数据表的分区。这些分区具有基于产品的数据切片。第 1 分区包含有关 [ColaFull] 的信息，第 2 分区包含有关 [ColaDecaf] 的信息，第 3 分区包含有关 [ColaDiet] 的信息。如果第 3 分区合并到第 2 分区中，则所得分区（第 2 分区）中的数据将是正确的，并且多维数据集的数据也将是准确的。但是，当处理第 2 分区时，如果该分区不含筛选，则其内容可能由处于产品级别的成员的父代所决定。此父代 [SoftDrinks] 还包括第 1 分区的产品 [ColaFull]。对第 2 分区的处理将向分区装载有关所有软性饮料的数据，其中包括 [ColaFull] 的数据。于是多维数据集就包含了有关 [ColaFull] 的重复数据，并返回给最终用户不正确的数据。

在此例中，将第 3 分区合并到第 2 分区后，可以在所得的第 2 分区中提供一个筛选（例如 ("Product" = 'ColaDecaf' OR "Product" = 'ColaDiet')），用以指定：只能从事实数据表中析取关于 [ColaDecaf] 和 [ColaDiet] 的数据，并且只能包含有关 [ColaFull] 的数据。作为替代方法，也可以在创建第 2 分区和第 3 分区时为它们指定筛选，而在合并进程中这些筛选将组合。不论哪种情况，处理完分区之后，多维数据集都将不包含重复数据。

请参见

数据切片


使用可选功能增强维度

可用许多旨在提高性能的功能（如成员属性、自定义汇总运算符、自定义成员公式以及成员组）来增强维度。通过定义成员属性可将附加特性与维度成员进行关联。自定义汇总运算符使您得以控制从子代成员计算聚合值的方式。自定义成员公式使您得以指定多维表达式 (MDX) 公式，以指定将替代度量值的聚合值的单元值。成员组提供一种不用添加级别即可对大量成员进行分组的方法。

主题 | 描述
创建成员属性 | 包含有关成员属性和使用方法的信息。
使用自定义汇总运算符 | 描述自定义汇总运算符及其使用方法。
创建自定义成员公式 | 描述自定义成员公式以及创建它们之前要采取的步骤。
创建成员组 | 包含有关成员组以及根据不同的属性设置如何处理成员组的维度或多维数据集的信息。
创建有多重层次结构的维度 | 描述具有多重层次结构的维度及其创建方法。
向现有维度添加层次结构 | 描述向现有维度添加层次结构的过程。

请参见

自定义汇总公式和自定义成员公式

成员组

成员属性


创建成员属性

成员属性是与成员相关的特性。成员是维度级别中的项目。在维度中创建成员属性的目的是为最终用户提供有关成员的附加信息。该信息对于最终用户的重要性比成员本身小，不具备在维度中作为一个级别的资格。例如，如果 Time 维度包含 Year、Month 和 Day 级别，并且维度表中的数据跨越整整一个日历年度，则 Month 级别包含 12 个成员：从 January（一月）到 December（十二月）。如果 Time 维度表中的数据跨越两个完整的日历年度，则 Month 级别包含 24 个成员。因此，在维度级别中成员不必唯一。成员属性是维度和多维数据集的可选部分。

成员属性是与成员相关的特性。例如，Month 级别的每个成员都有一个名为 Bonus Month 的相关布尔型成员属性。因为不是定期发放奖金，所以可用它来记录该月是否发放奖金。在发放奖金的月份中，Bonus Month 等于 –1 或 TRUE；在其它月份中，Bonus Month 等于 0 或 FALSE。

成员属性与包含这些成员的维度级别存储在同一表中。例如，Bonus Month 与 Month 级别存储在同一表中。

通过将成员属性插入到与其相关的成员所在的级别中，可以创建成员属性。例如，在 Month 级别中定义 Bonus Month。

例如，在 Bonus Month 成为成员属性之前，它是 Time 维度表中的一列。最终用户请求将 Bonus Month 添加到某些多维数据集内。但是，因为它不是 Time 维度层次结构的自然组成部分，所以将 Bonus Month 添加为级别不合适。如果将 Bonus Month 添加为级别，最终用户将会进行深化，例如从 Month 到 Bonus Month 到 Day，导致令人费解和混乱的显示结果。因为 Bonus Month 与 Month 级别的成员相关联，所以解决方案是通过在 Month 级别中插入 Bonus Month 来创建 Bonus Month 成员属性。从而使最终用户可以显示 Bonus Month 值（例如通过右击 Month 值），而且不会扰乱基本的 Time 维度层次结构。

在源列包含重复值的维度级别中创建成员属性之前，必须确保该级别中的每个成员对每个成员属性仅有一个值。否则，每个成员只能显示一个值，这不但会导致成员属性值不完整，也会使人误解。例如，Salesperson 级别的源列中的值不唯一。每个 Salesperson 只可以有一个 Manager，因此 Manager 是 Salesperson 级别中有效的成员属性。但是，Salesperson 可以在多个地区 (Region) 工作，所以 Region 不是有效的成员属性。如果将 Region 定义为成员属性，则只能为最终用户显示一个 Region，即使该 Salesperson 能在多个地区 (Region) 工作。

既可以在专用维度也可以在共享维度中创建成员属性。若要在专用维度中创建成员属性，可以在多维数据集编辑器中为包含该专用维度的多维数据集进行创建，或者使用创建 ClassType clsMemberProperty 对象的客户端应用程序中的决策支持对象 (DSO) 库进行创建。若要在共享维度中创建成员属性，请使用维度编辑器。

在共享维度中创建成员属性

Analysis Manager

Analysis Manager

在共享维度中创建成员属性之后，必须用"增量更新"选项处理该维度。有关更多信息，请参见更新和重建共享维度。

为访问该成员属性，用户必须重新连接服务器计算机。

说明 共享维度中的成员属性在 Analysis Manager 树窗格中不可见。因此，必须使用维度编辑器来进行查看、创建、更新或删除。

也可以在创建虚拟维度中使用成员属性。

请参见

clsMemberProperty

多维数据集编辑器 — 数据视图

多维数据集编辑器 — 架构视图

维度编辑器 — 数据视图

维度编辑器 — 架构视图

成员属性

虚拟维度

使用维度和级别


使用自定义汇总运算符

自定义汇总运算符提供一种控制成员值如何汇总到其父值的一种简单方式。当自定义汇总运算符指派至列名时，或是当在维度向导中把它们作为新的父子维度的一个可选功能创建时，或是把它们添加到维度编辑器或多维数据集编辑器中现有的维度中时，该列的内容用作该成员的自定义汇总运算符。当计算成员父级的值时，此自定义汇总运算符应用到成员。

在维度编辑器中，自定义汇总运算符的值存储在该级别的 Unary Operator Column 属性中，并应用于每一成员。

自定义汇总运算符提供与自定义汇总公式功能类似但是经过简化的功能。与使用多维表达式 (MDX) 表达式确定成员汇总方式的自定义汇总公式相比，自定义汇总运算符使用简单的数学运算符确定成员值如何影响父代。但是，自定义汇总运算符的值对于每一级别的成员都是唯一的，而自定义汇总公式却应用于所有级别的成员。

在与维度的自定义成员公式的关系方面，上一级别的自定义成员公式可以覆盖一个级别的自定义汇总运算符。但是，级别的自定义汇总运算符会覆盖上一级别的自定义汇总表达式。

下面的表列出了可用的自定义运算符，并描述了它们应用于某一级别时的行为方式。

自定义汇总运算符 | 描述
+ | 把成员的值添加到前面兄弟成员的聚合值中。
- | 把成员的值从前面兄弟成员的聚合值中减去。
* | 成员的值乘以前面兄弟成员的聚合值。
/ | 成员的值除以前面兄弟成员的聚合值。
~ | 忽略成员的值。

说明 空的值和其它在表中没找到的值，作为加号 (+) 一元运算符对待。因为没有运算符优先级，所以成员在一元运算符列存储的顺序决定了求值的顺序。要改变求值的顺序，创建新的成员属性，将其 Type 属性设置为 Sequence（序列），并且在其 Source Column 属性中分配对应求值顺序的序列数。

除了能够在维度向导中为父子维度创建新的自定义汇总，也可以为现有的共享或专用维度创建自定义汇总。

为共享维度创建自定义汇总运算符

Analysis Manager

Analysis Manager

为专用维度创建自定义汇总运算符

Analysis Manager

Analysis Manager

说明 如果带有自定义汇总运算符的维度包含在具有度量值的多维数据集中，而在这个度量值中，Aggregate Function 属性设置为非重复计数度量值,当保存这个多维数据集时，就会发生错误。这是由于无效的多维数据集结构造成的。

请参见

创建自定义成员公式

自定义汇总公式和自定义成员公式

维度向导


创建自定义成员公式

自定义成员公式确定与成员相关的单元值，并替换度量值的聚合函数。这些公式采用多维表达式 (MDX) 编写。每个自定义成员公式应用于一个成员。自定义成员公式存储在维度表中。

自定义成员公式可以包含Microsoft SQL Server Analysis Services 中的 MDX 函数和一些 Microsoft Visual Basic for Applications 函数。自定义成员公式还可以包括 Microsoft Excel 工作表函数库中的某些函数（如果该函数库已安装）。如果已安装了 Microsoft Excel 工作表函数库，则会自动注册该库。如果安装并注册了其它库，则也支持这些库中的函数。有关安装和注册自定义函数库的更多信息，请参见注册函数库对话框。

在为一个级别创建自定义成员公式之前，必须首先在维度表中创建列或选择一列以存储自定义成员公式。若要为现有的维度创建列或选择列，请使用"定义自定义成员列"对话框。

创建或选择存储自定义成员公式的列

Analysis Manager

Analysis Manager

在创建或选择存储自定义成员公式的列之后，即可开始创建自定义成员公式。如果维度处于写启用状态，则可以使用维度编辑器或维度浏览器的自定义成员公式窗格来创建自定义成员公式。（该过程要求写启用维度所在的多维数据集自该维度上次更改后曾经处理过。）如果维度没有处于写启用状态，则必须使用 Analysis Manager 之外的某种工具将自定义成员公式插入到列中。决策支持对象 (DSO) 库通过 Level 接口的 CustomRollupExpression 属性支持此功能。有关 CustomRollupExpression 属性的更多信息，请参见 CustomRollupExpression（Level 接口）。

在写启用的维度中创建自定义成员公式

Analysis Manager

Analysis Manager

在共享维度中创建或更新自定义成员公式之后，必须用"增量更新"选项对该维度进行处理。在专用维度中创建或更新自定义成员公式之后，必须用"刷新数据"选项对该维度的多维数据集进行处理。如果写启用维度的自定义成员公式是在 Analysis Manager 中或通过客户应用程序创建或更新的，就与上述情况不同；即包含该公式的这些维度和多维数据集不要求进行后续处理。有关更多信息，请参见更新和刷新多维数据集数据和更新和重建共享维度。

说明 如果多维数据集有多个自定义成员公式，将按维度包含于多维数据集中的顺序对这些自定义成员公式进行评估。因此，如果要更改多维数据集中自定义成员公式的评估顺序，请在多维数据集编辑器中更改维度的顺序。如果某些维度所带自定义成员公式需要首先进行评估，而且您想要将其移动到树的顶部，请使用树窗格将其删除，然后重新将其添加到多维数据集中。可使用同一方法在树窗格内移动其它具有自定义成员公式的维度，以便它们与其评估顺序对应。

请参见

多维数据集编辑器 — 数据视图

多维数据集编辑器 — 架构视图

自定义汇总公式和自定义成员公式

定义自定义成员列对话框

维度编辑器 — 数据视图

维度编辑器 — 架构视图

MDX


创建成员组

维度级别可以包含成员组，成员组是系统生成的连续维度成员的集合的父代。对于最终用户而言，成员组和普通成员没有区别。

成员组可以在成员极少的级别和成员非常多的级别之间提供一个中间级别以进行深化。也可用于满足在一个父成员下不能有超过 64,000 个成员的要求。

在使用维度向导创建常规维度时，可以选择在其中自动创建成员组。该选项只适用于该维度最低级别的上一级成员组。若要选择该选项，请在该向导的"指定存储模式和创建成员组"步骤中，选择"自动创建成员组"选项按钮。

若要在现有维度中创建成员组，请先在包含大量或超量成员的原级别的上一级创建该级别的复本。然后在新级别中创建成员组，如果不想让最终用户看到新级别，则可将其隐藏。

重要 用来创建成员组的级别成员必须具有唯一名称。在创建成员组之前，在维度编辑器或多维数据集编辑器中将级别的 Member Names Unique 属性设置为 True。

成员组取决于包含其子代的级别的"排序依据"属性。该属性指定所显示成员的排序次序。在该排序次序中，成员组的子代是连续的。

若要在现有维度中创建成员组，请使用维度编辑器或多维数据集编辑器。

创建成员组

Analysis Manager

Analysis Manager

在共享维度中创建成员组之后，必须对该维度进行处理。如果在创建成员组之前该维度的 Changing 属性的设置为 True，则用"增量更新"选项处理该维度。如果在创建成员组之前该维度的 Changing 属性的设置为 False，则用"重建维度结构"选项处理该维度。

在专用维度中创建成员组之后，必须对多维数据集进行处理。如果在创建成员组之前该维度的 Changing 属性已设置为 True，则用"刷新数据"选项处理该多维数据集。如果在创建成员组之前该维度的 Changing 属性已设置为 False，则用"处理"选项处理该多维数据集。

请参见

多维数据集编辑器 — 数据视图

多维数据集编辑器 — 架构视图

维度编辑器 — 数据视图

维度编辑器 — 架构视图

成员组

处理多维数据集

更新和重建共享维度

更新和刷新多维数据集数据


创建有多重层次结构的维度

可以为维度创建多重层次结构，提供维度成员的可选视图。例如，有两重层次结构的时间维度可以由常规日历视图和财务日历视图组成。

在 Microsoft® SQL Server™ 2000 Analysis Services 中，具有多个层次机构的维度实际上是可共享维度表并且可能共享相同聚合的两个或多个独立维度。使用多个层次结构可帮助优化 Analysis Services 中聚合的生成。

与有单一层次的维度不同，命名架构要求使用一个句点表明有多于一重的层次结构存在。（有单一层次结构的维度可以使用句点和层次名部分，但这是可选的。）在前一个示例中，当一个时间维度被定义为提供一个常规日历视图和一个财务日历视图时，结果名称可能是 Time.Calendar 和 Time.Fiscal。

重要 当创建具有多个层次结构的维度时，此名称的层次结构部分不能等于维度中任何当前或将来的级别名或成员名，因为使用该维度的查询可能不明确。

若要把对多维数据集的干扰最小化，在部署前对有多重层次结构的维度进行标记是很有帮助的。一种标记的方式是在创建时用句点和层次结构名称命名该维度。然后可以使用同样的维度名称部分后跟句点和层次结构名称部分创建其它的层次结构。

有多重层次结构的维度可以在维度向导或维度编辑器中创建。对于要创建的每个层次结构，过程与创建一个新的维度类似。

使用维度向导创建有多重层次结构的维度

Analysis Manager

Analysis Manager

使用维度编辑器创建带有多层次结构的维度

Analysis Manager

Analysis Manager

也可以用一些限定条件在现有的维度中添加多重层次结构。有关更多信息，请参见在现有的维度中添加层次结构

请参见

维度层次结构


在现有维度中添加层次结构

可以用两种方法在现有的维度中添加层次结构。第一种用于已为现有维度定义了层次结构时，而第二种用于尚未定义层次结构时。两种方法都要用到维度编辑器。

第一种方法包括编辑带已定义层次结构的现有维度，并且把它保存成一个有新的层次结构的新维度。在现有的维度名称部分后面跟一个句点和一个新的层次结构名称部分。

第二种方法使用现有的层次结构作为新的有多重层次结构的维度的模板。如果将多重层次结构添加到一个尚未定义层次结构的现有维度中，可以用一个新的维度名称部分、一个句点和一个层次结构名称部分重新命名维度，使其它层次结构基于现有的维度。若要创建下一个层次结构时，使用新的维度名称部分后跟句点和一个不同的层次结构名称部分。

重要 当创建具有多个层次结构的维度时，此名称的层次结构部分不能等于维度中任何当前或将来的级别名或成员名，因为使用该维度的查询可能不明确。

向现有的维度添加层次结构

Analysis Manager


使用可选功能增强多维数据集

Microsoft SQL Server 2000 Analysis Services 提供很多强大的可选功能，可用来增强在多维数据集中执行的分析和多维数据集数据的表示。还有另外的用于维度的可选功能，可以进一步增强多维数据集的功能。有关更多信息，请参见使用可选功能增强维度。

主题 | 描述
创建计算成员 | 包含有关使用函数库创建成员的信息，所创建的成员能在运行时显示计算值。
创建计算单元 | 描述使用计算单元创建由多维表达式 (MDX) 集合表达式定义的单元的多维部分，依靠 MDX 逻辑表达式所描述的条件，MDX 值表达式有选择地应用于该单元的多维部分。
创建命名集 | 包含用于创建维度成员集合或创建可在 MDX 查询中使用的集合表达式的不同选项的有关信息。
创建对策 | 描述不同类型的对策，可以通过创建这些对策来帮助最终用户查看数据源甚至与数据源进行交互。
维护写启用的多维数据集和写回数据 | 包含有关配置多维数据集数据的信息，这种配置可以使最终用户能够对数据进行更改。
指定钻取选项 | 描述使最终用户得以查看多维数据集单元的源数据的方法。


创建计算成员

可以将多维数据集数据、算术运算符、数字和/或函数组合起来创建自定义度量值或维度成员，这些度量值和维度成员称为计算成员。例如，通过将汇率和现有美元度量值相乘，可以创建将美元转换成马克的计算成员 Marks。然后 Marks 会在一个单独的行或列中显示给最终用户。

计算成员的定义将存储起来，而它们的值则只存在于内存中。在上面的例子中，虽然马克的值会显示给最终用户，但这些值并没有存储为多维数据集数据。

可以在常规多维数据集中或虚拟多维数据集中创建计算成员。有关更多信息，请参见在常规多维数据集中创建计算成员和在虚拟多维数据集中创建和维护计算成员。

若要创建计算成员，请使用计算成员生成器。该生成器使您得以为计算成员指定下列选项：

  • 父维度

    选择用于包含计算成员的父维度。维度是一些描述性的分类，通过这些分类，可以对多维数据集中的数值数据（即度量值）进行划分以便分析。在表格式浏览器中，当最终用户浏览多维数据集的数据时，维度提供显示给最终用户的列标题和行标题。（在图形式浏览器中，它们提供其它类型的描述性标志，但功能与表格式浏览器中相同。）计算成员在所选父维度中提供一个新标题（或标签）。

    作为替代方法，可以让计算成员包含在度量值中，而不是包含在维度中。此选项也提供一个新的列标题或行标题，但这个标题附加在浏览器的度量值中。

  • 父成员

    选择用于包含计算成员的父成员。如果选择具有一个级别的维度或"度量值"作为父维度，则此选项不可用。

    维度划分为包含成员的不同级别。每个成员都产生一个标题。浏览多维数据集数据时，最终用户可以从所选标题深化至先前未显示的副标题。计算成员的标题将添加到所选父成员下的第一个级别中。

  • 名称

    选择计算成员的名称。最终用户浏览多维数据集时，该名称显示为计算成员值的列或行标题。

  • 值表达式

    指定产生计算成员值的表达式。此表达式可以用多维表达式 (MDX) 编写。该表达式可以包含下列内容：

    • 表示多维数据集的维度、级别、度量值等组件的数据表达式

    • 算术运算符

    • 数字

    • 函数

    重要 任何要在另一计算成员的值表达式中使用的计算成员，必须在创建将使用它的计算成员之前创建。

创建计算成员之后，可以对它重命名。重命名会改变显示给最终用户的相关联的列标题或行标题。

重命名计算成员

Analysis Manager

Analysis Manager

用函数库生成计算成员

Microsoft SQL Server 2000 Analysis Services 为创建计算成员提供它自己的扩展函数库。Analysis Services 还支持其它的函数库：

  • Microsoft Visual Basic for Application 表达式服务：该库包括在 Analysis Services 中，并自动注册。

  • Microsoft Excel 工作表：该库必须在 Analysis Services 之外单独安装，但也是自动注册。

  • 其它：这些库必须在 Analysis Services 之外单独安装，并须通过单击计算成员生成器中的"注册"按钮来手工注册。

对于处于 Analysis Services 函数库之外的某个库中的函数，只有当它满足下列条件时，Analysis Services 才支持该函数：

  • 函数只接受字符串或数字类型的参数或者包含字符串或数字值的数组或变量数据类型。

  • 函数只返回字符串或数字数据类型或者包含数字值的变量数据类型。

对于处于 Analysis Services 函数库之外的库中每个函数，在将所得数据表现给最终用户之前，都应分别进行测试。有关受支持的函数的更多信息，请参见 Visual Basic for Applications 函数和 Excel 函数。

在使用 Analysis Services 函数库之外的库中的函数时，只有省略可选参数后面的所有参数，才能省略该可选参数。

如果多个库包含同一个函数名称，则 Analysis Services 函数有优先权。然后，优先权按注册的先后次序安排。

为使最终用户能够看到函数所返回的正确值，必须在他们的计算机上安装和注册包含该函数的库。

使用说明

在创建计算成员时，可使用下列技术：

  • Null 关键字

    可使用关键字 Null 创建值为空的计算成员。

  • 求解次序

    在创建计算成员时，可为属性窗格的"高级"选项卡中的"求解次序"属性指定一个整数值。该属性指定求解计算成员的优先级，零代表最高优先级。对于包含两个或更多计算成员，并且结果取决于计算成员的求解次序的交集单元，求解计算成员的次序成为一个关键问题。例如，如果 Annual Growth（年增长）的计算成员显示在列中，Performance（性能）显示在行中，交集单元就可以根据先求解哪个计算成员而表示性能的年增长或年增长的性能。

  • 集合的临时别名

    在函数中，可用关键字 As 赋予集合一个临时别名，以供函数内部使用。在这一示例中，集合 {State} 被赋予临时别名 S1，这样我们就可以在函数后续部分的嵌套迭代中引用该集合。

    Sum({State} As S1, Sum(Geography.CurrentMember.Children,
Population * Val((Geography.CurrentMember.Properties("CityTax")) +
Val(S1.Current.Properties("StateTax")))))

请参见

计算成员

计算成员生成器

MDX


在常规多维数据集中创建计算成员

若要在常规多维数据集中创建计算成员，请使用多维数据集编辑器和计算成员生成器。

使用计算成员生成器创建计算成员

Analysis Manager

Analysis Manager

在多维数据集中添加或更改计算成员后，必须处理相关虚拟多维数据集方能使最终用户总能访问它们。（如果组件多维数据集的结构自上一次处理之后没有更改，则此处理过程将比处理组件多维数据集要快得多。）添加或更改计算成员时，连接到服务器计算机的虚拟多维数据集最终用户只要保持连接状态，就不会受到影响。但是，在您处理完相关虚拟多维数据集之前，处于连接状态的最终用户是看不到它们的。

说明 常规多维数据集中的计算成员在 Analysis Manager 树窗格中不可见。若要创建并访问它们，必须首先显示多维数据集编辑器。


创建计算单元

使用计算单元可以定义一个多维表达式 (MDX) 公式，用来为特定单元组中的每个单元提供一个值。可选择根据逻辑 MDX 语句对单元组中的每个单元进行评估，以决定该公式是否适用于该单元组中的特定单元。

例如，可以创建计算单元定义，它从基于当前年份实际值的计算结果提供下一年的预测值，但是仅针对特定的客户和产品。与计算成员、自定义成员或自定义汇总不同，该功能可能影响多维数据集的特定单元而不是一个整个成员；可以只为整个多维数据集中的单个单元创建计算单元定义。

与计算成员一样，计算单元的定义也被存储起来。只有当客户端应用程序查询多维数据集时，才评估计算单元的值。但是，与计算成员不同，单元保留其原始基础数据。这样，计算单元可以添加到多维数据集而不影响基础数据，而且计算单元可从多维数据集删除而不会使该多维数据集无效。当处理常规或虚拟多维数据集时，不对计算单元进行评估；处理该多维数据集时如同计算单元定义并不存在。

随着计算传递的引入，可在任何数量的计算传递间递归地应用计算单元，评估是从指定的计算传递开始的。有关计算传递的更多信息，请参见理解传递次序和求解次序。

可以在常规多维数据集或虚拟多维数据集中创建计算单元。有关创建计算单元的更多信息，请参见在常规多维数据集中创建计算单元和在虚拟多维数据集中创建计算单元。

若要创建计算单元定义，请使用计算单元向导。该向导使您得以为计算单元指定下列选项：

  • 计算子多维数据集

    从多维数据集中的每一个维度选择成员，以定义计算子多维数据集。计算子多维数据集包含要对其应用计算公式的单元组。带有指定成员的所有维度和所有其它维度的组合定义计算子多维数据集。如果给定的维度没有任何指定的成员，则认为该维度中的所有成员均是计算子多维数据集的部分。

    如果从常规或虚拟多维数据集的任何维度中都没有指定成员，则将计算子多维数据集定义为整个常规或虚拟多维数据集。

  • 计算条件

    定义一个 MDX 逻辑表达式（取值为 True 或 False 的表达式），该表达式将应用于计算子多维数据集中的每个单元。如果计算条件对某单元取值为 True，当查询该单元时，将返回应用于该单元的计算公式的结果。如果计算条件对某单元取值为 False，当查询该单元时，将返回该单元的实际值。

    如果未指定计算条件，计算公式将应用于计算子多维数据集中的所有单元。

  • 计算公式

    定义一个 MDX 表达式，该表达式将为计算子多维数据集中的每个单元提供服从计算条件的值。计算公式可以为返回字符串或数字值的任何 MDX 表达式。

创建计算单元之后，可以在多维数据集编辑器（对于常规多维数据集）或者在虚拟多维数据集编辑器（对于虚拟多维数据集）中对其进行编辑。

在多维数据集编辑器中编辑计算单元定义

Analysis Manager

Analysis Manager

在虚拟多维数据集编辑器中编辑计算单元定义

Analysis Manager

Analysis Manager

请参见

计算单元

计算单元向导

多维数据集编辑器 — 架构视图

虚拟多维数据集编辑器

理解传递次序和求解次序


在常规多维数据集中创建计算单元

若要在常规多维数据集中创建计算单元，请使用多维数据集编辑器和计算单元向导。

在常规多维数据集中创建计算单元

Analysis Manager

Analysis Manager

在常规多维数据集中创建计算单元之后，不必处理该多维数据集以向最终用户提供访问权限。计算单元定义立即可用于查询目的。

说明 常规多维数据集中的计算单元定义在 Analysis Manager 树窗格中不可见。若要创建并访问它们，必须首先显示多维数据集编辑器。


在虚拟多维数据集中创建计算单元

若要在虚拟多维数据集中创建计算单元，请使用虚拟多维数据集编辑器和计算单元向导。

在虚拟多维数据集中创建计算单元

Analysis Manager

Analysis Manager

在虚拟多维数据集中创建计算单元之后，不必处理该多维数据集以向最终用户提供访问权限。计算单元定义可立即用于查询目的。

说明 虚拟多维数据集中的计算单元定义在 Analysis Manager 树窗格中不可见。若要创建并访问它们，必须首先显示虚拟多维数据集编辑器。


在虚拟多维数据集中创建和维护计算成员

可以将计算成员从组件多维数据集导入到虚拟多维数据集中，也可以直接在虚拟多维数据集中创建新的计算成员。用计算成员生成器可以在虚拟多维数据集中创建和编辑计算成员。在虚拟多维数据集中，可以从该虚拟多维数据集的组件多维数据集导入计算成员，从而不必重新创建计算成员。导入后，可以在虚拟多维数据集中编辑计算成员。

使用虚拟多维数据集编辑器维护虚拟多维数据集中的计算成员。虚拟多维数据集编辑器使得通过单击即可访问计算成员生成器和"导入计算成员"对话框，"导入计算成员"对话框用来将计算成员导入虚拟多维数据集中。

虚拟多维数据集编辑器只用于维护虚拟多维数据集中的计算成员。若要维护常规多维数据集中的计算成员，请使用多维数据集编辑器访问计算成员生成器。

下表中的主题描述维护虚拟多维数据集中计算成员的三个基本过程。

主题 | 描述
将计算成员导入到虚拟多维数据集内 | 包含有关将虚拟多维数据集的组件多维数据集中的一个或多个计算成员导入虚拟多维数据集的信息。
在虚拟多维数据集内编辑计算成员 | 描述如何更新虚拟多维数据集的计算成员。
在虚拟多维数据集内创建计算成员 | 描述如何为虚拟多维数据集添加新的计算成员。

计算成员

创建计算成员

虚拟多维数据集

虚拟多维数据集编辑器


将计算成员导入到虚拟多维数据集内

导入计算成员时，如果计算成员的语法有误或者其值表达式包括不在虚拟多维数据集中的度量值、维度或其它对象，就会出现错误信息。（值表达式显示在虚拟多维数据集编辑器属性窗格的"值"文本框旁边。）只要该错误仍存在，计算成员就不会包括在显示给最终用户的虚拟多维数据集数据中。若要修正该错误，可以：

  • 向虚拟多维数据集添加缺少的度量值、维度或对象，并处理该多维数据集。若要添加度量值或维度，请使用虚拟多维数据集向导。若要从虚拟多维数据集编辑器内部启动虚拟多维数据集向导，请在"编辑"菜单中单击"结构（向导）"命令。

    -或-

  • 编辑有错误的计算成员，将虚拟多维数据集中所不包括的度量值、维度或对象从值表达式中删除。有关更多信息，请参见在虚拟多维数据集内编辑计算成员。

如果导入的计算成员的名称和虚拟多维数据集中已存在的计算成员的名称相同，则将赋予所导入的计算成员一个由其旧名称加数字后缀组成的新名称。

只能从与所编辑的虚拟多维数据集处于同一数据库的多维数据集导入计算成员。

若要将计算成员导入虚拟多维数据集，请使用虚拟多维数据集编辑器和"导入计算成员"对话框。

将计算成员导入到虚拟多维数据集内

Analysis Manager


在虚拟多维数据集内编辑计算成员

若要编辑虚拟多维数据集中的计算成员，请使用虚拟多维数据集编辑器和计算成员生成器。

虚拟多维数据集中的计算成员在 Analysis Manager 树窗格中不可见。若要创建并访问它们，必须首先显示虚拟多维数据集编辑器。

在虚拟多维数据集内编辑计算成员

Analysis Manager


在虚拟多维数据集内创建计算成员

若要在虚拟多维数据集内创建计算成员，请使用虚拟多维数据集编辑器和计算成员生成器。

虚拟多维数据集中的计算成员在 Analysis Manager 树窗格中不可见。若要创建并访问它们，必须首先显示虚拟多维数据集编辑器。

在虚拟多维数据集内创建计算成员

Analysis Manager


创建命名集

命名集是为重复使用而创建的一组维度成员或集合表达式，例如用于多维表达式 (MDX) 查询中。可以通过组合多维数据集数据、算数运算符、数字和/或函数来创建命名集。例如，可以创建一个名为 Top Ten Factories 的命名集，它包含 Factories 维度中具有最高的 Production 度量值的 10 个成员。然后最终用户可以在查询中使用 Top Ten Factories。例如，最终用户可以将 Top Ten Factories 放置在一个坐标轴上，将包括 Production 的 Measure 维度放置在另一个坐标轴上。

有关更多信息，请参见命名集。

Microsoft SQL Server 2000 Analysis Services 为创建命名集提供了自己的大容量函数库。有关更多信息，请参见 MDX 函数列表。为创建计算成员，Analysis Services 还支持其它函数库。有关更多信息，请参见创建计算成员。

若要创建命名集，请使用命名集生成器。该生成器允许为命名集指定下列选项：

名称

选择命名集的名称。最终用户浏览多维数据集时将看到该名称。

集合表达式

指定生成命名集的表达式。此表达式可以用多维表达式 (MDX) 编写。该表达式可以包含下列内容：

  • 表示多维数据集的维度、级别、度量值等组件的数据表达式

  • 算术运算符

  • 数字

  • 函数

    若要通过直接指定集合中成员的方式来创建集合表达式，请用花括号 ({}) 将成员列表括起来。

有关更多信息，请参见命名集生成器。

可以在常规多维数据集或虚拟多维数据集中创建命名集。在虚拟多维数据集中，为避免重新创建命名集，可以从虚拟多维数据集的组件多维数据集中导入命名集。导入后，可以编辑虚拟多维数据集的命名集。有关更多信息，请参见在常规多维数据集中创建命名集和在虚拟多维数据集中创建和维护命名集。


在常规多维数据集中创建命名集

若要在常规多维数据集中创建命名集，请使用多维数据集编辑器和命名集生成器。

常规多维数据集中的命名集在 Analysis Manager 树窗格中是不可见的。若要创建并访问它们，必须首先显示多维数据集编辑器。

在常规多维数据集中创建命名集

Analysis Manager


在虚拟多维数据集中创建和维护命名集

可以从虚拟多维数据集的组件多维数据集中将命名集导入该虚拟多维数据集，也可以直接在虚拟多维数据集中创建命名集。可以用命名集生成器创建和编辑虚拟多维数据集的命名集。

用虚拟多维数据集编辑器维护虚拟多维数据集的命名集。在虚拟多维数据集编辑器中可以通过单击访问命名集生成器和"导入命名集"对话框，该对话框用于将命名集导入到虚拟多维数据集中。

虚拟多维数据集编辑器仅用于维护虚拟多维数据集的命名集。若要维护常规多维数据集中的命名集，请使用多维数据集编辑器，通过它可以访问命名集生成器。

有关更多信息，请参见虚拟多维数据集编辑器。

下列主题描述了在虚拟多维数据集中维护命名集的三个基本过程。

主题 | 描述
将命名集导入虚拟多维数据集 | 描述用来将一个或多个命名集从虚拟多维数据集的组件多维数据集复制到该虚拟多维数据集的过程。
在虚拟多维数据集中编辑命名集 | 描述用来更新虚拟多维数据集的命名集的过程。
在虚拟多维数据集中创建命名集 | 描述用来向虚拟多维数据集中添加新命名集的过程。


将命名集导入虚拟多维数据集

若要将命名集导入虚拟多维数据集，请使用虚拟多维数据集编辑器和"导入命名集"对话框。

将命名集导入虚拟多维数据集

Analysis Manager

Analysis Manager

只能从与所编辑的虚拟多维数据集处于同一数据库的多维数据集导入命名集。

如果所导入的命名集与虚拟多维数据集中已有的命名集同名，则将赋予所导入的命名集一个由其旧名称加数字后缀组成的新名称。

导入命名集时，如果命名集的语法不正确或是它的表达式包含虚拟多维数据集中不存在的度量值、维度或其它对象，将显示错误信息。（命名集的表达式显示在虚拟多维数据集编辑器属性窗格中的 Value 旁边。）只要该错误仍存在，显示给最终用户的虚拟多维数据集数据就不会包含该命名集。若要修正该错误，可以：

  • 向虚拟多维数据集添加缺少的度量值、维度或对象，并处理该多维数据集。若要添加度量值或维度，请使用虚拟多维数据集向导。若要从虚拟多维数据集编辑器内部启动虚拟多维数据集向导，请在"编辑"菜单上单击"结构...（向导）"命令。

    -或-

  • 编辑有错误的命名集，并从表达式中删除虚拟多维数据集中不存在的度量值、维度或其它对象。有关更多信息，请参见在虚拟多维数据集中编辑命名集。


在虚拟多维数据集中编辑命名集

若要在虚拟多维数据集中编辑命名集，请使用虚拟多维数据集编辑器和命名集生成器。

虚拟多维数据集的命名集在 Analysis Manager 的树窗格中不可见。若要创建并访问它们，必须首先显示虚拟多维数据集编辑器。

在虚拟多维数据集中编辑命名集

Analysis Manager


在虚拟多维数据集中创建命名集

若要在虚拟多维数据集中创建命名集，请用虚拟多维数据集编辑器和命名集生成器。

虚拟多维数据集的命名集在 Analysis Manager 的树窗格中不可见。若要创建并访问它们，必须首先显示虚拟多维数据集编辑器。

在虚拟多维数据集内创建命名集

Analysis Manager


创建对策

对策是指最终用户启动的、在所选多维数据集或其某部分上执行的操作。操作可以通过将所选项目作为参数来启动应用程序，也可以检索有关所选项目的信息。有关对策的更多信息，请参见对策。

若要创建对策，请使用对策向导。该向导将通过一系列步骤引导您为某一对策指定以下选项：

  • 目标

    选择对策所附加到的对象。一般情况下，在客户端应用程序中，当最终用户选择了目标对象后就会显示该对策；但是，最终用户的何种行为会导致对策的显示，取决于客户端应用程序。从下列对象中选择：

    • 多维数据集

    • 维度

    • 维度中的成员

    • 级别

    • 级别中的成员

    • 单元

    • 命名集
  • 类型

    选择对策的类型。下表总结了可用的类型。

    类型 | 描述
    命令行 | 在 Microsoft Windows NT 4.0 或 Windows 2000 中的命令提示符下执行一条命令
    语句 | 执行 OLE DB 命令
    HTML | 在 Internet 浏览器中执行 HTML 脚本
    URL | 在 Internet 浏览器中显示可变页
    数据集 | 检索一个数据集
    行集 | 检索行集
    专有 | 使用一个与本表中前面所列接口不同的接口执行操作

  • 语法

    指定执行对策时所传递的参数。该语法必须取值为字符串，并且必须包含以多维表达式 (MDX) 形式编写的表达式。例如 MDX 表达式可以指代该语法所包含的多维数据集的一部分。MDX 表达式在传递参数之前得到取值。MDX 生成器也可以帮助生成 MDX 表达式。

可以在标准多维数据集或虚拟多维数据集中创建对策。在虚拟多维数据集中，可以从该虚拟多维数据集的组件多维数据集导入对策，从而不必重新创建对策。导入这些对策之后，可以在虚拟多维数据集中对其进行编辑。

对策向导

在常规多维数据集中创建对策

在虚拟多维数据集中创建及维护对策

MDX 生成器


在常规多维数据集中创建对策

若要在常规多维数据集中创建对策，请使用多维数据集编辑器和对策向导。

在常规多维数据集中创建对策

Analysis Manager

Analysis Manager

说明 常规多维数据集中的对策在 Analysis Manager 树窗格中不可见。若要创建并访问常规多维数据集，必须首先显示多维数据集编辑器。


在虚拟多维数据集中创建及维护对策

可以从虚拟多维数据集的组件多维数据集向虚拟多维数据集中导入对策，也可以直接在虚拟多维数据集中创建新对策。可以使用对策向导在虚拟多维数据集中创建并编辑对策。

使用虚拟多维数据集编辑器维护虚拟多维数据集中的对策。虚拟多维数据集编辑器可实现对对策向导和用于向虚拟多维数据集导入对策的"导入对策"对话框的单击式访问。

虚拟多维数据集编辑器只能用于维护虚拟多维数据集中的对策。若要维护常规多维数据集中的对策，请使用多维数据集编辑器。可从多维数据集编辑器访问对策向导。

有关更多信息，请参见虚拟多维数据集编辑器。

维护虚拟多维数据集中的对策有三个基本过程。在下列主题中描述了这些过程。

主题 | 描述
将对策导入到虚拟多维数据集内 | 描述将一个或多个对策从虚拟多维数据集的组件多维数据集复制到虚拟多维数据集本身的过程
在虚拟多维数据集内编辑对策 | 描述更新虚拟多维数据集的对策的过程
在虚拟多维数据集内创建对策 | 描述将新对策添加到虚拟多维数据集的过程


将对策导入到虚拟多维数据集内

若要将对策导入到虚拟多维数据集内，请使用虚拟多维数据集编辑器和"导入对策"对话框。

将对策导入到虚拟多维数据集内

Analysis Manager

Analysis Manager

只能从与已编辑的虚拟多维数据集处于同一数据库的多维数据集导入对策。

如果所导入的对策与虚拟多维数据集中已有的对策同名，则将赋予所导入的对策一个由其旧名称加数字后缀组成的新名称。

在导入对策时，如果该对策的定义含有虚拟多维数据集中所没有的度量值、维度或其它对象，或者如果存在语法错误，则会显示错误信息。只要错误仍存在，显示给最终用户的虚拟多维数据集数据中就不含有该对策。若要修正该错误，可以：

  • 向虚拟多维数据集添加缺少的度量值、维度或对象，并处理该多维数据集。若要添加度量值或维度，请使用虚拟多维数据集向导。若要从虚拟多维数据集编辑器内部启动虚拟多维数据集向导，请在"编辑"菜单上单击"结构...（向导）"命令。

    -或-

  • 编辑有错误的对策，从其定义中删除虚拟多维数据集所没有的度量值、维度或对象。有关更多信息，请参见在虚拟多维数据集内编辑对策。


在虚拟多维数据集内编辑对策

若要在虚拟多维数据集中编辑对策，请使用虚拟多维数据集编辑器和对策向导。

如何在虚拟多维数据集内编辑对策

Analysis Manager

Analysis Manager

说明 虚拟多维数据集中的对策在 Analysis Manager 树窗格中不可见。若要创建并访问它们，必须首先显示虚拟多维数据集编辑器。


在虚拟多维数据集中创建对策

若要在虚拟多维数据集中创建对策，请使用虚拟多维数据集编辑器和对策向导。

如何在虚拟多维数据集内创建对策

Analysis Manager

Analysis Manager

说明 虚拟多维数据集中的对策在 Analysis Manager 树窗格中不可见。若要创建并访问它们，必须首先显示虚拟多维数据集编辑器。


维护写启用的多维数据集和写回数据

如果写启用一个多维数据集，则最终用户可在浏览时更改所显示的多维数据集数据。但是，这些更改保存在名为回写表的单独表中，而不是保存在多维数据集数据或源数据中。浏览写启用的多维数据集的最终用户将看到对该多维数据集在这个写回表中所做的全部更改的结果。

在写启用的多维数据集上，可使用多维数据集角色授予用户和用户组读/写权限，并限制对多维数据集中特定单元或单元组的访问。有关为访问多维数据集单元所授予的读/写权限的更多信息，请参见单元安全性。

可以浏览或删除写回数据。还可以将写回数据转换为分区。

下表列出了指向提供更详细信息的主题的链接。

主题 | 描述
写启用多维数据集 | 介绍如何使用"写启用"对话框写启用多维数据集。
浏览写回数据 | 介绍如何使用"浏览数据"对话框浏览写启用多维数据集的数据。
删除写回数据和写禁用多维数据集 | 指明删除多维数据集的写回数据时的注意事项。
将写回数据转换为分区 | 指明将写回数据转换为分区时的注意事项。

说明 只有安装 Microsoft® SQL Server™ 2000 企业版的 Analysis Services 才能转换为分区。

请参见

写启用的多维数据集


写启用多维数据集

在 Analysis Manager 树窗格中右击多维数据集即可访问"写启用"对话框，使用该对话框可以写启用多维数据集。

写启用多维数据集

Analysis Manager

Analysis Manager

请参见

写启用的多维数据集


浏览写回数据

在 Analysis Manager 树窗格中右击写启用多维数据集即可访问"浏览数据"对话框，您可以在该对话框中浏览多维数据集写回表中的内容。

浏览多维数据集的写回数据

Analysis Manager

Analysis Manager

请参见

写启用的多维数据集


删除写回数据和写禁用多维数据集

在 Analysis Manager 树窗格中右击写启用多维数据集即可访问"删除写回数据"对话框，您可以使用该对话框删除多维数据集写回表中的内容。

重要 当删除多维数据集的写回数据时，同时还写禁用该多维数据集。多维数据集单元的所有无限制读/写策略和读/写权限都将禁用，而且最终用户将无法更改显示的多维数据集数据。（被禁用无限制读/写策略或读/写权限的最终用户仍然能够浏览多维数据集。）读取和读附随权限不受影响。

删除多维数据集的写回数据和将其写禁用

Analysis Manager

Analysis Manager

请参见

写启用的多维数据集


将写回数据转换为分区

可以将多维数据集写回表中的数据转换为分区。

注意 不正确地使用分区可导致多维数据集数据不准确。有关更多信息，请参见管理分区。

将多维数据集的写回数据转换为分区时，还将写禁用该多维数据集。多维数据集单元的所有无限制读/写策略和读/写权限都将禁用，而且最终用户将无法更改显示的多维数据集数据。（被禁用无限制读/写策略或读/写权限的最终用户仍然能够浏览多维数据集。）读取和读附随权限不受影响。

此过程使得写回表成为新分区的事实数据表。

说明 只有安装 Microsoft® SQL Server™ 2000 企业版的 Analysis Services 才能转换为分区。

在 Analysis Manager 树窗格中右击写启用多维数据集即可访问"转换为分区"对话框，使用该对话框可以将写回数据转换为分区。

将多维数据集的写回数据转换为分区和写禁用该多维数据集

Analysis Manager

Analysis Manager

请参见

分区

写启用的多维数据集


指定钻取选项

最终用户从常规多维数据集、虚拟多维数据集或链接多维数据集中选择单个单元，并从该单元的源数据中检索结果集以获得更详细的信息，这个操作过程就是钻取。如果最终用户要进行钻取，他们的客户端应用程序必须支持此功能。

根据默认，钻取结果集只能从表行生成，而这些表行是为计算所选多维数据集单元的值而评估的。例如，在一个三维多维数据集中，如果所选的多维数据集单元是 1998 和 Mexico 的交集，而且按所有的 Customers 和度量值 Sales 对显示的数据集进行了切片，那么钻取的结果集只会从以下各项生成：

  • 同时属于 1998 和 Mexico 的事实数据表行。

  • 存储 1998 的 Time 维度表行。

  • 存储 Mexico 的 Location 维度表行。

  • Customers 维度表中的所有行。

结果集将通过多维数据集的架构中的联接进行汇总。

说明 值基于表达式的单元不支持钻取，如计算成员单元或与自定义成员公式相关联的单元。这包括显示挖掘模型维度的级别成员值的单元。

钻取权限通过多维数据集角色中的成员资格授予。只有那些被授予此功能的多维数据集角色中的最终用户才能钻取。可以在多维数据集角色管理器中或通过用决策支持对象 (DSO) 编程来授予此功能。有关使用 DSO 设置钻取选项的信息，请参见 AllowDrillThrough（MDStore 接口）。

若要启用或禁用常规多维数据集的钻取，请打开多维数据集编辑器。在"工具"菜单上单击"钻取选项"命令。然后在"钻取选项"对话框中选中或清除"启用钻取"复选框。可以在"列"选项卡上选择钻取时显示哪些列。

若要启用或禁用虚拟多维数据集的钻取，请打开虚拟多维数据集编辑器。在树窗格中，选定虚拟多维数据集图标，然后在属性窗格中将 Enable Drillthrough 属性设置为 True 或 False。对于链接多维数据集，可通过更改发布服务器上一个或多个源多维数据集的设置来启用或禁用钻取。

如果启用了多维数据集的钻取功能，那么当在多维数据集浏览器、多维数据集编辑器或虚拟多维数据集编辑器中浏览多维数据集的数据时可以测试钻取。若要进行此操作，请先右击一个多维数据集单元，然后单击"钻取"命令。

为常规多维数据集指定钻取选项

您可以为单个常规多维数据集启用钻取。可以为每个多维数据集选择包括在结果集（由钻取操作所返回）中的列和表。这些列可来自多维数据集的数据源中的任何表，包括那些不是多维数据集架构的组成部分的表。如果启用钻取功能，就必须至少选择一列。

因为钻取操作会占用大量的资源，所以在启用钻取之前请仔细考虑。而且只能在测试某个多维数据集的钻取操作之后，才能将钻取功能授予该多维数据集角色。

指定钻取筛选是限制钻取使用资源的一种方法。这个筛选就是添加到 SQL SELECT 语句中的 WHERE 子句表达式，该语句将生成结果集。此筛选能限制结果集中的行数。

如果要为一个多分区多维数据集启用钻取功能，那么在开始以下过程之前，首先要确保该多维数据集所有分区的表中都包括需要显示在结果集中的列。（启用钻取功能的"钻取选项"对话框只显示多维数据集默认分区的列名和表名。）合格的事实数据表名称不必在所有分区中都要相同。必要时，MicrosoftSQL Server 2000 Analysis Services 会自动更改查询以引用每个分区中相应的事实数据表名称。

说明 如果一个多维数据集包含多个分区，在该多维数据集中进行钻取将为每个分区都返回一个结果集。客户端应用程序可能会在结果集显示给最终用户之前试图将这些结果集进行合并，这将会产生意外的结果。

若要为常规多维数据集指定钻取选项，请使用多维数据集编辑器和"钻取选项"对话框。

指定常规多维数据集的钻取选项

Analysis Manager

Analysis Manager

为单独的分区指定钻取选项

启用或禁用多维数据集的钻取适用于多维数据集中的分区，但可以一个分区一个分区地设置钻取选项。常规多维数据集的钻取选项为该多维数据集的每一个分区都提供了默认的钻取选项。在每个分区中，除了钻取的功能（设置于多维数据集级别）以外，这些默认选项均可加以替代。可以为每个分区选择不同的列集合，以将其包括在分区的结果集中。

若要为分区指定钻取选项，请使用分区向导、"高级设置"对话框和"钻取选项"对话框。

指定分区的钻取选项

Analysis Manager

Analysis Manager

为虚拟多维数据集指定钻取选项

为虚拟多维数据集指定钻取选项的过程与常规多维数据集的过程不同。主要区别在于所显示的列的集合继承了源多维数据集中的设置。但是，虚拟多维数据集的钻取设置不依赖于其源多维数据集中的钻取设置。换言之，钻取可在源多维数据集中禁用，而为虚拟多维数据集启用。

若要指定虚拟多维数据集的钻取选项，请使用多维数据集编辑器设置选项并为虚拟多维数据集中的每个源多维数据集启用钻取，然后使用虚拟多维数据集编辑器为虚拟多维数据集启用钻取。

指定虚拟多维数据集的钻取选项

Analysis Manager

Analysis Manager

为链接多维数据集指定钻取选项

可在链接多维数据库的一个或多个源多维数据集中设置链接多维数据集的钻取设置和权限。这些源多维数据集与链接多维数据集驻留在不同的分析服务器上。若要指定链接多维数据集的钻取选项，请在发布服务器上修改每个源多维数据集的钻取设置。

指定链接多维数据集的钻取选项

Analysis Manager

Analysis Manager

请参见

创建多维数据集角色

创建安全角色

多维数据集编辑器 — 数据视图

多维数据集角色管理器

分区向导

链接多维数据集

管理链接多维数据集


更新多维数据集和维度

下列主题包含有关在 Microsoft® SQL Server™ 2000 Analysis Services 中更新多维数据集和维度的信息。

主题 | 描述
更新和刷新多维数据集数据 | 探讨根据更改类型的不同而要使用的处理类型。
更新和重建维度 | 包含关于如何将更改加入共享和专用维度的信息。


更新和刷新多维数据集数据

在 Analysis Manager 中所做的许多更改和所有对多维数据集源数据的更改都要求处理多维数据集，这样才能实现对多维数据集数据的更改。

可用以下方法处理多维数据集：

  • 增量更新

    将新数据添加到多维数据集中的分区并更新聚合。此方法不处理对多维数据集结构（度量值、维度等）或对其现有源数据的更改。增量更新用新数据创建临时分区并把它合并到现有分区中。

  • 刷新数据

    清除并重新加载多维数据集数据，并重新计算它的聚合。在多维数据集源数据已更改、但其结构未更改的情况下使用此方法。

  • 完整处理

    在当前定义基础上完全重新构造多维数据集，然后重新计算它的数据。

有关用上述方法所处理的更改种类的更多信息，请参见处理多维数据集。

因为增量更新用新数据创建了临时分区并将其合并到现有分区中，所以在执行增量更新之前，先要了解对于分区的特殊考虑事项。有关更多信息，请参见增量更新和分区。

Microsoft® SQL Server™ 2000 Analysis Services 不验证数据仓库的引用完整性。因此，举例来说，如果多维数据集（或者它的一个分区）的事实数据表包含外键值，此外键值没有出现在联接的维度表主键列中，则不对包含这些值的行作处理。此时，处理不会给出错误信息，但是多维数据集却包含了不完整的数据，从而导致数据不准确。

若要增量更新多维数据集，请使用"处理多维数据集"对话框、增量更新向导和"处理"对话框。

增量更新多维数据集

Analysis Manager

Analysis Manager

若要刷新多维数据集数据，请使用"处理多维数据集"对话框和"处理"对话框。

刷新多维数据集的数据

Analysis Manager

Analysis Manager

在完成处理但没有关闭"处理"对话框之前，可以查看用于增量更新或刷新多维数据集的 SQL 语句。此语句包含增量更新向导中指定的所有筛选。

查看 SQL 语句

Analysis Manager


更新和重建维度

根据维度是共享的还是专用的，可使用不同的过程来更新或者重建维度。有关共享维度和专用维度的更多信息，请参见维度简介。

主题 | 描述
更新和重建共享维度 | 包含有关根据共享维度中数据更改的情况决定使用何种处理的信息。
更新和重建专用维度 | 包含有关根据专用维度中数据更改的情况决定使用何种处理的信息。

请参见

维度处理


更新和重建共享维度

在更新共享维度或共享维度表后，必须对其进行处理。可用以下方法处理共享维度：

  • 增量更新

    处理维度表中增加的成员（即行）。此方法不处理维度结构的更改或成员之间关系的更改。

  • 重建维度结构

    处理维度结构更改，例如添加、删除或者移动级别。此方法也可处理成员之间关系的更改，例如将成员从一个父成员移动到另一个父成员。

可更改维度是个特例，在维度结构或者成员关系更改后，并不总是需要用第二种方法来处理。可更改维度包括虚拟、父子和关系 OLAP (ROLAP) 维度。有关更多信息，请参见可更改维度。

重要 当使用"重建维度结构"选项处理共享维度时，用户将立即无法使用所有采用了此共享维度的多维数据集，必须处理这些多维数据集后才能再次使用它们。

注意 如果更新并保存了共享维度的结构，但未处理该结构，那么当处理任意一个采用了该维度的多维数据集时，就会自动处理该结构。这时用户将立即无法使用所有其它采用了该维度的多维数据集，必须对这些多维数据集进行处理，然后才能再次使用。

若要增量更新共享维度或者重建共享维度结构，请使用"处理维度"对话框和"处理"对话框。

增量更新共享维度

Analysis Manager

Analysis Manager

重建共享维度的结构

Analysis Manager

Analysis Manager

在用"重建维度结构"选项处理共享维度之后，必须处理所有包含此维度的多维数据集。有关更多信息，请参见处理多维数据集。


更新和重建专用维度

必须在更新专用维度或专用维度表后对其进行处理。若要处理专用维度，请处理包含它的多维数据集。多维数据集所需进行处理的类型取决于对维度所作的更改类型。下列多维数据集处理选项之一是适用的：

  • "刷新数据"选项

    处理维度表中增加的成员（即行）。此方法不处理维度结构或成员之间关系的更改。

  • "完全处理"选项

    处理维度结构更改，例如添加、删除或者移动级别。此方法也可处理成员之间关系的更改，例如将成员从一个父成员移动到另一个父成员。

可更改维度是个特例，在维度结构或者成员关系更改后，其多维数据集并不总是需要用"完全处理"选项来处理。可更改维度包括虚拟、父子和关系 OLAP (ROLAP) 维度。有关更多信息，请参见可更改维度。

有关使用"刷新数据"选项处理多维数据集的信息，请参见更新和刷新多维数据集数据。有关使用"完全处理"选项处理多维数据集的信息，请参见处理多维数据集。


构造和使用数据挖掘模型

数据挖掘是作为 Microsoft® SQL Server™ 2000 Analysis Services 的一部分引入进来的一个令人兴奋的功能，它提供了一些新的工具，通过发现数据模式和规则并使用这些模式和规则进行预测分析并使用已成为工业标准的挖掘算法进行决策分析。

数据挖掘的基本机制是数据挖掘模型，这是一个抽象的对象，以一系列架构行集存储数据挖掘信息。使用各种工具可轻松访问数据挖掘模型。您可以使用挖掘模型向导创建数据挖掘模型，并可以使用数据挖掘模型浏览器以图形格式显示数据挖掘模型的内容。

还可以编程方式通过用于数据挖掘的 OLE DB 创建、培训和使用数据挖掘模型，用于数据挖掘的 OLE DB 是支持数据挖掘功能的 OLE DB 规范的扩展。

数据挖掘模型可使用各种算法，在大量数据上执行高级决策分析，不管这些数据是关系数据还是 OLAP 数据。下面的主题将帮助您遍历创建、培训和应用数据挖掘模型的各个步骤，同时可看到一个经过培训的数据挖掘模型的内容。此外还介绍了一些高级操作，如使用挖掘模型角色为数据挖掘模型提供安全性。

主题 | 描述
创建数据挖掘模型 | 解释了用于创建关系数据挖掘模型和 OLAP 数据挖掘模型的挖掘模型向导的用法。
编辑数据挖掘模型 | 解释了用于编辑关系数据挖掘模型和 OLAP 数据挖掘模型的挖掘模型编辑器的用法。
培训数据挖掘模型 | 详细说明了培训数据挖掘模型的过程。
查看数据挖掘模型 | 解释了查看和编辑数据挖掘模型内容的数据挖掘模型浏览器和相关性网络浏览器的用法。
高级数据挖掘模型操作 | 介绍了数据挖掘角色的用法。


创建数据挖掘模型

使用挖掘模型向导创建新的数据挖掘模型。挖掘模型向导带您遍历下面几个步骤：确定模型类型、构建事例集将要使用的模型并选择模型构造新数据挖掘模型所用的数据挖掘技术。

根据要处理的事例集数据的类型，可以使用两种类型的数据挖掘模型。关系数据挖掘模型设计为处理传统的关系数据库表，而 OLAP 数据模型设计为处理以多维数据集形式保存的 OLAP 数据。每种类型挖掘模型的创建都包含在各自的主题中。

数据挖掘模型共享相同的架构和基本结构，而不考虑其是基于关系数据还是基于 OLAP 数据。在构造数据挖掘模型过程中最重要的元素是事例。事例由一组数据挖掘列组成，用来定义模型要识别和学习的信息，模型并向其提供预测数据。

数据挖掘列在内容类型方面区分为下面几种：键列用来标识一个特定的事例，输入列用来提供数据挖掘提供程序可用来分析事例的信息，而预测列从分析过的事例中以图表的形式提供有意义的结果。

请参见

创建 OLAP 数据挖掘模型

创建关系数据挖掘模型

数据挖掘列

数据挖掘模型


创建关系数据挖掘模型

挖掘模型向导用来创建关系数据挖掘模型。有关挖掘模型向导以及创建关系数据挖掘模型所需步骤的更多信息，请参见挖掘模型向导。

挖掘模型向导使用所提供的事例表、数据挖掘技术、事例键列、输入列和可预测列构建或处理（可选）挖掘模型。

事例表包含建立数据挖掘模型事例集所需的列。在单个事例表的情况下，单个关系数据库表包含所有需要的信息。而对于多事例表，信息有可能跨多个表分布，建立事例集时需要关系数据库表之间的联接。

在选择数据挖掘技术时，选择用于关系数据挖掘模型的数据挖掘算法。要做到这一点，隐式选择一个数据挖掘算法提供程序。数据挖掘算法提供程序提供数据挖掘算法并确定数据挖掘模型的模型结构。

在使用向导创建关系挖掘模型时，还选择了输入列和预测列。输入列被数据挖掘提供程序用来包含培训数据。选择列用来在查询数据挖掘模型时提供预测分析结果。

先决条件

在构建关系数据挖掘模型之前，必须存在一个关系数据库，包含用于培训数据的表结构，以便挖掘模型向导使用该表结构来定义数据挖掘列。挖掘模型向导也可用来培训数据挖掘模型。不能通过 OLAP 数据源创建关系数据挖掘模型。

请参见

数据挖掘算法

数据挖掘列

数据挖掘模型

关系模型步骤（挖掘模型向导）


创建 OLAP 数据挖掘模型

创建 OLAP 数据挖掘模型的过程与创建关系数据挖掘模型的过程相似。若要创建 OLAP 挖掘模型，请使用挖掘模型向导。创建 OLAP 挖掘模型所需步骤与创建关系挖掘模型所需步骤几乎一样。

挖掘模型向导使用源多维数据集、数据挖掘技术、事例维度和级别、预测的实体以及培训数据创建 OLAP 数据挖掘模型。

源多维数据集向挖掘模型向导提供创建数据挖掘模型事例集所需信息。因为一个多维数据集可能包含许多组信息，模型将使用从多维数据集中选择的维度或级别为事例集建立键列。

选择数据挖掘技术的同时，也就是选择数据挖掘提供程序。数据挖掘提供程序给数据挖掘模型提供数据挖掘算法和模型结构。

事例维度和级别为数据挖掘模型在多维数据集中创建事例集提供特定的方向。

预测实体可以是下列实体中的任意一个：

  • 源多维数据集的度量值

  • 在挖掘模型向导前面所选的事例维度和级别的成员属性

  • 多维数据集中其它维度的成员

这给处理潜在的复杂 OLAP 数据预测分析进程提供了极大方便。

以维度、级别、成员属性和度量值形式保存的培训数据，可用来处理 OLAP 数据模型并进一步为事例集定义数据挖掘列结构。

向导也可为源多维数据集或基于源多维数据集上的虚拟多维数据集创建新的维度（选项）。这使得用户在查询数据挖掘数据时就像查询 OLAP 数据一样。

先决条件

OLAP 数据挖掘列中的列是由作为数据挖掘模型基础的 OLAP 多维数据集中的可见级别构建的。若要创建 OLAP 数据挖掘模型，挖掘模型向导需要有一个其维度至少包含一个可见级别的多维数据集。

不能由关系数据源创建 OLAP 数据挖掘模型，而且在 Microsoft® SQL Server™ 7.0 OLAP 服务中创建的虚拟维度不能用于 OLAP 挖掘模型。同时，OLAP 数据挖掘模型不能基于包含数据挖掘维度的虚拟多维数据集。

请参见

挖掘模型向导

数据挖掘算法

数据挖掘列

数据挖掘模型

OLAP 模型步骤（挖掘模型向导）


编辑数据挖掘模型

编辑数据挖掘模型的进程取决于挖掘模型的类型。关系数据挖掘模型和 OLAP 数据挖掘模型各有一个编辑器，分别为满足各自的专门需要而设计。

请参见

编辑 OLAP 数据挖掘模型

编辑关系数据挖掘模型


编辑关系数据挖掘模型

可以使用关系挖掘模型编辑器编辑关系数据挖掘模型的结构。关系挖掘模型编辑器也可用来处理数据挖掘模型和查看结果内容。

关系挖掘模型编辑器使您能够更改数据挖掘模型的基本属性（如数据挖掘算法）。它显示数据挖掘模型列（包括键列、输入列和可预测列），并允许您单独编辑列的属性。

关系挖掘模型编辑器还可以显示用来在挖掘模型向导中构造事例集的表架构，显示事例和支持表。

对于已培训的关系挖掘模型，关系挖掘模型编辑器可以使用数据挖掘模型浏览器，以图形形式显示数据挖掘模型的内容。

请参见

数据挖掘模型浏览器

关系挖掘模型编辑器


编辑 OLAP 数据挖掘模型

可以使用 OLAP 挖掘模型编辑器编辑 OLAP 数据挖掘模型的结构。而且，与关系挖掘模型编辑器类似，OLAP 挖掘模型编辑器可处理数据挖掘模型并显示结果内容。

OLAP 挖掘模型编辑器使您能够更改数据挖掘模型的基本属性（如数据挖掘算法），该编辑器还使您得以更改组成数据挖掘模型事例集的维度、级别和度量值的属性。

如果 OLAP 数据挖掘模型已经过培训，OLAP 挖掘模型编辑器还可以使用数据挖掘模型浏览器以图形形式显示数据挖掘模型的内容。

请参见

数据挖掘模型浏览器

OLAP 挖掘模型编辑器


培训数据挖掘模型

为提供预测性的结果，数据挖掘模型首先必须在称为培训的进程中采用已知数据。在该进程中，数据被插入到未经过培训的数据挖掘模型中。数据插入进程并不将培训数据保存到数据挖掘模型中；相反，数据挖掘模型对培训数据进行分析，找出以后可使用的规则和模式，以确定预测列的柱状图值并将统计信息作为数据挖掘模型内容保存。

培训是通过在挖掘模型向导、挖掘模型编辑器和从 Analysis Manager 中处理数据挖掘模型完成的。

培训进程对关系挖掘模型和 OLAP 挖掘模型是类似的。在挖掘模型向导内，用来构建模型的源表或源多维数据集假定包含培训数据并用来提供数据挖掘模型。在挖掘模型编辑器内，期望提供培训数据的关系数据挖掘模型的事例和相关表作为模型的一部分显示。这与 OLAP 挖掘模型不同，因为源多维数据集所有的维度、级别和度量值都复制了一份作为 OLAP 挖掘模型结构的一部分，即使它们不是挖掘模型的活动部分。关系数据挖掘模型只合并挖掘模型将要在其结构中使用的数据挖掘列。

处理数据挖掘模型可用下面几种方法中的一种来进行。

刷新

清除数据挖掘模型内容并从培训数据中重新培训模型。在模型结构未改变但模型需要从一系列新培训数据完全重新培训的情况下，这种方法最好用。最终用户在刷新进程中可继续查询数据挖掘模型，刷新进程完成后，用户可访问刷新过的数据而不用重新连接。

完全处理

完全删除和重建数据挖掘模型，并培训最新从培训数据中构建的模型。对结构已经更改的数据挖掘模型以及尚未培训过的模型需要选用本选项。使用数据挖掘模型的最终用户必须在处理完成后重新连接到服务器后方可继续使用该数据挖掘模型。

处理完挖掘模型后，关于在培训数据中所发现模式和规则的信息将和事例数据的分布信息一起作为数据挖掘模型内容存储。

请参见

挖掘模型向导

Analysis Manager

OLAP 挖掘模型编辑器

关系挖掘模型编辑器


查看数据挖掘模型

查看已培训数据挖掘模型内容的最简单方法是使用数据挖掘模型浏览器和相关性网络浏览器。这些图形化工具以易于理解的图形界面显示数据挖掘模型的复杂内容（如决策树）。浏览器使您能够图形化数据挖掘模型的内容。

图形化是指以易于理解的可视化格式显示复杂数据的过程，但在数据挖掘中实现却非常困难。数据挖掘模型浏览器可以简化数据挖掘模型内容的图形化过程，而相关性网络浏览器则可以使决策树数据挖掘模型中复杂关系的图形化变得易于理解。

可以通过浏览数据挖掘模型的内容来检测有问题的关系，这些关系可能表明规则过多或存在其它模型问题，从而使您能够以后使用一个挖掘模型编辑器修改并完整处理数据挖掘模型。

下列主题详细描述了 Microsoft® SQL Server™ 2000 Analysis Services 提供的查看器。

主题 | 描述
使用数据挖掘模型浏览器查看 | 描述如何使用数据挖掘模型浏览器研究数据挖掘模型的详细分布信息。
使用相关性网络浏览器查看 | 详细介绍如何使用相关性网络浏览器了解决策树数据挖掘模型内的复杂的相关性网络。

请参见

OLAP 挖掘模型编辑器

关系挖掘模型编辑器

数据挖掘模型浏览器

相关性网络浏览器


使用数据挖掘模型浏览器查看

数据挖掘模型浏览器使您得以从单个特性及其关系为出发点，查看数据挖掘的内容。该浏览器显示每个受单个特性影响的节点的挖掘模型内容，以及每个节点的柱状图数据。它以相互连成网络的盒子的形式显示挖掘模型中所使用的数据挖掘模型节点（包括节点的关系以及分配给这些节点的规则或特性）。每个盒子均代表单个决策树中或单个群集中的一个节点。

节点带有颜色标记，代表特性的数据密度，应用于与所选节点处理的事例总数相关的选定节点。可以通过使用图例窗格中树颜色下拉列表，来更改颜色标记及所选的特性。

在内容明细窗格中，节点按照特性因子的级别顺序，从左向右表示。所表示的拆分越是处于树的下方，在数据挖掘模型中造成携带的因子的影响就越小。此外，特性窗格允许对特性按照所选节点中的事例数量或出现概率进行排序，从而使您能够更好地理解给定特性与节点的关系。

使用数据挖掘模型浏览器图形化表示数据挖掘模型内容的好处是便于理解实现事例集的模式和规则，并能够精确调整这些模式和规则以更好地适合培训数据。例如，您可以使用数据挖掘模型浏览器的图形化能力排除数据挖掘进程中名为"规则过多"的常见问题。规则过多发生在数据挖掘模型开始构建指定给一个单一事例的规则以及模型开始将重要性附加到不重要的模式上时。例如，假定有一个用于商店数据挖掘模型的客户事例集，其中包括作为特性域的客户姓氏。由于只有一个名为 Smith 的客户购买工具，所以数据挖掘模型可能创建一个规则，说明名为 Smith 的客户购买工具的可能性很大。这个规则基于随机模式，没有实际意义。这个规则就是规则过多的一个示例，客户姓氏和购买产品类型之间的相互关系是没有实际意义的。在将特性添加到不提供实际意义的数据挖掘模型时最容易发生规则过多。在这种情况下，模型将试图在不应该有规则的地方构建规则。

数据挖掘模型浏览器中显示的信息代表数据挖掘模型通过检查培训数据而学到的趋势统计模型。同样，您将发现检查特性和节点路径（该路径定义了通过培训数据挖掘模型所获的知识）有助于更好地理解培训数据所表示的一般模式和规则。

请参见

数据挖掘模型浏览器

OLAP 挖掘模型编辑器

关系挖掘模型编辑器

相关性网络浏览器


使用相关性网络浏览器查看

相关性网络浏览器显示决策树挖掘模型的内容时，与数据挖掘模型浏览器的出发点有所不同。数据挖掘模型浏览器使您得以从单个特性的角度查看关系和分布信息，而相关性网络浏览器则使您得以仅依据关系信息，从所有特性的角度查看数据挖掘模型，从而为查看整个数据挖掘模型提供了更广阔的视角。

请考虑如下示例。您根据使用购物信用卡的顾客的购物情况，构造了一个数据挖掘模型。顾客人数统计信息及产品定单信息均十分丰富；而且为数据挖掘模型提供了大量输入和可预测列。例如，使用相关性网络浏览器，您能够立即体会到利用顾客人数统计信息预测其它顾客统计信息的便利之处，以及如何利用这些顾客统计信息预测产品定单信息。相关性网络浏览器显示了数据挖掘模型的每个树中所包含的关系，这些信息仅仅通过单独查看每个树是很难归纳出来的。

某个特性被隔离开后，数据挖掘模型浏览器使您得以查看所选特性的关系的细节和分布信息。

相关性网络浏览器将数据挖掘模型中的所有特性作为节点显示，其中的箭头表明节点间的预测链接。例如，由节点 Exercise 链接到节点 Heart Rate 的箭头表示：Exercise 特性可以预测 Heart Rate 特性。可以使用窗口左侧的滑块查看预测链接的强度。如果滑块设置为"所有链接"，则会显示所有预测链接，无论它们对有关节点的影响有多小。如果滑块设置为"最强链接"，则仅显示最强的预测链接。

节点带有颜色标记，代表选定的节点与相关节点的可预测方向。还可以通过单击和拖动来移动节点以便改善关系视图；或者使用"改善布局"按钮自动分布和调整节点，以获得更好的查看效果。

请参见

相关性网络浏览器

OLAP 挖掘模型编辑器

关系挖掘模型编辑器

数据挖掘模型浏览器


高级数据挖掘模型操作

本主题中的高级任务使您得以提高数据挖掘模型的性能和精确性，并通过使用数据库角色给挖掘模型提供安全保护功能。

主题 | 描述
在数据挖掘模型中使用角色 | 解释了如何使用数据库角色以保证数据挖掘模型安全。


在数据挖掘模型中使用角色

与 Microsoft® SQL Server™ 2000 Analysis Services 所管理的其它对象一样，也可以对数据挖掘模型分配安全角色，以便将对该模型及其预测能力的访问权限限制为特定用户和组。

当数据挖掘模型链接到 Analysis Manager 中的数据库时，将使用数据库角色决定是允许还是拒绝对链接到数据库中的数据挖掘模型的访问，这与在多维数据集中使用数据库角色类似。挖掘模型角色管理器处理创建、编辑和维护挖掘模型角色的任务。

注意 由于数据库角色可与其它多维数据集和数据挖掘模型共享，对角色定义（如名称和用户成员资格）的更改可影响到使用该角色的其它多维数据集或数据挖掘模型。

请参见

数据库角色

挖掘模型角色管理器


存档、还原和复制数据

Microsoft® SQL Server™ 2000 Analysis Services 提供用于在 Analysis Manager 中复制、移动或备份对象的功能。可以使用 Analysis Manager 或 msmdarch 命令来存档和还原 Analysis Services 数据库。每个数据库都存档为一个或多个 .cab 文件，可以保留这些文件以满足还原要求，或将其迁移到其它服务器计算机上。.cab 文件称为存档文件。还可以复制和粘贴 Analysis Manager 中不同的对象。

下列主题包含有关在 Microsoft SQL Server 2000 Analysis Services 中存档、还原及复制数据的信息。

主题 | 描述
存档和还原数据库 | 描述如何在 Analysis Services 中存档和还原数据库。
复制及粘贴对象 | 包含有关在 Analysis Manager 中复制或移动对象的信息。


存档及还原数据库

 Analysis Services

存档和还原数据库

Microsoft SQL Server 2000 Analysis Services 数据库的存档文件包含与数据库同名的目录的内容。例如，FoodMart 2000 示例数据库的存档文件存储有 FoodMart 2000 目录的内容。该目录的默认路径为：

C:\Program Files\Microsoft Analysis Services\Data\FoodMart 2000

所有的 Analysis Services 数据库都可在 Data 目录中找到。可以更改 Data 目录的路径。若要确定当前路径，请在 Analysis Manager 中右击包含该数据库的服务器，接着单击"属性"命令，然后可看见"Data 文件夹"框。

重要 Data 目录的子目录存储用于控制最终用户访问分析服务器上的对象的安全文件。这些文件包含在存档文件中。因此，必须对存档文件加以保护以防未经授权的访问。

存档文件也存储用于数据库及其对象的元数据。从 Analysis Services 知识库得出的正确记录包含在存档文件中。默认的 Analysis Services 知识库为：

C:\Program Files\Microsoft Analysis Services\Bin\msmdrep.mdb

但在安装时可对该知识库的路径进行更改，也可将该知识库迁移到 SQL Server 数据库中。

注意 在还原数据库时，其文件集（在 Data 目录和其子目录中）及其元数据将返回到它们在创建存档文件时的状态。自那时以来在这些目录中创建的文件将被删除。在存档文件创建以后对 Analysis Services 知识库中数据库及其对象的记录所做的更改和添加也将删除。

还原数据库时：

  • 所选存档文件中的文件将还原到 Data 目录下的适当目录中。如果这些目录中已经包含与存档文件中相同名称的文件，则存档文件中的文件将重写现有文件。如果这些目录中包含有不同名称的文件，其中包括存档文件创建之后创建的新文件，则这些文件都将删除。

  • 所选存档文件中的 Analysis Services 知识库记录将替换与数据库及其对象相关联的 Analysis Services 知识库中的记录。

有时包含关系 OLAP (ROLAP) 分区的数据库的还原复制而不是替换原始的存档分区。当发生这种情况时，原始 ROLAP 分区及其复本将使用相同的聚合表。这种情况会导致表中产生重写冲突。例如，若更改和处理原始分区，则聚合表可能对该分区的复本将不再有效。要避免这个问题，请在还原后立即为每个 ROLAP 分区指定一个唯一的聚合前辍，然后处理那些聚合前辍已经更改的分区。该操作为每一个分区创建不同的聚合表。若要访问某个分区的聚合前辍，请在 Analysis Manager 树窗格中右击该分区，单击"编辑"命令，继续执行到分区向导的最后一步，然后单击"高级"按钮。

注意 存档数据库不会存档该数据库的回写表、源数据或 ROLAP 分区的聚合。回写表、源数据和 ROLAP 分区的聚合对正在进行的 Analysis Services 的正确操作是必需的。必须用通常使用的备份软件对这些数据进行存档或备份，因为这些数据并不包含在 Analysis Services 所创建的存档文件中。

回写表将不存储在存档文件中。因此，如果还原了一个写启用多维数据集，而其回写表不可用，则必须在使用该多维数据集之前对其进行处理。处理之后，回写数据将不会对多维数据集的数据有影响。有关写回数据和写启用多维数据集的更多信息，请参见写启用的多维数据集。

远程分区中的数据不与数据库一起存档或还原。还原一个具有远程分区的数据库后，必须处理该远程分区。有关远程分区的更多信息，请参见远程分区。若要处理分区，请参见如何处理分区。

存档文件的内容根据数据库中分区的存储类型而有所不同。下表指出了这些不同之处。

存储类型 | 存档文件中包含源数据 | 存档文件中包含分区可用源数据的复本 | 存档文件中包含聚合
MOLAP | 否 | 是 | 是
ROLAP | 否 | 否 | 否
HOLAP | 否 | 否 | 是

即使其源数据（也就是分区所使用的数据源中的表）丢失或不可用，经过还原的 MOLAP 分区仍然可用。但是，如果分区源数据永久丢失，则还原的 MOLAP 分区及其父多维数据集将无法更新。还原的 ROLAP 和 HOLAP 分区能否正确操作取决于其源数据的可用性。还原的 ROLAP 分区还依赖于与其源数据存储在一起的聚合表或索引视图的可用性。


存档 Analysis Services 数据库

可以通过使用 Analysis Manager 或 msmdarch 命令来对 Microsoft® SQL Server™ 2000 Analysis Services 数据库进行存档。

若要使用 Analysis Manager 将 Analysis Services 数据库存档，请使用"数据库存档"和"数据库存档进度"对话框。

使用 Analysis Manager 存档 Analysis Services 数据库

Analysis Manager

Analysis Manager

若要使用 msmdarch 命令将 Analysis Services 服务数据库存档，请使用"命令提示符"窗口。

使用 msmdarch 命令存档 Analysis Services 数据库

命令提示符

命令提示符

也可以通过 .bat 文件执行 msmdarch 命令。如果想要调度 .bat 文件的执行，可以使用数据转换服务 (DTS) 来创建运行批处理文件的执行进程任务。如果 msmdarch 命令失败，则返回退出代码 1。

请参见

DTS 概述

执行进程任务


还原 Analysis Services 数据库

可以通过使用 Analysis Manager 或 msmdarch 命令来还原 Microsoft® SQL Server™ 2000 Analysis Services 数据库。

若要用 Analysis Manager 还原 Analysis Services 数据库，请使用"打开存档文件"、"还原数据库"和"还原数据库进度"对话框。如果是在远程服务器上还原数据库，还必须使用"远程服务器数据目录"对话框。

使用 Analysis Manager 还原 Analysis Services 数据库

Analysis Manager

Analysis Manager

若要使用 msmdarch 命令还原 Analysis Services 数据库，请使用命令提示符。

使用 msmdarch 命令还原 Analysis Services 数据库

命令提示符

命令提示符

也可以通过 .bat 文件执行 msmdarch 命令。如果想要调度 .bat 文件的执行，建议使用数据转换服务 (DTS) 来创建执行进程任务以运行批处理文件。如果 msmdarch 命令失败，则返回退出代码 1。

请参见

DTS 概述

执行进程任务


复制和粘贴对象

可以使用 Analysis Manager 复制和粘贴 Microsoft® SQL Server™ 2000 Analysis Services 中所用的很多类型的对象。下列菜单中有"复制"和"粘贴"命令：

  • Analysis Manager 树窗格中的快捷（即右击）菜单

  • Analysis Manager 中的"对策"菜单

可以在一个数据库内、多个数据库之间或多个服务器之间复制和粘贴对象。

复制和粘贴对象

Analysis Manager

Analysis Manager

只复制元数据和聚合。而不复制诸如源数据和回写表等数据。此数据必须对某些新近粘贴的对象可用。若要确保此可用性，请在粘贴后按照下列步骤操作：

  1. 确保目标位置上的数据源的定义正确，且已连接，以便新近粘贴的对象可以访问源数据。如果是在服务器之间复制和粘贴对象，则本要求尤为重要。

  2. 处理新近粘贴的、需要处理的对象类型。

只能在 Analysis Manager 的单个实例内复制和粘贴，而不能先在 Analysis Manager 的一个实例内复制对象，然后再在另外一个实例内粘贴。

如果在试图将对象粘贴到的位置上已包含相同类型及相同名称的对象，则系统会提请您为当前所创建的新对象提供另一个名称。

在复制某些对象类型时，支持对象会随之复制。例如，一个包含维度、度量值、一个或多个分区及数据源的多维数据集。多维数据集内可能还包含其它对象。它还可能依赖存在于多维数据集之外的其它对象（如共享维度和角色）。所有这些对象均是该多维数据集的支持对象，随该多维数据集一起复制。（如果支持对象有自己的支持对象，则同时还复制这些支持对象。）在粘贴和支持对象一起复制的对象时，这些支持对象将随主要对象一起粘贴。但下列情况除外：

  • 虚拟多维数据集：在将虚拟多维数据集复制和粘贴到另一个数据库之前，必须首先将虚拟多维数据集所基于的组件多维数据集复制和粘贴到该数据库中。若要确定这些组件多维数据集，请在 Analysis Manager 树窗格中选择该虚拟多维数据集，然后在 HTML（即右边的）窗格中选择"元数据"选项卡，再查看"使用多维数据集"行。

  • 共享虚拟多维数据集：在将共享虚拟维度复制和粘贴到另一个数据库之前，必须首先将该虚拟维度的 Depends On Dimension 属性中所指定的共享维度复制和粘贴到该数据库中。若要确定此共享维度，请在 Analysis Manager 的树窗格中右击该虚拟维度，单击"编辑"命令，然后在属性窗格中查看"高级"选项卡。

  • OLAP 数据挖掘模型。在将 OLAP 挖掘模型复制和粘贴到不同的数据库之前，源多维数据集必须已经存在于目标数据库中。

  • 关系数据挖掘模型。在将关系挖掘模型复制和粘贴到不同数据库之前，数据源必须已经存在于目标数据库中。

  • 目标位置已经包含与支持对象的类型和名称相同，但结构不同的对象。在这种情况下，粘贴操作失败，不粘贴任何对象。如果目标位置存在与支持对象的类型、名称及结构均相同的对象，则可成功地粘贴主要对象，而不粘贴支持对象。

如果粘贴关系 OLAP (ROLAP) 分区（或包含 ROLAP 分区的对象），则原 ROLAP 分区与其复本将使用相同的聚合表。这种情况会导致表中产生重写冲突。例如，如果更改并处理了原分区，则对其复本而言，聚合表不再有效。若要避免此类问题发生，请在粘贴后，立即为所粘贴的 ROLAP 分区指定一个唯一的聚合前缀并进行处理。本对策将创建一个仅为所粘贴分区使用的新聚合表。若要访问某个分区的聚合前辍，请在 Analysis Manager 的树窗格中右击该分区，单击"编辑"命令，继续执行到分区向导的最后一步，然后单击"高级"按钮。

可使用"复制"和"粘贴"命令创建仅包含原始数据库的元数据和聚合的数据库的复本。此复本可存档，而且存档文件可传输到另一个分析服务器并可从该处还原。此过程为只将数据库的结构传输到另一个分析服务器提供了便捷方法。

请参见

存档和还原数据库

存档 Analysis Services 数据库

还原 Analysis Services 数据库


分析和优化性能

Microsoft SQL Server 2000 Analysis Services 提供可用来分析和优化 Analysis Services 安装性能的工具。

主题 | 描述
分析使用模式 | 描述使用分析向导。可以使用该向导生成性能报表。
基于使用优化性能 | 描述基于使用的优化向导。可以使用该向导根据以往的查询优化聚合设计。
优化数据仓库数据库以提高 Analysis Services 性能 | 讨论设计数据仓库时可使用的技术，这些技术可提高 Analysis Services 的性能。
优化多维数据集架构 | 讨论多维数据集的"优化架构"选项以及该选项可以如何显著减少多维数据集的处理时间。
监视 Analysis Services 性能 | 详细描述可与 Microsoft Windows 2000 系统监视器（在 Windows NT 4.0 中称为性能监视器）协同使用来监视分析服务器性能的性能对象、计数器以及实例。


分析使用模式

若要快速生成在屏幕上显示的多维数据集查询模式报表，请使用"使用分析向导"。该报表内容是从查询日志导出的，默认情况下，日志每 10 个查询做一次记录。通过更改此间隔、完全停止日志记录或清除日志以重新启动日志记录，可以调整查询日志的内容。有关更多信息，请参见日志记录选项卡（属性对话框）。

通过使用准则可调整报表内容以选择希望包含在报表中的日志项。可使用下列报表。

报表名称 | 显示
查询运行时间表 | 按最长到最短运行时间进行排序的查询运行时间。
查询频率表 | 按最快到最慢频率进行排序的查询频率。
活动用户表 | 按每个用户发送的最多到最少查询数进行排序的用户及其发出的查询数。
查询响应图 | 所有查询的响应时间。
每小时查询图 | 按小时分组的已处理的查询总数。
每天查询图 | 按日期分组的已发送的查询总数。

启动使用分析向导

Analysis Manager

Analysis Manager

请参见

使用分析向导


基于使用优化性能

若要优化基于日志记录查询模式的分区性能，请使用基于使用的优化向导，它将带领您完成指定优化选项的步骤。有关更多信息，请参见基于使用的优化向导。

可以优化包含多个分区的多维数据集中的部分或全部分区，但是每个分区都必须单独优化。如果某个分区包含现有聚合，则可以将新聚合添加到现有聚合或取代它们。还可以更改正在优化的分区的存储模式。必须在优化分区的聚合之后处理分区，而向导的最后步骤使您得以立即处理或延迟处理分区。

重要 如果以后可能要合并分区，请不要优化分区聚合设计除非分区的聚合设计完全相同，否则不能合并分区。有关更多信息，请参见分区和合并分区。

基于使用的优化进程针对记录在查询日志中的查询模式设计聚合，默认情况下，日志每 10 个查询做一次记录。通过更改此间隔、完全停止日志记录或清除日志以重新启动日志记录，可以调整查询日志的内容。基于使用优化性能的一个方法是创建不包含聚合的分区，调整查询日志使之记录一段时间内的每个查询以捕获典型的使用模式，然后使用向导设计适合使用的聚合。有关更多信息，请参见日志记录选项卡（属性对话框）。

启动基于使用的优化向导

Analysis Manager


优化数据仓库数据库以提高 Analysis Services 性能

数据仓库数据库的设计和性能显著影响 Microsoft® SQL Server™ 2000 Analysis Services 的性能。

Analysis Services 通过将数据读入和组织到多维对象（如维度和多维数据集）中来创建数据仓库数据的多维表现方式。分析服务器在创建和处理维度和多维数据集时，使用数据库关系引擎访问数据仓库数据库。因此，数据仓库架构设计和关系数据库性能对简化多维数据集的设计和处理多维数据集的性能具有显著影响。

多维数据集存储模式

多维数据集的存储模式显著影响数据仓库架构和关系数据库性能对多维数据集查询性能的影响程度。

  • 当使用多维 OLAP (MOLAP) 存储时，多维数据集查询性能不依赖关系数据库性能，因为多维数据集的所有数据都包含在分析服务器使用的多维结构中。

  • 当使用混合 OLAP (HOLAP) 存储时，只有需要从事实数据表中检索事实数据的多维数据集查询才需要分析服务器查询关系数据库。数据库性能影响此类查询，但不影响不访问事实数据表的查询。

  • 当使用关系 OLAP (ROLAP) 存储时，数据库性能将影响所有多维数据集查询，因为分析服务器必须从关系数据库中检索事实和聚合数据。如果维度也使用 ROLAP 存储，则多维数据集查询性能将在很大程度上取决于关系数据库的性能。在这种情况下分析服务器中的高速缓存将影响多维数据集的性能，但只限于可以至少部分通过高速缓存的信息解析查询的程度。
维度建模

数据仓库数据库架构的设计应该体现维度建模的原则，这样，维度表和事实数据表可以表现业务数据以及客户端查看和查询这些数据的方式。大部分维度建模将生成一个星型或雪花数据库架构。这样的架构便于多维数据集的设计，并减少了在查询数据库以处理维度和多维数据集时的多表联接数量。如果需要雪花架构，应使事实数据表第一级别以上的维度表的数目最小，并使雪花维度的深度最小。事实数据表通常将大部分数据保持在数据仓库中，甚至有时会包含数亿行。应该谨慎地设计事实数据表以避免重复的数据并使行的长度最小。

多维数据集处理

关系数据库优化技术可提高数据读取速度，还可以提高 Analysis Services 中维度和多维数据集的处理性能。其中一个最重要的优化技术就是在事实数据表和维度表上设计和使用有效的索引，以便提高 Analysis Services 在处理维度和多维数据集时发出的联接和查询的性能。

SQL Server 2000 提供了许多用于优化逻辑和物理关系数据库的设计和查询性能的选项和建议。其中许多技术适用于数据仓库数据库以及事务处理数据库。有关更多信息，请参见数据库性能优化概述。

常用数据仓库技术

许多常用数据仓库设计和优化技术的应用与用来对客户端表示数据的工具无关。但是，某些优化技术在 SQL 查询用作表示工具时是适用的，而当工具为 Analysis Services 时就不是必需或适用的。一般来说，汇总不应减少事实数据表的粒度；事实数据表的行数影响处理多维数据集的时间，但对 OLAP 客户查询响应性能几乎没有什么影响。Analysis Services 使用成熟的算法创建汇总数据的聚集表，因此不需要在数据库架构中创建这些表。特殊的父子维度桥表（如组织的层次结构）不是必需的；Analysis Services 能够以其本来格式使用自引用维度表。

记录大小和数据类型

记录大小在各个方面影响 Analysis Services 的性能，包括多维数据集大小、处理时间、服务器内存使用、服务器到客户端的数据传输时间以及客户端内存使用。事实数据表通常在数据仓库中包含大量数据。事实数据表记录应尽可能地保持简短，并且仅包含度量值和索引键列的字段。度量值字段应使用与度量值数据一致的最小数据类型，但请确保该数据类型大到足够用来包含汇总值，以防止计算聚合时出现溢出。在包含数百万行的事实数据表中，即使每条记录节省两个字节，合计起来也能显著减少表的大小以及创建多维数据集时处理表所需的时间。

数据仓库更新

因为 Analysis Services 读取数据仓库数据并将这些数据存储在多维结构中，所以对数据仓库数据更改的频率会影响重新处理 OLAP 多维数据集和维度的频繁程度。数据仓库更新策略应该设计为考虑到重新处理 OLAP 对象的需要。


优化多维数据集架构

很多情况下，Microsoft® SQL Server ™ 2000 Analysis Services 可以通过消除维度表和事实数据表之间的联接优化多维数据集的架构，从而显著减少多维数据集的处理时间。

在处理维度的过程中，分析服务器创建维度数据和层次结构的一个内部表示方式。当处理多维数据集时，在成员键列属性内标识的维度成员键用于访问已处理维度的内部表示中的信息。在某些情况下，事实数据表中的维度成员外键可用于此查阅，从而不必将维度表联接到数据库查询中的事实数据表。这就显著减少了查询的复杂性、在关系数据库中访问的数据量以及分析服务器和关系数据库之间的网络流量。

若要利用多维数据集架构优化，当在多维数据集编辑器中设计多维数据集时，请单击"工具"菜单上的"优化架构"命令。这样，Analysis Services 就会在可能的地方修改架构，以消除事实数据表与维度表之间的联接。必须满足 Analysis Services 的某些条件，才能消除维度表与事实数据表之间的联接。这些条件是：

  • 维度必须是共享维度，而且必须在您优化多维数据集架构之前已经处理过。

  • 维度最低级别的成员键列必须包含联系事实数据表和维度表的键。这必须是联系事实数据表和维度表所必须的唯一的键。

  • 维度最低级别的成员键列中的键必须是唯一的。

  • 维度的最低级别必须在多维数据集中表示出来，也就是说，该级别的 Disabled 属性必须设置为 No。该级别可以隐藏。

如果满足这些条件，且使用"优化架构"选项优化了多维数据集的架构，则分析服务器在处理多维数据集时将忽略数据库中的维度表。如果多维数据集中的所有维度都满足这些条件，则分析服务器只需读取事实数据表即可处理多维数据集。当使用这种优化技术时通常可以显著减少处理时间。

多维数据集架构的优化适用于多维数据集的所有分区，不管这些分区是独立处理的还是作为一个组来处理的。

说明 如果依靠事实数据表与维度表之间的内部联接排除多维数据集内容的事实数据行，则不应优化多维数据集的架构。如果此优化删除了所有维度表联接，则将读取整个事实数据表。

因为架构优化可以消除联接，所以在指定钻取选项时，架构已优化的多维数据集可能不会显示所有可用的表用于使用。当指定钻取选项时，通过添加表并定义 SQL WHERE 子句以建立联接，可将表联接到架构用于钻取。有关更多信息，请参见指定钻取选项。

成员键列

Analysis Services 使用最低级别维度的 Member Key Column 属性控制多维数据集架构的优化。在优化多维数据集架构期间，将评估每个维度，以确定它是否满足优化条件。如果维度满足所要求的条件，则该维度最低级别的 Member Key Column 属性将更改以引用事实数据表中的外键，而不是维度表中的键。例如，在优化之前，维度级别的 Member Key Column 是 "Products"."SKU_ID"，它联接到事实数据表中的键 "Facts"."SKU_Key"。优化之后，Member Key Column 属性值为 "Facts"."SKU_Key"。这将用信号通知分析服务器在处理查询时而不是在发出查询时使用事实数据表中的键，以便将维度联接到关系数据库中的事实数据表。

示例

某个时间维度包含级别 Year、Quarter、Month 和 Day。该维度中的每个 Day 都有一个维度成员，每一个 Day 成员都有一个唯一的键，该键指定为 Day 级别的成员键列。该 Day 级别的 Member Keys Unique 属性设为 True。

该维度的 Day 级别成员键用作事实数据表中的外键以便使维度表和事实数据表相联系。无需其它键使事实数据表中的行唯一地与维度表中的行相关。

多维数据集的设计使其使用该事实数据表和时间维度。多维数据集包含 Month 级别及以上级别的汇总数据而非 Day 级别的汇总数据将更好。在多维数据集中，该维度 Day 级别的 Disabled 属性设为 No，这样，级别键就可用于多维数据集处理优化。该维度的 Day 级别的 Visible 属性设为 False，这样，该多维数据集将不显示 Day 级别的数据。

当选择"工具"菜单上的"优化架构"命令后，将对多维数据集架构进行优化。然后，当多维数据集保存并处理时，由分析服务器发出的用来读取事实数据表的 SQL 查询将不需要联接或访问维度表。

修改多维数据集架构优化

通过更改每个维度的最低级别的 Member Key Column 属性，使其引用维度表中的初始列，可以删除多维数据集中对一个或多个维度的优化。这将导致分析服务器发出在处理期间将维度表联接到事实数据表的查询。

说明 通过添加或删除维度或修改多维数据集中的维度属性，可以影响多维数据集的架构优化。只要做了这些更改，就应该检查多维数据集的架构优化或重新进行优化。

未知的维度成员错误

此错误表明当处理包含维度的多维数据集时，在维度的内部表示中找不到维度成员的键。原因可能是在添加新成员后没有处理维度，或者是维度表不包含与在事实数据表中找到的键相匹配的键。

如果向维度添加新成员并向事实数据表添加相关事实数据但尚未处理维度，则无论是否已优化多维数据集的架构，都将出现该错误。无论是从联接维度（架构未优化）读取成员键，还是从事实数据表（架构已优化）中的成员外键读取成员键，都没有什么差别。维度的内部表示直到已处理维度后才包含新键。

有一种情况是如果已经优化多维数据集的架构，则将触发该错误，而如果没有优化架构则不会触发该错误。这种情况在事实数据已经添加到事实数据表但维度表中不存在相应的成员时发生。如果已经优化多维数据集的架构，将从事实数据表读取新事实数据的键，但在维度的内部表示中找不到该键，甚至在已处理维度后也找不到。然而，如果没有优化多维数据集的架构，则将维度表联接到事实数据表的查询将导致忽略任何没有相应维度成员的事实数据，并在处理期间不读取它们，因此不会触发该错误。

通过维护维度表与事实数据表之间的引用完整性，以及始终在修改维度表之后和处理使用维度的多维数据集之前处理维度，可以避免这些错误。


监视 Analysis Services 性能

系统监视器是 Microsoft® Windows® 2000 中的一个图形工具，用于测量自己的计算机或网络上其它计算机的性能。（在 Microsoft Windows NT 4.0 中，该工具称为性能监视器）。可使用系统监视器或性能监视器执行本节所述任务。对于每台计算机，可以观察诸如处理器、内存、高速缓存、线程和进程这些对象的行为。每个对象都有一个相关的的计数器集，用于测量设备使用情况、队列长度、延时情况，另外还有吞吐量及内部拥塞指示器。为 Microsoft SQL Server 2000 Analysis Services 提供性能对象和计数器的动态链接库 MSMDCTR80.DLL 安装在 Analysis Services 目录的 \Bin 子目录下。

Windows 系统监视器提供图表、警报和报表功能，既可以反映当前活动，也可以反映进行中的日志记录。还可以留待以后打开、浏览及用图表显示日志文件，而看起来就像在反映当前的活动。

安装和卸载 Analysis Services 性能计数器

若要手工安装 Analysis Services 所提供的性能对象和计数器，以与系统监视器协同使用，则必须执行下列步骤：

安装 Analysis Services 性能计数器
  1. 将下表中的已命名值添加到下列注册表键值：
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServerOLAPService\Performance

    在下表中描述注册表的路径。

    已命名的值 | 值
    Library | Msmdctr80.dll 库的文件路径
    Open | OpenPerformanceData
    Collect | CollectPerformanceData
    Close | ClosePerformanceData

  2. 性能计数器的信息必须安装到注册表中。因此包含 Msmdctr.ini 和 Msmdctr.h 这两个文件。这两个文件通常与 msmdctr80.dll 库安装在同一位置。若要将该信息加载到注册表中，请使用随 Windows NT 4.0 和 Windows 2000 分发的 LODCTR.EXE 程序。若要进行安装，请在命令提示下执行下列命令：
    LODCTR msmdctr.ini
卸载 Analysis Services 性能计数器
  1. 若要卸载性能对象和计数器，请使用为此目的随 Windows NT 4.0 和 Windows 2000 分发的 UNLODCTR.EXE 程序。若要卸载，请在命令提示下执行下列命令：
    UNLODCTR MSSQLServerOLAPService

Analysis Services 提供可用来监视运行 Analysis Services 的计算机中的活动的对象和计数器。下列对象表中的主题提供有关监视 Analysis Services 性能的更详细信息。

Analysis Services 对象 | 描述
分析服务器：Agg Cache 对象 | 收集当与 Analysis Services 有关时聚合高速缓存的相关统计信息
分析服务器：Connection 对象 | 收集当与 Analysis Services 有关时连接的相关统计信息
分析服务器：Last Query 对象 | 收集关于上一次 Analysis Services 查询的统计信息
分析服务器：Lock 对象 | 收集当与 Analysis Services 有关时内部服务器闩锁和锁的相关统计信息
分析服务器：Proc 对象 | 收集当与 Analysis Services 有关时处理数据的相关统计信息
分析服务器：Proc Aggs 对象 | 收集关于多维 OLAP (MOLAP) 数据文件中聚合处理的统计信息
分析服务器：Proc Indexes 对象 | 收集关于 MOLAP 数据文件的索引处理的统计信息
分析服务器：Query 对象 | 收集关于 Analysis Services 查询的统计信息
分析服务器：Query Dims 对象 | 收集关于维度和元数据的 Analysis Services 查询的统计信息
分析服务器：Startup 对象 | 收集关于 Analysis Services 启动的统计信息

请参见

分析和优化性能


分析服务器：Agg Cache 对象

下表列出来自 Microsoft SQL Server 2000 Analysis Services Agg Cache 对象的性能计数器。Agg Cache 对象计数器提供关于聚合高速缓存的信息。

Agg Cache 对象计数器 | 描述
添加的字节/秒 | 添加到高速缓存中的字节的速率。
当前字节 | 聚合高速缓存使用的当前字节数。
当前条目 | 当前高速缓存条目的数目。
直接命中率 | 对于获得计数器值的间隔期间，高速缓存直接命中与高速缓存查找的比率。
直接命中/秒 | 高速缓存直接命中的速率。从现有的高速缓存条目中应答查询。
退出/秒 | 从高速缓存退出的速率。该值指每分区每多维数据集每数据库。通常由于背景擦写器导致。
筛选命中率 | 对于获得计数器值的间隔期间，高速缓存筛选命中与高速缓存查找的比率。
筛选命中/秒 | 高速缓存筛选命中的速率。通过筛选现有的高速缓存条目应答查询。
插入/秒 | 插入到高速缓存中的的速率。该值指每分区每多维数据集每数据库。
查找/秒 | 高速缓存查找的速率。
错失/秒 | 高速缓存缺失的速率。
直接命中总计 | 直接高速缓存命中的总数。从现有的高速缓存条目中应答查询。
筛选命中总计 | 筛选高速缓存命中的总数。从现有的高速缓存条目中应答查询。
退出总计 | 从高速缓存退出。该值指每分区每多维数据集每数据库。通常由于背景擦写器导致。
插入总计 | 到高速缓存中的插入。该值指每分区每多维数据集每数据库。
查找总计 | 在高速缓存中进行的查找的总数目。请注意：每一个 MDX 查询有零个或多个服务器往返，将查询每个分区。
错失总计 | 高速缓存缺失的总数。

请参见

监视 Analysis Services 性能


分析服务器：Connection 对象

下表列出了来自 Microsoft SQL Server 2000 Analysis Services Connection 对象的性能计数器。Connection 对象计数器提供有关服务器活动的总体信息。它们可用来监视用户与 Analysis Services 连接的性能。

Connection 对象计数器 | 描述
身份验证/秒 | 用户身份验证的速率。
完成/秒 | 连接完成的速率。这是通过同时添加成功和失败的完成派生出来的。
当前代理程序 | 服务器上代理程序的当前数目。
当前身份验证 | 当前正在进行的身份验证数目。
当前连接 | 当前已建立的客户端连接的数目。
当前连接正在进行 | 当前待完成的连接的数目。
当前 http 连接 | 当前已建立的 HTTP 连接的数目。
失败/秒 | 失败的速率。
请求/秒 | 请求的速率。这些是到达的请求。
成功/秒 | 连接成功完成的速率。
身份验证总计 | 用户身份验证总计。
完成总计 | 连接完成总计。
失败总计 | 已失败的连接尝试的总计。
请求总计 | 连接请求总计。这些是到达的请求。
成功总计 | 成功连接总计。

请参见

监视 Analysis Services 性能


分析服务器：Last Query 对象

下表列出了来自 Microsoft SQL Server 2000 Analysis Services Last Query 对象的性能计数器。Last Query 对象计数器提供有关上一次查询中处理的信息。

Last Query 对象计数器 | 描述
直接从高速缓存应答 | 直接来自高速缓存的应答数目。请注意，该计数器指每个分区。
已筛选的从高速缓存应答 | 通过从其它高速缓存条目筛选而应答的分区的数目。
从文件应答 | 从文件中提供应答的分区的数目。
数据平均字节/读取 | 每个数据文件每次读取操作的平均字节。
数据平均字节/行 | 上一次查询中每行读取的平均字节。
数据平均行数/读取 | 上一次查询中每一数据文件读取操作所读取的平均行数。
数据字节数 | 上一次查询中从数据文件读取的字节。
数据字节总计 | 上一次查询中数据文件大小，以字节为单位。所有检查过的多维 OLAP (MOLAP) 分区的总计。
数据读取 | 上一次查询中相对数据文件的逻辑 I/O 读取的数量。
已请求 DSN | 对服务器请求"数据集名称"的查询。（对每个维度应用级别。）
已使用 DSN | 用于回答查询的"数据集名称"。（对每个维度应用级别。）
索引字节数 | 上一次查询中从索引文件读取的字节数。
索引读取 | 上一次查询中相对索引文件的逻辑 I/O 读取的数量。
映射字节 | 上一次查询中从映射文件读取的字节。
映射读取 | 上一次查询中相对映射文件的逻辑输入/输出 (I/O) 读取的数量。
查询数 | 单纯增加查询计数。可能会有助于用工具查明这些信息适用于哪个查询。
所创建的行数 | 所创建的行数，这些行形成聚合集中的最终应答。由于这是聚合的结果，所以此计数器通常比行读取计数器小得多。
所排除的行筛选 | 上一次查询中筛选所排除的行数。
所包括的行筛选 | 上一次查询中筛选所包含的行数。
已筛选的行数 | 上一次查询中筛选操作应用于的行的数量。
已读取的行数 | 从磁盘（事实数据或聚合）或从聚合高速缓存（内存中）读取的行数。
时间（毫秒） | 所经过的时间，以毫秒为单位。
字节总计 | 从所有文件读取的字节。
读取总计 | 上一次查询中相对处理的所有文件的逻辑 I/O 读取的数量。

请参见

监视 Analysis Services 性能


分析服务器：Lock 对象

下表列出了来自 Microsoft SQL Server 2000 Analysis Services Lock 对象的性能计数器。Lock 对象计数器提供有关闩锁和锁定活动的信息。它们可用来监视 Analysis Services 中的闩锁和锁的性能。

Latch 对象计数器 | 描述
当前闩锁等待 | 等待闩锁的当前线程数目。这些是未能给予即时授予且处于等待状态的闩锁请求。
当前锁等待 | 等待锁的当前客户数目。
当前锁 | 锁定的对象的当前数量。
闩锁等待/秒 | 不能立即授予的闩锁请求的速率。
锁拒绝/秒 | 锁拒绝的速率。
锁授予/秒 | 每秒钟锁授予的数量。
锁请求/秒 | 每秒钟锁请求的数量。
锁等待/秒 | 每秒钟锁等待的数量。这些是未能给予即时锁授予且处于等待状态的锁请求。
解锁请求/秒 | 每秒钟解锁请求的数量。

请参见

监视 Analysis Services 性能


分析服务器：Proc 对象

下表列出了来自 Microsoft SQL Server 2000 Analysis Services Proc 对象的性能计数器。Proc 对象计数器提供有关处理数据的信息。

Proc 对象计数器 | 描述
当前分区 | 正进行处理的当前分区数目。
当前线程合并 | 合并数据的线程的当前数目。当受工作管道阻塞时，将减量。
当前线程读取 | 读取源数据的线程的当前数目。当受工作管道阻塞时，将减量。
当前线程写入 | 将数据写入磁盘的线程的当前数目。当受工作管道阻塞时，将减量。
所写的文件字节/秒 | 每秒钟写入多维 (MOLAP) 文件的字节的速率。
所写的文件行/秒 | 每秒钟写入 MOLAP 文件中的行的速率。
内存大小字节 | 内存中当前行的大小。
内存大小行 | 内存中行的计数。
创建的行/秒 | 所创建的聚合行的速率。如果有重复项，则这将与行读取/秒不同。
已合并的行/秒 | 每秒钟合并或插入聚合中的行数。
读取的行数/秒 | 每秒钟从源数据库读取的行数。
行总计 | 从源数据库中读取的行的计数。
分区总计 | 处理过的分区的累积计数。不论处理成功还是失败，此计数总是增加的。

请参见

监视 Analysis Services 性能


分析服务器：Proc Aggs 对象

下表列出了来自 Microsoft SQL Server 2000 Analysis Services Proc Aggs 对象的性能计数器。Proc Aggs 对象计数器提供有关处理聚合的信息。

Proc Aggs 对象计数器 | 描述
当前分区 | 正进行处理的当前分区数目。
内存大小字节 | 内存中的当前聚合的大小。此计数为估计值。
内存大小行 | 内存中的当前聚合的大小。此计数为估计值。
创建的行/秒 | 每秒创建的聚合行的数量。
已合并的行/秒 | 每秒钟合并或插入聚合中的行数。
所写的临时文件字节/秒 | 每秒钟写入临时文件的字节数。当聚合超过内存限制时，将编写临时文件。
所写的临时文件行/秒 | 每秒钟所写的临时文件行的数量。当聚合超过内存限制时，将编写临时文件。
分区总计 | 已处理（无论成功或不成功）的分区数目总计。

请参见

监视 Analysis Services 性能


分析服务器：Proc Indexes 对象

下表列出了来自 Microsoft SQL Server 2000 Analysis Services Proc Indexes 对象的性能计数器。Proc Indexes 对象计数器提供有关处理索引的信息。

Proc Indexes 对象计数器 | 描述
当前分区 | 正进行处理的当前分区数目。
行/秒 | 每秒钟进行处理索引的行的计数。
分区总计 | 处理过的分区的累积计数。不论处理成功与否，此计数总是增加的。
行总计 | 为处理索引的行的累积计数。

请参见

监视 Analysis Services 性能


分析服务器：Query 对象

下表列出了来自 Microsoft® SQL Server™ 2000 Analysis Services Query 对象的性能计数器。Query 对象计数器提供有关在上一次查询中处理的信息，如处理上一次查询经过的时间，以毫秒为单位。

Query 对象计数器 | 描述
平均时间/查询 | 每个查询的平均时间（以毫秒为单位）。此计数器基于自上一次计数器测量后应答的查询。
所发送的字节/秒 | 每秒钟发送的字节的计数。
当前进程线程池 | 处理线程池中的线程的当前计数。这些线程解析查询。
当前进程线程队列长度 | 处理线程池中工作项目的队列的当前长度。
当前活动的进程线程 | 正活动地进行查询的当前线程的数目。
当前聚集操作 | 当前聚集操作。
当前查询 | 当前正活动地进行的查询的数目。
当前线程 | 当前进行查询的线程数目。
当前工作线程池 | 工作线程池中线程的当前计数。这些线程应答来自客户端的请求。
当前活动的工作线程 | 当前活动的工作线程计数。
数据字节/秒 | 每秒钟从数据文件读取的字节的计数。
数据读取/秒 | 每秒钟相对数据文件的逻辑 I/O 读取的计数。
排除的筛选行/秒 | 每秒钟排除的筛选行的计数。
包括的筛选行/秒 | 每秒钟包括的筛选行的计数。
筛选的行数/秒 | 每秒钟筛选的行的计数。
索引字节/秒 | 每秒钟从索引文件读取的字节的计数。
索引读取/秒 | 每秒钟相对索引文件的逻辑 I/O 读取的计数。
映射字节/秒 | 每秒钟从映射文件读取的字节的计数。
映射读取/秒 | 每秒钟相对映射文件的逻辑输入/输出 (I/O) 读取的计数。
网络往返/秒 | 网络往返的速率。这包括所有的客户端/服务器通讯。
聚集操作/秒 | 聚集操作启动的速率。
所应答的查询/秒 | 每秒钟应答的查询的计数。
直接从高速缓存查询/秒 | 每秒钟直接从高速缓存查询的计数。
已筛选的从高速缓存的查询/秒 | 每秒钟已筛选的从高速缓存查询的计数。
从文件查询/秒 | 从文件应答的查询的速率。
所请求的查询/秒 | 每秒钟到达服务器的查询请求的计数。
读取的行数/秒 | 每秒钟读取的行的计数。
所发送的行/秒 | 每秒钟发送的行的计数。
所发送字节总计 | 发送的字节的累积计数。
网络往返总计 | 网络往返总计。这包括所有的客户端/服务器通讯。
聚集操作总计 | 聚集操作的累积计数。
所应答的查询总数 | 已应答的查询的累积计数。
直接从高速缓存的查询总计 | 直接从高速缓存派生的查询的累积计数。请注意该值指每个分区。
已筛选的从高速缓存的查询总计 | 已筛选的从高速缓存查询的累积计数。
从文件查询的总计 | 从文件查询的累积计数。
所请求的查询总计 | 请求的查询的累积计数。
所发送的行的总计 | 所发送的行的累积计数。

请参见

监视 Analysis Services 性能


分析服务器：Query Dims 对象

下表列出了来自 Microsoft SQL Server 2000 Analysis Services Query Dims 对象的性能计数器。Query Dims 对象计数器提供有关处理查询维度的信息。

Query Dims 对象计数器 | 描述
字节/秒 | 每秒钟发送的字节计数。
当前请求 | 对成员树的一部分或成员属性的当前请求的数目。
成员/秒 | 每秒钟发送成员的计数。
请求/秒 | 成员树的一部分或成员属性的请求的速率。如果此种计数过度，请考虑增大"大级别阈值"。
字节总计 | 发送的字节的累积计数。
成员总计 | 对成员树的一部分或成员属性的请求的总数。
请求总计 | 请求的累积计数。
VLDM 请求总计 | 发送的超大型维度管理器 (VLDM) 请求的累积计数。
VLDM 请求/秒 | 每秒钟 VLDM 请求的计数。

请参见

监视 Analysis Services 性能


分析服务器：Startup 对象

下表列出了来自 Microsoft SQL Server 2000 Analysis Services Startup 对象的性能计数器。Startup 对象计数器提供有关处理启动的信息。

Startup 对象计数器 | 描述
字节/秒 | 每秒钟字节的计数。
成员/秒 | 每秒钟加载的成员的计数。
属性/秒 | 每秒钟加载的属性的计数。
服务器正常运行时间 | 自服务器启动后的累积秒数。
字节总计 | 字节的累积计数。
维度总计 | 已加载的维度的累积计数。
成员总计 | 已加载的成员的累积计数。
属性总计 | 已加载的属性的累积计数。

请参见

监视 Analysis Services 性能


自动化和调度管理任务

Microsoft® SQL Server™ 2000 Analysis Services 集成了数据转换服务 (DTS) 来帮助管理 OLAP 和数据挖掘数据。可以使用 DTS 使处理自动化，并可以使用批处理文件使 Analysis Services 数据库的存档和还原自动化。下面的主题描述如何使用 DTS 或命令提示使这些管理任务自动化。

主题 | 描述
用数据转换服务处理对象 | 描述 Analysis Services 如何与 DTS 一起使用来处理对象。
用数据转换服务创建预测 | 描述如何用 DTS 创建一个创建输出表的任务，该输出表中包含从数据挖掘模型分析而产生的预测列。


用数据转换服务处理对象

使用数据转换服务 (DTS) 包中的 Analysis Services 处理任务来处理一个或多个多维数据集或 Microsoft® SQL Server™ 2000 Analysis Services 中定义的其它对象。使用 DTS 从不同源中提取、转换以及将数据合并到单个或多个目的中。有关将 DTS 与 Analysis Services 一起使用的更多信息，请参见将数据转换服务与 Analysis Services 一起使用。有关 DTS 的更多信息，请参见 DTS 概述。

定义任务的包之后，可以调度包在将来某一天或某一时刻执行。该包可以仅执行一次，也可以定期重复执行。

说明 若要使用 Analysis Services 处理任务，在要在其上执行包含该任务的包的服务器计算机上，必须安装包括 SQL Server 企业管理器以及 Analysis Manager 在内的 SQL Server 7.0 或 SQL Server 2000。

若要使用 Analysis Services 处理任务处理一个或多个对象，请完成以下步骤。

  1. 创建一个处理 Analysis Services 中对象的 DTS 包。
    1. 创建一个 Analysis Services 处理任务。

    2. （可选）向该包添加连接和其它任务。

    3. 保存该包。
  2. 调度并执行该包。

有关步骤 a 和步骤 b 的更多信息，请参见创建 Analysis Services 处理任务和向包添加连接和其它任务。


创建 Analysis Services 处理任务

若要创建 Analysis Services 处理任务，请使用"Analysis Services 处理任务"对话框，该对话框通过 SQL Server 企业管理器中的数据转换服务 (DTS) 设计器进行访问。

创建 Analysis Services 处理任务

企业管理器


向包添加连接和其它任务

在数据转换服务 (DTS) 包中，除了可添加 Analysis Services 处理任务，还可添加各种类型的连接和任务。具体所需的连接和任务取决于您个人的要求和场合。下表列出了一些常见示例。

如果 Analysis Services 处理任务...

您可以添加...
该连接或任务执行于...

原因是...
用"处理"选项处理多维数据集
  • 一个到包含 OLTP 数据库的 Microsoft® SQL Server™ 2000 的连接，和

  • 一个到包含数据仓库的 SQL Server 的连接，和

  • 一个数据驱动的查询任务，用于从 OLTP 数据库更新数据仓库
 Analysis Services 处理任务之前 可以调度和定期执行包，以便自动更新数据仓库并将当前信息添加到多维数据集中。
用"增量更新"选项处理多维数据集或分区 | 修改 Analysis Services 处理任务的一个或多个属性的 Microsoft ActiveX® 脚本任务。这些属性包括 Datasource、FactTable 和 Filter。 | Analysis Services 处理任务之前 | 如果反复执行某个包以实施定期增量更新，则通常该包需要每次执行之前都要更改其中的一个或多个属性。有关更多信息，请参见更改 Analysis Services 处理任务的属性。
用任何选项处理任何对象。 | 配置一个发送邮件任务，以便如果前一个任务失败，则执行该任务 | Analysis Services 处理任务之后 | 如果 Analysis Services 处理任务失败，将自动通知某个管理员。

说明 在包中，不必向 SQL Server 2000 Analysis Services 中所定义的数据库、多维数据集和分区的数据源添加连接。Analysis Services 处理任务将建立所需的连接。

连接和任务添加完毕之后，通过添加优先约束，可以将它们组织成为有序的工作流。

请参见

DTS 概述


更改 Analysis Services 处理任务的属性

可以通过在 Analysis Services 处理任务的包中包括 Microsoft® ActiveX® 脚本任务（该脚本任务在 Analysis Services 处理任务之前执行）来更改该 Analysis Services 处理任务的某些属性。ActiveX 脚本任务在每次执行包时都可以更改属性值，或者可以根据条件逻辑来更改属性值。ActiveX 脚本任务在执行多维数据集或分区增量更新的 Analysis Services 处理任务之前更新每次执行的属性，这一点非常有用。这些增量更新通常要求在每次执行包时都更改它们的筛选或事实数据表。

向包添加以上两种任务并使用成功优先约束连接这些任务之后，数据转换服务 (DTS) 设计器设计表将如下所示：

可以更改 Analysis Services 处理任务的下列属性。请注意，所有属性名称都是区分大小写的。

  • ProcessOption。这是任务所处理的对象或文件夹的处理选项。下表列出 ProcessOption 基于所选对象的有效值。
    对象或文件夹 处理选项 ProcessOption 属性值
    描述
    数据库 | 处理 | 0 | 完全处理数据库中所有的多维数据集、分区和维度。
    多维数据集文件夹 | 处理 | 0 | 完全处理文件夹中的所有多维数据集。
    刷新数据 | 1 | 如果可能，对文件夹中的每个多维数据集执行一次刷新数据操作；否则需要完全处理该多维数据集。
    带有单个分区的多维数据集* | 处理 | 0 | 完全处理多维数据集，包括结构的更改。这是最彻底的多维数据集处理类型。
    刷新数据 | 1 | 重新装载多维数据集数据并重新计算聚合。此选项处理对现有源数据的更改，但不处理源数据增加的部分。此选项不处理多维数据集的结构性更改，如新维度、新级别或新度量值。
    增量更新 | 2 | 将新数据添加到多维数据集并更新聚合。此选项处理源数据增加的部分。此选项不处理多维数据集结构的更改或现有源数据的更改。
    带有多个分区的多维数据集* | 处理 | 0 | 完全处理多维数据集，包括结构的更改。此选项比"刷新数据"选项更为彻底。
    刷新数据 | 1 | 重新装载多维数据集数据并重新计算聚合。此选项处理对现有源数据的更改，但不处理源数据增加的部分。此选项不处理多维数据集的结构性更改，如新维度、新级别或新度量值。
    分区，包括远程分区* | 处理 | 0 | 重新装载分区数据并重新计算聚合。此选项处理对现有源数据的更改，但不处理源数据增加的部分。此选项不处理父多维数据集的结构性更改，如新维度、新级别或新度量值。
    增量更新 | 2 | 将新数据添加到分区中并更新聚合。此选项处理源数据增加的部分。此选项不处理对父多维数据集结构的更改或对分区的现有源数据的更改。
    链接多维数据集 | 处理 | 0 | 完全处理链接的多维数据集。
    虚拟多维数据集 | 处理 | 0 | 完全处理虚拟多维数据集。
    "维度"文件夹 | 处理 | 0 | 完全处理文件夹中的所有维度。
    增量更新 | 2 | 如果可能，对文件夹中的每一个维度执行一次增量更新操作；否则需要完全处理该维度。
    共享维度 | 重建维度结构 | 0 | 完全处理维度，包括结构的更改。此选项比"增量更新"选项更为彻底。
    增量更新 | 2 | 处理维度表中增加的成员（即行）。此方法不处理维度结构的更改或成员之间关系的更改。
    虚拟维度 | 重建维度结构 | 0 | 完全处理虚拟维度。
    "挖掘模型"文件夹 | 处理 | 0 | 完全处理文件夹中的挖掘模型。
    刷新数据 | 1 | 如果可能，对文件夹中的每一个挖掘模型执行一次刷新数据操作；否则需要完全处理该挖掘模型。
    挖掘模型** | 处理 | 0 | 完全处理挖掘模型。
    刷新数据 | 1 | 向挖掘模型的源数据添加新数据并更新节点。此选项不处理挖掘模型结构的更改或现有源数据结构的更改。

    *当选择该对象时，另一个属性 IncrementallyUpdateDimensions 可用。其数据类型为 Boolean。
    **当选择挖掘模型对象时，TrainingQuery 属性是另一个可用的字符串属性。

  • Datasource。这是用于多维数据集或分区增量更新的数据源。有效的值为某些字符串，这些字符串所包含的数据源名称与在 Analysis Manager 树窗格中的显示相同。

  • FactTable。这是用于多维数据集或分区增量更新的事实数据表。有效值为包含事实数据表名称的字符串。

  • Filter。这是限制为多维数据集或分区增量更新所选择的事实数据表记录的表达式。有效值为包含有效筛选的字符串。有关筛选的更多信息，请参见分区筛选和增量更新筛选。

除了要指定属性和属性值以外，ActiveX 脚本任务还必须为要更改的 Analysis Services 处理任务命名。任务名称显示在"分析服务处理任务"对话框中。

以下的示例显示了如何用任务名称 DTSTask_DTSOlapProcess.Task_1 指明哪个 Analysis Services 处理任务发生了更改。

示例

以下的代码是用 Microsoft Visual Basic® Scripting Edition 编写的，在修改 Analysis Services 处理任务属性的 ActiveX 脚本任务中使用。Analysis Services 处理任务将增量更新包含于 Microsoft SQL Server™ 2000 Analysis Services 中的示例 Sales 多维数据集。增量更新在 1998 年中除十二月之外的每月都执行一次。

代码选择了一个不同于 Sales 多维数据集的原始事实数据表 (sales_fact_1997) 的事实数据表。它还在每月都创建一个不同的筛选。

说明 代码在示例 FoodMart 2000 数据库中指定了 sales_fact_1998 事实数据表。该表仅包括 1998 年的数据（不包含十二月）。在执行包含此代码的包之前，请将计算机时钟的日期设置为 1998 年 1 月 1 日和 1998 年 11 月 30 日之间的一个日期。执行包之后，请立即将时钟重置到当前时间。

Function Main()
   Dim pkg
   Dim task
   Dim props
   Dim currentyear
   Dim currentmonth
   Set pkg = DTSGlobalVariables.parent
   Set task = pkg.Tasks("DTSTask_DTSOlapProcess.Task_1")
   Set props = task.Properties
   props("ProcessOption").Value = 2
   props("Datasource").Value = "FoodMart"
   props("FactTable").Value = "sales_fact_1998"
   ' Create filter based on current year and month.
   currentyear = YEAR(NOW)
   currentmonth = MONTH(NOW)
   props("Filter").Value = "([sales_fact_1998].[time_id] " _
       & "IN (SELECT [time_id] FROM [time_by_day] " _
       & "WHERE [time_by_day].[the_year] = " _
       & currentyear  _
       & " AND [time_by_day].[month_of_year] = " _
       & currentmonth & "))"
   Main = DTSTaskExecResult_Success
End Function

完成增量更新之后，必须将所选行从 sales_fact_1998 合并到 sales_fact_1997 中。有关更多信息，请参见合并分区时的事实数据表考虑事项。

请参见

ActiveX 脚本任务

创建 Analysis Services 处理任务

处理多维数据集


用数据转换服务创建预测

使用数据转换服务 (DTS) 包中的"数据挖掘预测查询任务"对话框来运行基于 Microsoft® SQL Server™ 2000 Analysis Services 中所定义的数据挖掘模型的预测查询。这样的查询可用于创建输出表，这些输出表存储从挖掘模型分析而产生的预测列。

定义任务的 DTS 包之后，可以调度包在将来某一天或某一时刻执行。该包可以执行一次，或者定期重复执行。

说明 若要使用数据挖掘预测查询任务，请务必于要在其上执行包含该任务的包的服务器计算机上，安装包括 SQL Server 企业管理器以及 Analysis Manager 在内的 SQL Server 7.0 或 SQL Server 2000。

创建关系数据挖掘预测查询任务

Analysis Manager


管理员参考

"管理员参考"包含有关 Microsoft SQL Server 2000 Analysis Services 的技术信息，如规范和限制。Analysis Manager 帮助主题可通过按 F1 键或"帮助"按钮访问。


规范和限制

本主题包含有关受支持的关系数据库管理系统、对象规范和 OLE DB 中的源列数据类型方面的信息。

受支持的关系数据库产品

Microsoft SQL Server 2000 Analysis Services 支持下列关系数据库产品作为数据源：

  • SQL Server 6.5 和更高版本

  • Microsoft Access 97 和更高版本

  • Oracle 7.3 和 8.0 版

    当使用用于 Oracle 的 OLE DB 提供程序时，Oracle 表中的文本列应为可变长度列类型。如果 Oracle 表包含固定长度列类型的文本列，请使用用于 ODBC 的 OLE DB 提供程序。

规范

下列规范适用于 Analysis Services。

项目 | 规范
数据库的维度 | 最多 65,535，与多维数据集的数目或维度是共享还是专用无关
数据库的级别 | 最多 65,535
虚拟多维数据集内的多维数据集 | 最多 64
多维数据集的度量值 | 最多 1,024
虚拟多维数据集的度量值 | 最多 2,048
多维数据集的维度 | 最多 128
多维数据集的级别 | 最多 256
维度的级别 | 最多 64
维度中的成员 | 最多 2^31-1 = 2,147,483,647
父代中的成员 | 最多 64,000
多维数据集的计算成员（由服务器定义） | 最多 65,535
会话上下文中父度量值的计算成员 | 最多 31,743
查询上下文中父度量值的计算成员 | 最多 31,743
会话上下文中父维度成员的计算成员 | 最多 759
查询上下文中父维度成员的计算成员 | 最多 759
每个分区的聚合数 | 最多 65,535
查询返回的单元 | 最多 2^31-1 = 2,147,483,647 尽管多维数据集可以比这个限制大，但若从多维数据集请求多于 2^31-1 个单元，查询则会失败。
源数据库表的记录大小 | 最大 64 千字节 (KB)
对象名（除维度名称外）的长度 | 使用 Analysis Manager 时最长 50 个字符 使用 PivotTable服务时最长 24 个字符
维度名称的长度 | 最长 24 个字符
聚合前缀的长度 | 最长 50 个字符
在数据挖掘模型属性列中明确规定的最大值 | 255，后面的列变成 MODEL_EXISTENCE_ONLY 有关更多信息，请参见数据挖掘列

本文档内术语"字符"指的是 UNICODE 字符。

源列数据类型

度量值的源列数据类型必须是 numeric，除非使用 Count 或 Distinct Count 聚合函数。

维度级别的源列数据类型必须是 string 或 numeric（货币除外）。

OLE DB 数据类型

以下这些 OLE DB 数据类型的列可用作度量值或维度级别。使用星号标记的数据类型是数据挖掘模型列所支持的数据类型。

  • DBTYPE_BOOL*

  • DBTYPE_I1

  • DBTYPE_I2

  • DBTYPE_I4*

  • DBTYPE_UI1

  • DBTYPE_UI2

  • DBTYPE_UI4

  • DBTYPE_I8

  • DBTYPE_UI8

  • DBTYPE_R4

  • DBTYPE_R8*（注意：这种类型的数据挖掘模型列输入将被投影到 4 字节浮点数）

  • DBTYPE_DECIMAL

  • DBTYPE_NUMERIC

  • DBTYPE_VARNUMERIC

  • DBTYPE_CY

  • DBTYPE_DATE*

  • DBTYPE_DBDATE

  • DBTYPE_DBTIME

  • DBTYPE_DBTIMESTAMP

只有在使用 Count 或 Distinct Count 聚合函数时，下列 OLE DB 数据类型的列才可以用作度量值。这些数据类型可用作维度级别。

  • DBTYPE_BYTES

  • DBTYPE_HCHAPTER*

  • DBTYPE_STR

  • DBTYPE_WSTR*
外部限制

使用其它技术（例如正在使用的 RDBMS）所带来的限制会限制 Analysis Services 的某些功能。例如，当把两个包含大量聚合（大于 100）的分区合并时，可能会看到一条错误信息，提示您 ODBC Access 97 文件共享锁的数目已超过最大值。该数目由 Access 97 MaxLocksPerFile 注册表项控制，而不是由 Analysis Services 的配置参数控制。

其它外部限制也有同样情形。


SQL

Microsoft® SQL Server™ 2000 Analysis Services 支持在筛选中使用 SQL 查询或子句。筛选是结构化查询语言 (SQL) SELECT 语句的一部分，它以 WHERE 关键字开头。也就是说，它是组成 SELECT 语句的 WHERE 子句的谓词部分。下列主题描述了在 Analysis Services 中如何使用筛选。

主题 | 描述
分区筛选和增量更新筛选 | 描述一种筛选，此筛选指定要合并到多维数据集分区的数据。
维度筛选 | 描述一种筛选，此筛选指定维度表中的哪些成员可用来生成维度。
钻取筛选 | 描述了一种筛选，此筛选指定当用户钻取到源数据时，将返回哪些聚合元素。有关使用钻取的更多信息，请参见使用 DRILLTHROUGH 检索源数据。

可以使用筛选来限定以下内容：

  • 分区的数据集

  • 维度的数据集

  • 增量更新所用的行

  • 钻取返回的行

在 PivotTable® 服务中，可以用 SQL 来查询数据、生成本地多维数据集和数据挖掘模型。有关更多信息，请参见 PivotTable 服务。

Analysis Services 既是多维数据提供程序又是表格格式数据提供程序。因此，执行查询后返回多维数据集或平展行集，这取决于所用的查询语言特有用语。Analysis Services 识别两种特有用语：SQL 和多维表达式 (MDX)。有关更多信息，请参见 Analysis Services 中的 SQL。

请参见

PivotTable 服务

分区筛选和增量更新筛选

维度筛选

钻取筛选


分区筛选和增量更新筛选

可以使用筛选指定要合并到多维数据集分区中的数据。通过输入 SQL WHERE 子句的标准表达式，可以为分区数据或增量更新指定筛选。

说明 当输入筛选子句时，不需要 WHERE 关键字。

所输入的筛选表达式用于将由源数据库所执行的直接传递语句中。在处理分区或增量更新之前不对筛选作语法验证。不论筛选的复杂程度如何，分区中使用的数据仅从事实数据表中检索。分区筛选中使用的默认值从父多维数据集的 Source Table Filter 属性处继承。可在多维数据集编辑器的属性窗格中访问此属性。

最简单的筛选基于事实数据表中的一列或多列。例如，若仅选择事实数据表 Location 中地区为 West 的行，可使用如下筛选语句：

"location"."region"='West'

说明 因为有关 SQL 的 1992 ISO 和 ANSI 标准指定双引号 (") 应该用作表名和列名的分隔符，所以上例使用了此规则。Microsoft® SQL Server™ 2000 及 Microsoft Access 标准也支持方括号 ([ ])。

也可以使用更复杂的筛选。因为维度表是内联接到事实数据表中，所以筛选所包含的条件可以应用于事实数据表或分区中的维度所使用的任意维度表中。但是，若要筛选维度表，则维度表中的列名必须包含在嵌套的 SELECT 语句中，而且基础数据库必须支持嵌套的 SELECT 语句。如果基础数据库支持嵌套的 SELECT 语句，则可以在筛选中使用多维数据集定义没有引用的表，但是必须指定其与筛选中事实数据表的联接。

重要 每当需要避免语义含混时，请使用限定的表达式。例如，如果多个表中都有相同的列名，那么请在表达式中加入表名。

下列筛选示例可用于基于示例数据库 FoodMart 2000 的多维数据集的分区中，其中多维数据集包含事实数据表 sales_fact_1997 和维度表 time_by_day（也可能是其它维度表）：

  • 此筛选使用事实数据表（518 是 1997 年 6 月 1 日的 time_id，而 547 是 1997 年 6 月 30 日的 time_id）：
    "sales_fact_1997"."time_id" BETWEEN 518 AND 547
  • 如下等价筛选语句在嵌套查询中使用了该事实数据表和维度表 time_by_day：
    "sales_fact_1997"."time_id" IN
(SELECT "time_id" FROM "time_by_day"
WHERE "time_by_day"."the_year" = 1997
AND "time_by_day"."the_month" = 'June')

可以在"高级设置"对话框或增量更新向导中设置筛选。在分区向导的最后一步或"转换为分区"对话框中单击"高级"按钮，即可出现"高级设置"对话框。

对重叠的分区数据使用筛选

其分区包含重叠数据的多维数据集可能会返回错误的结果，原因是筛选语句彼此不互斥。有关更多信息，请参见管理分区。

必须确保在多个分区之间不存在重叠数据，而且任一分区内也不存在重复数据。例如，以下每个筛选集合的筛选语句在各自的集合内都彼此互斥。

示例
A. 使得年份 1997 和 1998 彼此互斥
"SaleYear" = 1997
"SaleYear" = 1998
B. 使得 Geography 维度中的 Continents（洲）彼此互斥
"Continent" = 'NorthAmerica'
"Continent" = 'Europe'
"Continent" = 'SouthAmerica'
C. 创建彼此互斥的表达式
"Country" = 'USA'
"Country" = 'Mexico'
("Country" <> 'USA' AND "Country" <> 'Mexico')
D. 创建包含所有分区数据的互斥筛选

为分区创建互斥筛选时，请确保合并后的分区数据包含了用于多维数据集的全部数据。在如下筛选表达式中，第一个表达式位于多维数据集两分区中的一个分区，第二个表达式位于另一分区，由于 USA 数据包含在两个分区中，所以产生了错误的多维数据集数据查询结果。

"Continent" = 'NorthAmerica'
"Country" = 'USA'

请参见

分区


维度筛选

可以使用维度筛选指定用源表中的哪些成员来生成此维度。本主题提供了在不同方案中实现此操作的示例。

如下示例描述了如何将 Geography（地理）维度的成员限制为 USA 中的那些成员。

示例
A. 将 Geography（地理）维度成员限制为 USA 国家级别的成员
"Customer.Country" = 'USA'
B. 使用布尔运算符以组合所选的集合

"Product.ProductFamily" = 'Drink' and "Store Type.Store Type" = 'Supermarket'

"Store.Store City" = 'Seattle' or "Store.Store City" = 'Tacoma'

请参见

SourceTableFilter（维度界面）


钻取筛选

可以使用钻取筛选限定当用户在多维表达式 (MDX) 查询中使用 Drillthrough 限定符时返回的行数。因为来自事实数据表的成员的组件元素（即构成成员聚合的元素）可能数量庞大，所以需要一个机制来限定钻取结果返回的行数。

示例
使用带有 Drillthrough 函数的筛选

以下示例将 Drillthrough 函数所返回的结果限定为居住在 Olympia 城的客户。

"Customers.City" = "Olympia"

请参见

DrillThroughFilter

钻取选项对话框

筛选选项卡（钻取选项对话框）


用户界面帮助参考

本节包含 Microsoft® SQL Server™ 2000 Analysis Services 的帮助主题。按 F1 键或者单击向导步骤和对话框中的"帮助"按钮，也可以从用户界面中得到这些主题。

章节 | 包含
Analysis Services 图标 | Analysis Services 中所用的图标
向导 | 向导的帮助主题
对话框 | 对话框的帮助主题


Analysis Services 图标

下表列出了指向特定主题的链接，这些特定主题标明在 Microsoft® SQL Server™ 2000 Analysis Services 中的 Analysis Manager、编辑器和浏览器中使用的图标。

主题 | 描述
Analysis Manager 图标 | 在 Analysis Manager 中使用的图标
多维数据集编辑器图标 | 在多维数据集编辑器中使用的图标
维度浏览器图标 | 在维度浏览器中使用的图标
维度编辑器图标 | 在维度编辑器中使用的图标
OLAP 挖掘模型编辑器图标 | 在 OLAP 挖掘模型编辑器中使用的图标
关系挖掘模型编辑器图标 | 在关系挖掘模型编辑器中使用的图标
虚拟多维数据集编辑器图标 | 在虚拟多维数据集编辑器中使用的图标


Analysis Manager 图标

下表列出了 Analysis Manager 树窗格中显示的图标。

图标 | 描述
 | 活动服务器
 | 非活动的服务器
 | 未知服务器
 | 数据库
 | 数据源
 | 常规多维数据集
 | 虚拟多维数据集
 | 链接多维数据集
 | 本地分区
 | 远程分区
 | 常规（共享）维度
 | 虚拟维度
 | 父子维度
 | 挖掘模型维度
 | 关系挖掘模型
 | OLAP 挖掘模型
 | 多维数据集角色
 | 数据库角色
 | 挖掘模型角色


多维数据集编辑器图标

下表列出了多维数据集编辑器树窗格中使用的图标。"参阅"链接提供了在多维数据集编辑器中使用的工具栏的有关信息。

图标 | 描述
 | 常规（共享）维度
 | 虚拟维度
 | 父子维度
 | 挖掘模型维度
 | 专用维度
 | "（全部）"级别
 | 等级 1
 | 等级 2
 | 等级 3
 | 等级 4
 | 等级 5
 | 等级 6
 | 等级 7
 | 等级 8
 | 等级 9
 | 等级 10
 | 等级 11
 | 等级 12
 | 等级 13
 | 等级 14
 | 等级 15
 | 等级 16
 | 成员属性
 | 度量值
 | 计算成员
 | 计算单元
 | 对策
 | 命名集

请参见

工具栏（多维数据集编辑器数据视图）

工具栏（多维数据集编辑器架构视图）


维度浏览器图标

下表列出了维度浏览器树窗格中使用的图标。除以下图标外，树窗格中显示的每个成员的图标前还包括一元运算符。

图标 | 描述
 | 成员
 | 客户成员
 | 计算成员
 | 度量值
 | 计算度量值


维度编辑器图标

下表列出了在维度编辑器中使用的图标。"参阅"链接提供了维度编辑器中所用图标的工具栏的相关信息。

图标 | 描述
 | 常规（共享）维度
 | 虚拟维度
 | 父子维度
 | 挖掘模型维度
 | 等级 1
 | 等级 2
 | 等级 3
 | 等级 4
 | 等级 5
 | 等级 6
 | 等级 7
 | 等级 8
 | 等级 9
 | 等级 10
 | 等级 11
 | 等级 12
 | 等级 13
 | 等级 14
 | 等级 15
 | 等级 16
 | 成员属性

请参见

工具栏（维度编辑器数据视图）

工具栏（维度编辑器架构视图）


OLAP 挖掘模型编辑器图标

下表列出了在 OLAP 挖掘模型编辑器的树窗格中使用的图标。"参阅"链接提供了 OLAP 挖掘模型编辑器中所用的工具栏图标的相关信息。

图标 | 描述
 | OLAP 挖掘模型
 | 挖掘模型维度
 | 事例维度
 | 可预测事例维度
 | 可预测维度
 | 事例级别
 | 可预测事例级别
 | 可预测级别
 | 事例度量值
 | 可预测事例度量值
 | 可预测度量值
 | 事例成员属性
 | 可预测的事例成员属性
 | 可预测的成员属性

请参见

工具栏（OLAP 挖掘模型编辑器）


关系挖掘模型编辑器图标

下表列出了在关系挖掘模型编辑器的树窗格中使用的图标。"参阅"链接提供了关系挖掘模型编辑器中使用的工具栏图标的有关信息。

图标 | 描述
 | 关系挖掘模型
 | 键列
 | 输入列
 | 可预测的列
 | 输入和可预测的列

请参见

工具栏（关系挖掘模型编辑器）


虚拟多维数据集编辑器图标

下表列出了虚拟多维数据集编辑器树窗格中所用的图标。"参阅"链接提供了在虚拟多维数据集编辑器中使用的工具栏图标的相关信息。

图标 | 描述
 | 常规（共享）维度
 | 虚拟维度
 | 父子维度
 | 挖掘模型维度
 | 专用维度
 | "（全部）"级别
 | 等级 1
 | 等级 2
 | 等级 3
 | 等级 4
 | 等级 5
 | 等级 6
 | 等级 7
 | 等级 8
 | 等级 9
 | 等级 10
 | 等级 11
 | 等级 12
 | 等级 13
 | 等级 14
 | 等级 15
 | 等级 16
 | 成员属性
 | 度量值
 | 计算成员
 | 计算单元
 | 对策
 | 命名集

请参见

工具栏（虚拟多维数据集编辑器）


向导

本节包含的帮助主题也可通过按 F1 键或单击向导中的"帮助"按钮从用户界面上获得。

请参见

对话框


对策向导

使用此向导创建多维数据集的对策。对策允许客户应用程序触发多种操作以响应特定的浏览活动。

执行下列任一操作时即会显示对策向导：

  • 在多维数据集编辑器中，在"插入"菜单上单击"对策"命令。

  • 在多维数据集编辑器树窗格中，右击"对策"文件夹，然后单击"新建对策"。

  • 在虚拟多维数据集编辑器中，在"插入"菜单上单击"对策"命令。

  • 在虚拟多维数据集编辑器树窗格中，右击"对策"文件夹，并指向"新建对策"命令。

  • 右击多维数据集编辑器或虚拟多维数据集编辑器中已有的对策，然后单击"编辑"命令。

对策向导包括下列几个步骤：

  • 选择对策的目标对象。

  • 选择要创建的对策类型。

  • 定义对策的语法。

  • 命名并保存对策。

请参见

对策


简介（对策向导）

使用此向导以创建对策。

选项

以后不再显示这一屏幕

选中这一选项，则下次启动此向导时将跳过这一步。如果选中这一选项，则将来可以通过单击向导第二步中的"上一步"按钮返回到这一步。

请参见

对策


选择目标（对策向导）

在向导的这一步中，需要选择启动对策的对象。根据定义为目标的对象，可能会提示在本步骤中指定其它选项。

选项

目标

选择要将其作为对策目标的对象。目标会启动对策。如果选中"当前多维数据集"、"此多维数据集中的单元"或"此多维数据集中的集合"，则可以移到向导的下一步。如果选中"此多维数据集中的某一维度"或"此多维数据集中的某一级别"，则可以更改对策的目标。

维度

选择要为对策定义的维度，或在多维数据集内指定一个维度级别，作为目标对象。

级别

在所选维度中选择某一级别。

目标定义为

  • 所选维度的成员

    选中此选项后，如果最终用户在浏览时选择任何维度成员，就可以使用该对策。

  • 维度对象

    选中此选项后，只有当浏览时选择表示该维度的标题，才能使用该对策。

  • 所选级别的成员

    选中此选项后，如果在浏览时选择某个级别的任何成员，即可启动该对策。

  • 级别对象

    选中此选项后，只有当用户在浏览时选择表示该级别的标题，才能启动该对策。

请参见

对策

命名集


选择对策类型（对策向导）

在向导的这一步骤中，可以选择当最终用户浏览多维数据集时，在客户端应用程序中选择目标对象时将要运行的对策类型。

选项

类型

可以从下列对策类型中进行选择。

选择 | 完成
命令行 | 创建可以执行 MS-DOS 命令提示符的对策。例如，您可以使用路径 C:\Winnt\Notepad.exe，在 Windows NT® 4.0 或 Windows® 2000 中启动记事本应用程序。
语句 | 创建一个对策，用于通过 OLE DB 执行来自客户端应用程序的 SQL 语句。
HTML | 创建可以在默认 Web 浏览器中执行 HTML 脚本的对策。
URL | 创建可以导航到 Web 地址并在默认 Web 浏览器中显示对应页面的对策。
数据集 | 创建返回多维数据集的对策。
行集 | 创建返回一组表格格式行的对策。
专有 | 创建能够使客户端应用程序执行自定义操作的对策。

示例

查看所选的对策类型的语法示例。

请参见

对策


定义对策语法（对策向导）

在向导的这一步中，需要指定对策的语法。该语法以多维表达式 (MDX) 的形式表示，并可以包含用引号引起来的字面表达式。例如，如需创建一个限定特定地址的 URL 对策，在语法中可使用被用引号引起来的地址表达式，后跟加号 (+) 和 MDX 函数：

"http://MyIntranetServer/Sales.asp?"+CustomerDimension.CurrentMember.Name
选项

语法

可以直接将语法键入"语法"框；也可以单击"MDX 生成器"以显示 MDX 生成器，用该生成器帮助您定义语法。

示例

查看在向导的"选择对策类型"步骤中选择的对策类型的语法示例。

请参见

对策

MDX 生成器


完成（对策向导）

在向导的最后一步中，需要提供对策的名称。在命名对策并完成向导后，可在多维数据集编辑器或虚拟多维数据集编辑器中保存并测试对策。

说明 此向导将保存该对策，但您也必须保存与该对策关联的多维数据集或虚拟多维数据集。只有将对策保存在编辑器中后，才能在数据查看窗格选择或测试它们。

如何测试对策

Analysis Manager

Analysis Manager

选项

对策名称

输入对策的唯一名称。该名称最多可包括 50 个字符，且必须以字母表中的字母开始。

完成

单击此按钮保存对策并退出向导。单击"完成"按钮将显示多维数据集编辑器或虚拟多维数据集编辑器，在编辑器中您可以将新的对策保存到多维数据集或虚拟多维数据集中，并测试对策。

请参见

数据选项卡（多维数据集编辑器数据视图）

对策


计算单元向导

使用此向导可以创建计算单元。计算单元使您得以用多维表达式 (MDX) 替换多维数据集特定区域中的单元值。

执行下列任一操作即会显示计算单元向导：

  • 在多维数据集编辑器或虚拟多维数据集编辑器树窗格中，右击"计算单元"文件夹，然后单击"新建计算单元"。

  • 在多维数据集编辑器或虚拟多维数据集编辑器中，在"插入"菜单上单击"计算单元"。

  • 右击多维数据集编辑器或虚拟多维数据集编辑器中的一个现有计算单元定义，然后单击"新建计算单元"或"编辑"。

计算单元向导中包括下列步骤：

  • 定义计算子多维数据集。

  • 定义计算条件。

  • 定义计算公式。

  • 命名并保存计算单元定义。

请参见

计算单元


介绍（计算单元向导）

使用此向导可以创建计算单元。该向导可帮助定义计算单元的计算子多维数据集、条件和公式。

选项

以后不再显示这一屏

选中此选项后，下次启动向导时将跳过这一步。如果选中这一选项，则将来可以通过单击向导第二步中的"上一步"按钮返回到这一步。


定义计算子多维数据集（计算单元向导）

在向导的这一步中，定义计算子多维数据集。子多维数据集定义了计算公式的范围。要限制子多维数据集，请从"维度"框中选择一个维度，并从"成员集"框中选择一个成员选择运算符。

选项

维度

选择每个您要为之指定成员集的维度。

成员集

选择维度后，选择要应用公式的成员集。可以在选定一个维度后，按 DELETE 键以将其重新设置为"全部"成员。可用的选项取决于所选维度的类型。

下表列出了应用于 Measures 维度的选项。

选择 | 若要
所有成员 | 选择维度中的所有成员。这会产生一个空集，该空集被视为 Measures 维度中除计算成员外的所有成员。这是 Measures 维度的默认设置。
一个度量值 | 从显示的列表中选择一个度量值。
自定义 MDX 表达式 | 通过在"MDX 表达式"下键入表达式或单击"MDX 生成器"以使用 MDX 生成器，来构建多维表达式 (MDX)。

下表包含适用于其它所有维度的选项。

选择 | 若要
所有成员 | 选择维度中的所有成员。这会产生一个空集，该空集被视为该维度中除计算成员外的所有成员。这是每个维度的默认设置。
一个成员 | 从显示的列表中选择一个成员。
一个级别 | 从显示的列表中选择维度中的一个级别。
成员的后代 | 显示维度的树状视图。展开树并选择一个成员。
级别上的成员的后代 | 为成员选择级别。展开"成员"下的树选择一个成员，然后在"级别"下选择一个级别。
自定义 MDX 表达式 | 通过在"MDX 表达式"下键入表达式或单击"MDX 生成器"以使用 MDX 生成器，来生成 MDX 表达式。

请参见

计算单元

成员、元组和集合


定义计算条件（计算单元向导）

在向导的这一可选步骤中，可以指定一个逻辑多维表达式 (MDX)，用于限制计算单元公式的应用范围。计算单元公式将只应用于符合条件的计算子多维数据集（在上一步中定义）的单元。

选项

将计算公式应用于整个计算子多维数据集

如果未添加任何计算条件，则请选择此选项。此后，计算单元公式将应用于子多维数据集中的所有单元。

将计算公式应用于计算子多维数据集中符合下列条件的单元

选择此选项可以添加布尔条件。如果选中此选项，则只有添加 MDX 表达式后，"下一步"按钮才是可用的。既可以键入表达式，也可使用 MDX 生成器构建表达式。

MDX 表达式

键入取值为一个布尔值的 MDX 表达式。计算单元公式只应用于那些表达式取值为 TRUE 的单元。实际的单元值则应用于其表达式取值为 FALSE 的所有单元。

MDX 生成器

单击此选项以便使用 MDX 生成器构建表达式。


定义计算公式（计算单元向导）

在向导的这一步骤中构建计算公式，为计算子多维数据集中的每个单元提供值。仅当输入计算公式后，"下一步"按钮才是可用的。当您单击"下一步"时，向导会执行语法检查，并且仅当没有语法错误时才继续执行下一步。如果检查语法失败，向导会显示一条警告消息。

选项

MDX 表达式

键入取值为一个布尔值的多维表达式 (MDX)。

MDX 生成器

单击此选项以便使用 MDX 生成器构建表达式。


完成（计算单元向导）

在向导的这一步中，命名并保存计算单元定义。

选项

名称

键入一个唯一的名称。最多可以输入 50 个字符作为计算单元定义的名称。计算单元定义的名称必须以字母表中的字母开头。该名称不得与现有的计算成员、计算单元定义、命名集或对策同名。

总结

核查计算子多维数据集。

完成

单击此按钮保存计算单元定义并退出向导。


多维数据集向导

使用此向导根据关系数据建立多维数据集。在生成并处理多维数据集后，可在多维数据集浏览器中浏览它的数据。如果不处理多维数据集，则会在多维数据集浏览器中看到样本数据。

在 Analysis Manager 树窗格中右击"多维数据集"文件夹或右击现有的多维数据集，指向"新建多维数据集"菜单，然后单击"向导"命令，即会显示多维数据集向导。

多维数据集向导中包含下列步骤：

  • 为多维数据集选择数据源和事实数据表。

  • 定义多维数据集的度量值。

  • 为多维数据集选择维度。

  • 命名并保存多维数据集。

  • 使用多维数据集编辑器进一步对多维数据集进行定义。


介绍（多维数据集向导）

使用向导创建多维数据集。向导帮助您为新的多维数据集选择数据源、事实数据表、度量值和维度。

选项

以后不再显示这一屏

选中此选项后，下次启动向导时将跳过这一步。如果选中这一选项，则将来可以通过单击向导第二步中的"上一步"按钮返回到这一步。

请参见

生成和处理多维数据集

多维数据集


选择事实数据表（多维数据集向导）

在向导的这一步中，选择事实数据表。事实数据表中含有多维数据集用户要进行分析的数字数据。

该向导显示一组当前可用的数据源。单击展开按钮 (+) 展开该数据源，并查看其中所包含的表。

选项

数据源和表

从该框所列数据源中的一个表内为多维数据集选择主事实数据表。

详细信息

查看"数据源和表"框内所选表中的列。

新建数据源

选择该选项可定义新的数据源。若要获取关于选择数据源的更多信息，请在"数据链接属性"对话框中单击"帮助"按钮。

浏览数据

选择该选项可以预览所选表中的内容。


定义度量值（多维数据集向导）

在向导的这一步中，选择要用作多维数据集度量值的数字列。

选项

事实数据表数字列

从该框所列数据源中的一个表内为多维数据集选择主事实数据表。

多维数据集度量值

查看"数据源和表"框内所选表中的列。

请参见

度量值


选择维度（多维数据集向导）

在向导的这一步中，为多维数据集选择维度。可以从以前定义的共享维度（即可供其它多维数据集使用的维度）中选择，也可以启动维度向导创建新维度。如果创建了新维度，可以将它定义为共享或专用（只供正在创建的多维数据集使用）。

选项

共享维度

从列表中选择以前定义的维度。

多维数据集维度

查看正向多维数据集内添加的维度。

新建维度

选择该选项可以启动维度向导，该向导将帮助您创建新维度。

请参见

维度


完成（多维数据集向导）

在向导的这一步中，命名并保存多维数据集。还可核查多维数据集的结构。

选项

多维数据集名称

键入一个唯一的名称。最多可以输入 50 个字符作为多维数据集的名称。多维数据集名称必须以字母表中的字符开头。

多维数据集结构

核查"多维数据集结构"下多维数据集的度量值和维度。

浏览样本数据

如果选择该选项，可以打开多维数据集浏览器并查看多维数据集的维度和度量值中的样本数据。在处理完多维数据集前将无法浏览实际数据。

说明 如果按指导在多维数据集编辑器中已手动创建联接，将无法使用该选项。

完成

单击此按钮保存多维数据集，退出向导并显示多维数据集编辑器。

请参见

生成和处理多维数据集

多维数据集


维度向导

使用此向导创建多维数据集的维度。

执行下列任一操作即会显示维度向导：

  • 在多维数据集向导的"选择维度"步骤中，单击"新建维度"。

  • 在多维数据集编辑器的"插入"菜单上，指向"维度"子菜单，然后单击"新建"命令。

  • 在 Analysis Manager 树窗格中右击"共享维度"文件夹，指向"新建维度"菜单，然后单击"向导"命令。如果用这种方法启动维度向导，则无法创建专用维度。

维度向导中有下列步骤：

  • 选择如何创建维度。可通过以下方法创建：
    • 从单个表中的列创建。该选项可创建常规维度。

    • 从多个表中的列创建。该选项可创建常规维度。

    • 从有层次关系的两列创建。该选项可创建父子维度。

    • 成员属性。该选项可创建虚拟维度。

    • OLAP 挖掘模型的可预测列。该选项可创建数据挖掘维度。
  • 选择维度的表。该步骤仅在创建常规维度或父子维度时显示。

  • 选择维度类型：标准或时间。该步骤仅在创建常规维度且维度表包含 datetime 列时显示。

  • 创建时间维度级别。该步骤仅在创建常规时间维度时显示。

  • 编辑联接。该步骤仅在从多个表中创建常规维度时显示。

  • 选择维度的级别。该步骤仅在创建常规的非时间维度时显示。

  • 指定成员键列。该步骤仅在创建常规的非时间维度时显示。

  • 选择父子维度的列。该步骤仅在创建父子维度时显示。

  • 选择带有成员属性的维度。该步骤仅在创建虚拟维度时显示。

  • 选择虚拟维度的级别。该步骤仅在创建虚拟维度时显示。

  • 选择维度的高级选项。如果正在创建数据挖掘维度，此步骤将不会出现。

  • 确认是否希望创建可更改维度。只有将此选项作为高级选项选中时才会显示这个步骤。

  • 启用并定义自定义汇总表达式。只有将此选项作为高级选项选中时才会显示这个步骤。

  • 指定成员如何排序及如何唯一地命名。只有将此选项作为高级选项选中时才会显示这个步骤。

  • 指定存储模式并自动创建成员组。只有将此选项作为高级选项选中时才会显示这个步骤。

  • 启用回写能力。只有在创建父子维度并作为高级选项选中此选项时才会显示这个步骤。

  • 选择 OLAP 挖掘模型和可预测的列。只有从 OLAP 挖掘模型创建维度时才会显示这个步骤。

  • 完成。为维度命名并预览维度数据。

请参见

维度


简介（维度向导）

维度向导将指导您完成创建多维数据集维度的全过程。

选项

以后不再显示这一屏

选择此选项则可以在下次启动该向导时跳过这一步。如果选中这一选项，则将来可以通过单击向导第二步中的"上一步"按钮返回到这一步。


选择如何创建维度（维度向导）

可在此向导步骤中指定维度数据的源类型。

选项

星型架构：单个维度表

选中该选项，即可根据单个维度表创建常规维度。维度的深度取决于在随后的步骤中选择的级别数。各级别由列派生而来。也可以将单个 datetime 列解析成多个级别以创建时间维度。

向多维数据集添加维度后，维度表即与事实数据表联接。如果各多维数据集的维度均以单个表为基础，则该多维数据集为星型架构。

雪花架构：多个相关性维度表

选中该选项，即可根据多个已联接的维度表创建常规维度。维度的深度取决于在随后的步骤中选择的级别数。各级别由列派生而来。

向多维数据集添加维度后，仅其中一个维度表与事实数据表联接。因此，该多维数据集为雪花架构。

父子维度：单个维度表中的两个相关列

选中该选项，即可根据具有相同数据类型的两列创建父子维度。一列确定各维度成员，另一列确定各成员的父代。例如，Employee 表中的 Employee Number 列包含每位雇员的标识符，而 Manager Employee Number 列则包含各雇员所属经理的雇员号。以这两列为基础的父子维度可镜像出一个组织结构图。

向多维数据集添加维度后，维度表即与事实数据表联接。

虚拟维度：另一个维度的成员属性

选中此选项，即可根据另一个维度中的一个或多个成员属性创建虚拟维度。

挖掘模型：OLAP 挖掘模型的可预测列

选中此选项，即可从 OLAP 挖掘模型的可预测列创建数据挖掘维度。

请参见

父子维度

虚拟维度


选择维度表（维度向导）

可以在此向导步骤中选择要从中创建维度的表。如果选择多个表，则所有表都必须来自同一数据源。

如果在该向导的第二步中选中"虚拟维度：另一个维度的成员属性"或"挖掘模型：OLAP 挖掘模型的可预测列"选项，将不显示此向导步骤。

在"可用表"中，该向导将显示数据源中可用于创建维度的表的列表。单击展开按钮 (+) 展开该数据源，并查看其中所包含的表。

选项

可用表

选择要添加的表。如果看不到维度要使用的表，请选择另一数据源。

说明 所选的全部表都必须来自同一数据源。如果从与其它所选表不同的数据源中添加表，则"选定的表"下显示的表的列表将被清除。

详细信息

查看在"可用表"中选定的表的所有列。

新建数据源

单击以选择未在"可用表"中列出的数据源。

浏览数据

单击以查看在"可用表"中选定的表的数据。


选择维度类型（维度向导）

仅当在"选择维度表"步骤中选择了同时包含日期格式列和其它格式列的表时，此向导步骤才出现。可在此步骤中指定要创建的维度类型。

选项

标准维度

创建标准分类维度而不创建时间维度。

时间维度

根据日期格式列创建时间维度。

  • 日期列

    如果单击"时间维度"选项，则必须选择"日期列"列表中的日期格式列。


创建时间维度级别（维度向导）

此步骤仅在创建时间维度时出现。可在此步骤中选择时间维度的级别。还可以指定年的起始日期。

选项

选择时间级别

单击时间维度中所需的日期级别。这些级别是从前面的向导步骤中所选的日期格式列中创建的。

维度结构

预览正在创建的维度的级别结构。

年起始于

设置年份的起始日期。

  • 天

    选择维度年份起始的月和日。

  • 月

    选择维度年份中的第一个月。


创建和编辑联接（维度向导）

仅当在向导的第二步中选中"雪花架构：多个相关性维度表"选项才会显示此步骤，表示希望维度使用多个表。

可在此向导步骤中创建、编辑和删除维度表之间的联接。向导将显示已为维度选定的表。如果两个或多个表共享一列，则向导将在匹配列之间显示一条连线，表示已自动创建一个联接。

说明 维度向导是为使用简单架构而设计的。如果设计的是复杂的雪花架构，则建议使用维度编辑器。

如果需要编辑联接但又没有鼠标或指针设备，请取消维度向导而改用维度编辑器来创建维度，因为维度编辑器的"插入"菜单上提供了"联接"命令，"编辑"菜单上提供了"删除联接"命令。


选择级别（维度向导）

可在此向导步骤中将某些列定义为维度中的级别。"可用列"中会出现可以使用的列。

仅当在向导的第二步中选中"星型架构：单个维度表"选项、"雪花架构：多个相关性维度表"选项或"挖掘模型：OLAP 挖掘模型的可预测列"选项才会显示此步骤。

说明 级别必须以层次顺序出现，且必须以最笼统的级别开始。例如，地理维度的级别顺序应为世界"（全部）"、大陆、国家/地区、城市。

选项

可用的列

单击要在维度中使用的列。使用箭头键将所选列移动到维度级别窗格。

维度级别

查看将要根据"可用列"中选定的列生成的级别。使用箭头键删除不需要的级别或更改级别的顺序。

自动对级别成员计数

对"可用维度"中所选级别的成员进行计数。进行多维数据集处理时需要此计数。处理拥有大量成员的级别可能需要花些时间。若要加快维度的创建过程，请取消选择"对级别成员自动计数"复选框。

说明 如果关闭了级别成员的自动计数，则必须使用维度编辑器的属性窗格手工输入一个估计的级别数，或者在多维数据集的处理过程中对个别提示进行相应操作。

请参见

维度结构

级别和成员


指定成员键列（维度向导）

在此向导步骤中，可以根据需要为级别成员更改成员键列。如果默认的成员键列没有唯一标识级别成员，则此步骤是必须的。

仅当在向导的第二步中选中"星型架构：单个维度表"选项或"雪花架构：多个相关性维度表"选项才会显示这个步骤。

选项

名称

查看已定义级别的名称。

成员键列

（可选）为级别选择新的键列名以替代向导提供的默认值。

请参见

成员名称和成员键


选择父子维度的列（维度向导）

可在此向导步骤中选择将作为父子维度基础的两个列。也可以选择一列以提供成员名称。

仅当在向导的第二步中选中"父子维度：单个维度表中的两个相关列"选项才会显示此向导步骤。

选项

成员键

选择能唯一标识各成员的列。该列必须与在"父键"框中选择的列的数据类型相同。

父键

选择能唯一标识各成员的父代的列。该列可定义成员中的沿袭关系，可定义每个成员的父成员。该列必须与在"成员键"框中选择的列的数据类型相同。

成员名称

选择将提供最终用户浏览多维数据集时所看到的成员名称的列。

请参见

父子维度


选择带有成员属性的维度（维度向导）

可在此向导步骤中选择将作为虚拟维度基础的维度。该维度必须包含将作为虚拟维度的级别基础的所有成员属性。

仅当在向导的第二步中选中"虚拟维度：另一个维度的成员属性"选项才会显示此向导步骤。

选项

可用维度

单击将作为虚拟维度基础的包含成员属性的维度。

成员属性

查看在"可用维度"选项中选定的维度的成员属性。

显示成员键和名称

单击该选项以显示数据库中的所有维度，包括专用维度。这允许您像使用成员属性一样使用键和名称。

请参见

创建虚拟维度

成员属性

虚拟维度


选择虚拟维度的级别（维度向导）

可在此向导步骤中选择将作为虚拟维度的级别基础的成员属性。

仅当在向导的第二步中选中"虚拟维度：另一个维度的成员属性"选项才会显示此向导步骤。

选项

可用的成员属性

选择虚拟维度的级别以之为基础的成员属性。

所选的虚拟级别

查看以"可用成员属性"选项中的所选成员属性为基础的虚拟级别列表。


选择高级选项（维度向导）

在此向导的步骤中，可以选择高级维度选项。

仅当在向导的第二步中选中"挖掘模型：OLAP 挖掘模型的可预测列"选项才会显示此步骤。

选项

选项

根据创建的维度类型，可以使用下列选项：

高级选项 | 描述 | 选项的使用范围
可更改维度 | 使您得以添加、重新排序维度成员，而不必重新处理多维数据集。 | 常规的维度（通过一个或多个表创建）*
自定义汇总 | 使您得以创建聚合维度成员。 | 父子维度
有数据的成员 | 允许数据与成员关联。 | 父子维度
成员的排序依据和唯一性 | 启用成员排序。 | 常规的维度（通过一个或多个表创建）、父子维度或虚拟维度
存储模式和成员分组 | 确定维度成员的存储位置，并启用成员分组。 | 常规的维度（通过一个或多个表创建）
回写 | 允许用户添加、删除或修改维度中的成员。 | 父子维度

* 对于父子维度和虚拟纬度，该选项将作为属性而自动启用。

全选

单击该选项以选中所有可用的高级选项。

取消全选

单击该选项以取消选中的所有可用高级选项。


设置可更改属性（维度向导）

在此向导步骤中，您将确认是否创建可更改的维度。

仅当在向导的"选择高级选项"步骤中选中"可更改维度"选项时，才会显示此步骤。

选项

否，新建的维度不可更改

选中该选项以防止所创建的新维度是可更改维度。这是默认选项。

是，新建的维度可更改

选中该选项以确认要创建的新维度是可更改维度。

请参见

可更改维度


设置自定义汇总（维度向导）

在此向导步骤中，可以启用并定义自定义汇总表达式。

仅当在向导的"选择高级选项"步骤中选中"自定义汇总"选项时，才会显示此步骤。

选项

启用自定义汇总

选中该选项可以启用新维度的自定义汇总表达式。

  • 用运算符定义的自定义汇总

    选中该选项可以使用算术运算符定义自定义汇总。

  • 运算符列

    键入将存储算术运算符的现有维度表列的名称，或单击编辑（"..."）按钮以显示"定义自定义成员列"对话框，在此可选择一个现有列或定义一个新列。

  • 用 MDX 定义的自定义公式

    选中该选项可以使用多维表达式 (MDX) 定义自定义汇总。

  • 表达式列

    键入将存储 MDX 表达式的现有维度表列的名称，或单击编辑（"..."）按钮以显示"定义自定义成员列"对话框，在此可选择一个现有列或定义一个新列。

请参见

定义自定义成员列对话框


设置有数据的成员的属性（维度向导）

在此向导步骤中，可以启用非叶维度成员的关联数据（即维度成员有一个或多个后代）。

仅当在向导的"选择高级选项"步骤中选中"有数据的成员"选项时，才会显示此步骤。

选项

非叶成员有相关的数据

选中该选项以允许维度成员在事实数据表中有相关的数据。

  • 数据成员可见

    选中该选项以作为可视数据成员显示并聚合非叶成员的数据。

  • 数据成员隐藏

    选中该选项以使非叶成员的数据覆盖维度常规成员的聚合值。


指定排序依据和唯一性（维度向导）

在此向导步骤中，可以启用非叶维度成员的关联数据（即维度成员有一个或多个后代）。

仅当在向导的"选择高级选项"步骤中选中"排序依据和唯一性"选项时，才会显示此步骤。此外，对于父子维度，该步骤的可用选项会有所不同。

选项（常规维度和虚拟纬度）

名称

查看级别的名称。

排序依据

选择 <名称> 可按照成员名称排序；选择 <键> 可按照成员键列排序，也可选择 <列> 按照列名称排序。如果选择 <列>，则会显示"选择列"对话框。

键唯一

选择确定唯一成员值范围的对象。

名称唯一

选择确定唯一成员名称范围的对象。

选项（父子维度）

成员排序依据

选择 <名称> 可按照成员名称排序；选择 <键> 可按照成员键列排序，也可选择 <列> 按照列名称排序。如果选择 <列>，则会显示"选择列"对话框。

名称在下列范围内唯一

选择确定唯一成员名称范围的对象。


指定存储模式和成员分组（维度向导）

在此向导步骤中，可以确定维度的存储模式。

仅当在向导的"选择高级选项"步骤中选中"存储模式和成员分组"选项时，才会显示该步骤。

选项

存储为多维 OLAP (MOLAP)

选中此选项以将维度数据存储到分析服务器上。这是默认选项。

  • 为最低级别创建成员组

    选中此选项以自动创建分组级别，如果维度的最低级别包含的成员超过 64,000。

存储为关系 OLAP (ROLAP)

选中此该选项以优化对非常大的维度的查询性能，这些维度通常有五百万或更多的成员。维度数据仍保留在维度表中。

  • 启用实时更新

    选中该选项可使维度支持实时更新。

请参见

创建成员组

维度存储模式

实时多维数据集


设置维度的回写能力（维度向导）

在此向导步骤中，可以为新父子维度启用回写能力。

仅当在向导的"选择高级选项"步骤中选中"回写"选项时，才会显示此步骤。

选项

启用此维度中的回写功能

选中此选项允许将对维度的更改直接写入维度表。


选择挖掘模型和可预测列（维度向导）

在此向导步骤中，将选择用来创建数据挖掘维度的 OLAP 数据挖掘模型和可预测列。

仅当在向导的第二步中选中"挖掘模型：OLAP 挖掘模型的可预测列"选项才会显示此步骤。

选项

选择 OLAP 挖掘模型

选择维度要基于的挖掘模型。

选择可预测列

选择将成为维度数据资源的列。只有来自挖掘模型的可用的可预测列才会显示出来。


完成（维度向导）

可在此向导的最后步骤中命名维度并预览维度数据。如果是从多维数据集编辑器或多维数据集向导中启动的维度向导，还可以选择是将该维度作为共享维度还是作为专用维度使用。

选项

维度名称

为新建维度键入唯一的名称。输入的维度名称最长可以为 24 个字符，该名称必须以字母字符开始。

创建维度的层次结构

选中此复选框可以创建层次结构，并且可以组织维度支持多层次结构。有关更多信息，请参见创建有多重层次结构的维度。

层次结构名称

键入新层次结构的名称。（只有选中"创建维度的层次结构"复选框，此框才是可用的。）层次结构名称将追加在维度名称的后面并以句点分隔开，以便将该层次结构与维度中的其它层次结构区分开。

预览

预览维度的层次。

与其它多维数据集共享此维度

选择此选项可以使该维度成为共享维度。（此选项仅当从多维数据集编辑器或多维数据集向导中启动维度向导时可用。当希望维度可被其它多维数据集使用时，请选择此项。）如果选择将该维度保存为共享维度，该维度将出现在 Analysis Manager 树窗格的"共享维度"文件夹中。

如果从 Analysis Manager 树窗格中"共享维度"文件夹的快捷菜单启动维度向导，则会自动使维度成为共享维度。


增量更新向导

使用此向导可以利用数据源中的新数据更新多维数据集中的分区。

注意 此向导将更新分区。不正确地使用分区可导致多维数据集数据不准确。有关更多信息，请参见管理分区。

当在 Analysis Manager 树窗格中右击多维数据集并单击"处理"命令，然后在"处理多维数据集"对话框中，单击"增量更新"选项，再单击"确定"时，即会出现增量更新向导。

增量更新向导中包括下列步骤：

  • 如果多维数据集包括一个以上的分区，则选择要更新的分区。

  • 指定数据源和事实数据表。

  • 创建筛选表达式。

  • 更新多维数据集中的分区。


简介（增量更新向导）

使用该向导将新数据添加到现有的多维数据集分区中。此向导可从新数据中创建临时分区并将其合并到现有分区中。

注意 此向导将更新分区。不正确地使用分区可导致多维数据集数据不准确。有关更多信息，请参见管理分区。

当新数据已添加到数据仓库中而现有数据尚未发生更改，同时又希望向多维数据集中添加新数据时，可运行此向导。此向导可添加新数据和相关的聚合，但不处理对多维数据集结构的更改。

若要启动该向导，请在 Analysis Manager 树窗格中右击多维数据集，然后单击"处理"命令。在"处理多维数据集"对话框中单击"增量更新"选项，然后单击"确定"按钮。

选项

以后不再显示这一屏

选择此选项，下次启动向导时即可跳过这一步。如果选中这一选项，则将来可以通过单击向导第二步中的"上一步"返回到这一步。


选择分区（增量更新向导）

在此向导步骤中，选择要更新的分区。此向导步骤仅在要更新的多维数据集中包含一个以上分区时出现。因为每次只能更新一个分区，所以必须选择要更新的那个分区。

选项

分区

选择要更新的分区。


指定数据源和事实数据表（增量更新向导）

在此向导步骤中，选择数据源和事实数据表，其中包含要添加到分区中的新数据。默认情况下，将显示该分区中已使用的数据源和事实数据表。如果这些数据源和事实数据表还包含要添加的新数据，请单击"下一步"按钮。

可以选择不同于分区所使用的数据源和/或事实数据表。

选项

数据源

查看包含用于增量更新的新数据的数据源。如果选择不同的数据源，则该数据源必须包含与分区的事实数据表具有相同结构和列的事实数据表，同时还必须包含与分区的维度表具有相同结构和列的维度表。本向导将显示所需的维度表。

事实数据表

查看包含用于增量更新的新数据的事实数据表。如果选择不同的表，则该表的结构和列必须与分区的事实数据表相同。在完成增量更新后，还必须手工将该表与分区的事实数据表进行合并。

更改

单击该按钮以打开"选择事实数据表"对话框，在该对话框中可以选择新的数据源和事实数据表。

所需的维度表为

查看数据源必须包含的维度表的列表。如果选择不同的数据源，该数据源必须包含与多维数据集的数据源具有相同结构和列的事实数据表和维度表。

请参见

合并分区时的事实数据表注意事项

分区简介

管理分区


创建筛选表达式（增量更新向导）

在此向导步骤中，创建一个 SQL 筛选表达式（WHERE 子句表达式）以更新分区，该分区只具有事实数据表中的数据子集。

注意 如果在前一个向导步骤中选择默认事实数据表（即已将同一个表用作分区的事实数据表），则必须使用一个筛选表达式确保仅添加该分区中没有的数据。否则，包含该分区的多维数据集中将包含重复数据，从而导致数据的不准确。

选项

创建筛选表达式

键入 WHERE 子句表达式。但不要键入 WHERE。筛选由一个或多个使用事实数据表列的表达式构成。筛选也可以包含维度表中的列，前提是这些列包括在嵌套的 SELECT 语句中，并且基础数据库支持嵌套的 SELECT 语句。筛选表达式起直接传递语句的作用，只在执行完向导操作后才检查其语法。如果语法不正确，增量更新会失败。

例如，该分区中包含从 1995 年至 1997 年间的数据，要在提供 1995 年至 1997 年数据的同一数据表中添加 1998 年的数据。包含年份的列的名称为 the_year。必须使用下列筛选表达式：

"the_year"=1998

该示例使用字母数字数据：

"the_month"='January'

每当需要避免语义含混时，请使用限定的表达式。例如，如果某一列名出现在多个表中，那么请在表达式中加入表名：

"time"."the_month"='January'

用于检索增量更新记录的 SELECT 语句是由向导自动生成的。筛选表达式通过 AND 与自动生成的 WHERE 子句部分连接起来。因此，如果指定多个筛选表达式，请将它们用一对圆括号括起来。例如：

("the_year"=1998 OR "the_year"=1999)

请参见

分区筛选和增量更新筛选


完成（增量更新向导）

在此向导的最后一步中，完成增量更新的设置选项，然后开始将新数据并入分区。根据事实数据表的大小，该操作可能需要较长的时间。

选项

完成

单击以开始分区的增量更新。


挖掘模型向导

使用本向导可以创建数据挖掘模型。挖掘模型使您得以分析数据模式，并根据这些模式做出预测。可以从关系架构或多维数据集创建挖掘模型，然后将该模型的输出存储在表格格式列、多维数据集维度或挖掘模型图表中。

执行下列任一操作即会显示挖掘模型向导：

  • 在 Analysis Manager 树窗格中，右击"挖掘模型"文件夹，然后单击"新建挖掘模型"命令。

  • 在 Analysis Manager 树窗格中，右击一个多维数据集，然后单击"新建挖掘模型"命令。

  • 在 Analysis Manager 树窗格中选择一个多维数据集，然后在 Analysis Manager 的"操作"菜单中单击"新建挖掘模型"命令。

在"简介"步骤之后，如果右击"挖掘模型"文件夹或单击"操作"菜单上的"新建挖掘模型"来启动向导，挖掘模型向导将按以下步骤开始：

  • 为挖掘模型选择数据源的类型。可通过以下方法创建：
    • 关系表。选择该选项可创建关系型挖掘模型。

    • 多维数据集。选择该选项可创建多维挖掘模型。

接下来的步骤取决于所选的数据源类型。对于关系型挖掘模型，挖掘模型向导中包括下列步骤：

  • 为挖掘模型选择表。

  • 选择挖掘模型要使用的数据挖掘方法。

  • 编辑联接。仅当从多个表中创建挖掘模型时显示此步骤。

  • 为挖掘模型选择事例键列。

  • 选择输入列和可预测的列。仅当选择 Microsoft 决策树作为数据挖掘方法时才能选择可预测列。

  • 完成。命名该挖掘模型并予以保存，可以对其进行处理以查看其结果。

对于通过该向导直接指定的 OLAP 数据源，或是通过选择多维数据集启动该向导直接指定的多维数据源，挖掘模型向导中包括下列步骤：

  • 为挖掘模型选择源多维数据集。如果通过右击多维数据集启动向导，则不显示该步骤。

  • 选择挖掘模型要使用的数据挖掘方法。

  • 选择挖掘模型将分析的事例维度和级别。

  • 选择最初的预测实体。它可以是源多维数据集的一个度量值，或事例级别的一个成员属性，也可以是另一个维度的成员。如果选择 Microsoft 决策树作为数据挖掘方法即会出现此步骤。

  • 选择培训数据。培训数据由多维数据集元素（如维度、级别、成员属性或度量值）表示。模型、事例维度和事例级别都使用这些元素通过从已知培训数据中推导而得出可预测的实体。

  • （可选）创建维度和/或虚拟多维数据集。该向导可以从模型分析的结果创建维度和虚拟多维数据集，使您可以浏览模型、加入多维数据集或与源数据进行比较。在选择 Microsoft 决策树作为数据挖掘方法时即会出现此步骤。

  • 完成。命名该挖掘模型并予以保存，可以对其进行处理以查看其结果。

请参见

建立和使用数据挖掘模型

数据挖掘模型结构

属性窗格（多维数据集编辑器数据视图）

属性窗格（虚拟多维数据集编辑器）


简介（挖掘模型向导）

使用本向导可以创建数据挖掘模型。

选项

以后不再显示这一屏

选择此选项，则可在下次启动该向导时跳过这一步。如果选中这一选项，则将来可以通过单击向导第二步中的"上一步"按钮返回到这一步。


选择源类型（挖掘模型向导）

可在此向导步骤中选择用于建立挖掘模型的源数据类型。所选择的数据源类型将决定下列步骤在向导中出现的顺序。

选项

关系数据

选择此选项，即可从 Microsoft® SQL Server™ 2000 Analysis Services 支持的数据源中的关系表创建挖掘模型。

OLAP 数据

选择从现有多维数据集创建挖掘模型。如果选中此选项，则可在向导后面的步骤中创建维度和虚拟多维数据集，以便查看数据挖掘的分析结果。

请参见

关系模型步骤（挖掘模型向导）

OLAP 模型步骤（挖掘模型向导）


关系模型步骤（挖掘模型向导）

如果指定了关系数据源，则挖掘模型向导会包含以下步骤：

  • 为挖掘模型选择表。

  • 选择挖掘模型要使用的数据挖掘方法。

  • 编辑联接。仅当从多个表中创建挖掘模型时显示此步骤。

  • 为挖掘模型选择事例键列。

  • 选择输入列和可预测的列。

  • 完成。


选择事例表（挖掘模型向导）

在此向导步骤中，选择包含要分析的事例列和特性列的表。事例列唯一表示挖掘模型所分析的实体，属性列表示模型可以预测的实体。

选项

单个表包含数据

在"可用表"窗格中单击相应的表名称或图标来选择表。

多个表包含数据

从"可用表"窗格中选择这些表。

可用表

通过单击相应的表名称或图标选择表。使用提供的按钮将表移动到"选定的表"窗格中或从"选定的表"窗格中删除表。

新建数据源

单击该选项可以显示"数据链接属性"对话框，在该对话框中可以为关系表指定新的数据源。

浏览数据

单击以查看在"可用表"中选定的表的数据。

指定数据源

Analysis Manager

Analysis Manager

请参见

指定数据源


选择数据挖掘方法（挖掘模型向导）

在此向导步骤中，选择用于建立挖掘模型的算法。

选项

选择数据挖掘方法

从下表中选择可用的算法。

选项 | 描述
Microsoft 聚集 | 如果要查看数据中的一般模式或分组，则选中此选项。
Microsoft 决策树 | 如果要从源数据进行特定的预测，可以使用这种技术。如果要在该向导以后的步骤中创建可预测列，请选中此选项。

请参见

数据挖掘算法


创建和编辑联接（挖掘模型向导）

在此可选的向导步骤中，可以对以前在向导中选定多个表选项时建立的默认表联接进行更改。

只有在向导的"选择事例表"步骤中选中了"多个表包含数据"选项时，才会显示此向导步骤。

选项

表

从一个维度表中选择一列，并将其拖到另一个维度表中的相应列上来创建一个联接。若要删除联接，请右击该联接，然后单击"删除"命令。


选择键列（挖掘模型向导）

在此向导步骤中，选择包含事例键的列（能唯一确定要在挖掘模型中进行分析的事例的维度表中的列）。

选项

事例键表

选择包含事例键列的维度表。只有在"选择事例表"步骤中指定了"多个表包含数据"时，该选项才是可用的。

事例键列

从包含事例键的维度表中选择列。

请参见

数据挖掘列


选择输入列和可预测的列（挖掘模型向导）

在此向导步骤中，从可用列中至少为挖掘模型选择了一个输入列。输入列表示用来培训挖掘模型的实际数据。如果在"选择事例表"步骤中选中了"Microsoft 决策树"，就至少可以选择一个可预测的列。可预测列用于存储可预测的输出，这些输出来自基于输入列的挖掘模型；可预测列也用作挖掘模型的输入列。

选项

可用的列

从树视图中选择列。使用所提供的按钮，可以将列移动到"可预测的列"窗格或"输入列"窗格中，也可以将其从所选的位置删除。不能将在"选择键列"步骤中选择的列用做输入列。

可预测的列

查看所选的可预测的列。只有在"选择事例表"步骤中选中了"Microsoft 决策树"时，才会显示此窗格。

输入列

查看所选的输入列。

在编辑器中完成挖掘模型

选择该选项，则可跳过选择输入和可预测的列，而在关系挖掘模型编辑器中完成挖掘模型定义。如果选中该选项，则无法在向导的最后一步中处理挖掘模型。

请参见

数据挖掘列

完成（挖掘模型向导）


OLAP 模型步骤（挖掘模型向导）

如果指定了 OLAP 数据源，则挖掘模型向导包括以下步骤：

  • 为挖掘模型选择源多维数据集。如果通过右击多维数据集启动向导，则不显示该步骤。

  • 选择挖掘模型要使用的数据挖掘方法。

  • 选择挖掘模型要分析的事例维度和级别。

  • 选择被预测实体。只有在"选择数据挖掘技术"步骤中选中了"Microsoft 决策树"时，才会出现此步骤。

  • 选择培训数据。

  • （可选）创建维度和/或虚拟多维数据集。

  • 完成。

    说明 挖掘模型中不能包括在 OLAP 挖掘模型的源多维数据集中不可见的对象。例如，如果在多维数据集编辑器或虚拟多维数据集编辑器中，一个维度的 Visible 属性设置为 False，那么该维度就不是事例维度。同样，挖掘模型中也不能包括在 Microsoft® SQL Server™ 7.0 OLAP 服务中创建的虚拟维度。

请参见

创建 OLAP 数据挖掘模型

属性窗格（多维数据集编辑器数据视图）

属性窗格（虚拟多维数据集编辑器）


选择源多维数据集（挖掘模型向导）

在该向导步骤中，从当前为模型提供源数据的数据库中选择多维数据集。

仅当右击"挖掘模型"文件夹或单击"操作"菜单上的"新建挖掘模型"命令启动向导时，才会显示此向导步骤。

选项

多维数据集

单击多维数据集以选中它。

维度

查看所选多维数据集的维度。


选择数据挖掘技术（挖掘模型向导）

在此向导步骤中，选择用于建立挖掘模型的算法。

选项

选择数据挖掘技术

从下表中选择可用的算法。

选项 | 描述
Microsoft 聚集 | 如果要查看数据中的一般模式或分组，则选中此选项。
Microsoft 决策树 | 如果要从源数据进行特定的预测，可以使用这种技术。如果要在该向导以后的步骤中用分析结果创建维度，或是创建包含新维度的虚拟多维数据集，则选择此选项。

请参见

数据挖掘算法


选择事例（挖掘模型向导）

在向导的这一步骤中，选择维度和表示该事例的级别（可选），以及要分析的多维数据集实体。例如，在客户信用应用程序中，事例就是客户。

选项

维度

选择表示要分析的事例的维度。只有包含至少一个可见级别的维度才是可用的。默认情况下，这一选项会在选择维度的同时，选定其最低级别的维度。

级别

（可选）选择进一步定义要分析的事例维度的级别。此选项使您得以选择维度的最低级别以外的其它级别。

请参见

创建 OLAP 数据挖掘模型


选择预测实体（挖掘模型向导）

在向导的这一步中，选择事实数据表。只有在"选择数据挖掘技术"步骤中选中了"Microsoft 决策树"时，才会显示此步骤。

建立并处理挖掘模型之后，可以使用 OLAP 挖掘模型编辑器添加其它要预测的实体。

选项

源多维数据集的度量值

从源多维数据集中选择现有的度量值。

事例级别的成员属性

选择在向导的"选择事例"步骤中选定的事例级别的现有成员属性。

其它维度的成员

选择与在向导的"选择事例"步骤中选定的维度不同的维度。

请参见

创建 OLAP 数据挖掘模型

OLAP 挖掘模型编辑器


选择培训数据（挖掘模型向导）

在此向导的这一步骤中，选择表示实际数据的多维数据集元素（如维度、级别或成员属性）以培训挖掘模型。这些元素是对在向导的"选择事例"步骤中选定的事例维度成员的补充。实体可包括维度、具有各自维度的单个级别或度量值。

选项

多维数据集结构

选中某个结构元素旁边的复选框将其添加到培训数据中。默认情况下，将添加事例维度的所有成员。可以通过清除相应的复选框来排除事例维度的成员。但是，除了事例维度外，还必须至少选择一个元素。

请参见

培训数据挖掘模型


创建维度和虚拟多维数据集（挖掘模型向导）

在向导的这个可选步骤中，可以创建包含挖掘模型分析结果的新维度。也可以创建一个虚拟多维数据集，该虚拟多维数据集包含所创建的维度和模型的源多维数据集。

说明 如果挖掘模型的源多维数据集包含非重复计数度量值，则此功能不可用。

选项

根据此挖掘模型创建新维度

选中该选项命名新维度。

维度名称
为新建维度键入唯一的名称。输入的维度名称最长可以为 24 个字符，该名称必须以字母字符开始。

创建新虚拟多维数据集

选中该选项将创建既包含新维度又包含源多维数据集的虚拟多维数据集。

虚拟多维数据集名称
为新的虚拟多维数据集输入一个名称，该名称对数据库来说是唯一的。可输入最多 50 个字符作为该虚拟多维数据集的名称。该名称必须以字母字符开始。


完成（挖掘模型向导）

在向导的最后一个步骤中，命名挖掘模型，并对其进行处理（可选）。

选项

模型名称

为新的挖掘模型键入一个对数据库唯一的名称。输入的名称最长可以为 50 个字符，而且该名称必须以字母字符开始。

保存，但现在不处理

选中此选项可以将挖掘模型的处理推迟到稍后时间进行。在查看模型的结构之前必须处理该模型。

保存并开始处理

选中此选项可以在单击"完成"按钮后立即处理该挖掘模型。如果该选项无法用于关系挖掘模型，则可以在关系挖掘模型编辑器中完成该挖掘模型的定义后，再对其进行处理。

完成

单击该选项结束向导。如果选中"保存并且开始处理"选项，即会出现"处理"对话框，从中可查看该操作的进度情况。


分区向导

使用此向导可以将一个逻辑多维数据集分成独立的物理分区。这使您得以提高数据存储和数据源位置的灵活性，并可改进查询性能。此向导还可帮助您将分区添加到多维数据集中。

注意 有可能会创建包含错误数据的分区多维数据集。有关更多信息，请参见管理分区。

在 Analysis Manager 树窗格中展开多维数据集，右击 Partitions 文件夹，然后单击"新建分区"，即会显示此分区向导。

分区向导中包括下列步骤：

  • 指定分区的数据源和事实数据表。

  • （可选）选择要存储在该分区上的数据切片（即多维数据集数据的子集）。

  • 指定分区类型：本地或远程。

  • 最后步骤：
    • 为分区命名。

    • 指定筛选（WHERE 子句表达式）和/或设置聚合前缀。

    • 启动存储设计向导以设计分区的聚合（可选）或复制另一分区的聚合设计。

    • 保存分区。

    • （可选）处理分区。

说明 只有安装了 Microsoft® SQL Server™ 2000 企业版，才能在一个多维数据集内创建多个分区。


简介（分区向导）

使用此向导可以将一个逻辑多维数据集分成独立的物理分区。使用分区可以增强数据存储和数据源位置的灵活性，并能够改进查询性能。此向导还可帮助您将分区添加到多维数据集中。

注意 有可能会创建包含错误数据的分区多维数据集。有关更多信息，请参见管理分区。

可以对不同服务器上的数据进行分区（使用多个数据源）。该方法可在一组服务器中对一个多维数据集提供并行查询处理。

还可以在单个服务器上将数据划分为多个分区（使用单个数据源）。这使您能够通过指定不同的数据存储模式—多维 OLAP (MOLAP)、关系 OLAP (ROLAP) 或混合 OLAP (HOLAP)— 并为每个分区设计不同的聚合，来精细调整多维数据集。

若要启动分区向导，请在 Analysis Manager 树窗格中展开多维数据集，右击 Partitions 文件夹，然后单击"新建分区"命令。

选项

以后不再显示这一屏

选择此复选框后，在您下次启动向导时将跳过向导的介绍步骤。如果选择这一选项，则将来可以通过单击向导第二步中的"上一步"按钮返回到介绍步骤。

请参见

分区简介

分区存储

远程分区


指定数据源和事实数据表（分区向导）

在此向导步骤中，选择分区的数据源和事实数据表。将默认显示多维数据集所使用的数据源和事实数据表。如果它们还包含您的分区的数据，请单击"下一步"。

可以选择与多维数据集中所使用的不同的数据源和/或事实数据表。

选项

数据源

查看新分区将使用的数据源。

事实数据表

查看新分区将使用的事实数据表。

更改

单击该选项以显示"选择事实数据表"对话框，在该对话框中可以选择新的数据源和事实数据表。如果选择不同的事实数据表，则该表的结构和列必须与多维数据集的事实数据表中的相同。

所需的维度表为

查看数据源必须包含的维度表的列表。如果选择不同的数据源，该数据源必须包含与多维数据集的数据源具有相同结构和列的事实数据表和维度表。

请参见

分区简介

管理分区


选择数据切片（分区向导）

在此可选向导步骤中，指定多维数据集中要用作分区数据的数据子集或数据切片。若要跳过此步，请单击"下一步"。

选项

维度

在 Name 列中查看多维数据集中的所有维度，并查看在 Data slice 列中的为每个维度所选择的成员。数据切片由所选的所有维度成员定义。

成员

展开成员以便显示其它成员，然后单击要定义数据切片的成员。若要删除数据切片中的维度成员，请单击该维度名称，然后按 DELETE 键。


指定分区类型（分区向导）

在此向导步骤中，指定是将分区上的数据存储在本地分析服务器上，还是存储在远程分析服务器上。

仅当创建新分区时才可更改此步骤中的选项。无法在编辑现有分区时更改这些选项。

选项

本地

选择此选项可以将分区的数据存储在本地分析服务器上（即定义该分区的分析服务器）。这是默认选项。

远程

选择此选项可以将分区的数据存储在远程分析服务器上。

如果在某个分析服务器上定义了远程分区，则分析服务器服务 (MSSQLServerOLAPService) 登录帐户必须为域用户帐户。否则，分区的处理将失败。此限制适用于定义远程分区的分析服务器，不适用于"选择此分区将要驻留的服务器"框中的分析服务器。

选择此分区将要驻留的服务器

选择将存储分区数据的远程分区服务器。只有已注册的分析服务器才会出现在框中。不支持运行 SQL Server™ 7.0 OLAP 服务的服务器计算机上的远程分区。

注册服务器

单击该选项将显示"注册分析服务器"对话框，在该对话框中可以注册分析服务器。若要注册分析服务器，用户名必须包括在该分析服务器上的 OLAP Administrators 组中。

请参见

分区简介

管理分区

分区存储

远程分区


完成（分区向导）

在向导的这一步中，可以命名分区、选择聚合设计选项和指定分区的高级设置。也可在此向导完成操作后对新的分区进行处理。

注意 有可能会创建包含错误数据的分区多维数据集。有关更多信息，请参见管理分区。

如果在前面的步骤中选择了默认的事实数据表（即与多维数据集使用的事实数据表相同），则必须使用筛选确保多维数据集的各分区中包含相互排它的数据。否则，包含该分区的多维数据集中将包含重复数据，从而导致数据的不准确。若要创建筛选，请单击"高级"按钮。

选项

分区名称

键入在数据库中唯一的名称。最多可以输入 50 个字符。

现在就设计分区的聚合

选择此选项可以在单击"完成"按钮后启动存储设计向导。

以后再设计聚合

选择此选项可以现在保存分区，以后再设计聚合。

从现有的分区中复制聚合设计。

选择此选项，则可以将聚合设计从另一个分区复制到新分区中。

  • 从下列位置复制

    选择复制聚合设计所在的分区。

    说明 如果将来有可能将新分区与另一个分区合并，那么请复制另一个分区的聚合设计。对于要合并的分区，其结构和聚合设计必须相同。

完成后处理分区

若要在单击"完成"按钮后对新分区进行处理，请选择此选项。如果选择"现在就设计分区的聚合"，则此选项不可用。

高级

单击可以显示"高级设置"对话框，在该对话框中您可以添加筛选（WHERE 子句表达式）、更改聚合前缀或指定钻取选项。

完成

单击此选项应用您已经选择的设置，并保存分区、先处理该分区再保存该分区，或是启动存储设计向导。


存储设计向导

使用该向导可以指定多维数据集或分区上聚合的数据存储和查询性能选项。

在 Analysis Manager 树窗格中展开 Cubes 文件夹，右击现有的多维数据集，然后单击"设计存储"命令时，就会显示存储设计向导。

展开现有多维数据集的"分区"文件夹，右击现有的多维数据集分区，然后单击"设计存储"命令时，也会出现该向导。

存储设计向导包含如下步骤：

  • 选择多维数据集或分区的数据存储类型：多维 OLAP (MOLAP)、关系 OLAP (ROLAP) 或混合 OLAP (HOLAP)。

  • 根据聚合存储大小和查询性能选项为多维数据集或分区设计聚合。

  • 处理聚合，或保存聚合以便以后处理。

请参见

多维数据集存储

聚合


简介（存储设计向导）

使用该向导可以指定多维数据集或分区上聚合的数据存储和查询性能选项。

选项

以后不再显示这一屏

选中此选项后，下次启动向导时将跳过这一步。如果选中这一选项，则将来可以通过单击向导第二步中的"上一步"按钮返回到这一步。

请参见

多维数据集存储

聚合


选择分区（存储设计向导）

只有在多维数据集上启动向导并且它含有多个分区时，才显示向导的这一步骤。每次只能在一个分区上运行向导，因此必须选择所需分区。

选项

分区

选择要为其设计聚合的分区，并选择存储选项。


聚合已存在（存储设计向导）

仅当有以前为多维数据集或分区设计的聚合时，才会出现此向导步骤。该步骤包含有关现有数据存储和聚合设置的信息。

选项

数据存储类型

查看此多维数据集分区中所使用的数据存储类型。

聚合存储空间

查看以前设计的聚合当前在此多维数据集分区中占用的存储空间。

聚合数

查看以前为该多维数据集分区设计的聚合的数目。

替换现有的聚合

选择此选项可以用所设计的新聚合完全替换现有聚合。若要使用新聚合，必须在设计聚合后重新处理该多维数据集。

将新聚合添加到现有的聚合中

选择此选项可以将新聚合追加到现有聚合中。在使用多维数据集分区的组合聚合前，必须重新处理该多维数据集。


选择数据存储（存储设计向导）

在向导的这一步中，需要指定想用来存储多维数据集或分区的数据和聚合的数据存储类型。

有关数据存储选择的更多信息，请参见灵活的数据模型。

选项

MOLAP

选择该选项可以将多维数据集或分区的数据存储在多维结构中。为此存储类型设计的聚合也将随多维数据存储。

多维的 OLAP (MOLAP) 存储仅依靠多维数据集聚合的设计和百分比，提供具有查询响应最快的可能性。一般来说，MOLAP 比较适合于要频繁使用和需要快速查询响应的多维数据集。

ROLAP

选择该选项可以将多维数据集或分区的数据保存在现有的关系数据存储中。为关系 OLAP (ROLAP) 设计的聚合也将存储在关系数据库中，而不是存储在多维结构中。

ROLAP 查询响应通常比使用 MOLAP 或 HOLAP 的查询响应要慢。ROLAP 的一种典型使用场合是用于不经常查询的大型数据集，如年份较早的历史数据。

  • 启用实时更新

    选择该选项启用分区，以便支持实时更新。该选项只有在 SQL Server™ 2000 企业版的 Analysis Services 中可用，且只有当数据源是 SQL Server 2000 企业版时才可用。

HOLAP

选择该选项可以将多维数据集或分区的数据保存在现有的关系数据存储中，而将聚合保存在多维结构中。

对于访问汇总数据的查询，混合 OLAP (HOLAP) 与 MOLAP 的功能相同。对于访问基本数据的查询（如深化到一个单个事实中），必须从关系数据库中检索数据，其速度不如将基本数据存储在 MOLAP 结构中快。以 HOLAP 存储的多维数据集比同等的 MOLAP 多维数据集要小，而对于使用汇总数据的查询，其响应比 ROLAP 多维数据集快。HOLAP 存储一般适用于在对基于大量基本数据的汇总进行查询时需要快速响应的多维数据集。

请参见

灵活的数据模型

分区存储

实时多维数据集


设置聚合选项（存储设计向导）

在向导的这一步中，需要设置存储和性能的选项以设计多维数据集或分区的聚合。

在设计多维数据集时，必须在聚合表的存储需要与查询速度及性能之间取得平衡。能达到此平衡关系的方法有三种，如下所示：

  • 设置存储空间大小并让 Microsoft® SQL Server™ 2000 Analysis Services 确定存储哪个聚合。该方法在存储空间有限时十分有效。

  • 设置性能提升的百分比，让需要的聚合表获得所需存储空间。

  • 观察"性能与大小"图表的增长，手工确定最佳平衡关系。

    说明 如果在存储设计向导的上一步中，选择了 ROLAP 数据存储选项，那么无须在关系数据存储中创建聚合即可使用 ROLAP 数据存储。为此，请选择"直到单击'停止'"，然后单击"下一步"，即可一直进行到向导的"完成"步骤。

选项

为聚合设计选择需要的选项。

预计占用的存储空间达到

请输入为存储聚合表而分配的硬盘存储的数量。可输入以兆字节 (MB) 或千兆字节 (GB) 为单位的最大存储大小。

性能提升达到

指定查询的性能提升百分比。该量表示最长查询时间与最短查询时间之间所改善的百分比，由下列公式表示：

性能提升 = 100 *（最长查询时间 – 目标查询时间）/（最长查询时间 - 最短查询时间）

例如，如果一个未经优化的查询要执行 22 秒（最长查询时间），而使用最多聚合的最佳查询时间为 2 秒（最短查询时间），则可指定所期望的性能提升 75%，以获得 7 秒（目标查询时间）的查询时间。

直到单击"停止"

选择此选项手工控制平衡关系。观察"性能与大小"图表以确定虽然存储继续扩展但性能水平已停止增长的时间。

开始

单击"开始"按钮以根据选定的选项开始设计聚合。

继续

单击此选项以根据选定的选项继续设计聚合。在单击"停止"或"性能与大小"图表中的曲线到达指定存储或性能提升值后，"继续"按钮将取代"开始"按钮。

停止

单击"停止"按钮可以手工停止聚合设计进程。

重置

单击"重置"按钮可以删除刚刚添加的任何聚合并重新开始聚合设计。

性能与大小

查看设计进程的进度，包括估计的性能提升和估计的存储空间需求。

请参见

分区存储

聚合


完成（存储设计向导）

可在此向导步骤中保存聚合。可以在保存聚合时处理该多维数据集，也可以稍后再对其进行处理。如果是在设计几个多维数据集，可以推迟处理操作，把它们放在一起进行处理。

选项

立即处理

选择此选项可以保存为多维数据集或分区设计的聚合并对多维数据集进行处理。仅当处理完成后，新聚合才能为发送到该多维数据集的查询所使用。

保存，但现在不处理

如果要保存为多维数据集或分区所设计的新聚合，但又希望将多维数据集的处理推迟到稍后的时间进行，则可选择此选项。只有完成处理后，新聚合才能为发送到该多维数据集的查询所使用。

完成

单击"完成"按钮保存您的设置。如果目前选择了"立即处理"，那么单击"完成"就会显示"处理"对话框，在该对话框中可以查看操作进度。

请参见

处理多维数据集


使用分析向导

使用此向导生成屏幕报表，借以对多维数据集的查询使用进行分析。

在 Analysis Manager 树窗格中右击一个多维数据集，然后单击"使用分析"命令即会显示使用分析向导。

使用分析向导中包括下列步骤：

  • 选择报表类型。

  • （可选）选择筛选报表的条件。

  • 查看结果。


简介（使用分析向导）

使用此向导设置条件以分析发送到多维数据集的查询。可从多种报表中选择进行分析。可以指定以下报表类型：

报表类型 | 显示
表 | 查询返回结果集所花时间的长度
 | 查询的运行次数
 | 用户及其发送的查询
图表 | 所有查询的响应时间。
 | 每小时处理的查询数
 | 特定日期范围内处理的查询数

选项

选择报表类型，然后单击"下一步"

选择希望向导生成的报表的类型。

描述

查看所选的报表类型的描述。


选择筛选条件（使用分析向导）

在向导的这一可选步骤中，设置查询使用的分析条件。查询日志中包含有关已发送到多维数据集中的查询的信息。要确定报表的细节，请对此日志应用筛选。可用的筛选条件包括时间间隔、用户、查询持续时间和查询频率。

此步骤为可选项。如果未选择筛选条件，则向导将返回一个包括所有查询的报表。如果想跳过此步骤，请单击"下一步"按钮。

选项

下列日期的查询

选择该选项设置希望向导分析的日期的范围。要选择本周的分析起始日期，请在"开始于下列日期的一周"字段中直接键入日期，或选择展开（"..."）按钮来选择起始日期。如果在介绍步骤中选择"每天查询图"选项，将自动选择此复选框。

下列用户发出的查询

选择该选项添加希望向导分析他们的查询的用户和组。因为可用的用户和组根据用户角色来定义，所以除非已经定义了用户角色，否则将不能通过用户筛选。有关角色的更多信息，请参见数据库、多维数据集和挖掘模型角色。

添加
单击该选项显示"选择用户"对话框，在此可以用该对话框从可用用户列表中选择用户。
删除
单击该选项从列表中删除所选的用户或组。

运行次数超过下列数字的查询

选择该选项告诉向导仅分析发送超过了一定次数的查询。

耗时超过下列时间的查询

选择该选项告诉向导仅分析超过了一定时间的查询。用给出的这两个框指定秒数或分钟数。


检查结果（使用分析向导）

在向导的这最后一步中，可以查看报表。不能保存该报表。此页中的标题反映了您在此向导第一步中对该报表所做的选择。

选项

删除记录

单击该选项从查询日志中删除为分析报表所做的查询。

完成

单击该选项关闭向导。


基于使用的优化向导

使用该向导可以根据以前发送到多维数据集的查询的历史记录来调整多维数据集分区的性能。

有关优化性能的更多信息，请参见伸缩性。

在 Analysis Manager 树窗格中右击一个现有的多维数据集，然后单击"基于使用的优化"，即会出现基于使用的优化向导。

基于使用的优化向导中包括下列步骤：

  • 选择要对其查询性能进行优化的多维数据集分区。

  • 选择要将其作为优化基础的查询。

  • 检查结果。

  • 选择是替换现有聚合还是添加新聚合。

  • 选择数据存储类型。

  • 设计新聚合。

  • 保存并处理新聚合。


简介（基于使用的优化向导）

使用该向导可以根据以前发送到多维数据集的查询来优化多维数据集分区的聚合。

在 Analysis Manager 树窗格中右击一个现有的多维数据集，然后单击"基于使用的优化"，即可启动基于使用的优化向导。

选项

以后不再显示这一屏

选择此选项后，下次启动向导时将跳过向导的介绍屏幕。如果选择这一选项，则将来可以通过单击向导第二步中的"上一步"按钮返回到介绍屏幕。


选择分区（基于使用的优化向导）

在向导的此步骤中，选择要优化其性能的分区。每次只能在一个分区上执行该操作。仅当多维数据集中有多个分区时才出现此向导步骤。

选项

分区

从提供的列表中选择分区。


选择查询（基于使用的优化向导）

在向导的此步骤中，选择要作为优化基础的查询。可指定：

  • 两个日期之间的查询

  • 特定用户发出的查询

  • 查询返回结果集所花时间的长度

  • 查询的运行次数

  • 向多维数据集中所使用的某一特定数据存储类型发送的查询

  • 这些数字中任意数字的组合
选项

下列日期的查询

选择此选项可以为查询设置日期范围，向导将基于该查询进行优化。要选择日期范围类型，可用下拉列表选择"介于"、"早于"或"晚于"。此复选框下的可用选项随日期范围类型的不同而变化。

  • 介于

    要利用介于期望的起始日期和截止日期之间的所有查询进行优化，请在下面的文本框中输入期望的起始日期，或单击展开（"..."）按钮选择期望的起始日期。然后，在最后一个文本框中输入期望的截止日期，或单击展开（"..."）按钮选择期望的截止日期。

  • 早于

    要利用期望的日期当天或之前的所有查询进行优化，请在下面的文本框中输入期望的日期，或单击展开（"..."）按钮选择期望的日期。

  • 晚于

    要利用期望日期之后的所有查询进行优化，请在下面的文本框中输入期望的日期，或单击展开（"..."）按钮选择期望的日期。

下列用户发出的查询

选择此选项以添加用户和用户的组（您希望向导将优化基于这些用户的查询上）。因为可用的用户和组根据用户角色来定义，所以除非已经定义了用户角色，否则将不能通过用户筛选。有关角色的更多信息，请参见数据库、多维数据集和挖掘模型角色。

  • 添加

    单击该选项可以显示"选择用户"对话框，可以用该对话框从可用用户列表中选择用户。

  • 删除

    单击该选项从列表中删除所选的用户或组。

运行次数超过下列数字的查询

选择此选项以便通知向导仅基于那些发送次数超过某特定次数的查询进行优化。在所提供的框中选择数字。

耗时超过下列时间的查询

选择此选项以便通知向导仅基于那些执行时间超过某特定时间的查询进行优化。用两个给出的框指定秒或分钟数。

查询目标

选择此选项以便通知向导仅基于那些对数据存储对象的某种特定类型所作的查询来优化性能。

  • MOLAP 多维数据集

    选择此选项基于对多维的 OLAP (MOLAP) 多维数据集所作的查询来优化聚合。

  • ROLAP 表

    选择此选项基于对关系的 OLAP (ROLAP) 表所作的查询来优化聚合。

  • 服务器高速缓存

    选择此选项基于对服务器高速缓存所作的查找查询来优化聚合。


检查结果（基于使用的优化向导）

在此向导步骤中，查看与您为多维数据集分区优化所指定的选项相匹配的查询。靠近屏幕底部的状态栏将显示找到的匹配查询数。通过修改现有的聚合，这些结果将用于优化将来的查询。

选项

请求数据集描述

查看有关每个匹配查询所请求的数据的信息。

执行次数

查看每个匹配查询已被发送到多维数据集的次数。

平均持续时间（分:秒）

查看每个匹配查询的平均持续时间。


聚合已存在（基于使用的优化向导）

仅当有以前为多维数据集或分区设计的聚合时，才会出现此向导步骤。有关现有数据存储和聚合设置的信息将会在屏幕上显示。

选项

数据存储类型

查看此多维数据集分区中所使用的数据存储类型。

聚合存储空间

查看以前设计的聚合当前在此多维数据集分区中占用的存储空间。

聚合数

查看以前为此多维数据集分区设计的聚合数。

替换现有的聚合

选择此选项可以用所设计的新聚合完全替换现有聚合。使用新聚合前必须重新处理该多维数据集。

将新聚合添加到现有的聚合中

选择此选项可以将新聚合追加到现有聚合中。必须重新处理多维数据集才能使用此多维数据集分区的组合聚合。


选择数据存储（基于使用的优化向导）

在此向导步骤中，指定存储多维数据集或分区的数据和聚合所使用的数据存储类型。如果在向导以前的步骤中选择了"替换现有的聚合"，则出现此步骤。

选项

MOLAP

选择该选项可以将多维数据集或分区的数据存储为多维结构。为此存储类型设计的聚合也将随多维数据存储。

多维的 OLAP (MOLAP) 存储仅依靠多维数据集聚合的设计和百分比，提供具有查询响应最快的可能性。一般来说，MOLAP 更适合于使用频繁的多维数据集和需要快速查询响应的多维数据集。

ROLAP

选择该选项可以将多维数据集或分区的数据保存在现有的关系数据存储中。为该存储类型设计的聚合也将存储在此关系数据库中，而不存储在多维结构中。

关系的 OLAP (ROLAP) 查询响应一般比使用其它两个选项所得到的响应要慢。ROLAP 的一种典型使用场合是不经常查询的大型数据集，如年份较早的历史数据。

HOLAP

选择该选项可以将多维数据集或分区的数据保存在现有的关系数据存储中，而将聚合保存在多维结构中。

对于访问汇总数据的查询，混合的 OLAP (HOLAP) 与 MOLAP 的功能相同。对于使用基本数据的查询（如深化到一个单个事实中），必须从关系数据库中检索数据，其速度不如将基本数据存储在 MOLAP 结构中快。以 HOLAP 存储的多维数据集比同等的 MOLAP 多维数据集要小，而对于使用汇总数据的查询，其响应比 ROLAP 多维数据集快。HOLAP 存储一般适用于在对基于大量基本数据的汇总进行查询时需要快速响应的多维数据集。

请参见

聚合

多维数据集存储

分区存储


设置聚合选项（基于使用的优化向导）

在此向导步骤中，设置存储选项和性能选项，以便设计多维数据集或分区的聚合。

在设计多维数据集时，必须保持聚合表的存储需要与查询速度和查询性能之间的平衡。能达到此平衡关系的方法有三种：

  • 设置存储空间大小并让 Microsoft® SQL Server™ 2000 Analysis Services 确定存储哪个聚合。该方法在存储空间有限时十分有效。

  • 设置所需的性能提升百分比，使必要的聚合表可以按其所需占用存储空间。

  • 观察"性能与大小"图表的增长，手工确定最佳平衡关系。

    说明 如果在此向导的上一步中选择了 ROLAP 数据存储选项，则无须在关系数据存储中创建聚合即可使用 ROLAP 数据存储。为此，请选择"直到单击'停止'"，然后单击"下一步"一直到步骤"完成"。

选项

预计占用的存储空间达到

输入要分配给存储聚合表使用的硬盘存储量。可输入以兆字节 (MB) 或千兆字节 (GB) 为单位的最大存储大小。

性能提升达到

指定查询的性能提升百分比。该量表示最长查询时间与最短查询时间之间所改善的百分比，由下列公式表示：

性能提升 = 100 *（最长查询时间 – 目标查询时间）/（最长查询时间 - 最短查询时间）

例如，如果一个未经优化的查询要执行 22 秒（最长查询时间），而使用最多聚合的最佳查询为 2 秒（最短查询时间），可指定所期望的性能提升 75%，以获得 7 秒（目标查询时间）的查询时间。

直到单击"停止"

选择此选项手工控制平衡关系。观察"性能与大小"图表以确定虽然存储继续扩展但性能水平已停止增长的时间。

开始

单击"开始"按钮以根据选定的选项开始设计聚合。

继续

单击"继续"按钮以根据选定的选项继续设计聚合。在单击"停止"或"性能与大小"图表中的曲线到达指定存储或性能提升值后，"继续"按钮将取代"开始"按钮。

停止

单击"停止"按钮以手工停止聚合设计进程。

重置

单击"重置"按钮可以删除刚刚添加的任何聚合并重新开始聚合设计。

性能与大小

查看设计进程的进度，包括估计的性能提升和估计的存储空间需求。


完成（基于使用的优化向导）

可在此向导步骤中保存聚合。可以在保存聚合的同时处理该多维数据集，也可以稍后再对其进行处理。如果是在设计几个多维数据集，可以推迟处理操作，把它们放在一起进行处理。

选项

立即处理

选择此选项可以保存为多维数据集或分区设计的聚合并对多维数据集进行处理。仅当处理完成后，新聚合才能为发送到该多维数据集的查询所使用。

保存，但现在不处理

如果要保存为多维数据集或分区而新设计的聚合，但又希望将多维数据集的处理推迟到稍后的时间进行，则可选择此选项。直到处理完成后，发送到多维数据集的查询才能使用新聚合。

完成

单击此选项可以保存所作的设置，而且如果选择了"立即处理"选项，则立即处理对象。如果选择"立即处理"，则单击"完成"会打开"处理"对话框，在该对话框中您可以查看操作进度。

请参见

处理多维数据集


虚拟多维数据集向导

使用该向导创建虚拟多维数据集，它是数据库中所选多维数据集的一个超集。虚拟多维数据集使您无需在驱动器的物理存储空间中存储附加数据即可创建更大的多维数据视图。

在 Analysis Manager 树窗格中展开数据库时，右击 Cubes 文件夹，然后单击"新建虚拟多维数据集"命令，即会显示虚拟多维数据集向导。

虚拟多维数据集向导中包括下列步骤：

  • 选择数据库中要包括在虚拟多维数据集中的多维数据集。

  • 选择虚拟多维数据集的度量值。

  • 选择虚拟多维数据集的维度。

  • 命名并保存您的多维数据集。

请参见

虚拟多维数据集


简介（虚拟多维数据集向导）

使用该向导创建虚拟多维数据集。可选择要包括在该虚拟多维数据集中的多维数据集，然后再选择要在该虚拟多维数据集中使用的特定的度量值和维度。

选项

以后不再显示这一屏

选择此选项后，下次启动向导时将跳过向导的介绍屏幕。如果选中这一选项，则将来可以通过单击向导第二步中的"上一步"按钮返回到介绍屏幕。


选择多维数据集（虚拟多维数据集向导）

在此向导步骤中，从数据库中选择要添加到虚拟多维数据集中的多维数据集。

选项

可用的多维数据集

用所提供的按钮将多维数据集移动到"虚拟多维数据集包括"框中。

虚拟多维数据集包括

查看您所选的包括在虚拟多维数据集中的多维数据集列表。

请参见

虚拟多维数据集


选择度量值（虚拟多维数据集向导）

在此向导步骤中，向虚拟多维数据集中添加度量值。

选项

可用的度量值

用所提供的按钮将多维数据集移动到"虚拟多维数据集包括"框中。

所选的度量值

查看您所选的包括在虚拟多维数据集中的度量值列表。

请参见

虚拟多维数据集


选择维度（虚拟多维数据集向导）

在此向导步骤中，向虚拟多维数据集中添加维度。

虚拟多维数据集中可用的维度将在"可用的维度"框中列出。维度的可用性以您为虚拟多维数据集选择的度量值为依据。只有多维数据集中那些含有所选度量值的维度才可用于虚拟多维数据集中。如果"可用的维度"框不包含要添加的维度，请确保您已从包含该维度的多维数据集中选择了度量值。

选项

可用的维度

使用所提供的按钮将多维数据集移动到"所选的维度"框中。

所选的维度

查看您所选的包括在虚拟多维数据集中的维度列表。

请参见

虚拟多维数据集


完成（虚拟多维数据集向导）

在向导的这最后一步中，命名虚拟多维数据集。

选项

虚拟多维数据集名称

为新的虚拟多维数据集输入一个名称，该名称对数据库来说是唯一的。可输入最多 50 个字符作为该虚拟多维数据集的名称。该名称必须以字母字符开始。

立即处理

选择此选项可以在单击"完成"按钮后立即处理该虚拟多维数据集。如果组件多维数据集的结构自上次处理后发生了更改，则该多维数据集与虚拟多维数据集一起进行处理；组件多维数据集的处理可能需要相当长的时间。

保存，但现在不处理

选择此选项可以将虚拟多维数据集的处理推迟到稍后时间进行。在使用该虚拟多维数据集前必须先对其进行处理。

完成

单击该选项可以保存设置，并且可以选择处理该多维数据集。如果选择"立即处理"，单击"完成"则会启动"处理"对话框，在该对话框中您可以查看操作进度。

请参见

虚拟多维数据集


对话框

本节包含的帮助主题也可通过按 F1 键或单击对话框中的"帮助"按钮从用户界面上获得。

请参见

向导


高级设置对话框

使用此对话框：

  • 创建筛选（WHERE 子句表达式），以限制用于创建分区的数据。

  • 更改聚合名称的前缀。

  • 访问"钻取选项"对话框，在该对话框中可指定分区的钻取选项。

注意 有可能会创建包含错误数据的分区多维数据集。有关更多信息，请参见管理分区。

当单击"转换为分区"对话框中的"高级"按钮或分区向导的最后一步时，即会显示该对话框。

选项

筛选语句

请键入筛选表达式（SQL SELECT 语句的 WHERE 子表达式）以限制用于创建分区的数据。但不要键入 WHERE。

重要 筛选表达式可以用来确保多维数据集内的全部分区包含互斥的数据。否则，多维数据集将会包含重复而不准确的数据。当您为此目的而使用筛选表达式时，请确保该表达式排除多维数据集的分区中已有的数据。

例如，一个多维数据集内含有三个分区，分别对应 1995、1996 和 1997 年。您目前要从向其它分区提供数据的同一个表中新建 1998 年的分区。包含年份的列的名称为 the_year。必须使用下列筛选表达式：

"the_year"=1998

该示例使用字母数字数据：

"the_month"='January'

每当需要避免语义含混时，请使用限定的表达式。例如，如果某一列名出现在多个表中，则请在表达式中加入表名：

"time"."the_month"='January'

自动生成在创建分区时用于检索记录的 SELECT 语句。筛选表达式通过 AND 与自动生成的 WHERE 子句部分连接起来。因此，如果指定多个筛选表达式，则必须将它们用一对圆括号括起来。例如：

("the_year"=1998 OR "the_year"=1999)

筛选由一个或多个使用事实数据表列的表达式构成。筛选也可以包含维度表中的列，前提是这些列包括在嵌套的 SELECT 语句中，并且基础数据库支持嵌套的 SELECT 语句。有关更多信息，请参见分区筛选和增量更新筛选。

筛选表达式起直接传递语句的作用，并且直到您处理分区时才会对其语法进行检查。如果语法有错，处理就失败。

聚合前缀

指定分区的聚合名称所使用的前缀。

钻取选项

单击可以显示"钻取选项"对话框，在该对话框中可以指定分区的钻取选项。有关更多信息，请参见钻取选项对话框。


Analysis Services 处理任务对话框

使用此对话框可以添加数据转换服务 (DTS) 任务，用来对在 Microsoft® SQL Server™ 2000 Analysis Services 中定义的一个或多个对象执行处理任务。有关使用 DTS 任务自动执行处理的更多信息，请参见用数据转换服务处理对象。

在 DTS 设计器中执行下面任意一项操作时，都将显示该对话框：

  • 将 Analysis Services 处理任务的图标从"任务"工具栏拖到设计表中。

  • 右击一项 Analysis Services 处理任务，然后单击"属性"。
选项

名称

查看任务名称。

描述

给任务指定一个描述（可选）。

选择要处理的对象

选择要处理的对象或文件夹。

说明 如果系统没有安装 Analysis Manager，将提示您输入分析服务器的名称。这是服务器名称，而不是其 IP 地址。

对象 | 对象图标 | 处理包括
数据库 |  | 数据库中所有的多维数据集、分区、虚拟多维数据集和维度。
Cubes 文件夹 |  | 文件夹中的所有多维数据集和虚拟多维数据集。
多维数据集 |  | 选中的多维数据集。
分区 |  | 选中的分区。
远程分区 |  | 选中的远程分区。
链接多维数据集 |  | 选中的链接多维数据集。
虚拟多维数据集 |  | 选中的虚拟多维数据集。
Dimensions 文件夹 |  | 文件夹中所有的维度。
共享维度 |  | 选中的共享维度。
虚拟维度 |  | 选中的虚拟维度。
关系挖掘模型 |  | 选中的关系挖掘模型。
OLAP 挖掘模型 |  | 选中的 OLAP 挖掘模型。

本地服务器

选择此选项可以：

  • 将"选择要处理的对象"框中的对象限制为那些位于本地分析服务器上的对象。

  • 指定任务处理存储包的服务器上的一个对象或多个对象。

    如果选择此选项，就可以将包迁移到 SQL Server 的另一个实例上并执行该包，以便对 SQL Server 该实例上的一个或多个对象进行处理。这个处理过程要求 SQL Server 的其它实例存储已处理对象的元数据，并要求对它们的数据源具有访问权限。通过复制和粘贴操作，可以很容易地将元数据从一台服务器复制到另一台。

选择处理选项

为选中的对象或文件夹选择一个处理选项。可用选项会根据所选择的对象类型或文件夹而变化。

有一些对象或文件夹仅有一个可用选项。有关具有多个选项的对象或文件夹的更多信息，请参见处理多维数据集、增量更新和分区和维度处理。

数据源

查看一个多维数据集或分区增量更新的数据源。单击"事实数据表"框旁边的编辑("...")按钮并使用"选择事实数据表"对话框，即可更改数据源。

仅当选择包含单个分区的多维数据集或选择一个分区，又选择"增量更新"选项之后，才会显示此选项。

事实数据表

显示一个多维数据集或分区的增量更新的事实数据表。单击"事实数据表"框旁边的编辑("...")按钮并使用"选择事实数据表"对话框，即可更改事实数据表。

仅当选择了一个单分区的多维数据集或一个分区，并选择了"增量更新"时，才显示该选项。

筛选

查看一个多维数据集或分区增量更新的筛选。筛选用来限制增量更新中所用事实数据表中的记录。单击"筛选"框旁边的编辑("...")按钮并使用"筛选表达式"对话框，可以添加或更改筛选。

仅当选择了一个单分区的多维数据集或一个分区，并选择了"增量更新"时，才显示该选项。

说明 如果选择了一个单分区多维数据集或分区、"增量更新"和默认事实数据表，就必须指定一个筛选。否则，多维数据集或分区将会包含重复因而是错误的数据。

确认

单击以将带有所选值的任务添加到包中并关闭该对话框。（要保存任务，必须在 DTS 设计器中对包进行保存。）

取消

单击以将带有默认值的任务添加到包中并关闭该对话框。


存档数据库对话框

使用此对话框：

  • 指定用于存档 Microsoft® SQL Server™ 2000 Analysis Services 数据库的选项。

  • 开始存档进程，该进程将生成存档文件。

存档文件中包括所选数据库的文件，这些文件位于与数据库名称相同的目录中。该目录在 Data 目录中，Data 目录下对服务器上的每个数据库都有一个目录。例如，如果您将 FoodMart 2000 数据库存档，则 C:\Program Files\Microsoft Analysis Services\Data\FoodMart 2000\ 目录中的文件就包含在存档文件中。

重要 Data 目录的子目录存储安全文件，用于控制最终用户对分析服务器上的对象的访问。这些文件包含在存档文件中。因此，必须对存档文件加以保护以防未经授权的访问。

存档文件也存储用于数据库及其对象的元数据。从 Analysis Services 知识库得出的正确记录包含在存档文件中。默认情况下，Analysis Services 知识库为 Msmdrep.mdb，但也可将它迁移到 SQL Server 数据库中。

有关 Analysis Services 数据库存档的更多信息，请参见存档和还原数据库。

在 Analysis Manager 树窗格中右击一个数据库，然后单击"存档数据库"命令，就会显示该对话框。

选项

保存于

指定存档文件的名称和路径。若要浏览可用路径，请单击浏览（"..."）按钮。

临时文件夹

指定用于在存档进行期间存储临时文件的目录。若要浏览可用路径，请单击浏览（"..."）按钮。

远程路径

指定含有当前所存档数据库文件的 Data 目录的路径。若要浏览可用路径，请单击扩展（"..."）按钮。

在安装 Analysis Services 期间创建 Data 目录，并且分析服务器上的每个数据库都包含此目录。Data 目录的默认路径为 C:\Program Files\Microsoft Analysis Services\Data\

路径的 C:\Program Files\Microsoft Analysis Services\ 部分可以更改。（若要确定当前值，请右击远程服务器，单击"属性"命令，然后查看"数据文件夹"框。）

在"远程路径"框中，必须将远程服务器名称放在 Data 目录的路径前面。如果 Data 目录是在其磁盘级共享的，还必须包括与该磁盘相关的共享名。下例中，"远程路径"值中包含服务器名称 Server-1 和磁盘共享名称 C$。

\\Server-1\C$\Program Files\Microsoft Analysis Services\Data\

只有目前所存档的数据库在远程服务器上时，才会显示"远程路径"框。

档案文件

开始存档进程。显示"数据库存档进度"对话框，可利用它监视或取消存档进程。


数据库存档进度对话框

使用此对话框可以监视 Microsoft® SQL Server™ 2000 Analysis Services 数据库的存档进度。也可以取消存档进程或保存存档日志。

有关存档 Analysis Services 数据库的更多信息，请参见存档和还原数据库以及存档数据库对话框。

在"存档数据库"对话框中单击"存档"按钮后即可显示此对话框。

选项

保存日志

单击以显示"保存日志文件"对话框，在该对话框中可以指定存档日志的路径和文件名，然后将其保存。如果存档进程成功完成，存档日志中就会包含存档文件中所含文件的列表。否则存档日志中会含有一条或多条消息。只有在完成或取消存档进程后"保存日志"按钮才可用。

取消

单击以取消存档进程。如果单击"取消"按钮，则会收到消息，说明存档被取消，未存档任何内容。在单击"取消"按钮到显示消息之间可能会有延迟。

在完成或取消存档进程后，"关闭"按钮将代替"取消"按钮。

关闭

单击此按钮关闭对话框。只有在完成或取消存档进程后，"关闭"按钮才可用。


计算成员生成器

使用该对话框将计算成员添加到多维数据集或虚拟多维数据集中。

在多维数据集编辑器或在虚拟多维数据集编辑器中执行以下操作之一时，会针对多维数据集或虚拟多维数据集显示此对话框：

  • 在"插入"菜单上单击"计算成员"命令。

  • 在树窗格右击"计算成员"文件夹或一个计算成员，然后单击"新建计算成员"。

  • 在树窗格中右击一个计算成员，然后单击"编辑"命令。

  • 在工具栏上，单击"插入计算成员"。
选项

父维度

选择要在其中创建计算成员的维度。

父成员

输入计算成员的父成员的表达式，或单击"更改"选择父成员。父成员确定了计算成员在维度结构中的位置。如果选择不只一个级别的父维度（除 Measures 维度外），则该选项是启用的。

  • 更改

    单击以显示"选择父成员"对话框。如果选择的父维度（除"度量值"外）不只拥有一个级别，则会启用该选项。

成员名称

输入计算成员的名称（例如，Average Sale）。

值表达式

生成或输入确定计算成员的值的表达式。若要将某个函数添加到"值表达式"框中，请将光标放在要插入函数的位置，在"函数"框中选择函数，然后双击该函数或单击"插入"按钮。函数语法即出现在"值表达式"框中。用适当的值替换参数及其分隔符（« 和 »）。

也可直接在"值表达式"框中键入表达式。如果要从 Microsoft® SQL Server™ 2000 Analysis Services 多维表达式 (MDX) 函数库之外的函数库中添加函数，则必须使用这种方法。

检查

单击以验证"值表达式"框中的语法。

数据

选择多维数据集的维度、度量值和现有的计算成员以在"值表达式"框中建立表达式。若要添加对象，可以双击所选对象以选定该对象，然后单击"插入"，或将选定的对象拖到"值表达式"框中。

函数

从列表中选择一个函数，用以在"值表达式"中构建表达式。若要添加函数，可以双击所选对象以选定该对象，然后单击"插入"，或者将选定的对象拖到"值表达式"框中。该列表包括 Analysis Services MDX 函数库和已经注册的任何其它函数库。对于 MDX，函数的短暂描述和语法示例显示在"函数"和"数据"框下。有关函数的更多信息，请参见 MDX 函数列表。

插入

单击以将"数据"框或"函数"框中所选的项目添加到值表达式中。

数字和算术运算符按钮

单击以将数字和运算符添加到值表达式中。

注册

单击该选项可以显示"注册函数库"对话框，您可以在其中注册外部函数类型库（*.olb、*.tlb、*.dll）。新库出现在"函数"框中。有关更多信息，请参见注册函数库对话框。

请参见

注册函数库

选择父成员对话框


选择维度表对话框

使用此对话框可以选择选定数据源中的维度表。

在维度编辑器中新建维度时，即会显示该对话框。

选项

表

查看所选数据源的表。

详细信息

如果在"表"框中选择某数据源，则可以查看对该数据源的描述。如果在"表"框中选定了一个表，则可以查看该表中的列。

新建数据源

单击以显示"数据链接属性"对话框，在此可以指定新数据源。

请参见

维度编辑器 — 架构视图


选择事实数据表对话框

使用此对话框可以从所选数据源中选择事实数据表。

在多维数据集编辑器中新建多维数据集，或者在"Analysis Services 处理任务"对话框中编辑事实数据表时，将显示此对话框。

选项

表

查看所选数据源的表。

详细信息

如果在"表"框中选择某数据源，则可以查看对该数据源的描述。如果在"表"框中选定了一个表，则可以查看该表中的列。

新建数据源

单击以显示"数据链接属性"对话框，在此可以指定新数据源。仅当您在多维数据集编辑器中新建多维数据集时才能使用此选项。


转换为分区对话框

使用此对话框可以将回写表转换为分区。此操作还会使该多维数据集上的读／写权限无法使用。（禁用了读／写权限的用户仍可以浏览该多维数据集。）而读权限不受影响。

注意 有可能会创建包含错误数据的分区多维数据集。有关更多信息，请参见管理分区。

若要显示此对话框，可右击一个已经启用写回的多维数据集，指向"写回选项"，然后单击"转换为分区"命令。

选项

分区名称

键入新分区的名称。

现在就设计分区的聚合

单击"确定"按钮后启动存储设计向导。

以后再设计聚合

单击"确定"按钮后将保存分区但以后再设计聚合。

从现有的分区中复制聚合设计

将聚合设计从另一个分区中复制到新分区。在"从下列位置复制"框中，选择要从中复制现有聚合的分区。

如果将来有可能将新分区与另一个分区合并，那么请复制另一个分区的聚合设计。合并的分区必须具有相同的聚合设计。

完成后处理分区

单击"确定"按钮后处理新分区。如果选择"现在就设计分区的聚合"，则此选项不可用。

高级

用于添加筛选、更改聚合前缀或指定钻取选项。将会显示"高级设置"对话框。有关更多信息，请参见高级设置对话框。

确认

保存所做的更改，将写回表转换为分区，然后关闭对话框。


多维数据集浏览器

使用这个工具可以查看多维数据集中的数据。

多维数据集浏览器在数据查看窗格中组织多维数据集数据。数据查看窗格中的默认视图以表格形式显示数据，其中列标题由一个维度构成，左边的列由另一个维度构成。针对这种用途，度量值被视为单个维度。多维数据集余下的维度显示在数据切片窗格中。

数据查看窗格中的白色单元格代表度量值，这些度量值根据数据切片窗格中显示的所有维度成员框中的成员得到。在前一个例子中，度量值反映数据切片窗格中除 Time 外的每个维度的"全部"成员。如果 Time 维度的成员框中显示 1997，就表示所显示的度量值限于 1997 年。后面本主题将用示例展示如何在数据切片窗格中对维度进行切片，以限制要显示的度量值。

执行下列操作之一时，即会显示多维数据集浏览器：

  • 在 Analysis Manager 树窗格中，右击已处理过的多维数据集，然后单击"浏览数据"命令。如果多维数据集的结构自从上次被处理后已经更改，则必须在执行此操作之前处理多维数据集。此外，您还可在多维数据集编辑器的"数据"选项卡中查看样本数据。

  • 在多维数据集向导的最后一步中，单击"浏览样本数据"命令。因为尚未处理多维数据集，所以显示的数据是样本数据而不是实际数据。
在多维数据集浏览器中工作

若要在数据查看窗格中以维度的任意组合来浏览多维数据集数据，请将度量值或维度从数据切片窗格拖到数据查看窗格中的任意一个轴上。

用另一个维度替换数据查看窗格中的维度

  • 将维度从数据切片窗格拖到数据查看窗格中要替换的维度上。

当鼠标指针如下所示时，其位置就是正确的：

-或-

数据查看窗格中的维度上移到数据切片窗格中，新的维度将替代它的位置。

将维度移到数据查看窗格中

  • 将维度从数据切片窗格拖到现有维度的下方（或旁边）的单元格中。

当鼠标指针如下所示时，其位置就是正确的：

-或-

新维度出现在现有维度的下方（或旁边），从而扩展了数据查看窗格。

更改数据查看窗格中维度的顺序

  • 拖动维度并将其放到所希望的位置。

从数据查看窗格中删除维度

  • 将要删除的维度从数据查看窗格拖到数据切片窗格。

深化到成员中

  • 在数据查看窗格中双击维度成员。如果成员下方还有成员，那么它们将显示出来。

    只有双击某个成员，它才会展开。其它成员仍将在数据查看窗格中保持其当前级别。在下例中，双击 Drink 成员可深化到其子成员中。

若要显示级别中的所有成员，请在数据查看窗格中双击父级别的名称。级别名称用按钮形状表示（例如上例中的 Product Family）。

对维度进行切片

  • 若要更改数据切片窗格中维度的成员，请单击成员框的向下箭头，展开成员，然后选择新成员。数据查看窗格中的多维数据集数据将改变，以反映维度成员的变化。

多维数据集浏览器有内部的内存极限值，如果试图浏览的数据过多或深化程度过深，则有可能达到该极限值。当达到该极限值时，将显示下列消息：

无法显示多维数据集的当前视图。
无法为 Flexgrid 分配内存。

不能通过添加或分配更多的内存来提高该极限值。如果达到该极限值，请减少要浏览的数据量或数据深度，或者使用其它浏览器。


多维数据集单元安全对话框

使用该对话框可以定义自定义规则以保证单元安全性。

在此对话框中，有两种方法可以允许和拒绝对特定单元或单元组进行访问。可以在多维表达式 (MDX) 中键入一个表达式，以允许和禁止对特定单元或单元组进行访问。针对多维数据集中每个单元（原子的和非原子的），MDX 表达式被解析为 TRUE 或 FALSE。（如果 MDX 表达式被解析为数值，则任何非零值被当作 TRUE，而零被当作 FALSE。）如果单元的表达式被解析为 TRUE，则允许访问。如果被解析为 FALSE，则拒绝访问。

也可通过单击"生成"按钮以显示 MDX 生成器，在其中通过拖放方法构造 MDX 表达式。

在"创建多维数据集角色"或"编辑多维数据集角色"对话框的"单元"选项卡中，选择"单元安全性"框中的"高级"，然后在"高级单元安全性"框中选择一种权限，接着，在"规则"列中选择"自定义"，然后单击"自定义设置"中的编辑（"..."）按钮，即会显示此对话框。

选项

权限

查看自定义规则所应用到的权限。该框是只读的。

描述

查看或输入对自定义规则的描述。

MDX

查看或输入定义自定义规则的 MDX 表达式。也可以使用编辑（"..."）按钮打开 MDX 生成器，在该生成器中创建 MDX 表达式。

通过将下列元素加入到表达式中，可以允许对某个维度成员单元进行访问：

  • 维度名称

  • MDX CurrentMember 函数

  • MDX Name 函数

  • 等号运算符 (=)

  • 成员名称（如果要指定的成员名称在维度中并不唯一，则不要使用 Name 函数，而改用 UniqueName 函数。）

    维度中其它成员的单元不可访问。

    例如，若要允许对 Geography 维度中 USA 成员的单元进行访问，而拒绝对该维度中所有其它成员的单元进行访问，请使用下列表达式：

    Geography.CurrentMember.Name = "USA"

    此外，还可通过使用不等于运算符 (<>) 拒绝对某个成员的单元进行访问。维度中其它成员的单元可以访问。例如，若要拒绝对 Geography 维度中 Brazil 成员的单元进行访问，而允许对该维度中所有其它成员的单元进行访问，请使用下列表达式：

    Geography.CurrentMember.Name <> "Brazil"

    若要将成员的后代加入到访问条件中，请在表达式中添加 Ancestor 函数和成员的级别名称。例如，若要拒绝对 Geography 维度中 Brazil 成员及其所有后代的单元进行访问，而允许对该维度中所有其它成员的单元进行访问，请使用下列表达式：

    Ancestor(Geography.CurrentMember,[Country]).Name <> "Brazil"

    若要在访问条件中加入多维数据集的多个维度，请编写每个维度的表达式，然后用 AND 或 OR 将它们组合为表达式。（表达式中未包含的维度对单元访问没有限制。）例如，下列表达式允许对 Geography 维度中 Tokyo 成员及其后代的单元进行访问，而拒绝对该维度中所有其它成员的单元进行访问。它还拒绝对 Sales 度量值的单元进行访问，包括 Tokyo 及其后代的 Sales 单元。

    Ancestor(Geography.CurrentMember,[City]).Name = "Tokyo" AND
   Measures.CurrentMember.Name <> "Sales"

    有关更多信息及示例，请参见自定义单元安全性规则。

检查

检查单元安全性语法。

确认

关闭该对话框并显示"多维数据集角色"对话框。若要保存自定义规则，请单击"多维数据集角色"对话框中的"确定"按钮。

请参见

MDX 函数列表


多维数据集编辑器 -- 数据视图

 Analysis Services

多维数据集编辑器 — 数据视图

使用此工具浏览多维数据集的数据、检查和编辑多维数据集的结构。还可以使用多维数据集编辑器和连结对话框执行不同的过程。

多维数据集编辑器可以两种视图形式（数据视图和架构视图）显示。这两个视图都具有树窗格和属性窗格。数据视图包含"数据"选项卡，而架构视图包含"架构"选项卡。通过单击多维数据集编辑器底部的"数据"选项卡或"架构"选项卡可以在两个视图之间进行切换。也可以单击"视图"菜单上的"数据"命令或"架构"命令。

本主题对数据视图进行描述。有关架构视图的信息，请参见多维数据集编辑器 — 架构视图。数据视图显示如下。

执行下列任一操作后，即会显示多维数据集编辑器–数据视图：

  • 在 Analysis Manager 树窗格中右击一个多维数据集，然后单击"编辑"命令。

  • 在 Analysis Manager 树窗格中单击一个多维数据集，然后在"操作"菜单上单击"编辑"命令。

  • 多维数据集编辑器有五个区域。有关这些区域的更详细信息，请单击下表中的链接。
    若要执行 | 请参见
    执行多维数据集编辑器菜单中的可用命令 | 菜单（多维数据集编辑器数据视图）
    执行多维数据集编辑器工具栏中以图标表示的公用对策 | 工具栏（多维数据集编辑器数据视图）
    查看树窗格中显示的多维数据集对象 | 树窗格（多维数据集编辑器数据视图）
    查看并修改多维数据集编辑器树窗格中选定对象的属性

    查看对属性及应用这些属性的对象的描述

             属性窗格（多维数据集编辑器数据视图）
    以表格的形式查看多维数据集数据。交换或移动维度

    通过维度进行切片，或深化到成员

             数据选项卡（多维数据集编辑器数据视图）

请参见

用编辑器建立多维数据集

创建和维护专用维度

创建计算成员

指定钻取选项


菜单（多维数据集编辑器数据视图）

多维数据集编辑器的菜单中提供下列选项：

菜单 | 选项 | 描述
文件 | 新建多维数据集 — 向导 | 启动多维数据集向导以新建多维数据集。
 | 新建多维数据集 — 编辑器 | 显示"选择事实数据表"对话框，以便用编辑器生成多维数据集。
 | 保存 | 保存多维数据集。如果正在保存父子维度或可更改维度，将会提示您对维度进行增量处理。
 | 另存为 | 使用另一个名称保存多维数据集。
 | 退出 | 关闭多维数据集编辑器。
编辑 | 重命名 | 重命名所选对象。
 | 删除 | 删除所选对象。
 | 删除联接 | 从所选列上删除所有联接（仅用于架构视图）。
视图 | 架构 | 显示架构视图，包括"架构"选项卡。
 | 数据 | 显示数据视图，包括"数据"选项卡。
 | 属性 | 展开或折叠属性窗格。
插入 | 表 | 显示"选择表"对话框，以向多维数据集内添加表。
 | 维度 — 新建 | 启动维度向导以新建维度。
 | 维度 — 现有 | 显示维度管理器以将现有的共享维度添加到多维数据集内。
 | 级别 | 显示"插入级别"对话框以添加新级别。
 | 度量值 | 显示"插入度量值"对话框以添加新度量值。
 | 成员属性 | 显示"插入成员属性"对话框以添加新的成员属性。
 | 计算成员 | 显示计算成员生成器以开始创建计算成员。
 | 对策 | 启动对策向导以新建对策。
 | 命名集 | 显示命名集生成器以定义新命名集。
 | 联接 | 向所选列添加联接（仅用于架构视图）。
工具 | 处理多维数据集* | 处理多维数据集。
 | 设计存储 | 启动存储设计向导，以便为多维数据集选择存储选项和设计聚合。
 | 钻取选项* | 显示"钻取选项"对话框，以便选择在执行钻取时所显示的列。
 | 对维度成员计数 | 提供一个维度中成员的估算数目。当聚合设计算法确定为该维度创建何种聚合时，它会使用这种估算。
 | 验证多维数据集结构 | 验证多维数据集结构中不含可能妨碍处理多维数据集的无效组件。
 | 优化架构 | 在处理过程中，通过删除维度和事实数据表之间不必要的联接，并且在处理过程中不必读取维度表，简化了多维数据集的架构以获取最佳的性能。 在使用该选项之前，必须要满足几个条件。有关更多信息，请参见优化多维数据集架构。 若要删除其它表格格式联接，请使用 Remove Join 命令。
帮助 | 多维数据集编辑器帮助 | 显示关于多维数据集编辑器的帮助主题。
 | 目录和索引 | 打开 SQL Server 联机丛书。

* 如果该选项不可用，则多维数据集的结构无效。可单击"工具"菜单上的"验证多维数据集结构"命令尝试找到问题所在。


工具栏（多维数据集编辑器数据视图）

使用多维数据集编辑器按钮可以执行通常的操作。

按钮 | 描述
新建多维数据集 | 启动多维数据集向导以新建多维数据集。
保存 | 保存多维数据集。如果正在保存父子维度或可更改维度，则会提示您执行维度的增量处理。
插入表 | 显示"选择表"对话框，以向多维数据集添加表。
插入维度 | 显示维度管理器以将现有维度添加到多维数据集内。在维度管理器中，可启动维度向导创建新的维度。
插入级别 | 显示"插入级别"对话框，以向专用维度添加新级别。使用维度编辑器向共享维度添加新级别。
插入成员属性 | 显示"插入成员属性"对话框，以向专用维度的选定级别中添加新的成员属性。使用维度编辑器向共享维度的级别中添加新成员属性。
插入度量值 | 显示"插入度量值"对话框以添加新度量值。
插入计算成员 | 显示计算成员生成器以开始创建计算成员。
插入计算单元 | 启动计算单元向导以定义计算单元。该向导会将新计算单元定义添加到"计算单元"文件夹中。
插入对策 | 启动对策向导以新建对策。
插入命名集 | 显示命名集生成器以定义新命名集。
处理多维数据集 | 显示"处理多维数据集"对话框以选择多维数据集处理选项。


树窗格（多维数据集编辑器数据视图）

使用树窗格显示多维数据集中的对象。右击某一对象即可看到该对象的快捷菜单。

下表列出了如何访问有关多维数据集对象的可用信息。

右击 | 快捷菜单选项 | 描述
多维数据集 | 新建多维数据集 | 显示"选择事实数据表"对话框，以便用编辑器生成多维数据集。
 | 处理多维数据集 | 处理多维数据集。
 | 新建维度 | 启动维度向导以新建维度。
 | 现有的维度 | 显示维度管理器以将现有的共享维度添加到多维数据集内。
 | 新建度量值 | 显示"插入度量值"对话框以添加新度量值。
"维度"文件夹 | 新建维度 | 启动维度向导以新建维度。
 | 现有的维度 | 显示维度管理器以将现有的共享维度添加到多维数据集内。
维度 | 新建维度 | 启动维度向导以新建维度。
 | 现有的维度 | 显示维度管理器以将现有的共享维度添加到多维数据集内。
 | 删除 | 从多维数据集内删除维度。
 | 浏览 | 在维度浏览器中显示维度成员。
级别 | 新建维度 | 启动维度向导以新建维度。
 | 现有的维度 | 显示维度管理器以将现有的共享维度添加到多维数据集内。
"度量值"文件夹 | 新建度量值 | 显示"插入度量值"对话框以添加新度量值。
度量值 | 新建度量值 | 显示"插入度量值"对话框以添加新度量值。
 | 删除 | 删除度量值。
 | 重命名 | 重命名度量值。
"计算成员"文件夹 | 新建计算成员 | 显示计算成员生成器以开始创建计算成员。
计算成员 | 新建计算成员 | 显示计算成员生成器以开始创建计算成员。
 | 编辑 | 在计算成员生成器中显示计算成员以进行编辑。
 | 删除 | 删除计算成员。
 | 重命名 | 重命名计算成员。
计算单元文件夹 | 新建计算单元 | 显示计算单元向导，以开始创建计算单元。
 | 导入计算单元 | 显示"导入计算单元"对话框，以便从源多维数据集或其它多维数据集导入计算单元。
计算单元 | 新建计算单元 | 显示计算单元向导，以开始创建计算单元。
 | 编辑 | 显示计算单元向导，以便编辑所选的计算单元定义。
 | 重命名 | 重命名所选的计算单元定义。
 | 删除 | 删除选定的计算单元对策。
"对策"文件夹* | 新建对策 | 启动对策向导以新建对策。
对策 | 新建对策 | 启动对策向导以新建对策。
 | 编辑 | 启动对策向导以进行编辑。
 | 删除 | 删除对策。
 | 重命名 | 重命名对策。
"命名集"文件夹 | 新建命名集 | 显示命名集生成器以创建新命名集。
命名集 | 新建命名集 | 显示命名集生成器以创建新命名集。
 | 编辑 | 启动命名集生成器以编辑该命名集。
 | 重命名 | 重命名命名集。

* 当展开"对策"文件夹时限制最多可以显示 32 个对策。


属性窗格（多维数据集编辑器数据视图）

使用属性窗格显示在树窗格中选定对象的属性。若要显示属性窗格，请单击树窗格下方的"属性"选项卡。

每种类型的对象都包含不同的属性集。可用属性窗格修改所选对象的属性设置。对于共享维度、其级别及成员属性，某些属性是只读的，必须在维度编辑器中进行更改。

下表描述了显示在属性窗格中的属性。

对象 | 属性 | 描述
对策 | Action Type | 指明对策的特定类型。有关不同类型对策的描述，请参见 CREATE ACTION 语句。
Application | 用于提供执行对策的应用程序的其它信息。
Caption Expression | 由客户应用程序使用的作为对策标题的多维度 (MDX) 表达式。
Description | 用于提供对策的说明。
Invocation 用于确定对策的激活方式。
  • Interactive：当最终用户在用户界面激活相关元素时，对策将交互运行。这是默认设置，而且是 Microsoft® SQL Server™ 2000 Analysis Services 中多维数据集浏览器唯一支持的类型。

  • On Open：当用户打开多维数据集时，对策自动运行。

  • Batch：客户端以批处理作业方式运行对策。这些对策提供了检查异常的方法。
Name | 对策的名称。在为对策选择目标对象时显示该属性。
Value | 定义对策的 MDX 表达式。
计算单元 | BackColor | 指明由单元坐标和条件所定义的单元的背景颜色。
Calculation Condition | 包含一个 MDX 条件表达式，该表达式定义了利用计算公式、通过测试每个单元进行计算的计算子多维数据集单元。
Calculation Subcube | 包含一个 MDX 集表达式，该表达式定义了用计算公式计算的多维数据集数据的子集。
Calculation Value | 包含一个 MDX 表达式，该表达式为计算子多维数据集中的每个单元提供值。
Description | 包含描述计算单元定义的文本字符串。
Disabled | 确定是否已禁用单元计算。默认值为 False。
FontName | 指明由单元坐标和条件所定义的单元的字体名称。
FontSize | 指明由单元坐标和条件所定义的单元的字体大小。
FontFlags | 指明由单元坐标和条件所定义的单元的字体标记。
Calculation Pass Number | 指明执行此计算的计算传递。
Calculation Pass Depth | 确定完整计算计算单元定义所需的计算传递的数量。
ForeColor | 指明由单元坐标和条件所定义的单元的前景颜色。
Format String | 指明由单元坐标和条件所定义的单元的格式字符串。
Name | 包含计算单元定义的名称。该属性是只读的。
Solve Order | 包含表示对计算单元求值的次序的数字。
Visible | 确定计算单元定义在架构行集中是否可见。默认值为 True。
计算成员 | BackColor | 显示计算成员时所用的背景颜色。若要使用这一可选的属性，客户端应用程序就必须支持此属性的使用，并且能够解释其值。只有数字值有效。多维数据集浏览器、多维数据集编辑器"数据"选项卡和虚拟多维数据集编辑器数据窗格不支持此属性。
FontFlags | 显示计算成员时所用的字体标志。若要使用这一可选的属性，客户端应用程序就必须支持此属性的使用，并且能够解释其值。只有数字值有效。多维数据集浏览器、多维数据集编辑器"数据"选项卡和虚拟多维数据集编辑器数据窗格不支持此属性。
FontName | 显示计算成员时所用的字体。若要使用这一可选的属性，客户端应用程序就必须支持此属性的使用，并且能够解释其值。多维数据集浏览器、多维数据集编辑器"数据"选项卡和虚拟多维数据集编辑器数据窗格不支持此属性。
FontSize | 显示计算成员时所用的字体大小。若要使用这一可选的属性，客户端应用程序就必须支持此属性的使用，并且能够解释其值。只有数字值有效。多维数据集浏览器、多维数据集编辑器"数据"选项卡和虚拟多维数据集编辑器数据窗格不支持此属性。
ForeColor | 显示计算成员时所用的前景颜色。若要使用这一可选的属性，客户端应用程序就必须支持此属性的使用，并且能够解释其值。只有数字值有效。多维数据集浏览器、多维数据集编辑器"数据"选项卡和虚拟多维数据集编辑器数据窗格不支持此属性。
Format String | 显示单元值时所用的格式。单击 Format String 并显示下拉列表时，即显示常用格式的列表。此属性与度量值的 Display Format 属性接受同样的值。有关更多信息，请参见显示格式。
Name | 计算成员的名称。最终用户浏览多维数据集时显示该名称。
Non Empty Behavior | 存储度量值的名称，该度量值用于解析 MDX 中的 NON EMPTY 查询。若 Non Empty Behavior 属性为空，则必须反复计算计算成员，以确定成员是否为空。如果 Non Empty Behavior 属性包含度量值的名称，则在指定的度量值为空的情况下将计算成员视为空。
Parent Dimension | 包含计算成员的维度。如果计算成员是度量值，请指定"度量值"。
Parent Member | 包含计算成员的成员。父成员确定了计算成员在维度结构中的位置。如果父维度是只包含一个级别的维度或"度量值"，那么此属性必须为空。
Solve Order | 当此计算成员与其它计算成员有交叉时的求值次序。有效值为 0（零）和正整数或负整数。Solve Order 值较小的计算成员在求值时优先。
Value | 用于确定计算成员值的 MDX 表达式。最终用户浏览多维数据集时显示该值。
Visible | 确定多维数据集是否在多维数据集列表中可见。
多维数据集 | Aggregation Prefix | 对多维数据集分区的聚合名称追加的前缀（如果分区的聚合前缀以加号 (+) 开头）。在这种情况下，该属性的值将追加在分区的聚合前缀开头处。如果分区的聚合前缀不以加号开头，则该属性被忽略。若要访问分区的聚合前缀，请在 Analysis Manager 树窗格中右击该分区，单击"编辑"命令，在分区向导中进行到步骤"完成"，然后单击"高级"按钮。
Data Source | 多维数据集的数据源。多维数据集的分区可以有不同的数据源。
Default Measure | 当轴上未显示度量值也未指定切片度量值时，查询所返回的度量值。如果未指定默认度量值，那么将以任意一个度量值充当默认度量值。
Description | 对多维数据集的描述。
Fact Table | 多维数据集的事实数据表。多维数据集的分区可以有不同的事实数据表。
Fact Table Size | 多维数据集事实数据表中的行数，该值可以是 Analysis Services 上次对其计数时得到的值，也可以是用户提供的行数估计值。
Key Error Limit | 维度键错误数目的极限值。默认值为 0。如果多维数据集的 Stop Processing on Key Errors 属性为 Yes，则当超过极限值时，多维数据集处理就中断并取消。如果您选择 Yes，并且 Key Error Limit 的值大于 0，处理也已完成，则多维数据集的数据不反映整个事实数据表。如果 Stop Processing on Key Errors 属性为 No，则 Key Error Limit 属性将被忽略。
Key Error Log File | 记录维度键错误的日志文件的路径和文件名。
Name | 多维数据集的名称。
Processing Optimization Mode | Processing Optimization Mode 属性的值是 Regular（计算完所有聚合之后就可以使用已处理的数据）或者 Lazy Aggregations（装载完数据之后立即就可以使用已处理的数据）。此属性只适用于多维数据集的 MOLAP 分区。
Source Table Filter | 应用于分区的事实数据表上限制多维数据集内数据的 WHERE 子句表达式。该属性提供多维数据集分区中筛选的默认设置。这些筛选会替代该属性。若要访问分区的筛选，请在 Analysis Manager 树窗格中右击该分区，单击"编辑"命令，在分区向导中进行到步骤"完成"，然后单击"高级"按钮。
Stop Processing on Key Errors 如果选择 Yes，则当维度键错误的数目超过极限值时处理会中断并取消。该极限值在多维数据集的 Key Error Limit 属性中指定。当在事实数据表中遇到包含外键值的行，而该外键值在与事实数据表所联接的维度表的主键列中又不存在时，就会发生维度键错误。

如果选择 No，则无论遇到多少错误，这些维度键错误都永远不会中断并取消多维数据集处理。如果遇到一个或多个维度键错误，那么多维数据集的数据就不能反映整个事实数据表。

Visible | 指明最终用户在浏览可用多维数据集的列表时是否可以看见该多维数据集。
维度 Aggregation Usage 指明对哪些级别进行聚合数据计算。列表中的选项为：
  • Standard：对哪些级别进行聚合数据计算取决于维度的种类。对于常规维度，会对所有级别进行聚合数据计算，除非维度的 Changing 属性为 True。在这种情况下，不对顶层和底层级别之间的级别进行聚合数据计算。对于父子维度，对最终用户可以看到的底层级别和"（全部）"级别（如果有的话）进行聚合数据计算。对于虚拟维度，不对任何级别进行聚合数据计算。

  • Top Level Only：仅对顶层级别进行聚合数据计算。此值对父子维度或 Changing 属性设置为 True 的维度无效，除非该维度的 All Level 属性设置为 Yes。

  • Bottom Level Only：仅对底层级别进行聚合数据计算。

  • Top and Bottom Levels：仅对顶层和底层级别进行聚合数据计算。此值对父子维度或 Changing 属性设置为 True 的维度无效，除非该维度的 All Level 属性设置为 Yes。

  • Custom：仅对 Enable Aggregations 属性为 Yes 的级别进行聚合数据计算。对于父子维度和 Changing 属性设为 True 的维度，Custom 无效。
All Caption | "（全部）"级别中成员的名称。
All Level | 指明维度是否包含"（全部）"级别。如果其值为 Yes，则"（全部）"级别为维度的顶层级别，但不显示在多维数据集编辑器树窗格中。"（全部）"级别包含一个成员，该成员的单元值是下一级别中所有成员的单元值的聚合。
All Member Formula | "（全部）"级别的自定义汇总公式。此公式是 MDX 表达式，它确定了全部成员的单元值，并且会替代度量值的 Aggregate Function 属性。有关更多信息，请参见自定义汇总公式和自定义成员公式。
Allow Duplicate Names | 指明同一父代下的成员是否可以同名。
Changing 指明是否为频繁更改而优化了维度。如果该值设置为 True，那么查询性能可能会较低。但是，可以添加、移动和删除顶层之下底层之上的级别和成员。这样既排除或减少了后续处理的要求，也减少了最终用户访问包括可减少维度的多维数据集时的中断。

在将 Changing 属性设置为 True 之前必须具备几个条件。有关更多信息，请参见可更改维度。
Data Member Caption Template | 当维度的 Members With Data 属性设置为 Nonleaf data visible 时，本属性控制数据成员的名称。当键入包括星号 (*) 的值时，每个数据成员的名称将是星号被父成员的名称取代后的值。Data Member Caption Template 属性仅用于父子维度。
Data source | 包含维度表的数据源。
Default Member | 当轴上未显示维度并且未指定维度中的切片成员时，用于对查询所返回的数据集进行切片的成员。如果未指定默认成员，并且维度的 All Level 属性为 Yes，那么 All Caption 属性所指定的成员就是默认成员。如果未指定默认成员，并且维度的 All Level 属性为 No，那么将以最高级别中的任意一个成员作为默认成员。
Depends on Dimension 对于虚拟维度，指虚拟维度的级别所基于的成员属性或列所在的维度。

对于非虚拟维度，本属性指优化聚合设计时所依据的维度。当两个维度的成员矢量积中不能共存的组合占很大百分比时，本属性值中的维度优先。例如，Customer Gender 维度的 Depends on Dimension 属性是 Customers。这两个维度的最低级别成员的矢量积中，有百分之五十的组合不能共存，因为每位客户只能有一种性别。有关更多信息，请参见相关性维度。
Description | 提供维度的描述。
Enable All Level Aggregation | 确定当设计聚合以优化性能时是否考虑"（全部）"级别。
Enable Real-Time Updates | 指明维度是否支持对基础维度表的实时更新。
Member Keys Unique 指明成员键在维度内部是否唯一。如果此属性设置为 True，则维度中每个级别的 Member Keys Unique 属性都被设置为 True。

如果此属性的值已更改，则必须用"完整处理"选项重新处理当前多维数据集。有关更多信息，请参见处理多维数据集。
Member Names Unique | 指明成员的名称在维度内部是否唯一。如果该值为 True，那么内部成员名称将忽略起限定作用的级别名称和成员名称。这些内部成员名称用于 MDX 表达式中。如果此属性设置为 True，则维度中每个级别的 Member Names Unique 属性都被设置为 True。
Members With Data 指明非叶成员是否可以有相关联的事实数据表数据。如果可以有，那么本属性还指明是否将创建非叶成员的子代来显示这些数据。有效值为：
  • Leaf members only：只有叶成员可以有相关联的事实数据表数据。如果非叶成员有相关联的事实数据表数据，处理将失败。此值为默认值。

  • Nonleaf data hidden：非叶成员可以有相关联的事实数据表数据。这些数据在非叶成员中将不展现出来。因此，有可能在最终用户看来聚合值是不正确的。

  • Nonleaf data visible：非叶成员可以有相关联的事实数据表数据。通过为每个非叶成员创建一个子代，这些数据将在非叶成员的后代中展现出来。这个子代称为数据成员，是一个叶成员，其值等于其父代相关联的事实数据表数据的聚合。数据成员的名称由 Data Member Caption Template 属性控制。

此属性仅用于父子维度。

Name | 维度的名称。
Source Table Filter 应用于维度表的 WHERE 子句表达式，用于限制维度中的成员。例如，在随同 Analysis Services 一起提供的 Store 维度中，若要只包含 Canada 成员及其后代，请键入：

"store"."store_country" = 'Canada'
Storage Mode | 维度的存储类型。如果其值为 MOLAP（多维 OLAP），则维度的数据将存储在分析服务器上的多维结构中。如果其值为 ROLAP（关系 OLAP），那么维度的数据就是维度表本身。MOLAP 提供更佳的性能，除了非常大的维度（即大约有500 到 1000 万成员的维度），都建议使用 MOLAP。如果要选择 ROLAP，那么最低级别的 Member Keys Unique 属性就必须为 True。在所有使用该维度的多维数据集内，对该维度的 Aggregation Usage 属性也存在限制。有关更多信息，请参见维度存储模式。
Type | 维度的类型。默认值为 Standard。此属性向客户应用程序指明维度中信息的类型。
Virtual | 指明维度是否是虚拟维度，即基于另一个维度中表和列的维度。如果此属性设置为 True，则自动为此维度创建"（全部）"级别。
Visible | 指明最终用户浏览多维数据集时，该维度是否可见。
Write-enabled | 指明当管理员浏览维度和最终用户浏览多维数据集时是否可以更新维度的成员。只有对该维度拥有读/写访问权限的多维数据集角色中的最终用户才能够更新写启用维度。只有父子维度才可以是写启用的。有关更多信息，请参见写启用的维度。
级别 | Custom Members | 指明是否用自定义成员公式确定成员的单元值。有关更多信息，请参见自定义汇总公式和自定义成员公式。若要查看自定义成员公式，请右击相应维度，单击"浏览"，然后查看自定义成员公式窗格。
Custom Member Options | 指明是否可以为此级别上的自定义成员和下一级别上的一元运算符定义计算选项。计算选项存储在维度表的某列中。要将此属性设置为 True，则必须首先将 Custom Members 属性设为 True。
Custom Rollup Formula 确定成员的单元值并替代度量值的 Aggregate Function 属性的 MDX 表达式。有关更多信息，请参见自定义汇总公式和自定义成员公式。

如果多维数据集有一个具有 Distinct Count 聚合函数的度量，或者您将自定义汇总公式添加到多维数据集的级别上，则多维数据集结构将无效。

Description | 提供级别的说明。
Disabled | 指明该级别是否包含在多维数据集内。此属性不能用于父子维度。在计算成员和其它 MDX 表达式中无法显式引用"禁用"属性为"是"的级别。
Enable Aggregations | 指明是否对该级别进行聚合计算。只有维度的 Aggregation Usage 属性为 Custom 时，此属性的值才能更改。对于虚拟维度中的级别，该属性的值总为 No。此属性不能用于父子维度。
Grouping | 指明级别是否包含成员组。成员组可用于满足每个父代下最多可有 64,000 个成员的限制。要组成成员组，请在超出限制的级别的上一级创建一个与之相同的级别，然后将新级别的 Grouping 属性设置为 Automatic。有关更多信息，请参见成员组。如果级别在共享维度中，则必须在维度编辑器中组成成员组。
Hide Member If 决定在最终用户浏览多维数据集时对用户隐藏哪些成员。隐藏成员可支持不齐整维度（即，在成员沿袭体系中存在逻辑断层的维度），方法是隐藏这些断层上的成员。有效值为：
  • Never hidden：不隐藏任何成员。

  • No name：名称为空或空字符串的成员将隐藏。

  • Parent's name：与父代同名的成员将隐藏。

  • Only child with no name：为独一子代并且名称为空或空字符串的成员将隐藏。

  • Only child with parent's name：为独一子代并且与父代同名的成员将隐藏。

此属性不能用于父子维度。
Key Data Size | 在聚合中存储成员键的列的大小（以字节为单位）。成员键从 Member Key Column 属性所指定的列中复制。
Key Data Type | 在聚合中存储成员键的列的数据类型。成员键从 Member Key Column 属性所指定的列中复制。
Level Naming Template | 确定在最终用户浏览多维数据集时对其显示的级别名称。此属性仅用于父子维度。如果级别在专用维度中，请单击该属性并单击编辑（"..."）按钮以显示"级别命名模板"对话框。
Level Type | 级别的类型。默认值为 Regular。仅在 Type 属性为 Time 的维度中才使用下列值：Years、Half-Years、Quarters、Months、Weeks、Days、Hours、Minutes、Seconds 和 Time-Undefined。Level Type 属性向客户应用程序指明级别中信息的类型。在父子维度中不显示此属性。
Member Count | 级别中成员的数目，该值可以是 Analysis Services 上次对成员计数时的估计值，也可以是用户提供的成员数目估计值。如果级别在专用维度中，可通过单击"工具"菜单上的"对维度成员计数"而更新该成员计数。
Member Key Column | 包含成员键的列。此外，该值还可以从某一列中派生得到，如从日期格式列中提取年份值的表达式。这种表达式的语法必须遵守数据源提供程序的要求，否则处理将因遇到一个或多个错误而失败。
Member Keys Unique 指明成员键在级别内部是否唯一。此属性不能用于父子维度。

如果此属性的值已更改，则必须用"完整处理"选项重新处理当前多维数据集。有关更多信息，请参见处理多维数据集。
Member Name Column | 含有成员名称的列，在最终用户浏览多维数据集时对他们显示这些名称。此外，该值还可以从某一列中派生得到，如从日期格式列中提取年份值的表达式。这种表达式的语法必须遵守数据源提供程序的要求，否则处理将因遇到一个或多个错误而失败。
Member Names Unique | 指明成员的名称在级别内部是否唯一。如果该值为 True，那么内部成员名称将忽略起限定作用的成员名称。这些内部成员名称用于 MDX 表达式中。
Name | 级别的名称。
Order By | 显示成员时所用的排序顺序。可以按成员名称、成员键或任意为级别定义的成员属性来排序。
Parent Key Column | 包含成员父代的键的列。此属性仅用于父子维度。
Root Member If 指明识别最高级别（如果有"（全部）"级别则忽略该级别）成员的准则。下列值有效：
  • Parent is blank, self, or missing：如果成员符合下列三个准则中的任意一个，该成员就属于最高级别。

  • Parent is blank：如果成员的 Parent Key Column 中的值为空或 0（零），则该成员就属于最高级别。

  • Parent is self：如果成员的 Parent Key Column 中的值等于 Member Key Column 中的值，则该成员就属于最高级别。

  • Parent is missing：如果成员的 Parent Key Column 中的值在 Member Key Column 中不存在，则该成员就属于最高级别。

此属性仅用于父子维度。
Skipped Levels Column | 指明包含成员与其父代之间的级别数目的列，该成员及其父代不计入该数目。该列中的有效值为 0（零）和正整数。此属性仅用于父子维度。
Unary Operators 启用一元运算符或自定义汇总运算符，这些运算符控制级别成员如何聚合到其父级成员的值中。有关更多信息，请参见自定义汇总运算符。若要查看自定义成员公式，请在"视图"菜单上单击"数据"命令，然后查看成员属性窗格中 UNARY_COLUMN 旁边的值。

如果多维数据集有一个具有 Distinct Count 聚合函数的度量值，或者您将自定义汇总运算符添加到了多维数据集的级别上，则多维数据集结构将无效。
Visible | 指明最终用户浏览多维数据集时，该级别是否可见。若要将此属性设置为 False，就必须首先将下方所有级别的 Member Keys Unique 属性设置为 True。Visible 属性不能用于父子维度。与 Visible 属性设置为 False 的其它对象不同，级别不能在计算成员和其它 MDX 表达式的计算成员中显式引用。
度量值 Aggregate Function 用于聚合度量值的函数。有效值为：
  • Sum：维度成员的度量值的计算方法是：将维度外键值等于该成员或其一个后代键值的行中的该度量值 Source Column 内的值相加。

  • Count：维度成员的度量值的计算方法是：将维度外键值等于该成员或其一个后代键值的行中的该度量值 Source Column 内的值相加。对空值不进行计数。

  • Min：维度成员的度量值是特定行中度量值的 Source Column 内的最小值。特定行是指维度的外键值等于该成员或其一个后代的键值的行。

  • Max：维度成员的度量值是特定行中度量值 Source Column 内的最大值；特定行是指维度外键值等于该成员或其一个后代键值的行。

  • Distinct Count：维度成员的度量值的计算方法是：将维度外键值等于该成员或其一个后代键值的行中的该度量值 Source Column 内的值相加。一个多维数据集内只能含有一个带 Distinct Count 聚合函数的度量值。

如果多维数据集有一个具有 Distinct Count 聚合函数的度量，并且您将自定义汇总运算符或表达式添加到了多维数据集的级别上，则多维数据集结构将无效。

不同维度的成员形成的交集的度量值也使用所选聚合函数进行计算。有关聚合函数的更多信息，请参见聚合函数。

多分区多维数据集可以有多个事实数据表，因此一个度量值可以有多个源列。（请注意，每个资源列均必须有相同的列名称。）这种情况下，聚合函数涉及所有源列。

Data Type | 存储了聚合中度量值的列数据类型。
Description | 对度量值的描述。
Display Format | 当最终用户浏览多维数据集时对其显示的度量值格式。有关更多信息，请参见显示格式。
Name | 度量值的名称。最终用户浏览多维数据集时即可看到此名称。
Source Column | 在多维数据集默认分区的事实数据表中，度量值被聚合前所在的存储的列。
Visible | 指明最终用户浏览多维数据集时，该度量值是否可见。
成员属性 | Caption | 用于显示该成员属性的标题。
Data Size | 存储成员属性值的列中所允许的最大字符数目。当列的数据类型不匹配但内容代表同一值时，允许维度表链接到事实数据表。
Data Type | 存储成员属性值的列的数据类型。当列的数据类型不匹配但内容代表同一值时，允许维度表链接到事实数据表。
Description | 成员属性的描述。
Language | 用于显示该成员属性的语言。
Name | 成员属性的名称。
Source Column | 存储成员属性值的列。此列必须属于成员属性所在维度的某一维度表。
Type | 用于向客户端应用程序指明成员属性值中的信息类型。
Visible | 指明最终用户浏览多维数据集时，该成员属性是否可见。
命名集 | Name | 命名集的名称。
Value | 定义命名集的 MDX 表达式。


数据选项卡（多维数据集编辑器数据视图）

使用"数据"选项卡可以显示多维数据集数据。数据查看窗格中的默认视图以表格形式显示数据，其中列标题由一个维度构成，左边的列由另一个维度构成。（对于这种用途，度量值被视为单个维度。）多维数据集余下的维度显示在数据切片窗格中。

数据查看窗格中的白色单元格代表度量值，这些度量值根据数据切片窗格中显示的所有维度成员框中的成员得到。在前一个例子中，度量值反映数据切片窗格中除 Time 外的每个维度的"全部"成员。如果 Time 维度的成员框中显示 1997，就表示所显示的度量值限于 1997 年。后面本主题将用示例展示如何在数据切片窗格中对维度进行切片，以限制要显示的度量值。

"数据"选项卡中的数据或者是内部生成的样本数据，或者是来自多维数据集的实际数据。

如果多维数据集自上次处理后进行了更改（包括在当前编辑会话期间所做的更改），就会显示示范数据。通过浏览样本数据，可以在生成或编辑多维数据集时检查多维数据集的设计情况。还可以查看数据是如何按照多维数据集的当前结构进行组织的。

当多维数据集的结构自上次处理后未发生更改时，将显示实际数据。若要浏览实际数据，可以深化数据或对数据进行切片。

在数据选项卡中操作

若要在数据查看窗格中以维度的任意组合来浏览多维数据集数据，请将度量值或维度从数据切片窗格拖到数据查看窗格中的任意一个轴上。

用另一个维度替换数据查看窗格中的维度

  • 将维度从数据切片窗格拖到数据查看窗格中要替换的维度上。

当鼠标指针如下所示时，其位置就是正确的：

-或-

数据查看窗格中的维度上移到数据切片窗格中，新的维度将替代它的位置。

将维度移到数据查看窗格中

  • 将维度从数据切片窗格拖到现有维度的下方（或旁边）的单元格中。

当鼠标指针如下所示时，其位置就是正确的：

-或-

新维度出现在现有维度的下方（或旁边），从而扩展了数据查看窗格。

更改数据查看窗格中维度的顺序

  • 拖动维度并将其放到所希望的位置。

从数据查看窗格中删除维度

  • 将要删除的维度从数据查看窗格拖到数据切片窗格。

深化到成员中

  • 在数据查看窗格中双击维度成员。如果成员下方还有成员，那么它们将显示出来。

    只有双击某个成员，它才会展开。其它成员仍将在数据查看窗格中保持其当前级别。在下例中，双击 Drink 成员可深化到其子成员中。

若要显示级别中的所有成员，请在数据查看窗格中双击父级别的名称。级别名称用按钮形状表示（例如上例中的 Product Family）。

对维度进行切片

  • 若要更改数据切片窗格中维度的成员，请单击成员框的向下箭头，展开成员，然后选择新成员。数据查看窗格中的多维数据集数据将改变，以反映维度成员的变化。

"数据"选项卡有一个内在的内存限制，当您试图浏览过多的数据或深化得太深时可能会达到该限制值。当达到该极限值时，将显示下列消息：

无法显示多维数据集的当前视图。
无法为 Flexgrid 分配内存。

不能通过添加或分配更多的内存来提高该极限值。如果达到该极限值，请减少要浏览的数据量或数据深度，或者使用其它浏览器。


多维数据集编辑器 -- 架构视图

 Analysis Services

多维数据集编辑器 — 架构视图

可以使用此工具查看并编辑多维数据集的架构，并可检查和编辑多维数据集的结构。还可以使用多维数据集编辑器和连结对话框执行不同的过程。

多维数据集编辑器可以两种视图形式（数据视图和架构视图）显示。这两种视图均包括树窗格和属性窗格，但数据视图包含"数据"选项卡，而架构视图包含"架构"选项卡。通过单击多维数据集编辑器底部的"数据"选项卡或"架构"选项卡可以在两个视图之间进行切换。也可以单击"视图"菜单上的"数据"命令或"架构"命令。

本主题对架构视图进行描述。有关数据视图的信息，请参见多维数据集编辑器 — 数据视图。架构视图显示如下。

执行下列任一操作后，即会显示多维数据集编辑器：

  • 在 Analysis Manager 树窗格中右击一个多维数据集，然后单击"编辑"命令。

  • 在 Analysis Manager 树窗格中单击一个多维数据集，然后在"操作"菜单上单击"编辑"命令。

多维数据集编辑器有五个区域。有关这些区域的更多信息，请单击下表中的链接。

若要执行 | 请参见
执行多维数据集编辑器菜单中的可用命令 | 菜单（多维数据集编辑器架构视图）
执行多维数据集编辑器工具栏中用图标表示的公用对策 | 工具栏（多维数据集编辑器架构视图）
查看树窗格中显示的多维数据集对象 | 树窗格（多维数据集编辑器架构视图）
查看并修改多维数据集编辑器树窗格中所选对象的某些属性 查看对属性及应用这些属性的对象的描述 | 属性窗格（多维数据集编辑器架构视图）
查看多维数据集的事实数据表和维度表，以及表中的所有列 添加度量值和共享维度，并创建专用维度 | 架构选项卡（多维数据集编辑器架构视图）

请参见

用编辑器建立多维数据集

创建和维护专用维度

指定钻取选项


菜单（多维数据集编辑器架构视图）

可以通过多维数据集编辑器中的菜单获得以下选项。

菜单 | 选项 | 描述
文件 | 新建多维数据集 — 向导 | 启动多维数据集向导以新建多维数据集。
 | 新建多维数据集 — 编辑器 | 显示"选择事实数据表"对话框，以便用编辑器生成多维数据集。
 | 保存 | 保存多维数据集。如果正在保存父子维度或可更改维度，则会提示您对维度进行增量处理。
 | 另存为 | 使用另一个名称保存多维数据集。
 | 退出 | 关闭多维数据集编辑器。
编辑 | 编辑 | 编辑选定的对象。没有相关编辑器或向导的对象，无法使用此选项。
 | 重命名 | 重命名所选对象。
 | 删除 | 删除所选对象。
 | 删除联接 | 从所选列上删除所有联接（仅用于架构视图）。
视图 | 架构 | 显示架构视图，包括"架构"选项卡。
 | 数据 | 显示数据视图，包括"数据"选项卡。
 | 属性 | 展开或折叠属性窗格。
插入 | 表 | 显示"选择表"对话框，以向多维数据集内添加表。
 | 维度 — 新建 | 启动维度向导以新建维度。
 | 维度 — 现有 | 显示维度管理器以将现有的共享维度添加到多维数据集内。
 | 级别 | 显示"插入级别"对话框以添加新级别。
 | 度量值 | 显示"插入度量值"对话框以添加新度量值。
 | 成员属性 | 显示"插入成员属性"对话框以添加新的成员属性。
 | 计算成员 | 显示计算成员生成器以开始创建计算成员。
 | 计算单元 | 显示计算单元向导以开始创建计算单元。
 | 对策 | 启动对策向导以新建对策。
 | 命名集 | 显示命名集生成器以定义新命名集。
 | 联接 | 向所选列添加联接（仅用于架构视图）。
工具 | 处理多维数据集* | 处理多维数据集。
 | 设计存储 | 启动存储设计向导，以便为多维数据集选择存储选项和设计聚合。
 | 钻取选项* | 显示"钻取选项"对话框，以便选择在执行钻取时所显示的列。
 | 对维度成员计数 | 提供一个维度中成员的估算数目。当聚合设计算法确定为该维度创建何种聚合时，它会使用这种估算。
 | 验证多维数据集结构 | 验证多维数据集结构中不含可能妨碍处理多维数据集的无效组件。
 | 优化架构 | 在处理过程中，通过删除维度和事实数据表之间不必要的联接，并且在处理过程中不必读取维度表，简化了多维数据集的架构以获取最佳的性能。 在使用该选项之前，必须要满足几个条件。有关更多信息，请参见优化多维数据集架构。 若要删除其它表格格式联接，请使用 Remove Join 命令。
帮助 | 多维数据集编辑器帮助 | 显示关于多维数据集编辑器的帮助主题。
 | 目录和索引 | 打开 SQL Server 联机丛书。

* 如果该选项不可用，则多维数据集的结构无效。可单击"工具"菜单上的"验证多维数据集结构"命令尝试找到问题所在。


工具栏（多维数据集编辑器架构视图）

使用工具栏按钮可以执行通常的操作。

按钮 | 描述
新建多维数据集 | 启动多维数据集向导以新建多维数据集。
保存 | 保存多维数据集。如果正在保存父子维度或可更改维度，会提示您执行维度的增量处理。
插入表 | 显示"选择表"对话框，以向多维数据集添加表。
插入维度 | 显示维度管理器以将现有维度添加到多维数据集内。在维度管理器中，可启动维度向导创建新的维度。
插入级别 | 显示"插入级别"对话框，以向专用维度添加新级别。可用维度编辑器向共享维度添加新级别。
插入成员属性 | 显示"插入成员属性"对话框，以在专用维度的选定级别中添加新成员属性。可用维度编辑器向共享维度的级别添加新属性。
插入度量值 | 显示"插入度量值"对话框以添加新度量值。
插入计算成员 | 显示计算成员生成器以开始创建计算成员。
插入计算单元 | 启动"计算单元向导"以定义计算单元。该向导可将新的计算单元定义添加到"计算单元"文件夹。
插入对策 | 启动对策向导以新建对策。
插入命名集 | 显示命名集生成器以定义新命名集。
处理多维数据集 | 显示"处理多维数据集"对话框以选择多维数据集处理选项。


树窗格（多维数据集编辑器架构视图）

使用树窗格显示多维数据集中的对象。右击某一对象即可看到该对象的快捷菜单。

下表列出了如何访问有关多维数据集对象的可用信息。

右击 | 快捷菜单选项 | 描述
多维数据集 | 新建多维数据集 | 显示"选择事实数据表"对话框，以便用编辑器生成多维数据集。
 | 处理多维数据集 | 处理多维数据集。
 | 新建维度 | 启动维度向导以新建维度。
 | 现有的维度 | 显示维度管理器以将现有的共享维度添加到多维数据集内。
 | 新建度量值 | 显示"插入度量值"对话框以添加新度量值。
"维度"文件夹 | 新建维度 | 启动维度向导以新建维度。
 | 现有的维度 | 显示维度管理器以将现有的共享维度添加到多维数据集内。
维度 | 新建维度 | 启动维度向导以新建维度。
 | 现有的维度 | 显示维度管理器以将现有的共享维度添加到多维数据集内。
 | 删除 | 从多维数据集内删除维度。
 | 浏览 | 在维度浏览器中显示维度成员。
级别 | 新建维度 | 启动维度向导以新建维度。
 | 现有的维度 | 显示维度管理器以将现有的共享维度添加到多维数据集内。
"度量值"文件夹 | 新建度量值 | 显示"插入度量值"对话框以添加新度量值。
度量值 | 新建度量值 | 显示"插入度量值"对话框以添加新度量值。
 | 删除 | 删除度量值。
 | 重命名 | 重命名度量值。
"计算成员"文件夹 | 新建计算成员 | 显示计算成员生成器以开始创建计算成员。
计算成员 | 新建计算成员 | 显示计算成员生成器以开始创建计算成员。
 | 编辑 | 在计算成员生成器中显示计算成员以进行编辑。
 | 删除 | 删除计算成员。
 | 重命名 | 重命名计算成员。
计算单元文件夹 | 新建计算单元 | 显示计算单元向导，以开始创建计算单元。
 | 导入计算单元 | 显示"导入计算单元"对话框，以便从源多维数据集或其它多维数据集导入计算单元。
计算单元 | 新建计算单元 | 显示计算单元向导以开始创建计算单元。
 | 编辑 | 显示计算单元向导，以便编辑所选的计算单元定义。
 | 重命名 | 重命名所选的计算单元定义。
 | 删除 | 删除选定的计算单元对策。
"对策"文件夹* | 新建对策 | 启动对策向导以新建对策。
对策 | 新建对策 | 启动对策向导以新建对策。
 | 编辑 | 启动对策向导以进行编辑。
 | 删除 | 删除对策。
 | 重命名 | 重命名对策。
命名集 | 新建命名集 | 显示命名集生成器以创建新命名集。
 | 编辑 | 启动命名集生成器以编辑该命名集。
 | 重命名 | 重命名命名集。

* 当展开"对策"文件夹时限制最多可以显示 32 个对策。


属性窗格（多维数据集编辑器架构视图）

使用属性窗格显示在树窗格中选定对象的属性。若要显示属性窗格，请单击树窗格下方的"属性"选项卡。

每种类型的对象都包含不同的属性集。可用属性窗格修改所选对象的属性设置。对于共享维度、其级别及成员属性，某些属性是只读的，必须在维度编辑器中进行更改。

下表描述了显示在属性窗格中的属性。

对象 | 属性 | 描述
对策 | Action Type | 指明对策的特定类型。有关不同类型对策的描述，请参见 CREATE ACTION 语句。
Application | 用于提供执行对策的应用程序的其它信息。
Caption Expression | 由客户应用程序使用的作为对策标题的多维度 (MDX) 表达式。
Description | 用于提供对策的说明。
Invocation 用于确定对策的激活方式。
  • Interactive：当最终用户在用户界面激活相关元素时，对策将交互运行。这是默认设置，而且是 Microsoft® SQL Server™ 2000 Analysis Services 中多维数据集浏览器唯一支持的类型。

  • On Open：当用户打开多维数据集时，对策自动运行。

  • Batch：客户端以批处理任务的方式运行对策。这些对策提供了检查异常的方法。
Name | 对策的名称。在为对策选择目标对象时显示该属性。
Value | 定义对策的 MDX 表达式。
计算单元 | BackColor | 指明由单元坐标和条件所定义的单元的背景颜色。
Calculation Condition | 包含一个 MDX 条件表达式，该表达式定义了利用计算公式、通过测试每个单元进行计算的计算子多维数据集单元。
Calculation Subcube | 包含一个 MDX 集表达式，该表达式定义了用计算公式计算的多维数据集数据的子集。
Calculation Value | 包含一个 MDX 表达式，该表达式为计算子多维数据集中的每个单元提供值。
Description | 包含描述计算单元定义的文本字符串。
Disabled | 确定是否已禁用单元计算。默认值为 False。
FontName | 指明由单元坐标和条件所定义的单元的字体名称。
FontSize | 指明由单元坐标和条件所定义的单元的字体大小。
FontFlags | 指明由单元坐标和条件所定义的单元的字体标记。
Calculation Pass Number | 指明执行此计算的计算传递。
Calculation Pass Depth | 确定完整计算计算单元定义所需的计算传递的数量。
ForeColor | 指明由单元坐标和条件所定义的单元的前景颜色。
Format String | 指明由单元坐标和条件所定义的单元的格式字符串。
Name | 包含计算单元定义的名称。该属性是只读的。
Solve Order | 包含表示对计算单元求值的次序的数字。
Visible | 确定计算单元定义在架构行集中是否可见。默认值为 True。
计算成员 | BackColor | 显示计算成员时所用的背景颜色。若要使用这一可选的属性，客户端应用程序就必须支持此属性的使用，并且能够解释其值。只有数字值有效。多维数据集浏览器、多维数据集编辑器"数据"选项卡和虚拟多维数据集编辑器数据窗格不支持此属性。
FontFlags | 显示计算成员时所用的字体标志。若要使用这一可选的属性，客户端应用程序就必须支持此属性的使用，并且能够解释其值。只有数字值有效。多维数据集浏览器、多维数据集编辑器"数据"选项卡和虚拟多维数据集编辑器数据窗格不支持此属性。
FontName | 显示计算成员时所用的字体。若要使用这一可选的属性，客户端应用程序就必须支持此属性的使用，并且能够解释其值。多维数据集浏览器、多维数据集编辑器"数据"选项卡和虚拟多维数据集编辑器数据窗格不支持此属性。
FontSize | 显示计算成员时所用的字体大小。若要使用这一可选的属性，客户端应用程序就必须支持此属性的使用，并且能够解释其值。只有数字值有效。多维数据集浏览器、多维数据集编辑器"数据"选项卡和虚拟多维数据集编辑器数据窗格不支持此属性。
ForeColor | 显示计算成员时所用的前景颜色。若要使用这一可选的属性，客户端应用程序就必须支持此属性的使用，并且能够解释其值。只有数字值有效。多维数据集浏览器、多维数据集编辑器"数据"选项卡和虚拟多维数据集编辑器数据窗格不支持此属性。
Format String | 显示单元值时所用的格式。单击 Format String 并显示下拉列表时，即显示常用格式的列表。此属性与度量值的 Display Format 属性接受同样的值。有关更多信息，请参见显示格式。
Name | 计算成员的名称。最终用户浏览多维数据集时显示该名称。
Non Empty Behavior | 存储度量值的名称，该度量值用于解析 MDX 中的 NON EMPTY 查询。若 Non Empty Behavior 属性为空，则必须反复计算计算成员，以确定成员是否为空。如果 Non Empty Behavior 属性包含度量值的名称，则在指定的度量值为空的情况下将计算成员视为空。
Parent Dimension | 包含计算成员的维度。如果计算成员是度量值，请指定"度量值"。
Parent Member | 包含计算成员的成员。父成员确定了计算成员在维度结构中的位置。如果父维度是只包含一个级别的维度或"度量值"，那么此属性必须为空。
Solve Order | 当此计算成员与其它计算成员有交叉时的求值次序。有效值为 0（零）和正整数或负整数。Solve Order 值较小的计算成员在求值时优先。
Value | 用于确定计算成员值的 MDX 表达式。最终用户浏览多维数据集时显示该值。
Visible | 指明最终用户浏览多维数据集时，该维度是否可见。
多维数据集 | Aggregation Prefix | 对多维数据集分区的聚合名称追加的前缀（如果分区的聚合前缀以加号 (+) 开头）。在这种情况下，该属性的值将追加在分区的聚合前缀开头处。如果分区的聚合前缀不以加号开头，则该属性被忽略。若要访问分区的聚合前缀，请在 Analysis Manager 树窗格中右击该分区，单击"编辑"命令，在分区向导中进行到步骤"完成"，然后单击"高级"按钮。
Data Source | 多维数据集的数据源。多维数据集的分区可以有不同的数据源。
Default Measure | 当轴上未显示度量值也未指定切片度量值时，查询所返回的度量值。如果未指定默认度量值，那么将以任意一个度量值充当默认度量值。
Description | 对多维数据集的描述。
Fact Table | 多维数据集的事实数据表。多维数据集的分区可以有不同的事实数据表。
Fact Table Size | 多维数据集事实数据表中的行数，该值可以是 Analysis Services 上次对其计数时得到的值，也可以是用户提供的行数估计值。
Key Error Limit | 维度键错误数目的极限值。默认值为 0。如果多维数据集的 Stop Processing on Key Errors 属性为 Yes，则当超过极限值时，多维数据集处理就中断并取消。如果您选择 Yes，并且 Key Error Limit 的值大于 0，处理也已完成，则多维数据集的数据不反映整个事实数据表。如果 Stop Processing on Key Errors 属性为 No，则 Key Error Limit 属性将被忽略。
Key Error Log File | 记录维度键错误的日志文件的路径和文件名。
Name | 多维数据集的名称。
Processing Optimization Mode | Processing Optimization Mode 属性的值是 Regular（在计算完所有聚合之后就可以使用已处理的数据），或者是 Lazy Aggregations（在装载完数据之后立即就可以使用已处理的数据）。此属性只适用于多维数据集的 MOLAP 分区。
Source Table Filter | 应用于分区的事实数据表上限制多维数据集内数据的 WHERE 子句表达式。该属性提供多维数据集分区中筛选的默认设置。这些筛选会替代该属性。若要访问分区的筛选，请在 Analysis Manager 树窗格中右击该分区，单击"编辑"命令，在分区向导中进行到步骤"完成"，然后单击"高级"按钮。
Stop Processing on Key Errors 如果选择 Yes，则当维度键错误的数目超过极限值时处理会中断并取消。该极限值在多维数据集的 Key Error Limit 属性中指定。当在事实数据表中遇到包含外键值的行，而该外键值在与事实数据表所联接的维度表的主键列中又不存在时，就会发生维度键错误。

如果选择 No，则无论遇到多少错误，这些维度键错误都永远不会中断并取消多维数据集处理。如果遇到一个或多个维度键错误，那么多维数据集的数据就不能反映整个事实数据表。

Visible | 确定多维数据集是否在多维数据集列表中可见。
维度 Aggregation Usage 指明对哪些级别进行聚合数据计算。列表中的选项为：
  • Standard：对哪些级别进行聚合数据计算取决于维度的种类。对于常规维度，会对所有级别进行聚合数据计算，除非维度的 Changing 属性为 True。在这种情况下，不对顶层和底层级别之间的级别进行聚合数据计算。对于父子维度，对最终用户可以看到的底层级别和"（全部）"级别（如果有的话）进行聚合数据计算。对于虚拟维度，不对任何级别进行聚合数据计算。

  • Top Level Only：仅对顶层级别进行聚合数据计算。此值对父子维度或 Changing 属性设置为 True 的维度无效，除非该维度的 All Level 属性设置为 Yes。

  • Bottom Level Only：仅对底层级别进行聚合数据计算。

  • Top and Bottom Levels：仅对顶层和底层级别进行聚合数据计算。此值对父子维度或 Changing 属性设置为 True 的维度无效，除非该维度的 All Level 属性设置为 Yes。

  • Custom：仅对 Enable Aggregations 属性为 Yes 的级别进行聚合数据计算。对于父子维度或 Changing 属性设为 True 的维度，Custom 无效。
All Caption | "（全部）"级别中成员的名称。
All Level | 指明维度是否包含"（全部）"级别。如果其值为 Yes，则"（全部）"级别为维度的顶层级别，但不显示在多维数据集编辑器树窗格中。"（全部）"级别包含一个成员，该成员的单元值是下一级别中所有成员的单元值的聚合。
All Member Formula | "（全部）"级别的自定义汇总公式。此公式是 MDX 表达式，它确定了全部成员的单元值，并且会替代度量值的 Aggregate Function 属性。有关更多信息，请参见自定义汇总公式和自定义成员公式。
Allow Duplicate Names | 指明同一父代下的成员是否可以同名。
Changing 指明是否为频繁更改而优化了维度。如果该值设置为 True，那么查询性能可能会较低。但是，可以添加、移动和删除顶层之下底层之上的级别和成员。这样既排除或减少了后续处理的要求，也减少了最终用户访问包括该维度的多维数据集时的中断。

在将 Changing 属性设置为 True 之前必须具备几个条件。有关更多信息，请参见可更改维度。
Data Member Caption Template | 当维度的 Members With Data 属性设置为 Nonleaf data visible 时，本属性控制数据成员的名称。当键入包括星号 (*) 的值时，每个数据成员的名称将是星号被父成员的名称取代后的值。Data Member Caption Template 属性仅用于父子维度。
Data Source | 包含维度表的数据源。
Default Member | 当轴上未显示维度并且未指定维度中的切片成员时，用于对查询所返回的数据集进行切片的成员。如果未指定默认成员，并且维度的 All Level 属性为 Yes，那么 All Caption 属性所指定的成员就是默认成员。如果未指定默认成员，并且维度的 All Level 属性为 No，那么将以最高级别中的任意一个成员作为默认成员。
Depends on Dimension 对于虚拟维度，指虚拟维度的级别所基于的成员属性或列所在的维度。

对于非虚拟维度，本属性指优化聚合设计时所依据的维度。当两个维度的成员矢量积中不能共存的组合占很大百分比时，本属性值中的维度优先。例如，Customer Gender 维度的 Depends on Dimension 属性是 Customers。这两个维度的最低级别成员的矢量积中，有百分之五十的组合不能共存，因为每位客户只能有一种性别。有关更多信息，请参见相关性维度。
Description | 维度的描述。
Member Keys Unique 指明成员键在维度内部是否唯一。如果此属性设置为 True，则维度中每个级别的 Member Keys Unique 属性都被设置为 True。

如果此属性的值已更改，则必须用"完整处理"选项重新处理当前多维数据集。有关更多信息，请参见处理多维数据集。
Member Names Unique | 指明成员的名称在维度内部是否唯一。如果该值为 True，那么内部成员名称将忽略起限定作用的级别名称和成员名称。这些内部成员名称用于 MDX 表达式中。如果此属性设置为 True，则维度中每个级别的 Member Names Unique 属性都被设置为 True。
Members With Data 指明非叶成员是否可以有相关联的事实数据表数据。如果可以有，那么本属性还指明是否将创建非叶成员的子代来显示这些数据。有效值为：
  • Leaf members only：只有叶成员可以有相关联的事实数据表数据。如果非叶成员有相关联的事实数据表数据，处理将失败。此值为默认值。

  • Nonleaf data hidden：非叶成员可以有相关联的事实数据表数据。这些数据在非叶成员的后代中将不展现出来。因此，有可能在最终用户看来聚合值是不正确的。

  • Nonleaf data visible：非叶成员可以有相关联的事实数据表数据。通过为每个非叶成员创建一个子代，这些数据将在非叶成员的后代中展现出来。这个子代称为数据成员，是一个叶成员，其值等于其父代相关联的事实数据表数据的聚合。数据成员的名称由 Data Member Caption Template 属性控制。

此属性仅用于父子维度。

Enable All Level Aggregation | 确定当设计聚合以优化性能时是否考虑"（全部）"级别。
Name | 维度的名称。
Source Table Filter 应用于维度表的 WHERE 字句表达式，用于限制维度中的成员。例如，在随同 Analysis Services 一起提供的 Store 维度中，若要只包含 Canada 成员及其后代，请键入：

"store"."store_country" = 'Canada'
Storage Mode | 维度的存储类型。如果其值为 MOLAP（多维 OLAP），则维度的数据将存储在分析服务器上的多维结构中。如果其值为 ROLAP（关系 OLAP），那么维度的数据就是维度表本身。MOLAP 提供更佳的性能，除了非常大的维度（即大约有500 到 1000 万成员的维度），都建议使用 MOLAP。如果要选择 ROLAP，那么最低级别的 Member Keys Unique 属性就必须为 True。在所有使用该维度的多维数据集内，对该维度的 Aggregation Usage 属性也存在限制。有关更多信息，请参见维度存储模式。
Type | 维度的类型。默认值为 Standard。此属性向客户应用程序指明维度中信息的类型。
Virtual | 指明维度是否是虚拟维度，即基于另一个维度中表和列的维度。如果此属性设置为 True，则自动为此维度创建"（全部）"级别。
Visible | 指明最终用户浏览多维数据集时，该维度是否可见。
Write-enabled | 指明当管理员浏览维度和最终用户浏览多维数据集时是否可以更新维度的成员。只有对该维度拥有读/写访问权限的多维数据集角色中的最终用户才能够更新写启用维度。只有父子维度才可以是写启用的。有关更多信息，请参见写启用的维度。
Enable Real-Time Updates | 指明维度是否支持对基础维度表的实时更新。
级别 | Custom Members | 指明是否用自定义成员公式确定成员的单元值。有关更多信息，请参见自定义汇总公式和自定义成员公式。若要查看自定义成员公式，请右击维度，单击"浏览"，然后查看自定义成员公式窗格。
Custom Member Options | 指明是否可以为此级别上的自定义成员和下一级别上的一元运算符定义计算选项。计算选项存储在维度表的某列中。要将此属性设置为 True，则必须先将 Custom Members 属性设置为 True。
Custom Rollup Formula 确定成员的单元值并替代度量值的 Aggregate Function 属性的 MDX 表达式。有关更多信息，请参见自定义汇总公式和自定义成员公式。

当列的数据类型不匹配但内容代表同一值时，允许维度表链接到事实数据表。
Description | 级别的描述。
Disabled | 指明该级别是否包含在多维数据集内。此属性不能用于父子维度。在计算成员和其它 MDX 表达式中无法显式引用"禁用"属性为"是"的级别。
Enable Aggregations | 指明是否对该级别进行聚合计算。只有维度的 Aggregation Usage 属性为 Custom 时，此属性的值才能更改。对于虚拟维度中的级别，该属性的值总为 No。此属性不能用于父子维度。
Grouping | 指明级别是否包含成员组。成员组可用于满足每个父代下最多可有 64,000 个成员的限制。要组成成员组，请在超出限制的级别的上一级创建一个与之相同的级别，然后将新级别的 Grouping 属性设置为 Automatic。有关更多信息，请参见成员组。如果级别在共享维度中，则必须在维度编辑器中进行此操作。
Hide Member If 决定在最终用户浏览多维数据集时对用户隐藏哪些成员。隐藏成员可支持不齐整维度（即，在成员沿袭体系中存在逻辑断层的维度），方法是隐藏这些断层上的成员。有效值为：
  • Never hidden：不隐藏任何成员。

  • No name：名称为空或空字符串的成员将隐藏。

  • Parent's name：与父代同名的成员将隐藏。

  • Only child with no name：为独一子代并且名称为空或空字符串的成员将隐藏。

  • Only child with parent's name：为独一子代并且与父代同名的成员将隐藏。

此属性不能用于父子维度。
Key Data Size | 在聚合中存储成员键的列的大小（以字节为单位）。成员键从 Member Key Column 属性所指定的列中复制。
Key Data Type | 在聚合中存储成员键的列的数据类型。成员键从 Member Key Column 属性所指定的列中复制。
Level Naming Template | 确定在最终用户浏览多维数据集时对其显示的级别名称。此属性仅用于父子维度。如果级别在专用维度中，请单击该属性并单击编辑（"..."）按钮以显示"级别命名模板"对话框。
Level Type | 级别的类型。默认值为 Regular。仅在 Type 属性为 Time 的维度中才使用下列值：Years、Half-Years、Quarters、Months、Weeks、Days、Hours、Minutes、Seconds 和 Time-Undefined。Level Type 属性向客户应用程序指明级别中信息的类型。在父子维度中不显示此属性。
Member Count | 级别中成员的数目，该值可以是 Analysis Services 上次对成员计数时的估计值，也可以是用户提供的成员数目估计值。如果级别在专用维度中，可通过单击"工具"菜单上的"对维度成员计数"而更新该成员计数。
Member Key Column | 包含成员键的列。此外，该值还可以从某一列中派生得到，如从日期格式列中提取年份值的表达式。这种表达式的语法必须遵守数据源提供程序的要求，否则处理将因遇到一个或多个错误而失败。
Member Keys Unique 指明成员键在级别内部是否唯一。此属性不能用于父子维度。

如果此属性的值已更改，则必须用"完整处理"选项重新处理当前多维数据集。有关更多信息，请参见处理多维数据集。
Member Name Column | 含有成员名称的列，在最终用户浏览多维数据集时对他们显示这些名称。此外，该值还可以从某一列中派生得到，如从日期格式列中提取年份值的表达式。这种表达式的语法必须遵守数据源提供程序的要求，否则处理将因遇到一个或多个错误而失败。
Member Names Unique | 指明成员的名称在级别内部是否唯一。如果该值为 True，那么内部成员名称将忽略起限定作用的成员名称。这些内部成员名称用于 MDX 表达式中。
Name | 级别的名称。
Order By | 显示成员时所用的排序顺序。可以按成员名称、成员键或任意为级别定义的成员属性来排序。
Parent Key Column | 包含成员父代的键的列。此属性仅用于父子维度。
Root Member If 指明识别最高级别（如果有"（全部）"级别则忽略该级别）成员的准则。下列值有效：
  • Parent is blank, self, or missing：如果成员符合下列三个准则中的任意一个，该成员就属于最高级别。

  • Parent is blank：如果成员的 Parent Key Column 中的值为空或 0（零），则该成员就属于最高级别。

  • Parent is self：如果成员的 Parent Key Column 中的值等于 Member Key Column 中的值，则该成员就属于最高级别。

  • Parent is missing：如果成员的 Parent Key Column 中的值在 Member Key Column 中不存在，则该成员就属于最高级别。

此属性仅用于父子维度。
Skipped Levels Column | 指明包含成员与其父代之间的级别数目的列，该成员及其父代不计入该数目。该列中的有效值为 0（零）和正整数。此属性仅用于父子维度。
Unary Operators 启用一元运算符或自定义汇总运算符，这些运算符控制级别成员如何聚合到其父级成员的值中。有关更多信息，请参见自定义汇总运算符。若要查看自定义成员公式，请在"视图"菜单上单击"数据"命令，然后查看成员属性窗格中 UNARY_COLUMN 旁边的值。

如果多维数据集有一个具有 Distinct Count 聚合函数的度量值，或者您将自定义汇总运算符添加到了多维数据集的级别上，则多维数据集结构将无效。
Visible | 指明最终用户浏览多维数据集时，该级别是否可见。若要将此属性设置为 False，就必须首先将下方所有级别的 Member Keys Unique 属性设置为 True。Visible 属性不能用于父子维度。与 Visible 属性设置为 False 的其它对象不同，级别不能在计算成员和其它 MDX 表达式的计算成员中显式引用。
度量值 Aggregate Function 用于聚合度量值的函数。有效值为：
  • Sum：维度成员的度量值的计算方法是：将维度外键值等于该成员或其一个后代键值的行中的该度量值 Source Column 内的值相加。

  • Count：维度成员的度量值的计算方法是：将维度外键值等于该成员或其一个后代键值的行中的该度量值 Source Column 内的值相加。对空值不进行计数。

  • Min：维度成员的度量值是特定行中度量值 Source Column 内的最小值；特定行是指维度外键值等于该成员或其一个后代键值的行。

  • Max：维度成员的度量值是特定行中度量值 Source Column 内的最大值；特定行是指维度外键值等于该成员或其一个后代键值的行。

  • Distinct Count：维度成员的度量值的计算方法是：将维度外键值等于该成员或其一个后代键值的行中的该度量值 Source Column 内的值相加。一个多维数据集内只能含有一个带 Distinct Count 聚合函数的度量值。

如果多维数据集有一个具有 Distinct Count 聚合函数的度量，并且您将自定义汇总运算符或表达式添加到了多维数据集的级别上，则多维数据集结构将无效。

不同维度的成员形成的交集的度量值也使用所选聚合函数进行计算。有关聚合函数的更多信息，请参见聚合函数。

多分区多维数据集可以有多个事实数据表，因此一个度量值可以有多个源列。（请注意，每个资源列均必须有相同的列名称。）这种情况下，聚合函数涉及所有源列。
Data Type | 存储了聚合中度量值的列数据类型。
Description | 对度量值的描述。
Display Format | 当最终用户浏览多维数据集时对其显示的度量值格式。有关更多信息，请参见显示格式。
Name | 度量值的名称。最终用户浏览多维数据集时即可看到此名称。
Source Column | 在多维数据集默认分区的事实数据表中，度量值被聚合前所在的存储的列。
Visible | 指明最终用户浏览多维数据集时，该度量值是否可见。
成员属性 | Caption | 用于显示该成员属性的标题。
Data Size | 存储成员属性值的列中所允许的最大字符数目。当列的数据类型不匹配但内容代表同一值时，允许维度表链接到事实数据表。
Data Type | 存储成员属性值的列的数据类型。当列的数据类型不匹配但内容代表同一值时，允许维度表链接到事实数据表。
Description | 成员属性的描述。
Language | 用于显示该成员属性的语言。
Name | 成员属性的名称。
Source Column | 存储成员属性值的列。此列必须属于成员属性所在维度的某一维度表。
Type | 用于向客户端应用程序指明成员属性值中的信息类型。
Visible | 指明最终用户浏览多维数据集时，该成员属性是否可见。
命名集 | Name | 命名集的名称。
Value | 定义命名集的 MDX 表达式。


架构选项卡（多维数据集编辑器架构视图）

使用"架构"选项卡可以显示带有黄色标题栏的多维数据集事实数据表和所有带有蓝色标题栏的维度表。联接由在各表之间连接键列的线表示。

在"架构"选项卡中，可以以图形显示的形式组织多维数据集的结构，添加度量值和共享维度，以及创建专用维度。

若要查看表中的所有列，请垂直拉长表的窗口或使用滚动条。还可拉宽表窗口查看长的列名。

说明 更改多维数据集的结构会导致上一次对多维数据集处理的结果无效。在多维数据集的结构更改后，必须处理该多维数据集以重新创建它的数据。

在架构选项卡中工作

本节介绍可在"架构"选项卡中执行的操作。许多操作可以通过多种方法执行。例如，一个操作可以通过拖放过程实现，也可以通过右击对象后单击快捷菜单上的项目实现。

添加新表

  • 在"架构"选项卡内右击任何地方，然后单击"插入表"命令。在这个新的维度表和事实数据表之间会自动创建一个使用键列的联接。

浏览表中的数据

  • 右击表的标题栏，然后单击"浏览数据"命令。

在两个表间创建联接

  • 在第一个表中选择键列名称，然后将它拖动到第二个表中相应的键列名称上。

删除两个表间的联接

  • 右击表示联接的线，然后单击"删除"命令。

删除维度表

  • 右击表的标题栏，然后单击"删除"命令。

替换事实数据表

  • 右击"架构"选项卡中的空白区，然后单击"替换事实数据表"命令。

新的事实数据表会刷新架构。与已有维度表的联接是从相应表中的公用键列构造的。

当替换事实数据表时，如果多维数据集内含有多个分区，则这些分区的事实数据表不会自动更改。（如果多维数据集内只含有一个分区，该分区的事实数据表就会更改以与多维数据集的新事实数据表匹配。）若要更改某个分区的事实数据表，请在 Analysis Manager 树窗格中右击该分区，单击"编辑"命令，然后使用分区向导。

更改表的别名

  • 右击表的标题栏，然后单击"更改别名"命令。

    说明 如果该表是用来定义虚拟维度的维度的源表。则该功能不可用。

添加新的维度

可从表中所含的任意列添加新的多维数据集维度。

  • 右击该列，然后单击"作为维度插入"命令。

    -或-

  • 双击该列。在"映射列"对话框中单击"维度"选项，然后单击"确定"按钮。

    -或-

  • 从"架构"选项卡中将列名拖动到"维度"文件夹。

    说明 如果要在多维数据集内添加或删除维度，必须重新设计聚合并重新处理多维数据集。

添加新的度量值

可从事实数据表中所含的任意数字列或时间列添加新的度量值。每个多维数据集必须至少含有一个度量值。

  • 右击该列，然后单击"作为度量值插入"命令。

    -或-

  • 双击该列。在"映射列"对话框中单击"度量值"选项，然后单击"确定"按钮。

    -或-

  • 从"架构"选项卡中将列名拖动到 Measures 文件夹。

    说明 如果要在多维数据集内添加或删除度量值，必须重新设计聚合并重新处理多维数据集。


多维数据集处理设置对话框

使用"多维数据集处理设置"对话框可以指定处理多维数据集的设置。在处理多维数据集或其某个分区时使用该对话框中的设置。

单击"处理多维数据集"对话框中的"设置"按钮时，将显示此对话框。在"Analysis Services 处理任务"对话框中单击"多维数据集设置"时，也会显示此对话框。

重要 多维数据集或分区选项随多维数据集或分区的元数据存储。对这些选项的设置的更改将替换多维数据集或分区的以前的设置，不管此选项是由 Analysis Manager、数据转换服务 (DTS) 任务还是由决策支持对象 (DSO) 应用程序设置。

选项

计算所有聚合后

选中此选项，使得只有已计算所有聚合后才可以浏览数据。这是默认选项。

紧接着数据装载之后

选中此选项，以便在已装载数据但尚未计算完所有聚合前，可以浏览数据。新数据可以立即用于查询，但是分析服务器可能无法立即对查询操作进行响应。

遇到缺少维度键的错误时停止处理

选中此选项，在遇到维度键错误时将停止处理。

  • 遇到下列情况后停止处理

    指定错误数目，使得出现此数目的错误后停止处理。默认设置为零。

忽略所有缺少维度键的错误

继续处理而不考虑维度键错误。

将维度键错误记录到日志文件中

选中此选项以便为文本文件提供路径。建议使用通用命名规则 (UNC) 路径。

  • 文件路径和名称

    直接将路径键入"文件路径和名称"对话框。

  • 浏览

    单击以选择文件的本地或网络位置。

请参见

处理多维数据集对话框

处理多维数据集

Analysis Services 处理任务对话框


多维数据集角色对话框

使用该对话框可以创建或编辑多维数据集角色。

在多维数据集角色管理器中执行下列任一操作时，即会显示该对话框：

  • 单击"新建"或"编辑"。

  • 在列表中选定的行中，单击除"角色"或"说明"外的任何列，然后单击编辑（"..."）按钮。根据单击编辑（"..."）按钮时所在的列，会显示相应的选项卡，光标也会放置在相应的框内。

"多维数据集角色"对话框有三个选项卡。有关这些选项卡的更多信息，请单击下表中的链接。

若要执行 | 请参见
查看角色定义的摘要。仅当您正在编辑某个现有角色时才能看见该选项卡。 | 摘要选项卡（多维数据集角色对话框）
维护角色中用户和组的列表。 在此选项卡上所做的更改将传播到与所编辑的多维数据集角色同名的数据库角色和多维数据集角色上。 | 成员资格选项卡（多维数据集角色对话框）
当为多维数据集定义了角色时，控制角色对该多维数据集内维度的访问。 | 维度选项卡（多维数据集角色对话框）
当为多维数据集定义了角色时，控制角色对该多维数据集内单元的访问。 | 单元选项卡（多维数据集角色对话框）
启用或禁用角色的多维数据集链接、钻取和 SQL 查询。 | 选项选项卡（多维数据集角色对话框）

说明 多维数据集角色的默认值是从同名的数据库角色派生的。

选项

所有选项卡中都将显示下列选项。

角色名

查看角色的名称。名称最长可以为 50 个字符，该名称必须以字母字符开始。如果正在编辑现有的角色，则无法对该角色的名称进行更改。

描述

查看对角色的描述。最多可以输入 200 个字符。如果正在编辑现有的角色，则该选项不可用。

强制于

查看或设置强制实施安全性的位置："服务器"或"客户端"。服务器强制更安全，但可能降低运行速度。客户端强制一般会提供更好的性能，但会增加黑客未经授权就访问客户端工作站上数据的危险。

如果选择"客户端"，那么查询可能部分或全部在客户端工作站上解析。

如果选择"服务器"，那么查询将全部在分析服务器上或数据源处解析。以独占方式存储在客户端工作站上的用户定义函数将无法使用。

恢复默认值

单击此选项，则会用与多维数据集角色同名的数据库角色的定义替换整个多维数据集角色定义。


摘要选项卡（多维数据集角色对话框）

使用该选项卡可以查看多维数据集角色定义的摘要。此选项卡是只读的，并且仅当您编辑多维数据集角色时才会出现。

框

成员资格

查看角色中的 Microsoft® Windows NT® 4.0 或 Windows® 2000 用户及组。

受限维度

查看具有完全受限或自定义的读取权限或读/写权限的多维数据集维度。

若要更改维度安全性设置，请使用"维度"选项卡。有关更多信息，请参见维度选项卡（多维数据集角色对话框）。

单元

查看关于当前单元安全性设置的信息。

若要更改单元安全性设置，请使用"单元"选项卡。有关更多信息，请参见单元选项卡（多维数据集角色对话框）。


成员资格选项卡（多维数据集角色对话框）

使用该选项卡来维护角色中的 Microsoft® Windows NT® 4.0 或 Windows® 2000 用户和组。

说明 在此选项卡上所做的更改将传播到与所编辑的多维数据集角色同名的数据库角色和多维数据集角色上。

选项

名称

查看角色中的 Microsoft Windows NT 4.0 或 Windows 2000 用户和组。

域

查看角色中用户和组的域。

添加

查看"添加用户和组"对话框，以便向角色中添加新的用户或组。

删除

单击该选项可以从角色中删除所选的用户或组。


维度选项卡（多维数据集角色对话框）

使用该选项卡可以控制角色对角色所为之定义的多维数据集内维度的访问。

维度安全性由权限和规则定义。维度总有读取权限，但只有写启用的维度才具有读/写权限并可以由最终用户更新。对于每种权限，都可以从多种规则中进行选择（在本主题中的稍后部分说明）。

说明 对读/写权限所做的更改会传播到具有相同名称的数据库角色中。

有关维度安全性的更多信息，请参见维度安全性。

选项

名称

查看多维数据集中维度的名称。不显示数据挖掘维度。Analysis Services 不支持数据挖掘维度的安全性。

权限

查看或设置与维度相关的权限。维度可具有读或读/写权限。

选项 | 描述
读取 | 决定角色中的用户可以查看哪些维度成员。所有维度均具有读取权限。
读/写 | 决定角色中的用户可以更新哪些维度成员。只有写启用的维度才有读/写权限。如果在读/写权限中允许访问某个成员，即使在读取权限中无法访问该成员，也可以查看它。

对于每种显示的权限，请选择一个规则。

规则

查看或设置与所显示权限相关的规则。下表描述可用于每种权限的规则。

权限 | 规则 | 规则描述
读取 | 无限制 | 角色可以查看所有成员。这是默认规则。
 | 完全受限 | 角色不能查看成员。当角色中的用户浏览多维数据集时，他们看不到维度。
 | 自定义 | 只能查看在"自定义维度安全性"对话框中指定的级别和成员。若要访问此对话框，请选择"自定义"选项，然后在"自定义设置"列中单击编辑（"..."）按钮。有关更多信息，请参见定义维度安全性的自定义规则。
读/写 | 无限制 | 角色可以更新所有成员。仅当读取权限的规则为"无限制"时，才能使用此规则。
 | 完全受限 | 角色不能更新成员。这是默认规则，并且仅当读取权限的规则为"无限制"或"完全受限"时，才能使用此规则。
 | 自定义 | 只能更新在"自定义维度安全性"对话框中指定的级别和成员。若要访问此对话框，请选择"自定义"选项，然后在"自定义设置"列中单击编辑（"..."）按钮。仅当读取权限的规则为"无限制"或"自定义"时，才能使用此规则。有关更多信息，请参见定义维度安全性的自定义规则。

自定义设置

查看或设置自定义规则的描述。对于其它规则，此列空白。

请参见

写启用的维度


单元选项卡（多维数据集角色对话框）

使用该选项卡可以控制角色对角色所为之定义的多维数据集内单元的访问。

单元安全性由策略、权限和规则定义。

默认策略为无限制读取。对于写启用的多维数据集，可以选择无限制读／写的策略。对于任何多维数据集，都可以选择"高级"策略，它允许选择可以访问的单元和不可以访问的单元。

仅使用"高级"策略为每个显示的权限选择或定义规则。如果采用"高级"策略，多维数据集总是具有读取权限和读附随权限。但是，只有写启用的多维数据集才具有读/写权限并可由最终用户更新。（如果虚拟多维数据集的一个或更多组件多维数据集是写启用的，则该虚拟多维数据集就有读/写权限。）对于每种权限，都可以从多种规则中进行选择，本主题中的稍后部分将说明这些规则。

有关单元安全性的更多信息，请参见单元安全性。

选项

单元安全性策略

请从下列策略中进行选择：

  • 无限制读取

    角色可以查看所有的单元值。这是默认策略。

  • 无限制读/写

    角色可以查看和更新所有单元值。只有写启用的多维数据集才能使用这个策略。只有它的一个或多个组件多维数据集是写启用的时，它才是可用的虚拟多维数据集。

  • 高级

    角色只可以查看和更新在权限和规则中指定的单元值。

  • 允许用户提交回写更改

    仅"单元安全性策略"为"高级"的写启用的多维数据集可以使用此选项。选中该选项将允许用户对回写表进行实际的修改。如果该选项未启用，则更改仅应用于特别分析并且是临时的。

权限

查看或设置权限。只有在"单元安全性策略"为"高级"时才使用权限。多维数据集角色可以有读取权限、读附随权限或读／写权限。

选项 | 描述
读取 | 决定角色中的用户可以查看哪些单元。所有多维数据集的多维数据集角色都具有读取权限。
读附随 | 在满足下列条件的基础上，决定角色中的用户可以查看哪些单元：如果某单元是在该权限中指定并从其它单元中派生的，则只有在这些其它单元都是可查看的时它才可查看。如果这些其它单元包括在读取权限或读附随权限中，但不是从其它单元中派生的，则都被认为是可查看的。如果某单元是在读附随权限中指定并且不是从其它单元中派生的，则它是可查看的。 最常见的派生单元是针对计算成员的。例如，计算成员 Profit 是从度量值 Sales 和 Cost 中派生的（Profit 等于 Sales 减 Cost）。如果 Profit 的单元是在读附随权限中指定的，则只有在 Sales 和 Cost 的单元都可见（即包含在读取权限或读附随权限中但不是从其它单元中派生的）时它们才可见。 如果某单元既包含在读取权限中，又包含在读附随权限中，则读取权限是强制实施的，但读附随权限不是。所有多维数据集的多维数据集角色都具有读附随权限。
读/写 | 决定角色中的用户可以更新哪些单元。只有在相关多维数据集为写启用或相关虚拟多维数据集具有一个或更多写启用的组件多维数据集时，多维数据集角色才具有读/写权限。如果允许访问读/写权限中的单元，则它是可查看的，即使它在读取权限中或读附随权限中是不可访问的。在这种情况下，单元是可查看的，就象它在读取权限中是可访问的一样。

如果"单元安全性策略"为"高级"，则请为每个所显示的权限都选择一条规则。

说明 在读取权限中包含派生单元将招致一种危险：最终用户可以确定他们无法查看的单元值。例如，如果 Profit 包含在读取权限中，Cost 的单元可查看，但 Sales 的单元不可查看，则最终用户可以通过将 Profit 和 Cost 值相加而确定 Sales 值。

规则

查看或设置规则。仅当"单元安全性策略"为"高级"时，才可以使用规则。

下表描述可用于每种权限的规则。

权限 | 规则 | 规则描述
读取 | 无限制 | 角色可以查看所有的单元值。这是默认规则。
 | 完全受限 | 在满足本主题前面部分中所讲述的有关限制的条件下，角色只能查看在读/写权限或读附随权限中指定的单元值。
 | 自定义 | 可以在"多维数据集单元安全性"对话框中指定可查看和不可查看的单元值。若要访问此对话框，请选择"自定义"，然后在"自定义设置"列中单击编辑（"..."）按钮。
读附随 | 无限制 | 角色可以查看所有不是从其它单元中派生的单元值。如果某一单元值派生自其它单元，那么只有当所有其它单元都包括在读取或读/写权限中时，该单元值才可以查看。
 | 完全受限 | 角色只可以查看在读取权限或读/写权限中指定的单元值。这是默认规则。
 | 自定义 | 可以在满足本主题前面部分所讲述的有关限制的条件下，在"多维数据集单元安全性"对话框中指定可查看和不可查看的单元值。若要访问此对话框，请选择"自定义"，然后在"自定义设置"列中单击编辑（"..."）按钮。
读/写 | 无限制 | 角色可以更新所有单元值。
 | 完全受限 | 角色无法更新单元值。
 | 自定义 | 可以在"多维数据集单元安全性"对话框中指定可更新和不可更新的单元值。若要访问此对话框，请选择"自定义"，然后在"自定义设置"列中单击编辑（"..."）按钮。

如果规则将单元定义为不可查看，则单元本身可见，而它的值却不可见。

自定义设置

查看自定义规则的描述。对于其它规则，此列空白。

请参见

写启用的多维数据集


选项选项卡（多维数据集角色对话框）

使用该选项卡可以控制角色对角色所为之定义的多维数据集内单元的数据的访问。

选项

允许钻取

选择该选项可使角色中的最终用户能够一直钻取到单元的源数据。该功能还要求对多维数据集或它的至少一个分区启用钻取。有关更多信息，请参见指定钻取选项。

如果多维数据集角色针对一个已链接的多维数据集，则该复选框会被取消选择，并且是只读选项。已链接的多维数据集不支持钻取。

允许链接到此多维数据集

若选中该选项，则允许角色中的最终用户使用该多维数据集作为已链接的多维数据集的源多维数据集。默认情况下，此复选框是被选中的。

允许向此多维数据集发送 SQL 查询

选中该选项，则角色中的最终用户能够执行 SQL 查询，以便在多维数据集中查找单元值。默认情况下，此复选框是被选中的。

请参见

链接多维数据集


多维数据集角色管理器

使用该工具维护多维数据集角色。

多维数据集角色只适用于单个多维数据集。在多维数据集角色管理器中选择一个数据库角色，然后将该数据库角色指派给一个多维数据集，这样就创建了一个多维数据集角色。此操作授予角色中的用户以访问多维数据集的权利。多维数据集角色的名称和默认值是从所选数据库角色中派生的。某些默认值在多维数据集角色中可以被替代。此外，多维数据集角色中含有一些数据库角色中所没有的选项，诸如单元安全性。

在多维数据集角色管理器中，列表中每个带选中复选框的行都显示一个多维数据集角色。这些角色中的用户可以访问多维数据集角色管理器的标题栏中所显示的多维数据集。对这些角色的维护可在多维数据集角色管理器内进行。

每个未选中的行显示一个未指派给多维数据集的数据库角色。这些角色中的用户无法访问多维数据集，除非他们另外还处于一个或更多已选择的多维数据集角色中。无法在多维数据集角色管理器内对这些数据库角色进行维护。（若要维护它们，请使用数据库角色管理器。）

若要授予数据库角色中的用户对多维数据集的访问权，请选中数据库角色旁边的复选框。该操作将创建与数据库角色同名的多维数据集角色，并从列表中删除数据库角色。

注意 清除角色旁边的复选框将会删除多维数据集角色和它的所有设置，包括单元安全性设置。

若要拒绝某个多维数据集角色中的用户访问多维数据集，请清除该多维数据集角色旁边的复选框。此操作将删除该多维数据集角色，并将与该多维数据集角色同名的数据库角色添加到列表中。

列表的排序方式是多维数据集角色在前，数据库角色在后。每个类别则按照"角色"列中角色名称的字母顺序排序。

在 Analysis Manager 树窗格中右击一个多维数据集，然后单击"管理角色"命令，即会显示多维数据集角色管理器。

选项

查看角色是否可以访问多维数据集角色管理器的标题栏中所显示的多维数据集。只有选中的角色可以访问多维数据集。

角色

显示角色名称。

强制于

设置强制实施安全机制的位置："服务器"或"客户端"。服务器强制更安全，但可能降低运行速度。客户端强制一般会提供更好的性能，但会增加黑客未经授权就访问客户端工作站上数据的危险。

如果选择"客户端"，那么查询可能部分或全部在客户端工作站上解析。

如果选择"服务器"，那么查询将全部在分析服务器上或数据源处解析。以独占方式存储在客户端工作站上的用户定义函数将无法使用。

若要更改其值，请单击该值，单击编辑（"..."）按钮，然后在"多维数据集角色"对话框中的"强制于"框内选择新值。

成员资格

查看每个角色中的 Microsoft® Windows NT® 4.0 或 Windows® 2000 用户及组。

若要更改多维数据集角色的成员资格，请单击角色与"成员资格"相交的单元，单击编辑（"..."）按钮，然后使用"多维数据集角色"对话框的"成员资格"选项卡。

说明 在此选项卡上所做的更改将传播到与所编辑的多维数据集角色同名的数据库角色和多维数据集角色上。

受限维度

查看具有完全受限或自定义的读取权限或读/写权限的多维数据集维度。

若要访问多维数据集角色的维度安全性设置，请单击角色与"受限维度"相交的单元，单击编辑（"..."）按钮，然后使用"多维数据集角色"对话框的"维度"选项卡。

单元

查看单元安全性策略。一个锁形图标指明该角色的单元安全性策略是"高级"。

如果 Cells 列是空白的，那么单元安全性策略是"无限制读取"。

若要访问多维数据集角色的单元安全性设置，请单击角色与"单元"相交的单元，单击编辑（"..."）按钮，然后使用"多维数据集角色"对话框的"单元"选项卡。

钻取

选择角色中的最终用户是否可以一直钻取到单元的源数据。该功能还要求对多维数据集或它的至少一个分区启用钻取。有关更多信息，请参见指定钻取选项。

要更改该值，请单击此值，再单击编辑（"..."）按钮，然后在"多维数据集角色"对话框的"选项"选项卡上，选中或清除"允许钻取"复选框。

描述

查看对每个角色的描述。若要更改描述，请单击该描述，单击编辑（"..."）按钮，然后在"多维数据集角色"对话框中的"说明"框内键入新的描述。

显示

单击以限制列表中显示的角色。可以用角色中的用户名或组名进行限制。

包含用户的角色
选择以通过角色中的用户名或组名进行限制。键入用户名或组名，或者键入名称的第一部分，然后单击放大镜按钮。
分配给多维数据集的角色
选择以通过角色分配到的多维数据集进行限制键入多维数据集名，然后单击放大镜按钮。

新建

单击以显示"多维数据集角色"对话框，以便创建新的多维数据集角色。当创建新的多维数据集角色时，也就同时创建了具有相同名称和规范的数据库角色。

编辑

单击以显示"多维数据集角色"对话框中已选择的多维数据集角色，以便编辑该多维数据集角色。

复制

单击以显示"重复角色"对话框，在此可根据已选多维数据集角色为新的多维数据集角色提供名称，然后显示"多维数据集角色"对话框，以便定义新的多维数据集角色。当以这种方法创建新的多维数据集角色时，也就同时创建了具有相同名称和规范的数据库角色。

测试角色

单击以通过显示多维数据集浏览器模拟所选角色，在该浏览器中可以浏览多维数据集，就如同该角色中的用户一样。使用该按钮可以测试读取权限和读随附权限，但不能测试读/写权限。多维数据集浏览器不支持回写。

若要测试最终用户是否包含在多个角色中，请选择这些角色，然后单击"测试角色"命令。


自定义维度安全性对话框

使用该对话框可以创建自定义规则以保证维度安全性。

可以指定可由角色访问的维度级别的范围。在该范围内，您还可以指定哪些维度成员是可访问的。

重要 如果要使用"基本"或"高级"选项卡限制对级别或成员的访问，请考虑在"公用"选项卡中选择"启用 — 显示直观合计"。如果不这样选择，而是使用直观合计的默认设置（即"禁用 — 不显示直观合计"），那么可能会产生安全漏洞。这些漏洞使角色中的最终用户得以推知他们本无权限访问的成员的值。有关更多信息，请参见维度安全性中的自定义规则中的示例 4、示例 6、示例 8 及示例 9。

在"数据库角色"对话框或"多维数据集角色"对话框的"维度"选项卡中选择自定义规则，然后在"自定义设置"列中单击编辑（"..."）按钮，即会显示该对话框。

"自定义维度安全性"对话框有三个选项卡。有关这些选项卡的更多信息，请单击下表中的链接。

若要执行 | 请参见
通过从树的列表和成员中选择级别来定义自定义规则 | 基本选项卡（自定义维度安全对话框）
通过提供多维表达式 (MDX) 定义自定义规则 指定可由角色访问的维度级别范围，并指定该范围内哪些维度成员是可访问的 | 高级选项卡（自定义维度安全对话框）
指定直观合计的选项，并选择默认成员 | 公用选项卡（自定义维度安全对话框）

选项

所有选项卡中都将显示下列选项。

权限

查看自定义规则所应用到的权限。该框是只读的。

说明 如果自定义规则应用于多维数据集角色中的读/写权限，则所做的更改就会传播到同名的数据库角色中。

描述

输入对自定义规则的描述。

恢复默认值

废弃对多维数据集角色所做的任何更改。

确认

单击此按钮关闭对话框。关闭对话框后，可通过单击"编辑数据库角色"对话框或"编辑多维数据集角色"对话框中的"确定"来保存自定义规则（使用哪个对话框取决于是以数据库角色还是以多维数据集角色工作）。

请参见

维度安全性中的自定义规则


基本选项卡（自定义维度安全性对话框）

使用该选项卡可以通过从列表中选择级别并从树中选择成员而定义自定义规则。

该选项卡包含如下过程：

  1. （可选）。在"选择可见级别"区域中，选择级别。

  2. 在"选择成员"区域中，为成员选择选择一种默认的设置，然后有选择地选择一些成员。

在该选项卡中选定的内容会动态地刷新"高级"选项卡。有关更多信息，请参见高级选项卡（自定义维度安全对话框）。

选项

顶层级别

单击以显示可访问的最顶层级别。在顶层以上的级别是无法访问的。顶层级别必须在底层级别以上或与其同级别。顶层以上级别的成员不显示在"成员"框中。

底层级别

单击以显示可访问的最底层级别。在底层以下的级别是无法访问的。底层级别必须在顶层级别以下或与其同级别。底层以下级别的成员不显示在"成员"框中。

可见级别

根据"顶层级别"和"底层级别"框中的值查看可访问的级别。"可见级别"框是只读的。

选定所有成员

单击以选择所有的成员。然后可以通过清除"成员"框中各成员的复选框指定不可访问的成员。

说明 如果单击"选择所有成员"选项，然后清除一个或多个复选框，后来又决定要选择所有成员，则必须先单击"取消选择所有成员"选项，再单击"选择所有成员"选项。

取消选定所有成员

单击以清除对所有成员的选择。然后可以通过选中"成员"框中各成员的复选框指定可访问的成员。

说明 如果单击"取消选择所有成员"选项，然后又选中一个或多个复选框，后来又决定要清除对所有成员的选择，则必须先单击"选择所有成员"选项，再单击"取消选择所有成员"选项。

成员

查看顶层级别和底层级别之间的所有成员，包括顶层级别和底层级别中的成员。已选成员都是可访问的，而未选成员都是不可访问的。

选中成员旁边的复选框即可允许对该成员的访问。该操作还会选择"成员"框中可见的该成员后代及祖先。

清除成员旁边的复选框即可拒绝对该成员的访问。该操作还会清除对"成员"框中可见的该成员后代的选择。


高级选项卡（自定义维度安全对话框）

使用该选项卡可以通过提供多维表达式 (MDX) 语句定义自定义规则。

可以指定可由角色访问的维度级别的范围，以及在该范围内有哪些维度成员是可以访问的。

该主题中含有针对该选项卡中每个选项的 MDX 表达式示例。有关这些选项的更多信息以及更多示例，请参见维度安全性中的自定义规则。

如果能够成功地转换在该选项卡中提供的表达式，该表达式就会动态刷新"基本"选项卡。如果无法转换它们，则会在"基本"选项卡中出现一条通知消息。有关更多信息，请参见基本选项卡（自定义维度安全对话框）。

选项

若要提供下列选项的 MDX 表达式，可以直接键入或单击编辑（"..."）按钮打开 MDX 生成器。

"允许的成员"和"拒绝的成员"框是可选的。

顶层级别

提供代表可访问的最顶层级别的 MDX 表达式。例如，在 Microsoft® SQL Server™ Analysis Services 随带的 Warehouse 维度中，若要将 State Province 指定为顶层级别，请键入下列表达式：

[Warehouse].[State Province]

顶层级别必须在底层级别以上或与其同级别。顶层以上级别的成员是无法访问的，即使他它们已包含在"允许的成员"框内的表达式中。

底层级别

提供代表可访问的最底层级别的 MDX 表达式。例如，在 Warehouse 维度中，若要将 City 指定为底层级别，请键入以下表达式：

[Warehouse].[City]

底层级别必须在顶层级别以下或与其同级别。对底层以下级别的成员无法进行访问，即使它们已包含在"允许的成员"框内的表达式中。

允许的成员

为可被访问成员的集合提供 MDX 表达式。这些成员的后代也是可访问的，除非它们在顶层级别以上或在底层级别以下，或者"拒绝的成员"框中的表达式拒绝了对它们的访问。这些成员仅有的可被访问的非后代是它们位于最高级别及最高级别下方的祖先。

例如，在 Warehouse 维度中，若要允许访问 WA 和 OR 成员，请键入下列表达式：

{[Warehouse].[All Warehouses].[USA].[WA],
[Warehouse].[All Warehouses].[USA].[OR]}

拒绝的成员

为不可访问的成员集提供 MDX 表达式。这些成员的后代也不能被访问，除非"允许的成员"框中的表达式允许对它们的访问。非后代可被访问，除非它们位于顶层上方或底层下方。

例如，在 Warehouse 维度中，若要拒绝对 Seattle、Tacoma 和 Bremerton 成员的访问，请键入下列表达式：

{[Warehouse].[All Warehouses].[USA].[WA].[Seattle],
[Warehouse].[All Warehouses].[USA].[WA].[Tacoma],
[Warehouse].[All Warehouses].[USA].[WA].[Bremerton]}
组合示例

该示例演示在读取权限中使用本主题中前面所用到的全部示例而产生的效果。如果角色中的用户发出将 Warehouse 维度投射到 Y 轴上的 MDX 查询，则在返回数据集且用户充分展开 Warehouse 维度后，它将如下显示：

"（全部）"、Country 和 Warehouse Name 级别中的成员是不可见的，因为它们是在顶层级别以上或底层级别以下。可见的 State Province 级别的成员只有 OR 和 WA，因为它们是在"允许的成员"框中被指定的。可见的 City 级别的成员只有那些未被"拒绝的成员"框中的表达式拒绝的 OR 和 WA 的后代。


公用选项卡（自定义维度安全对话框）

使用该选项卡可以指定直观合计的选项，并可定义默认成员。

直观合计的选项将确定用户是否能看到用下列成员的值计算的聚合多维数据集单元值：

  • 只看到他们能够看到的成员（用户看到直观合计）。

  • 所有成员（用户看到实际合计）。

一个选项在指定级别以上的级别（包括该级别）产生直观合计，在指定级别以下的级别产生实际合计。

如果选择默认成员，并且查询被发送到包含相应维度的多维数据集上，但查询不将该维度投射到轴上，则在默认情况下返回的数据集将被默认成员筛选（即进行切片）。如果没有选择默认成员，默认成员将由维度的 Default Member 属性决定，可在维度编辑器（如果维度是共享的)或多维数据集编辑器（如果维度是专用的）的属性窗格中访问该属性。

选项

启用 — 显示直观合计

所显示的聚合单元值是只根据可查看成员计算的。

说明 对包含非重复计数度量值的多维数据集，无法启用直观合计。有关更多信息，请参见使用聚合函数。

自定义 — 显示从下列级别开始向上的各个级别的直观合计:

若要在某个级别以上的级别（包括该级别）产生直观合计，但在其以下级别产生实际合计，请选择该选项，并以多维表达式 (MDX) 的形式键入与级别对应的表达式。也可以不必键入，而是单击框旁边的生成（"..."）按钮访问 MDX 生成器，可以在该生成器中的"数据"框内选择级别，然后将其拖到"MDX 表达式"框内。MDX 表达式必须命名级别或解析出级别。

例如，若要在 Geography 维度中显示在 Continent 级别及以上级别的直观合计，请键入：

[Geography].[Continent]

重要 当允许最终用户通过组合各允许成员的值而计算拒绝成员的值时，该选项将导致在指定级别以下发生一个或更多安全性暴露问题。例如，在 Geography 维度中，如果 France 有两个子成员 Northern France 和 Southern France，并且只有 Northern France 被拒绝，则角色中的用户可以通过从 France 的值中减去 Southern France 的值而算出 Northern France 的值。

禁用 — 不显示直观合计

所显示的聚合单元值是根据所有成员（不论它们是否可见）计算的。该选项是直观合计的默认选项。

重要 当允许最终用户通过组合各允许成员的值而计算拒绝成员的值时，该选项将导致发生一个或更多安全性暴露问题。例如，在 Geography 维度中，如果 France 有两个子成员 Northern France 和 Southern France，并且只有 Northern France 被拒绝，则角色中的用户可以通过从 France 的值中减去 Southern France 的值而算出 Northern France 的值。

定义默认成员并用 MDX 指定

若要选择默认成员，请选中该复选框，并在它下面的框内键入默认成员的 MDX 表达式。也可以不必键入，而是单击框旁边的编辑（"..."）按钮访问 MDX 生成器，可以在该生成器中的"数据"框内选择默认的成员，然后将其拖到"MDX 表达式"框内。

例如，若要在 Geography 维度中选择 France 成员，请键入：

[Geography].[All Geography].[Europe].[France]


数据挖掘模型浏览器

使用本工具，可以以易于理解的形式提供可视化的数据挖掘模型内容。此工具由几个窗格组成，如下所示。

当执行以下操作之一时，会显示数据挖掘模型浏览器：

  • 在 Analysis Manager 树窗格中，右击一个数据挖掘模型，然后单击"浏览"命令。

  • 在 Analysis Manager 树窗格中，单击数据挖掘模型，然后单击"对策"菜单上的"浏览"命令。

数据挖掘模型浏览器有五个区域。有关这些区域的更详细信息，请单击下表中的链接。

若要执行 | 请参见
更改内容详情窗格的视图并选择预测树。 | 工具栏（数据挖掘模型浏览器）
查看挖掘模型的结构。 查看定义数据挖掘模型内容的节点，并查看每个节点所用的规则。 | 内容详情窗格（数据挖掘模型浏览器）
浏览数据挖掘模型内容，尤其有复杂结构的内容。查看整个数据挖掘模型的数据密度。 更改内容详情窗格的视图。 | 内容选择区窗格（数据挖掘模型浏览器）
查看内容详情窗格中所选数据挖掘模型节点中包括分布数据在内的特性及节点路径。 | 特性窗格（数据挖掘模型浏览器）
更改数据挖掘模型中节点上颜色标记所用的特性。 | 图例窗格（数据挖掘模型浏览器）
用键盘快捷方式在浏览器内进行选择。 | 键盘快捷方式（数据挖掘模型浏览器）

请参见

使用数据挖掘模型浏览器查看


工具栏（数据挖掘模型浏览器）

使用数据挖掘模型浏览器工具栏更改"内容详情"窗格的视图并选择预测树。

工具 | 描述
放大 | 在"内容详情"窗格中放大数据挖掘模型内容。
缩小 | 在"内容详情"窗格中缩小数据挖掘模型内容。
预测树列表 | 数据挖掘模型可具有多个预测树，视模型结构和数据挖掘提供程序而定。预测树列表使您得以单独查看各个模型的预测树。

请参见

内容详情窗格（数据挖掘模型浏览器）

使用数据挖掘模型浏览器查看

数据挖掘模型浏览器


内容详情窗格（数据挖掘模型浏览器）

使用"内容详情"窗格查看挖掘模型的结构。"内容详情"窗格通过显示定义数据挖掘模型内容的节点，来展示数据挖掘模型的结构，并显示各个节点所使用的规则（如果有的话）。按照"数据挖掘模型浏览器"底部所提供的图例，各个数据模型节点根据各自的数据密度按不同的颜色深浅显示。一般而言，颜色越浅，选定特性的数据密度越低。节点的定位也可提供数据挖掘模型的信息。节点根据数据挖掘模型内的因子等级，从左向右显示。一般情况下，树越向下分枝，数据挖掘模型中造成拆分的事实的影响就越小。

用将节点连接起来的直线表示节点间的关系，称之为节点路径。当在本窗格中选择了节点时，"特性"窗格显示用于跟踪给定节点路径的规则。

可以在"内容详情"窗格中选择节点，以便在"特性"窗格中查看该节点的特性、分布和规则。若要选择数据挖掘模型节点，请单击它，会有突出显示的边框出现在所选节点周围，如图表所示。

在"内容详情"窗格上单击右键，显示带有以下两个选项的菜单：

菜单选项 | 描述
放大 | 放大数据挖掘模型内容。
缩小 | 缩小数据挖掘模型内容。

请参见

特性窗格（数据挖掘模型浏览器）

使用数据挖掘模型浏览器查看

数据挖掘模型浏览器


内容选择区窗格（数据挖掘模型浏览器）

使用内容选择区窗格可方便地浏览数据挖掘模型的内容，尤其是具有复杂结构的内容。通过根据数据挖掘模型浏览器窗口底部所提供的图例以不同的颜色深浅显示数据挖掘模型内容，"内容选择区"窗格还提供可以展示整个数据挖掘模型数据密度的简洁视图。

内容详情区展示当前显示于内容详情窗格中的数据挖掘模型的部分。单击内容选择区窗格内的不同区域即可移动该区域，并会更改内容详情窗格的视图。

请参见

内容详情窗格（数据挖掘模型浏览器）

使用数据挖掘模型浏览器查看

数据挖掘模型浏览器


特性窗格（数据挖掘模型浏览器）

使用"特性"窗格可查看内容详情窗格中所选数据挖掘模型节点中包括分发数据在内的特性及节点路径。

工具 | 描述
节点特性集 | 使用此工具可以更改用于确定内容详情窗格和内容选择区窗格中节点的颜色深浅的特性集。对于所有聚集模型及基于多特性集的任何树模型，均会显示该工具。
节点信息选项卡 | 可查看一个节点特性集的一组合计与分发，该集合最多包含 20 个特性。使用"合计"选项卡查看所选节点的事例合计，使用"柱状"选项卡查看属于所选节点的事例的分发图表。双击列标题可以更改特性排序的顺序。
节点路径 | 使用本工具查看要到达所选节点需要满足的规则。到达某个节点所需的所有规则沿给定节点路径显示于本区。

说明 由于在 Microsoft® SQL Server™ 2000 Analysis Services 中采用的数据挖掘算法，使得即使某个特性没有任何事例，特性窗格也有可能会显示大于 0 的概率。

请参见

内容详情窗格（数据挖掘模型浏览器）

使用数据挖掘模型浏览器查看

数据挖掘模型浏览器


图例窗格（数据挖掘模型浏览器）

使用图例窗格，查看并更改在"内容详情"窗格中用来以不同颜色深浅表示节点的特性。

颜色深浅取决于特定特性的事例数目与对树或节点所评估的事例总数目的相对值。例如，如果为给定节点评估的事例总数是 80，与特定特性相关的事例数是 40，则节点的颜色深浅将会位于图例所表示的色度范围的中间部分。

工具 | 描述
图例 | 显示用于表示节点数据密度高低的颜色范围。如果特性是用"特性颜色深浅"列表选择的，图例则用于表示所选特性的节点的高低特性概率。
节点特性集 | 用此工具可以更改用于确定内容详情和内容选择区窗格中节点的颜色深浅的特性集。对于所有聚集模型和基于多特性集的任何树模型，均会显示该工具。
特性颜色深浅列表 | 用此工具可以更改用于确定内容详情窗格和内容选择区窗格中每个节点的颜色深浅的特性。

请参见

内容详情窗格（数据挖掘模型浏览器）

内容选择区窗格（数据挖掘模型浏览器）

使用数据挖掘模型浏览器查看

数据挖掘模型浏览器


键盘快捷方式（数据挖掘模型浏览器）

此表描述可在数据挖掘模型浏览器中使用的键盘快捷方式。可以用快捷方式访问除内容选择区窗格外的所有浏览器部件。

有些部分支持其它快捷方式。一个部分获得焦点后，即可使用快捷方式在该部分内导航。

活动 | 快捷方式
将焦点移至下一个项目。导航进度从屏幕的左上角向右下角移动。 可以用 TAB 键访问预测树、内容详情窗格、特性窗格、节点路径、特性颜色深浅列表和帮助。 焦点处于内容详情窗格时，可以用箭头键选择模型。 | TAB（反向顺序用 SHIFT + TAB）
在内容详情窗格与特性窗格间切换焦点。 | F6
当焦点处于内容详情窗格中时，在窗格中右击可访问"放大"和"缩小"菜单命令。 | SHIFT+F10
当焦点处于"内容详情"窗格时放大。 | CTRL+ -
当焦点处于"内容详情"窗格时缩小。 | CTRL+ +
将焦点移至预测树窗格，然后用箭头键在列表内导航，并用 ENTER 键选定其它值。 | ALT+ P
将焦点移至特性颜色深浅列表，然后用箭头键在列表内导航，并用 ENTER 键选定不同的值。 | ALT+ O
将焦点移至节点路径窗格，然后用箭头键选择文本。 | ALT+ D
将焦点移至特性窗格，然后用箭头键在"汇总"和"柱状"选项卡间导航并滚动选项卡内容。 | ALT+ U
当焦点在一个特性上时，复制文本。 | CTRL+ C
当焦点在特性上时，选择全部内容。 | CTRL+ A
打开帮助。 | ALT+ H

请参见

内容详情窗格（数据挖掘模型浏览器）

内容选择区窗格（数据挖掘模型浏览器）

使用数据挖掘模型浏览器查看

数据挖掘模型浏览器


数据挖掘预测查询任务对话框

使用此对话框可以添加数据转换服务 (DTS) 任务，以便从 Microsoft® SQL Server™ 2000 Analysis Services 所定义的数据挖掘模型对象中，创建预测查询和输出表。有关使用 DTS 创建预测查询的更多信息，请参见使用数据转换服务创建预测。

在 DTS 设计器中执行下面任意一项操作时，都将显示该对话框：

  • 将数据挖掘预测查询任务的图标从"任务"栏拖到设计表中。

  • 右击一项数据挖掘预测查询任务，然后单击"属性"。

  • "数据挖掘预测查询任务"对话框有三个选项卡。有关这些选项卡的更多信息，请单击下表中的链接。
    若要执行 | 请参见
    为数据挖掘预测查询任务指定分析服务器、数据库及数据挖掘模型 | 挖掘模型选项卡（数据挖掘预测查询任务对话框）
    为查询及其输出表指定预测查询和数据源 | 查询选项卡（数据挖掘预测查询任务对话框）
    为预测查询的输出表指定数据源 | 输出选项卡（数据挖掘预测查询任务对话框）

选项

名称

输入任务的名称。

描述

（可选）输入对任务的描述。此描述会成为设计表上的标签。


挖掘模型选项卡（数据挖掘预测查询任务对话框）

使用此选项卡可以指定数据挖掘预测查询任务的分析服务器、数据库及数据挖掘模型。

选项

服务器

指定分析服务器的名称，该名称应与包含挖掘模型的网络中的计算机名称一致。不要使用通用命名约定 (UNC) 或网络路径。

数据库

选择指定的分析服务器上的现有数据库。

数据挖掘模型

针对任务，单击挖掘模型的名称或图标选定它。

详细信息

查看对所选挖掘模型的描述。描述中包括其算法和处理状态。


查询选项卡（数据挖掘预测查询任务对话框）

使用此选项卡可以指定查询及其输出表的预测查询和数据源。

选项

输入数据源

输入连接到输入查询数据源的有效 Microsoft® ActiveX® 数据对象 (ADO) 连接字符串；或单击编辑（"..."）按钮以显示"数据链接属性"对话框，在该对话框中建立连接字符串。

预测查询

键入查询的语法，或单击"新建查询"显示预测查询生成器，在该生成器中创建查询语法。语法必须符合数据挖掘 OLE DB 规范。有关数据挖掘 OLE DB 规范的更多信息，请参见 Microsoft Web 站点上的 Microsoft OLE DB Web 页。

新建查询

单击此选项可以启动预测查询生成器。

请参见

预测查询生成器


输出选项卡（数据挖掘预测查询任务对话框）

使用此选项卡可以指定预测查询输出表的数据源。

选项

输出数据源

输入连接到输入查询数据源的有效 Microsoft® ActiveX® 数据对象 (ADO) 连接字符串；或单击编辑（"..."）按钮以显示"数据链接属性"对话框，在该对话框中创建连接字符串。

输出表

输入预测查询输出表的名称。


数据库对话框

可以使用"数据库"对话框新建 Microsoft® SQL Server™ 2000 Analysis Services 数据库，或更改对现有数据库的描述。

在 Analysis Manager 树窗格中右击一个数据库或服务器，然后单击"新建数据库"命令，即会显示该对话框。右击一个数据库，然后单击"编辑"命令，也会显示该对话框。

选项

数据库名称

键入数据库的名称。如果正在编辑现有的数据库，则该选项不可用。

描述

键入对数据库的简短描述。


数据库角色对话框

使用该对话框可以创建或编辑数据库角色。

在数据库角色管理器中执行下列任何操作后，即会显示该对话框：

  • 单击"新建"或"编辑"。

-或-

  • 在列表中的某行中单击除"角色"外的任意一列，然后单击编辑（"..."）按钮。根据单击编辑（"..."）按钮时所在的列，会显示相应的选项卡，光标也会放置在相应的框内。

"数据库角色"对话框有四个选项卡。有关这些选项卡的更多信息，请单击下表中的链接。

若要执行 | 请参见
维护角色中用户和组的列表。 | 成员资格选项卡（数据库角色对话框）
授予或拒绝对数据库中多维数据集的访问权限。 | 多维数据集选项卡（数据库角色对话框）
授予或拒绝对数据库中数据挖掘模型的访问权限。 | 挖掘模型选项卡（数据库角色对话框）
控制角色对数据库中维度的访问。 | 维度选项卡（数据库角色对话框）

选项

下列选项可用于所有选项卡。

角色名

输入角色的名称。输入的名称最长可以为 50 个字符，该名称必须以字母字符开始。如果编辑已有的角色，则对话框将显示出该角色的名称，您无法对它进行更改。

描述

输入对角色的描述。最多可以输入 200 个字符。

强制于

选择强制实施安全性的位置："服务器"或"客户端"。服务器强制更安全，但可能降低运行速度。客户端强制一般会提供更好的性能，但会增加黑客未经授权就访问客户端工作站上数据的危险。

如果选择"客户端"，那么查询可能部分或全部在客户端工作站上解析。

如果选择"服务器"，那么查询将全部在分析服务器上或数据源处解析。以独占方式存储在客户端工作站上的用户定义函数将无法使用。


成员资格选项卡（数据库角色对话框）

使用该选项卡可以维护角色中用户和组的列表。

说明 在此选项卡上所做的更改将传播到与数据库角色同名的所有多维数据集角色上。

选项

名称

查看角色中的 Microsoft® Windows NT 4.0 或 Windows® 2000 用户及组。

域

查看角色中用户和组的域。

添加

查看"添加用户和组"对话框，以便向角色中添加新的用户或组。

删除

单击该选项可以从角色中删除所选的用户或组。


多维数据集选项卡（数据库角色对话框）

使用该选项卡可以准许或拒绝对数据库中多维数据集的访问。

若要准许对一个多维数据集的访问，请选中它旁边的复选框。这种操作还会创建与数据库角色同名的多维数据集角色。

注意 清除多维数据集旁边的复选框将会删除相关的多维数据集角色及其所有设置，包括单元安全性设置。

若要拒绝对一个多维数据集的访问，请清除它旁边的复选框。这种操作还会删除与该多维数据集相关的多维数据集角色和与数据库角色同名的多维数据集角色。

选项

该列将确定多维数据集是否可由角色中的用户访问。只有已选中的多维数据集才是可访问的。

多维数据集名称

查看数据库中多维数据集的名称。

全部选中

单击该选项以清除所有显示的多维数据集。

全部清除

单击该选项以清除所有显示的多维数据集。


挖掘模型选项卡（数据库角色对话框）

使用该选项卡可以授予或拒绝对数据库中数据挖掘模型的访问权限。

若要授予对一个挖掘模型的访问权限，请选中它旁边的复选框。这种操作还会创建与数据库角色同名的挖掘模型角色。

说明 在此选项卡上所做的更改将被传播到与数据库角色同名的所有挖掘模型角色上。

若要拒绝对一个挖掘模型的访问，请清除它旁边的复选框。这个动作还会删除某个挖掘模型角色，这个角色与该挖掘模型相关并且与数据库角色具有相同的名称。

选项

只有带选中复选框的挖掘模型才能接受角色中用户的访问。

挖掘模型名称

查看数据库中挖掘模型的名称。

全部选中

单击该选项以清除所有显示的挖掘模型。

全部清除

单击该选项以清除所有显示的挖掘模型。


维度选项卡（数据库角色对话框）

使用该选项卡可以控制角色对数据库中维度的访问。

维度安全性由权限和规则定义。维度总有读取权限，但只有写启用的维度才具有读/写权限并可由最终用户更新。对于每种权限，都可以从多个规则中进行选择。

说明 数据库角色中的维度安全性设置在同名的多维数据集角色中可以被替代。

有关维度安全性的更多信息，请参见维度安全性。

选项

名称

查看数据库中维度的名称。

不显示专用维度和数据挖掘维度。要定义专用维度的安全性，请使用"多维数据集角色"对话框中的"维度"选项卡。Analysis Services 不支持数据挖掘维度的安全性。

权限

查看与维度相关的权限。维度可具有读或读／写权限。

选项 | 描述
读取 | 决定角色中的用户可以查看哪些维度成员。所有维度均具有读取权限。
读/写 | 决定角色中的用户可以更新哪些维度成员。只有写启用的维度才具有读/写权限。如果在读/写权限中允许访问某个成员，即使在读取权限中无法访问该成员，也可以查看它。

对于每种显示的权限，请选择一个规则。

规则

查看与所显示权限相关的规则。下表描述可用于每种权限的规则。

权限 | 规则 | 规则描述
读取 | 无限制 | 角色可以查看所有成员。这是默认规则。
 | 完全受限 | 角色不能查看成员。当角色中的用户浏览包含维度的多维数据集时，他们看不到该维度。
 | 自定义 | 只能查看在"自定义维度安全性"对话框中指定的级别和成员。若要访问此对话框，请选择"自定义"选项，然后在"自定义设置"列中单击编辑（"..."）按钮。
读/写 | 无限制 | 角色可以更新所有成员。仅当读取权限的规则为"无限制"时，才能使用此规则。
 | 完全受限 | 角色不能更新成员。这是默认规则，并且仅当读取权限的规则为"无限制"或"完全受限"时，才能使用此规则。
 | 自定义 | 只能更新在"自定义维度安全性"对话框中指定的级别和成员。若要访问此对话框，请选择"自定义"选项，然后在"自定义设置"列中单击编辑（"..."）按钮。仅当读取权限的规则为"无限制"或"自定义"时，才能使用此规则。

自定义设置

查看自定义规则的描述。对于其它规则，此列空白。

请参见

定义维度安全性的自定义规则

写启用的维度


数据库角色管理器

使用此对话框创建并维护数据库角色，或者为指派给数据挖掘模型的数据库角色设置值。

列表中的每行都显示一个数据库角色。该列表按"角色"列中角色名称的字母顺序进行排序。

每个数据库角色都定义了一系列用户和组，以及他们共享的访问。可以将一个数据库角色指派给数据库中的任何多维数据集（包括虚拟的和链接的多维数据集）以及数据挖掘模型。该操作将授予角色中的用户对多维数据集或挖掘模型的访问权限。它还可以使用与数据库角色相同的名称创建多维数据集角色或挖掘模型角色。

说明 数据库角色中的某些值在同名多维数据集角色中可以被替换。但是，数据库角色值不能为同名挖掘模型角色所替换，原因是无法在挖掘模型角色管理器中编辑角色属性。

多维数据集角色只适用于单个多维数据集。多维数据集角色的默认值是从同名的数据库角色派生的。某些默认值在多维数据集角色中可以被替代。在这种情况下，数据库角色中的规范不是角色中的用户访问多维数据集时所使用的规范。若要确定所使用的规范，请参见多维数据集角色。多维数据集角色的维护在多维数据集角色管理器中进行。

在 Analysis Manager 树窗格中右击一个数据库，然后单击"管理角色"命令，即会显示数据库角色管理器。

选项

角色

查看数据库角色的名称。

强制于

查看强制实施安全性的位置："服务器"或"客户端"。服务器强制更安全，但可能降低运行速度。客户端强制一般会提供更好的性能，但会增加黑客未经授权就访问客户端工作站上数据的危险。

如果选择"客户端"，那么查询可能部分或全部在客户端工作站上解析。

如果选择"服务器"，那么查询将全部在分析服务器上或数据源处解析。以独占方式存储在客户端工作站上的用户定义函数将无法使用。

若要更改其值，请单击该值，单击编辑（"..."）按钮，然后在"数据库角色"对话框中的"强制于"框内选择新值。

成员资格

查看每个数据库角色中的 Microsoft® Windows NT® 4.0 或 Windows® 2000 用户和组。

若要更改某数据库角色的成员资格，请单击该角色与"成员资格"相交的单元，单击编辑（"..."）按钮，然后使用"数据库角色"对话框中的"成员资格"选项卡。

说明 在此选项卡上所做的更改将传播到与数据库角色同名的所有多维数据集角色上。

多维数据集和挖掘模型

查看每个数据库角色都可以访问的多维数据集和挖掘模型。

若要更改数据库角色可以访问的多维数据集或挖掘模型，则在角色与"多维数据集和挖掘模型"交叉的单元中，单击编辑（"..."）按钮，以显示"数据库角色"对话框。接着，使用"多维数据集"或"挖掘模型"选项卡。

受限维度

查看具有完全受限或自定义的读取权限或读/写权限的数据库的维度。

若要访问某数据库角色的维度安全性设置，请单击该角色与"受限维度"相交的单元，单击编辑（"..."）按钮，然后使用"数据库角色"对话框中的"维度"选项卡。

描述

查看对每个数据库角色的描述。

若要更改描述，请单击该描述，单击编辑（"..."）按钮，然后在"数据库角色"对话框中的"描述"框内键入新的描述。

显示

单击该选项以限制列表中显示的数据库角色。可以通过角色中的用户名或组名进行限制，或者通过一个多维数据集（将角色指派给该多维数据集）进行限制。

若要通过角色中的用户名或组名进行限制，请在"显示"旁边的第一个框中，选择"包含用户的角色"。在下一个框内键入用户名或组名，或键入名称的第一部分。单击放大镜按钮。

若要通过一个多维数据集（将角色指派给了该多维数据集）进行限制，请在"显示"旁边的第一个框中，选择"分配给多维数据集的角色"。在下一个框内键入多维数据集名称。单击放大镜按钮。

新建

单击该选项以显示"数据库角色"对话框，在该对话框中，您可以创建新的数据库角色。

编辑

单击该选项以显示"数据库角色"对话框中所选的数据库角色，可在此对话框中编辑数据库角色。

复制

单击该选项以显示"重复角色"对话框，在该对话框中，您可以根据所选的数据库角色为新的数据库角色提供名称，然后启动"数据库角色"对话框，在该对话框中定义新的数据库角色。

删除

单击该选项以删除所选的数据库角色。


定义自定义成员列对话框

使用此对话框：

  • 启用或禁用自定义成员公式。

  • 创建或选择用来存储自定义成员公式的列。该列是在存储自定义成员公式所适用成员的同一维度表中创建的，或从该维度表中选择的。

自定义成员公式是多维表达式 (MDX) 形式的表达式，它可以决定与成员相关的单元值，并替代度量值的聚合函数。对于写启用的维度，自定义成员公式是在维度编辑器（如果维度是共享的）或维度浏览器的自定义成员公式窗格中创建的。（该操作要求写启用的维度包含在自该维度上次更改后已处理过的某个多维数据集中。）对于其它维度，使用 Analysis Manager 以外的工具将其插入维度表。

有关自定义成员公式的更多信息，请参见自定义汇总公式和自定义成员公式。

有关相关过程的更多信息，请参见创建自定义成员公式。

在维度编辑器或多维数据集编辑器的树窗格中选择一个级别，在属性窗格的"高级"选项卡中单击"自定义成员"旁边的值，然后单击编辑（"..."）按钮，即会显示"定义自定义成员列"对话框。

选项

启用自定义成员

选择该选项以启用自定义成员公式的使用。该操作将级别的 Custom Members 属性设为 True。具有自定义成员公式的成员的单元值将根据自定义成员公式来计算。

清除该选项以禁用自定义成员公式的使用。该操作将级别的 Custom Members 属性设为 False。自定义成员公式将被忽略；成员的单元值将根据度量值的聚合函数来计算。

创建新列

单击该选项以创建一个新列用以存储自定义成员公式。在"新列名"框内指定列名，它仅当选择了"创建新列"时才出现。

使用现有列

单击该选项以选择现有列用以存储自定义成员公式。在"现有列"框内选择列，仅当选择了"使用现有的列"时该框才出现。

说明 如果选择现有列，则自定义成员公式将覆盖其原有内容。

新列名

键入将存储自定义成员公式的列的名称。本选项只有当选择"创建新列"时才可用。

维度表可以有多个存储自定义成员公式的列（每个级别一列）。因此，建议新列名应可标识用于存储自定义成员公式所适用成员的列。例如，如果成员存储在 store_country 列，则键入：

store_country_custom_member_formula

现有列

选择将存储自定义成员公式的列。只有选择"使用现有的列"后，该选项才可用。

确认

单击以临时保存所做的更改并关闭对话框。若要永久保存自己的更改，请在本对话框关闭之后单击"文件"菜单上的"保存"命令。


定义自定义成员选项对话框

使用此对话框：

  • 启用或禁用自定义成员选项的使用。

  • 创建或选择用来存储自定义成员选项的列。该列是在存储自定义成员选项所应用的成员的同一维度表中创建的，或从该维度表中选择的。

自定义成员选项是专为自定义成员定义的单元属性。自定义成员选项可用来更改指定的自定义成员的单元字体、显示格式及其它特性。有关单元属性的更多信息，请参见单元属性的使用。

仅当级别的 Custom Members 属性设置为 True 时，此属性才是可用的。任何未定义为自定义成员的成员，均会忽略其该属性。换言之，对于自定义成员列中的给定成员，不会为之定义任何多维表达式 (MDX)。

Custom Member Options 属性接受每个成员的列引用，该引用包含以逗号分隔的单元属性列表。这些单元属性以字符串表达式的形式表示。有关更多信息，请参见单元属性的使用中的自定义成员选项。

在维度编辑器（如果是共享维度）或多维数据集编辑器（如果是专用维度）的树窗格中选择一个级别，在属性窗格的"高级"选项卡中单击"自定义成员选项"旁边的值，然后单击编辑（"..."）按钮，即会显示"定义自定义成员选项"对话框。仅当 Custom Members 属性设置为 True 时，此按钮才是可用的。

选项

启用自定义成员选项

选中此选项，即会启用自定义成员选项的使用，用以确定自定义成员的单元属性。此操作会将级别的 Custom Member Options 属性设置为 True。

清除此选项，即会禁用自定义成员选项的使用。此操作会将级别的 Custom Member Options 属性设置为 False。自定义成员选项将被忽略。

创建新列

单击此选项可以创建新列，用以存储自定义成员的单元属性。在"新列名"框内指定列名，它仅当选择了"创建新列"时才出现。

使用现有列

单击该选项以选择现有列，用以存储自定义成员的单元属性。在"现有列"框内选择列，仅当选择了"使用现有的列"时该框才出现。

说明 如果选择现有列，则自定义成员的单元属性将覆盖其原有内容。

新列名

键入要存储自定义成员的单元属性的列名称。本选项仅当选择了"创建新列"时才可用。

维度表可以有多个存储自定义成员单元属性的列（每个级别一列）。因此，建议新列名应可标识用于存储自定义成员选项所适用成员的列。例如，如果成员存储在 store_country 列，则键入：

store_country_custom_member_options

现有列

选择将存储自定义成员单元属性的列。仅当选择了"使用现有的列"后，该选项才可用。

确认

单击以临时保存所做的更改并关闭对话框。若要永久保存自己的更改，请在本对话框关闭之后单击"文件"菜单上的"保存"命令。


定义一元运算符列对话框

使用此对话框：

  • 启用或禁用自定义汇总运算符。

  • 创建或选择列来存储自定义汇总运算符。应在存储要应用自定义汇总运算符的成员的同一维度表中选择列或创建列。

自定义汇总运算符是简单的数学函数，可确定与成员相关的单元值并替代度量值的聚合函数。对于写启用维度，自定义汇总运算符创建于维度编辑器（如果维度为共享的）或维度浏览器的成员属性窗格。（该操作要求写启用的维度包含在自该维度上次更改后已处理过的某个多维数据集中。）对于其它维度，则使用 Analysis Manager 以外的工具将自定义汇总运算符插入维度表中。

有关自定义成员公式的更多信息，请参见自定义汇总运算符。

有关代表特定自定义汇总运算符的相关过程和信息，请参见使用自定义汇总运算符。

当在维度编辑器或多维数据集编辑器的树窗格中选择了某个级别，并在属性窗格的"高级"选项卡中单击"一元运算符"选项旁的值，然后单击编辑"（...）"按钮时，"定义一元运算符列"对话框即出现。

选项

启用一元运算符

选择该选项以启用自定义汇总运算符。本操作将该级别的 Unary Operators 属性设置为 True。带有自定义汇总运算符的成员的单元值将根据自定义汇总运算符进行计算。

清除该选项以禁用自定义汇总运算符。本操作将该级别的 Unary Operators 属性设置为 False。自定义汇总运算符被忽略，成员的单元值将根据度量值的聚合函数进行计算。

创建新列

单击该选项以创建新列存储自定义汇总运算符。在"新列名"框内指定列名，它仅当选择了"创建新列"时才出现。

使用现有的列

单击该选项以选择现有列存储自定义汇总运算符。在"现有列"框内选择列，仅当选择了"使用现有的列"时该框才出现。

说明 如果选择现有列，则自定义汇总运算符将替代其内容。

新列名

键入将存储自定义汇总运算符的列的名称。本选项只有当选择了"创建新列"时才可用。

维度表可有多个列（每个级别一列）来存储自定义汇总运算符。因此，建议新列名标识存储要应用自定义汇总运算符的成员的列。例如，如果成员存储在 store_country 列，则键入：

store_country_custom_rollup_operator

现有列

选择将存储自定义汇总运算符的列。仅当选择了"使用现有的列"后，该选项才可用。

确认

单击以临时保存所做的更改并关闭对话框。若要永久保存自己的更改，请在本对话框关闭之后单击"文件"菜单上的"保存"命令。


删除成员对话框

使用此对话框：

  • 确认对成员的删除。

  • 选择成员后代的部署。

注意 单击"确定"按钮即可删除所选成员。如果选择"删除其后代"选项，单击"确定"按钮还会删除该成员的后代。成员所对应的行将从维度表中删除。已保存维度回写更改后，将无法撤消删除操作。

在维度编辑器或维度浏览器的维度成员窗格中删除一个成员时，会出现该对话框。

仅当所选成员有后代的情况下，下列选项才可用。

选项

删除其后代

选择该选项可以删除已删除成员的后代。

提升其后代的级别

选择此选项可以将已删除成员的后代提升一个级别，保留为已删除成员父代的后代。


相关性网络浏览器

使用这个工具可以查看数据挖掘模型中各对象间的相关性或关系。

在 Analysis Manager 树窗格中右击一个数据挖掘模型然后单击"浏览相关性网络"时，就会显示相关性网络浏览器。

在相关性网络浏览器中，一个数据挖掘模型被表达为一个网络特性。在模型内，可以识别相关特性之间的数据相关性和可预测性。相关性用箭头表示。可预测性的方向用箭头方向和节点的颜色标记标明。有关为什么应该使用此浏览器的更多信息，请参见使用相关性网络浏览器查看。

可以使用键盘快捷方式导航到该浏览器。有关更多信息，请参见键盘快捷方式（相关性网络浏览器）。

相关性网络浏览器有四个区域。有关这些区域的更多信息，请单击下表中的链接。

若要执行 | 请参见
将数据挖掘模型作为相关特性的网络进行查看。 | 网络浏览器窗格（相关性网络浏览器）
更改网络浏览器窗格的视图，并按名称搜索特定特性。 | 工具栏（相关性网络浏览器）
使用游标显示相关性程度。 | 游标窗格（相关性网络浏览器）
查看并修改标明特性状态和可预测性的颜色标记。 | 图例窗格（相关性网络浏览器）

请参见

建立和使用数据挖掘模型


网络浏览器窗格（相关性网络浏览器）

使用网络浏览器窗格可以查看数据挖掘模型的内容。在这一窗格中，可使用工具栏工具调整视图，以查看该模型的更多内容，也可将焦点缩小在特定区域以查看其细节。

当您首次在浏览器中打开一个数据挖掘模型时，特性的位置就已经固定。但也可通过拖动这些特性将其移动到新位置。

选定一个特性时其容器颜色会改变，以反映选定状态。此外，周围节点的配色方案也会改变，以反映可预测性的方向。例如，对于您所选的每个特性，周围节点的颜色可以表明是这些节点预测所选的特性，还是由所选的特性对其进行预测，亦或是二者兼而有之。选择特性时还会显示图例窗格，该窗格为与配色方案相关联的可预测方向提供键。

在当前视图中，您可以通过重新定位游标指针来表明相关性的强度。向上移动游标，浏览器会随之添加箭头，以响应逐渐减弱的相关性。

您可以按照名称搜索特定特性，也可以将缺少的特性添加到网络浏览器窗格。如果模型非常大，最初的表示视图可能会遗漏联系弱的特性。若要将这些特性添加到网络浏览器窗格，请单击工具栏上的"查找"，选择感兴趣的节点。添加特性的同时也就添加了与之相连接的任何其它节点。

请参见

使用相关性网络浏览器查看

工具栏（相关性网络浏览器）

游标窗格（相关性网络浏览器）

图例窗格（相关性网络浏览器）

键盘快捷方式（相关性网络浏览器）


工具栏（相关性网络浏览器）

用工具栏可以更改网络浏览器的视图，并可按名称选择特性。

图标 | 标签 | 描述
 | 放大 | 在网络浏览器窗格中放大数据挖掘模型内容。数据挖掘模型会随着每次连续的单击而逐渐缩小。
 | 缩小 | 在网络浏览器窗格中缩小数据挖掘模型内容。数据挖掘模型会随着每次连续的单击而逐渐扩大。
 | 适屏缩放 | 单击该图标可以使数据挖掘模型的大小调整为网络浏览器窗格的整个区域。
 | 改善布局 | 单击该图标可以优化节点布局，这样即可看到最强健的关系。
 | 查找 | 单击该图标可以显示"查找节点"对话框，可在对话框中按名称选择特性。

请参见

使用相关性网络浏览器查看

相关性网络浏览器


游标窗格（相关性网络浏览器）

使用游标窗格可以标识特性间的关系强度。游标窗格是两个点之间的连接区。当沿着连接区移动游标时，连接的数字会随之发生变化：

  • "全部链接"显示网络浏览器窗格中所有可见特性的连接。将游标定位在"全部链接"，即可查看所有特性之间的关系。

  • "最强链接"只显示那些能够强烈预测所选特性存在的特性之间的关系。

请参见

使用相关性网络浏览器查看

相关性网络浏览器


图例窗格（相关性网络浏览器）

使用图例窗格可以查看标明特性状态和可预测性的颜色标记。若要更改颜色标记，请双击颜色样本以打开颜色选取器对话框。

图标 | 标签 | 描述
 | 选定的节点 | 当前选定的特性。一次只能选择一个特性。
 | 预测它的节点 | 指明预测所选特性的一个或多个特性。
 | 它预测的节点 | 指明所选特性预测的一个或多个特性。
 | 双向预测 | 两个相关特性间的预测，一个特性预测另一个特性，同时也为另一个特性所预测。

请参见

使用相关性网络浏览器查看

相关性网络浏览器


键盘快捷方式（相关性网络浏览器）

此表描述可以在相关性网络浏览器中使用的键盘快捷方式。这些快捷方式与工具栏按钮相对应。有关工具的更多信息，请参见工具栏（相关性网络浏览器）。

工具栏按钮 | 快捷方式
放大 | CTRL- +
缩小 | CTRL- -
适屏缩放 | ALT- F
改善布局 | ALT- L
查找 | CTRL- F

请参见

使用相关性网络浏览器查看

相关性网络浏览器


维度浏览器

使用该工具可以检查维度，包括其成员、成员特性、成员属性值和自定义成员公式。另外，维度浏览器还允许对写启用的维度进行更新。

执行下列一种操作后，就会显示维度浏览器：

  • 在 Analysis Manager 树窗格中右击一个共享维度或虚拟维度，然后单击"浏览维度数据"命令。

  • 在多维数据集编辑器的树窗格中右击某一维度，然后单击"浏览"命令。

维度浏览器以图形的形式显示维度，使您可以查看多级别的维度层次结构。

维度浏览器有三个区域。有关这些区域的更多信息，请单击下表中的链接。

若要执行 | 请参见
以树状形式显示维度成员。展开单个成员即可浏览其后代。 对于写启用维度，更新维度成员窗格中的成员层次结构和成员名称。添加、删除和移动成员。 | 维度成员窗格（维度浏览器）
查看维度成员窗格中所选成员的成员属性列表。 对于写启用的维度，可以更新成员属性值。 | 成员属性窗格（维度浏览器）
显示维度成员窗格中选定成员的自定义成员公式。 在某些情况下，为该级别的成员创建和更新自定义成员公式。 | 自定义成员公式窗格（维度浏览器）


维度成员窗格（维度浏览器）

使用此窗格以树形格式显示维度成员。展开单个成员即可浏览其后代。

如果维度是写启用的，并且包括在一个已处理的多维数据集中，则可以在维度成员窗格中更新成员层次结构和成员名称。可以添加、删除和移动成员。

重要 单击"关闭"，再单击"是"确认对写启用的维度所做的更改后，这些更改就会记录到维度表中。此后，这些更改将无法撤消，除非再次浏览该维度并手工进行反向更改。

若要移动某成员，可将它拖动到其新父代处。若要对成员进行添加、删除、移动或重命名，可以右击它，然后单击下列快捷菜单选项之一。

快捷菜单选项 | 单击可以
删除 | 显示"删除成员"对话框，在该对话框中可以确认对所选成员的删除，并选择其后代的部署。
下移 | 将所选成员（及其后代）在当前级别上向下移动。所选成员成为其父成员后面兄弟的的子成员。
上移 | 将所选成员（及其后代）在当前级别上向上移动。所选成员成为其父成员前面兄弟的的子成员。
缩进 | 将所选成员（及其后代）向下移动一个级别。所选成员前面的兄弟成为其新父代。如果所选成员前面没有兄弟，它后面的兄弟就成为其新父代。
凸出 | 将所选成员（及其后代）向上移动一个级别。所选成员的祖父代成为其新父代。
重命名 | 重命名所选的成员。
新成员 — 兄弟 | 显示"创建成员"对话框，在该对话框中可以添加所选成员的兄弟。
新成员 — 子代 | 显示"创建成员"对话框，在该对话框中可以添加所选成员的子代。

请参见

维度浏览器


成员属性窗格（维度浏览器）

使用此窗格查看在维度成员窗格中所选成员的成员属性列表。成员属性列表中包含所有由用户为所选成员定义的成员属性。

对于每个成员属性，窗格的第一列显示其名称，窗格的第二列显示其值。

如果维度是写启用的且包括在已处理的多维数据集中，则可以使用成员属性窗格更新成员属性值。

重要 单击"关闭"，再单击"是"确认对成员属性值所做的更改后，这些更改就会记录到维度表中。此后，这些更改将无法撤消，除非再次浏览该维度并手工进行反向更改。

请参见

维度浏览器


自定义成员公式窗格（维度浏览器）

如果满足一定的条件，则可以使用此窗格创建和更新所选级别的成员的自定义成员公式。所浏览的维度必须是写启用的，且其级别的 Custom Members 属性必须设置为 True。

自定义成员公式窗格将显示维度成员窗格中所选成员的自定义成员公式。如果没有可见的自定义成员公式，就不定义任何内容。

自定义成员公式是个多维表达式 (MDX)，可确定与成员相关的单元值，并替代度量值的聚合函数。有关自定义成员公式的更多信息，请参见自定义汇总公式和自定义成员公式。

自定义成员公式存储在含有相应成员的维度表中。

重要 单击"关闭"，然后单击"是"以确认对自定义成员公式所做的更改后，这些更改就会记录到维度表中。此后，这些更改将无法撤消，除非再次浏览该维度并手工进行反向更改。

选项

维度成员

以树状形式显示维度成员。展开单个成员即可浏览其后代。选定一个成员即可创建或更新该级别的成员。

成员属性

查看所选成员的成员属性。如果维度是写启用的，即可使用该窗格修改属性。

自定义成员公式

查看在维度成员窗格中选择的成员的自定义成员公式。如果没有可见的公式，就不定义任何内容。如果满足一定的条件，就可以使用自定义成员公式窗格创建和更新该级别的自定义成员公式。所浏览的维度必须是写启用的，且其级别的 Custom Members 属性必须设置为 True。

算术运算符按钮

单击该选项可以向公式添加运算符。

编辑（"..."）按钮

单击该按钮可以打开 MDX 生成器，在该生成器中可以创建 MDX 表达式。

有关更多信息，请参见创建自定义成员公式。

请参见

自定义汇总公式和自定义成员公式

维度浏览器


维度编辑器 -- 数据视图

 Analysis Services

维度编辑器 — 数据视图

使用此工具浏览共享维度的成员、成员属性和自定义成员公式。也可以检查并编辑所有类型的共享维度的结构（包括父子维度和虚拟维度）及其级别。还可以使用维度编辑器和连接对话框执行共享维度的不同过程。

维度编辑器显示在两个视图（数据视图和架构视图）中。这两个视图都具有树窗格和属性窗格。可以通过单击维度编辑器底部的"数据"选项卡或"架构"选项卡，或通过单击"视图"菜单中的"数据"或"架构"命令，从一个视图切换到另一个视图。

本主题对数据视图进行描述。有关架构视图的信息，请参见维度编辑器 — 架构视图。数据视图显示如下。

执行下列一种操作后，即会显示维度编辑器：

  • 在 Analysis Manager 树窗格中，打开某一数据库下的"共享维度"文件夹。右击一个维度，然后单击"编辑"命令。

  • 在 Analysis Manager 树窗格中，打开某一数据库下的"共享维度"文件夹。单击一个维度，然后在"操作"菜单上单击"编辑"命令。

维度编辑器有五个区域。有关这些区域的更多信息，请单击下表中的链接。

若要执行 | 请参见
执行维度编辑器菜单中的可用命令。 | 菜单（维度编辑器数据视图）
执行维度编辑器工具栏中用图标表示的公用对策。 | 工具栏（维度编辑器数据视图）
显示维度中的对象。 访问相关联的对话框。 | 树窗格（维度编辑器数据视图）
显示树窗格中所选对象的属性。 修改所选对象的属性设置。 | 属性窗格（维度编辑器数据视图）
浏览共享维度的成员、成员属性及自定义成员公式。 | 数据选项卡（维度编辑器数据视图）

请参见

创建自定义成员公式

用编辑器创建共享维度

创建成员组

创建成员属性


菜单（维度编辑器数据视图）

下面的选项在维度编辑器的菜单中可用。

菜单 | 选项 | 描述
文件 | 新建维度 — 向导 | 启动维度向导以创建新的共享维度。
 | 新建维度 — 编辑器 | 显示"选择维度表"对话框，以便用编辑器创建共享维度。
 | 保存 | 保存维度。如果正在保存父子维度或可更改维度，将会提示您执行维度的增量处理。
 | 另存为 | 使用另一个名称保存维度。
 | 退出 | 关闭维度编辑器。
编辑 | 重命名 | 重命名所选对象。
 | 删除 | 删除所选对象。
 | 删除联接 | 从所选列上删除所有联接（仅用于架构视图）。
视图 | 架构 | 显示架构视图，包括"架构"选项卡。
 | 数据 | 显示数据视图，包括"数据"选项卡。
 | 属性 | 展开或折叠属性窗格。
插入 | 表 | 显示"选择表"对话框以向维度中添加表。
 | 级别 | 显示"插入级别"对话框以添加新级别。
 | 成员属性 | 显示"插入成员属性"对话框以便在所选级别中添加新成员属性。
 | 联接 | 显示"联接列"对话框，可在此对话框中添加到选定列的联接（只在架构视图中）。
工具 | 处理维度 | 处理维度。
 | 对维度成员计数 | 计算维度中成员的数目。
 | 验证维度结构 | 验证维度结构中不含有会阻止维度处理的无效组件。
帮助 | 维度编辑器帮助 | 显示关于维度编辑器的帮助主题。
 | 目录和索引 | 打开 SQL Server 联机丛书。


工具栏（维度编辑器数据视图）

使用以下工具栏按钮执行通常的操作。

按钮 | 描述
新建维度 | 启动维度向导以创建新的共享维度。
保存 | 保存维度。如果您正在保存父子维度或可更改维度，则会提示您执行维度的增量处理。
插入表 | 显示"选择表"对话框，可在此对话框中向维度添加表。该按钮对于虚拟维度来说是不可用的。
插入级别 | 显示"插入级别"对话框以添加新级别。
插入成员属性 | 显示"插入成员属性"对话框以在所选级别中添加新成员属性。
处理维度 | 显示"处理维度"对话框以便增量更新或重建所选维度。
将所选成员左移* | 在维度成员窗格中，将所选成员（及其后代）向上移动一个级别。所选成员的祖父代成为其新父代。
将所选成员右移* | 在维度成员窗格中，将所选成员（及其后代）向下移动一个级别。所选成员前面的兄弟成为其新父代。
将所选成员上移* | 在维度成员窗格中，将所选成员（及其后代）在当前级别上向上移动。所选成员的父代前面的兄弟成为其新父代。
将所选成员下移* | 在维度成员窗格中，将所选成员（及其后代）在当前级别上向下移动。所选成员的父代后面的兄弟成为其新父代。

* 只有在数据视图中编辑一个写启用维度（自上次更改该维度后，该维度所在的多维数据集已被处理）时，该按钮才可见。


树窗格（维度编辑器数据视图）

使用树窗格在维度中显示对象。右击某一对象即可看到该对象的快捷菜单。

右击 | 快捷菜单选项 | 描述
维度 | 新建维度 | 显示"选择维度表"对话框，在此对话框中可以用编辑器创建共享维度。
 | 处理维度 | 处理维度。
 | 新建级别 | 显示"插入级别"对话框以添加新级别。
级别 | 新建级别 | 显示"插入级别"对话框以添加新级别。
 | 新建成员属性 | 显示"插入成员属性"对话框，可在其中添加级别的新成员属性。
 | 删除 | 删除级别。
 | 重命名 | 重命名级别。
"成员属性"文件夹 | 新建成员属性 | 显示"插入成员属性"对话框以添加新的成员属性。
成员属性 | 新建成员属性 | 显示"插入成员属性"对话框以添加新的成员属性。
 | 删除 | 删除成员属性。
 | 重命名 | 重命名成员属性。


属性窗格（维度编辑器数据视图）

使用属性窗格显示在树窗格中选定对象的属性。单击"属性"按钮可显示属性窗格。

每种类型的对象（维度、级别或成员属性）中都含有一套不同的属性。可用属性窗格修改所选对象的属性设置。

下表描述了显示在属性窗格中的属性。

对象 | 属性 | 描述
维度 | All Caption | "（全部）"级别中成员的名称。
All Level | 指明维度是否包含"（全部）"级别。如果该值为 Yes，"（全部）"级别就是维度的顶层级别，但不显示在维度编辑器树窗格中。"（全部）"级别包含一个成员，该成员的单元值是下一级别中所有成员的单元值的聚合。
All Member Formula | 存储用于替代"全部"成员的默认汇总的 MDX 表达式。
Allow Duplicate Names | 指明同一父代下的成员是否可以同名。
Changing | 指明是否为频繁更改而优化了维度。如果该值为 True，那么查询性能可能会较低。然而，可以对顶层之下和底层之上的级别和成员进行添加、移动和删除操作，并且消除或减少了随之而来的处理需要。于是，最终用户对该维度所在多维数据集的访问所受的干扰就可以减少。有关更多信息，请参见可更改维度。
Data Member Caption Template | 当维度的 Members With Data 属性设置为 Nonleaf data visible 时，本属性控制数据成员的名称。键入包含星号 (*) 的值。各数据成员的名称是将星号替换为父成员名称之后的值。Data Member Caption Template 属性仅可用于父子维度。
Data source | 指明包含维度表的数据源。
Default Member | 当轴上未显示维度并且未指定维度中的切片成员时，此属性指明对查询所返回的数据集进行切片的成员。如果未指定默认成员，并且维度的 All Level 属性为 Yes，那么 All Caption 属性所指定的成员就是默认成员。如果未指定默认成员，并且维度的 All Level 属性为 No，那么将以最高级别中的任意一个成员作为默认成员。
Depends on Dimension 对于虚拟维度，本属性指提供了作为虚拟维度的级别基础的成员属性或列的维度。

对于非虚拟维度，本属性是指优化聚合设计时所依据的维度。当两个维度的成员矢量积中不能共存的组合占很大百分比时，本属性值中的维度优先。例如，Customer Gender 维度的 Depends on Dimension 属性是 Customers。这两个维度的最低级别成员的矢量积中，有百分之五十的组合不能共存，因为每位客户只能有一种性别。有关更多信息，请参见相关性维度。
Description | 包含对维度的描述。
Enable Real-Time Updates | 指明该维度是否支持实时更新。要将此属性设置为 True，则维度必须使用 ROLAP 分区和 Microsoft® SQL Server™ 2000 数据源。有关更多信息，请参见实时多维数据集。
Member Keys Unique | 指明成员键在维度内部是否唯一。如果此属性的值已更改，则必须用"重建维度结构"选项处理该维度。这是只读属性，并且可更改维度的该属性必须设置为 True。有关更多信息，请参见更新和重建共享维度。
Member Names Unique | 指明成员的名称在维度内部是否唯一。如果该值为 True，那么内部成员名称将忽略起限定作用的级别名称和成员名称。这些内部成员名称用于多维度表达式 (MDX) 中。
Members with Data 指明非叶成员是否可以有相关联的事实数据表数据。如果可以有，那么本属性还指明是否将创建非叶成员的子代来显示这些数据。有效值为：
  • Leaf members only：只有叶成员可以有相关联的事实数据表数据。如果非叶成员有相关联的事实数据表数据，处理将失败。此值为默认值。

  • Nonleaf data hidden：非叶成员可以有相关联的事实数据表数据。这些数据在非叶成员的后代中将不展现出来。因此，有可能在最终用户看来聚合值是不正确的。

  • Nonleaf data visible：非叶成员可以有相关联的事实数据表数据。通过为每个非叶成员创建一个子代，这些数据将在非叶成员的后代中展现出来。这个子代称为数据成员，是一个叶成员，其值等于其父代相关联的事实数据表数据的聚合。数据成员的名称由 Data Member Caption Template 属性控制。

此属性仅用于父子维度。
Name | 指明维度的名称。
Source Table Filter 列出应用于维度表的 WHERE 子句表达式，用于限制维度中的成员。例如，在随同SQL Server 2000 Analysis Services 一起提供的 Store 维度中，若要只包含 Canada 成员及其后代，请键入：

"store"."store_country" = 'Canada'
Storage Mode | 确定维度的存储类型。如果其值为 MOLAP（多维 OLAP），则维度的数据将存储在分析服务器上的多维结构中。如果其值为 ROLAP（关系 OLAP），那么维度的数据就是维度表本身。MOLAP 提供更佳的性能，除了非常大的维度（即大约有500 到 1000 万成员的维度），都建议使用 MOLAP。如果要选择 ROLAP，那么最低级别的 Member Keys Unique 属性就必须为 True。在所有使用该维度的多维数据集内，对该维度的 Aggregation Usage 属性也存在限制。有关更多信息，请参见维度存储模式。
Type | 指明维度的类型。默认值为 Standard。此属性向客户应用程序指明维度中信息的类型。
Virtual | 指明维度是否为虚拟维度。如果将该属性设为 True，而 Depends on Dimension 属性为 (None) 时，"架构"选项卡中的表就会消失。请在 Depends on Dimension 属性中选择提供已编辑的维度所基于的列或成员属性的维度。所选维度的表即会出现在"架构"选项卡中。
Write-Enabled | 指明当管理员浏览维度时及最终用户浏览含有该维度的多维数据集时是否可以更新该维度的成员。只有对该维度拥有读／写权限的多维数据集角色中的最终用户，才能更新写启用维度。只有父子维度才可以是写启用的。有关更多信息，请参见写启用的维度。
级别 | Custom Members | 指明是否用自定义成员公式确定成员的单元值。有关更多信息，请参见自定义汇总公式和自定义成员公式。若要查看自定义成员公式，请在"视图"菜单上单击"数据"命令，然后查看自定义成员公式窗格。
Custom Member Options | 确定是否可以为此级别的自定义成员和下一级别的一元运算符定义计算选项。计算选项存储在维度表的某列中。要将此属性设置为 True，则必须先将 Custom Members 属性设置为 True。
Custom Rollup Formula | 存储用于替代级别中值的默认汇总的 MDX 表达式。
Description | 包含维度的描述。
Grouping | 指明级别是否包含成员组。成员组可用于满足每个父代下最多可有 64,000 个成员的限制。要以此种方式使用成员组，请在超出限制的级别的上一级创建一个与之相同的级别，然后将新级别的 Grouping 属性设置为 Automatic。有关更多信息，请参见成员组。
Hide Member If 决定哪些成员在用户浏览多维数据集时对用户为隐藏。隐藏成员可支持不齐整维度（即，在成员沿袭体系中存在逻辑断层的维度），方法是隐藏这些断层上的成员。有效值为：
  • Never hidden：不隐藏任何成员。

  • No name：名称为空或空字符串的成员将隐藏。

  • Parent's name：与父代同名的成员将隐藏。

  • Only child with no name：为独一子代并且名称为空或空字符串的成员将隐藏。

  • Only child with parent's name：为独一子代并且与父代同名的成员将隐藏。

此属性不能用于父子维度。
Key Data Size | 指明在聚合中存储成员键的列的大小（以字节为单位）。成员键从 Member Key Column 属性所指定的列中复制。
Key Data Type | 指明在聚合中存储成员键的列的数据类型。成员键从 Member Key Column 属性所指定的列中复制。
Level Naming Template | 决定当最终用户浏览含有相应维度的多维数据集时对他们显示的级别名称。此属性仅用于父子维度。单击该属性，然后单击编辑（"..."）按钮以显示"级别命名模板"对话框。
Level Type | 指明级别的类型。默认值为 Regular。仅在 Type 属性为 Time 的维度中才使用下列值：Years、Half-Years、Quarters、Months、Weeks、Days、Hours、Minutes、Seconds 和 Time-Undefined。Level Type 属性向客户应用程序指明级别中信息的类型。在父子维度中不显示此属性。
Member Count | 指明级别中成员的数目，该值可以是 Analysis Services 上次对成员计数时得到的值，也可以是用户提供的成员数目估计值。可通过单击"工具"菜单上的"对维度成员计数"命令来更新该值。
Member Key Column | 包含成员键。此外，该值还可以从某一列中派生得到，如从日期格式列中提取年份值的表达式。这种表达式的语法必须遵守数据源提供程序的要求，否则处理将因遇到一个或多个错误而失败。
Member Keys Unique 指明成员键在级别内部是否唯一。此属性不能用于父子维度。

如果此属性的值已更改，则必须用"重建维度结构"选项处理级别的相应维度。有关更多信息，请参见更新和重建共享维度。
Member Name Column | 指明含有成员名称的列，在最终用户浏览多维数据集时对他们显示这些名称。此外，该值还可以从某一列中派生得到，如从日期格式列中提取年份值的表达式。这种表达式的语法必须遵守数据源提供程序的要求，否则处理将因遇到一个或多个错误而失败。
Member Names Unique | 指明成员的名称在级别内部是否唯一。如果该值为 True，那么内部成员名称将忽略起限定作用的成员名称。这些内部成员名称用于 MDX 表达式中。
Name | 包含级别名。
Order By | 确定显示成员时所用的排序顺序。可以按成员名称、成员键或任意为级别定义的成员属性来排序。
Parent Key Column | 指明包含成员父代的键的列。此属性仅用于父子维度。
Root Member If 指明识别最高级别（如果有"（全部）"级别则忽略该级别）成员的准则。下列值有效：
  • Parent is blank, self, or missing：如果成员符合下列三个准则中的任意一个，该成员就属于最高级别。

  • Parent is blank：如果成员的 Parent Key Column 中的值为空或 0（零），则该成员就属于最高级别。

  • Parent is self：如果成员的 Parent Key Column 中的值等于 Member Key Column 中的值，则该成员就属于最高级别。

  • Parent is missing：如果成员的 Parent Key Column 中的值在 Member Key Column 中不存在，则该成员就属于最高级别。

此属性仅用于父子维度。
Skipped Levels Column | 指明包含成员与其父代之间的级别数目的列，该成员及其父代不计入该数目。该列中的有效值为 0（零）和正整数。此属性仅用于父子维度。
Unary Operators | 启用控制级别成员聚合到其父成员值中方式的一元运算符（自定义汇总运算符）。有关更多信息，请参见自定义汇总运算符。若要查看自定义汇总运算符，请在"视图"菜单上单击"数据"，然后查看成员属性窗格中 UNARY_COLUMN 旁边的值。
Visible | 指明最终用户浏览多维数据集时，该级别是否可见。若要将此属性设置为 False，就必须首先将下方所有级别的 Member Keys Unique 属性设置为 True。Visible 属性不能用于父子维度。对于单个多维数据集，该属性的值可以由多维数据集编辑器中的 Visible 属性替代。
成员属性 | Caption | 包含用于显示该成员属性的标题。
Data Size | 指明存储成员属性值的列中所允许的最大字符数目。
Data Type | 指明存储成员属性值的列的数据类型。
Description | 包含对成员属性的描述。
Language | 指明显示该成员属性的语言。
Name | 指明成员属性的名称。
Source Column | 指明存储成员属性值的列。此列必须属于成员属性所在维度的某一维度表。
Type | 向客户端应用程序提供指示符，用来指明成员属性值中的信息类型。
Visible | 指明最终用户浏览多维数据集时，该成员属性是否可见。


数据选项卡（维度编辑器数据视图）

使用该选项卡浏览共享维度的成员、成员属性和自定义成员公式。下列主题描述"数据"选项卡中的窗格：

  • 维度成员窗格（维度编辑器数据视图）

  • 成员属性窗格（维度编辑器数据视图）

  • 自定义成员公式窗格（维度编辑器数据视图）


维度成员窗格（维度编辑器数据视图）

以树状形式显示维度成员。展开单个成员即可浏览其后代。

如果维度是写启用的且包括在已处理的多维数据集中，则可以在维度成员窗格中更新成员层次结构和成员名称。可以添加、删除和移动成员。

注意 保存维度后，对写启用的维度所做的更改会记录到维度表中。此后，这些更改将无法撤消，除非编辑该维度并手工进行反向更改。

若要移动某成员，可将它拖动到其新父成员处，或使用工具栏上的"移动所选成员"按钮。若要对成员进行添加、删除、移动或重命名，可以右击它，然后单击下列快捷菜单选项之一。

快捷菜单选项 | 描述
删除 | 显示"删除成员"对话框，以便确认对所选成员的删除，并选择其后代的部署。
下移 | 将所选成员（及其后代）在当前级别上向下移动。所选成员成为其父成员后面兄弟的的子成员。
上移 | 将所选成员（及其后代）在当前级别上向上移动。所选成员成为其父成员前面兄弟的的子成员。
缩进 | 将所选成员（及其后代）向下移动一个级别。所选成员前面的兄弟成为其新父代。如果所选成员前面没有兄弟，它后面的兄弟就成为其新父代。
凸出 | 将所选成员（及其后代）向上移动一个级别。所选成员的祖父代成为其新父代。
重命名 | 重命名所选的成员。
新成员 — 兄弟 | 显示"创建成员"对话框，以便添加所选成员的兄弟。
新成员 — 子代 | 显示"创建成员"对话框，以便添加所选成员的子代。


成员属性窗格（维度编辑器数据视图）

此窗格列出了维度成员窗格中所选成员的成员属性。成员属性列表中包含所有由用户为所选成员定义的成员属性。

对于每个成员属性，窗格的第一列显示其名称，窗格的第二列显示其值。成员属性按与在树窗格中同样的顺序排序。

如果维度是写启用的且包括在已处理的多维数据集中，则可以使用成员属性窗格更新成员属性值。

注意 保存维度后，对成员属性值所做的更改会记录到维度表中。此后，这些更改将无法撤消，除非编辑该维度并手工进行反向更改。


自定义成员公式窗格（维度编辑器数据视图）

包含自定义成员公式，该公式是多维表达式 (MDX) 形式的表达式，可确定与成员相关的单元值，并替代度量值的聚合函数。有关自定义成员公式的常规信息，请参见自定义汇总公式和自定义成员公式。

自定义成员公式窗格将显示维度成员窗格中所选成员的自定义成员公式。如果没有可见的自定义成员公式，就不定义任何内容。

可以用自定义成员公式窗格，为该级别的成员创建并更新满足某些条件的自定义成员公式。被浏览的维度必须是写启用的、包括在已处理的多维数据集中，且其级别之一的一个 Custom Members 属性必须设置为 True。可采用下列方法的任何组合：

  • 类型。

  • 单击算术运算符按钮和圆括号按钮。

  • 单击编辑（"..."）按钮以显示 MDX 生成器，然后拖放项目构建自定义成员公式。

自定义成员公式存储在含有相应成员的维度表中。

注意 保存维度时，对自定义成员公式所做的更改会记录到维度表中。此后，这些更改将无法撤消，除非编辑该维度并手工进行反向更改。

有关更多信息，请参见创建自定义成员公式。


维度编辑器 -- 架构视图

 Analysis Services

维度编辑器 — 架构视图

使用此工具可以查看和编辑共享维度的架构。也可以检查并编辑所有类型的共享维度的结构（包括父子维度和虚拟维度）及其级别。还可以使用维度编辑器和连结对话框执行共享维度的不同过程。

维度编辑器显示在两个视图（数据视图和架构视图）中。这两个视图都具有树窗格和属性窗格。可以通过单击维度编辑器底部的"数据"选项卡或"架构"选项卡，或通过单击"视图"菜单中的"数据"或"架构"命令，从一个视图切换到另一个视图。

本主题对架构视图进行描述。有关数据视图的信息，请参见维度编辑器 — 数据视图。架构视图显示如下。

执行下列一种操作后，即会显示维度编辑器：

  • 在 Analysis Manager 树窗格中，打开某一数据库下的"共享维度"文件夹。右击一个维度，然后单击"编辑"命令。

  • 在 Analysis Manager 树窗格中，打开某一数据库下的"共享维度"文件夹。单击一个维度，然后在"操作"菜单上单击"编辑"命令。

  • 维度编辑器有四个区域。有关这些区域的更多信息，请单击下表中的链接。
    若要执行 | 请参见
    执行维度编辑器菜单中的可用命令。 | 菜单
    执行维度编辑器工具栏中用图标表示的公用对策。 | 工具栏
    显示维度中的对象。

    访问相关联的对话框及维度对象的可用信息。

             树窗格
    显示树窗格中所选对象的属性。

    修改所选对象的属性设置。

             属性窗格
    显示维度表。

    添加表和级别，并浏览维度表中的数据。

    查看表中的列。

             架构选项卡

请参见

用编辑器创建共享维度

创建自定义成员公式

创建成员组

创建成员属性


菜单（维度编辑器架构视图）

下面的选项在维度编辑器的菜单中可用。

菜单 | 选项 | 描述
文件 | 新建维度 — 向导 | 启动维度向导以创建新的共享维度。
 | 新建维度 — 编辑器 | 显示"选择维度表"对话框，以便用编辑器创建共享维度。
 | 保存 | 保存维度。如果您正在保存父子维度或可更改维度，则会提示您执行维度的增量处理。
 | 另存为 | 使用另一个名称保存维度。
 | 退出 | 关闭维度编辑器。
编辑 | 重命名 | 重命名所选对象。
 | 删除 | 删除所选对象。
 | 删除联接 | 从所选列上删除所有联接（仅用于架构视图）。
视图 | 架构 | 显示架构视图，包括"架构"选项卡。
 | 数据 | 显示数据视图，包括"数据"选项卡。
 | 属性 | 展开或折叠属性窗格。
插入 | 表 | 显示"选择表"对话框以向维度中添加表。
 | 级别 | 显示"插入级别"对话框以添加新级别。
 | 成员属性 | 显示"插入成员属性"对话框以在所选级别中添加新成员属性。
 | 联接 | 显示"联接列"对话框，在此对话框中可以将联接添加到所选列（只在架构视图中）。
工具 | 处理维度 | 处理维度。
 | 对维度成员计数 | 计算维度中成员的数目。
 | 验证维度结构 | 验证维度结构中不含有会阻止维度处理的无效组件。
帮助 | 维度编辑器帮助 | 显示关于维度编辑器的帮助主题。
 | 目录和索引 | 打开 SQL Server 联机丛书。


工具栏（维度编辑器架构视图）

使用以下工具栏按钮执行通常的操作。

按钮 | 描述
新建维度 | 启动维度向导以创建新的共享维度。
保存 | 保存维度。如果正在保存父子维度或可更改维度，则会提示您执行维度的增量处理。
插入表 | 显示"选择表"对话框以向维度中添加表。该按钮对于虚拟维度来说是不可用的。
插入级别 | 显示"插入级别"对话框以添加新级别。
插入成员属性 | 显示"插入成员属性"对话框，在该对话框中可以向所选级别添加新成员属性。
处理维度 | 显示"处理维度"对话框，在该对话框中可以增量更新或重建所选维度。
将所选成员左移* | 在维度成员窗格中，将所选成员（及其后代）向上移动一个级别。所选成员的祖父代成为其新父代。
将所选成员右移* | 在维度成员窗格中，将所选成员（及其后代）向下移动一个级别。所选成员前面的兄弟成为其新父代。
将所选成员上移* | 在维度成员窗格中，将所选成员（及其后代）在当前级别上向上移动。所选成员的父代前面的兄弟成为其新父代。
将所选成员下移* | 在维度成员窗格中，将所选成员（及其后代）在当前级别上向下移动。所选成员的父代后面的兄弟成为其新父代。

* 只有在数据视图中编辑一个写启用维度（自上次更改该维度后，该维度所在的多维数据集已被处理）时，该按钮才可见。


树窗格（维度编辑器架构视图）

使用树窗格在维度中显示对象。右击某一对象即可看到该对象的快捷菜单。

下表列出访问有关维度对象的可用信息的方法。

右击 | 快捷菜单选项 | 描述
维度 | 新建维度 | 显示"选择维度表"对话框，在此对话框中可以用编辑器创建共享维度。
 | 处理维度 | 处理维度。
 | 新建级别 | 显示"插入级别"对话框以添加新级别。
级别 | 新建级别 | 显示"插入级别"对话框以添加新级别。
 | 新建成员属性 | 显示"插入级别"对话框以在级别中添加新成员属性。
 | 删除 | 删除级别。
 | 重命名 | 重命名级别。
"成员属性"文件夹 | 新建成员属性 | 显示"插入成员属性"对话框，可在该对话框中添加新的成员属性。
成员属性 | 新建成员属性 | 显示"插入成员属性"对话框，在此对话框中可以添加新的成员属性。
 | 删除 | 删除成员属性。
 | 重命名 | 重命名成员属性。


属性窗格（维度编辑器架构视图）

使用属性窗格显示在树窗格中选定对象的属性。单击"属性"按钮可显示属性窗格。

每种类型的对象（维度、级别或成员属性）中都含有一套不同的属性。可用属性窗格修改所选对象的属性设置。

下表描述了显示在属性窗格中的属性。

对象 | 属性 | 描述
维度 | All Caption | 指明"（全部）"级别中成员的名称。
All Level | 指明维度是否包含"（全部）"级别。如果该值为 Yes，"（全部）"级别就是维度的顶层级别，但不显示在维度编辑器树窗格中。"（全部）"级别包含一个成员，该成员的单元值是下一级别中所有成员的单元值的聚合。
Allow Duplicate Names | 指明同一父代下的成员是否可以同名。
All Member Formula | 存储用于替代"全部"成员的默认汇总的 MDX 表达式。
Changing | 指明是否为频繁更改而优化了维度。如果该值为 True，那么查询性能可能会较低。然而，可以对顶层之下和底层之上的级别和成员进行添加、移动和删除操作，并且消除或减少了随之而来的处理需要。于是，最终用户对该维度所在多维数据集的访问所受的干扰就可以减少。有关更多信息，请参见可更改维度。
Data Member Caption template | 当维度的 Members With Data 属性设置为 Nonleaf data visible 时，本属性控制数据成员的名称。键入包含星号 (*) 的值。各数据成员的名称是将星号替换为父成员名称之后的值。Data Member Caption Template 属性仅可用于父子维度。
Data source | 指明包含维度表的数据源。
Default Member | 当轴上未显示维度并且未指定维度中的切片成员时，指明对查询所返回的数据集进行切片的成员。如果未指定默认成员，并且维度的 All Level 属性为 Yes，那么 All Caption 属性所指定的成员就是默认成员。如果未指定默认成员，并且维度的 All Level 属性为 No，那么将以最高级别中的任意一个成员作为默认成员。
Depends on Dimension 对于虚拟维度，本属性指提供了虚拟维度的级别所基于的成员属性或列的维度。

对于非虚拟维度，本属性指明了优化聚合设计时所依据的维度。当两个维度的成员矢量积中不能共存的组合占很大百分比时，本属性值中的维度优先。例如，Customer Gender 维度的 Depends on Dimension 属性是 Customers。这两个维度的最低级别成员的矢量积中，有百分之五十的组合不能共存，因为每位客户只能有一种性别。有关更多信息，请参见相关性维度。
Description | 包含维度的描述。
Enable Real-Time Updates | 表明维度是否支持实时更新。要将此选项设为 True，则维度必须使用 ROLAP 分区和 Microsoft® SQL Server™ 2000 数据源。有关更多信息，请参见实时多维数据集。
Member Keys Unique | 指明成员键在维度内部是否唯一。如果此属性的值已更改，则应该用"重建维度结构"选项处理该维度。这是只读属性，可更改维度的该属性值应设为 True。有关更多信息，请参见更新和重建共享维度。
Member Names Unique | 指明成员的名称在维度内部是否唯一。如果该值为 True，那么内部成员名称将忽略起限定作用的级别名称和成员名称。这些内部成员的名称用于多维表达式 (MDX) 中。
Members with Data 指明非叶成员是否可以有相关联的事实数据表数据。如果可以有，那么本属性还指明是否将创建非叶成员的子代来显示这些数据。有效值为：
  • Leaf members only：只有叶成员可以有相关联的事实数据表数据。如果非叶成员有相关联的事实数据表数据，处理将失败。此值为默认值。

  • Nonleaf data hidden：非叶成员可以有相关联的事实数据表数据。这些数据在非叶成员的后代中将不展现出来。因此，有可能在最终用户看来聚合值是不正确的。

  • Nonleaf data visible：非叶成员可以有相关联的事实数据表数据。通过为每个非叶成员创建一个子代，这些数据将在非叶成员的后代中展现出来。这个子代称为数据成员，是一个叶成员，其值等于其父代相关联的事实数据表数据的聚合。数据成员的名称由 Data Member Caption Template 属性控制。

此属性仅用于父子维度。
Name | 包含维度名。
Source Table Filter 指明应用于维度表的 WHERE 子句表达式，用于限制维度中的成员。例如，在随同SQL Server 2000 Analysis Services 一起提供的 Store 维度中，若要只包含 Canada 成员及其后代，请键入：

"store"."store_country" = 'Canada'
Storage Mode | 指明维度的存储类型。如果其值为 MOLAP（多维 OLAP），则维度的数据将存储在分析服务器上的多维结构中。如果其值为 ROLAP（关系 OLAP），那么维度的数据就是维度表本身。MOLAP 提供更佳的性能，除了非常大的维度（即大约有500 到 1000 万成员的维度），都建议使用 MOLAP。如果要选择 ROLAP，那么最低级别的 Member Keys Unique 属性就必须为 True。在所有使用该维度的多维数据集内，对该维度的 Aggregation Usage 属性也存在限制。有关更多信息，请参见维度存储模式。
Type | 指明维度的类型。默认值为 Standard。此属性向客户应用程序指明维度中信息的类型。
Virtual | 指明维度是否为虚拟维度。如果将该属性设为 True，而 Depends on Dimension 属性为 (None) 时，"架构"选项卡中的表就会消失。请在 Depends on Dimension 属性中选择提供已编辑的维度所基于的列或成员属性的维度。所选维度的表即会出现在"架构"选项卡中。
Write-Enabled | 指明当管理员浏览维度时及最终用户浏览含有该维度的多维数据集时是否可以更新该维度的成员。只有对该维度拥有读／写权限的多维数据集角色中的最终用户才能更新写启用维度。只有父子维度才可以是写启用的。有关更多信息，请参见写启用的维度。
级别 | Custom Members | 指明是否用自定义成员公式确定成员的单元值。有关更多信息，请参见自定义汇总公式和自定义成员公式。若要查看自定义成员公式，请在"视图"菜单上单击"数据"命令，然后查看自定义成员公式窗格。
Custom Member Options | 指明是否可以为此级别的自定义成员和下一级别上的一元运算符定义计算选项。计算选项存储在维度表的某列中。要将此属性设置为 True，则必须先将 Custom Members 属性设置为 True。
Custom Rollup Formula | 存储用于替代级别中值的默认汇总的 MDX 表达式。
Description | 包含级别的说明。
Grouping | 指明级别是否包含成员组。成员组可用于满足每个父代下最多可有 64,000 个成员的限制。要以此方式使用成员组，请在超出限制的级别的上一级创建一个与之相同的新级别，然后将新级别的 Grouping 属性设置为 Automatic。有关更多信息，请参见成员组。
Hide Member If 决定哪些成员在用户浏览多维数据集时对用户为隐藏。隐藏成员可支持不齐整维度（即，在成员沿袭体系中存在逻辑断层的维度），方法是隐藏这些断层上的成员。有效值为：
  • Never hidden：不隐藏任何成员。

  • No name：名称为空或空字符串的成员将隐藏。

  • Parent's name：与父代同名的成员将隐藏。

  • Only child with no name：为独一子代并且名称为空或空字符串的成员将隐藏。

  • Only child with parent's name：为独一子代并且与父代同名的成员将隐藏。

此属性不能用于父子维度。
Key Data Size | 指明在聚合中存储成员键的列的大小（以字节为单位）。成员键从 Member Key Column 属性所指定的列中复制。
Key Data Type | 指明在聚合中存储成员键的列的数据类型。成员键从 Member Key Column 属性所指定的列中复制。
Level Naming Template | 决定当最终用户浏览含有相应维度的多维数据集时对他们显示的级别名称。此属性仅用于父子维度。单击该属性，然后单击编辑（"..."）按钮以显示"级别命名模板"对话框。
Level Type | 指明级别的类型。默认值为 Regular。仅在 Type 属性为 Time 的维度中才使用下列值：Years、Half-Years、Quarters、Months、Weeks、Days、Hours、Minutes、Seconds 和 Time-Undefined。Level Type 属性向客户应用程序指明级别中信息的类型。在父子维度中不显示此属性。
Member Count | 指明级别中成员的数目，该值可以是 Analysis Services 上次对成员计数时得到的值，也可以是用户提供的成员数目估计值。可通过单击"工具"菜单上的"对维度成员计数"命令来更新该值。
Member Key Column | 指明包含成员键的列。此外，该值还可以从某一列中派生得到，如从日期格式列中提取年份值的表达式。这种表达式的语法必须遵守数据源提供程序的要求，否则处理将因遇到一个或多个错误而失败。
Member Keys Unique 指明成员键在级别内部是否唯一。此属性不能用于父子维度。

如果此属性的值已更改，则应使用"重建维度结构"选项处理级别的相应维度。有关更多信息，请参见更新和重建共享维度。
Member Name Column | 指明含有成员名称的列，在最终用户浏览多维数据集时对他们显示这些名称。此外，该值还可以从某一列中派生得到，如从日期格式列中提取年份值的表达式。这种表达式的语法必须遵守数据源提供程序的要求，否则处理将因遇到一个或多个错误而失败。
Member Names Unique | 指明成员的名称在级别内部是否唯一。如果该值为 True，那么内部成员名称将忽略起限定作用的成员名称。这些内部成员名称用于 MDX 表达式中。
Name | 包含级别名。
Order By | 确定显示成员时所用的排序顺序。可以按成员名称、成员键或任意为级别定义的成员属性来排序。
Parent Key Column | 指明包含成员父代的键的列。此属性仅用于父子维度。
Root Member If 指明识别最高级别（如果有"（全部）"级别则忽略该级别）成员的准则。下列值有效：
  • Parent is blank, self, or missing：如果成员符合下列三个准则中的任意一个，该成员就属于最高级别。

  • Parent is blank：如果成员的 Parent Key Column 中的值为空或 0（零），则该成员就属于最高级别。

  • Parent is self：如果成员的 Parent Key Column 中的值等于 Member Key Column 中的值，则该成员就属于最高级别。

  • Parent is missing：如果成员的 Parent Key Column 中的值在 Member Key Column 中不存在，则该成员就属于最高级别。

此属性仅用于父子维度。
Skipped Levels Column | 指明包含成员与其父代之间的级别数目的列，该成员及其父代不计入该数目。该列中的有效值为 0（零）和正整数。此属性仅用于父子维度。
Unary Operators | 启用控制级别成员聚合到其父成员值中方式的一元运算符（自定义汇总运算符）。有关更多信息，请参见自定义汇总运算符。若要查看自定义汇总运算符，请在"视图"菜单上单击"数据"，然后查看成员属性窗格中 UNARY_COLUMN 旁边的值。
Visible | 指明最终用户浏览多维数据集时，该级别是否可见。若要将此属性设置为 False，就必须首先将下方所有级别的 Member Keys Unique 属性设置为 True。Visible 属性不能用于父子维度。对于单个多维数据集，该属性的值可以由多维数据集编辑器中的 Visible 属性替代。
成员属性 | Caption | 包含用于显示该成员属性的标题。
Data Size | 指明存储成员属性值的列中所允许的最大字符数目。
Data Type | 指明存储成员属性值的列的数据类型。
Description | 包含成员属性描述。
Language | 指明用于显示该成员属性的语言。
Name | 指明成员属性的名称。
Source Column | 指明存储成员属性值的列。此列必须属于成员属性所在维度的某一维度表。
Type | 向客户端应用程序提供指示符，用于指明成员属性值中的信息类型。
Visible | 指明最终用户浏览多维数据集时，该成员属性是否可见。


架构选项卡（维度编辑器架构视图）

使用"架构"选项卡显示维度表。联接由在各表之间连接键列的线表示。

在"架构"选项卡中，可以用图形显示的形式组织维度的结构、添加其它表和级别，以及浏览维度表中的数据。

若要查看表中的所有列，请垂直拉长表的窗口或使用滚动条。还可拉宽表窗口查看长的列名。

说明 更改维度的结构会导致上次对维度处理的结果无效。在维度的结构更改后，必须处理该维度以重新创建数据。

在架构选项卡中工作

本节列出可在"架构"选项卡中执行的操作。许多操作可以通过多种方法执行。例如，一个操作可以通过拖放过程实现，也可以通过右击对象后单击快捷菜单上的项目实现。

添加新表

  • 在"架构"选项卡中右击任何地方，然后单击"插入表"命令。

删除表

  • 右击表的标题栏，然后单击"删除"命令。

替换表

  • 右击表的标题栏，然后单击"替换"命令。

浏览表中的数据

  • 右击表的标题栏，然后单击"浏览数据"命令。

在两个表间创建联接

  • 在第一个表中选择键列名称，然后将其拖动到第二个表中相应的键列名称上。

删除两个表间的联接

  • 右击表示联接的线，然后单击"删除"命令。

更改表的别名

  • 右击表的标题栏，然后单击"更改别名"命令。


维度管理器

可以使用该工具在多维数据集中添加或从中删除维度，或创建新维度。

在多维数据集编辑器中右击"维度"文件夹或维度，再单击"现有的维度"命令后，即会显示维度管理器。

可以选择以前定义的维度，也可以启动维度向导创建新维度。如果创建新维度，可将其定义为共享维度或专用维度（只可用于正在创建的多维数据集）。

以前定义的可用维度列在"共享维度"下。

有关维度的更多信息，请参见维度。

选项

共享维度

选择要添加到多维数据集中的维度。

多维数据集维度

查看所选维度的列表。

新建维度

单击以启动维度向导，该向导将帮助您创建新维度。


钻取选项对话框

使用此对话框可以指定多维数据集或分区的钻取选项。

钻取是一项操作，指最终用户选择一个多维数据集单元，然后从该单元的源数据中检索结果集。如果启用钻取，则管理员也可以在多维数据集浏览器和多维数据集编辑器的"数据"选项卡中进行钻取操作。有关钻取的更多信息，请参见指定钻取选项。

如果是在编辑多维数据集，则可在该对话框中对该多维数据集启用或禁用钻取。如果是在编辑多维数据集或分区，则可以选择显示在结果集中的列。还可以指定筛选以限制结果集中的行。

执行下列任一操作即会显示该对话框：

  • 在多维数据集编辑器中，单击"工具"菜单上的"钻取选项"。此时，钻取选项适用于多维数据集。

  • 在"高级设置"对话框中，单击"钻取"按钮。（在单击"转换为分区"对话框中的"高级"按钮时或者到达分区向导的最后一步时，都会显示"高级设置"对话框。）此时，钻取选项适用于分区。

  • "钻取选项"对话框有两个选项卡。有关这些选项卡的更详细信息，请单击下表中的链接。
    若要执行 | 请参见
    选择执行钻取选项时显示的列。 | 列选项卡（钻取选项对话框）
    指定筛选（SQL SELECT 语句的 WHERE 子句表达式）以限制钻取操作返回的结果集。 | 筛选选项卡（钻取选项对话框）

选项

所有选项卡中都将显示下列选项。

启用钻取

选择该选项可使最终用户得以钻取他们有权访问的任一多维数据集单元。该操作还允许管理员进行钻取。在"列"选项卡中，必须至少选择一列。

可以进行钻取的最终用户仅为那些属于被授予钻取权限的多维数据集角色的用户。有关更多信息，请参见创建多维数据集角色。

清除该选项可禁用最终用户和管理员的钻取能力。

如果是在编辑分区，则"启用钻取"为只读。只能在多维数据集级别启用和禁用钻取。

确认

单击以临时保存所做的更改并关闭对话框。若要永久保存所做的更改：

  • 如果是在编辑多维数据集，请在多维数据集编辑器中保存该多维数据集。

  • 如果是在编辑分区，请单击"高级设置"对话框中的"确定"按钮。然后在分区向导中单击"完成"按钮（也可以在"转换为分区"对话框中单击"确定"按钮）。


列选项卡（钻取选项对话框）

使用该选项卡可以选择在执行钻取时显示的列。

重要 如果选择拒绝多维数据集角色访问的列，然后又向该多维数据集角色授予钻取特权，那么将会造成安全漏洞。（可以使用维度安全性或单元安全性来拒绝对某一列的访问。有关更多信息，请参见维度安全性和单元安全性。）当多维数据集角色中的最终用户进行钻取时，将可以访问到被拒绝的列。

如果是在编辑多维数据集，该选项卡中的选项会在多维数据集的分区中被替代。有关访问分区的钻取选项的信息，请参见指定钻取选项。

选项

列

选择当执行钻取时在结果集中显示的列。默认情况下，仅显示多维数据集架构或分区架构中的表。若要在多维数据集的数据源或分区的数据源中添加其它表，请单击"添加表"选项，然后使用"选择表"对话框。

表

查看其中定义了列的表。

在多分区多维数据集中，事实数据表名称在各个分区中可能会不同。但如果是在编辑多分区多维数据集，则"列"选项卡仅显示多维数据集的默认分区中的列和表。对于在多分区多维数据集中进行钻取，Microsoft® SQL Server™ 2000 Analysis Services 可根据需要自动更改各分区的事实数据表名称。

添加表

单击以显示"选择表"对话框，在此对话框中可以将表及其列添加到列表中。仅可以从多维数据集或分区的数据源中选择表。

全选

单击以选定所有列。

取消全选

单击以清除对所有列的选定。


筛选选项卡（钻取选项对话框）

使用该选项卡可以指定筛选（SQL SELECT 语句的 WHERE 子句表达式）以限制钻取操作返回的结果集。需要键入 WHERE 后的文本，但不包括 WHERE 关键字。

例如，若要将结果集限制为 1998 年的数据，可键入：

"the_year"=1998

Another example (alphanumeric data):

"the_month"='January'

每当需要避免语义含混时，请使用限定的表达式。例如，如果某一列名出现在多个表中，那么请在表达式中加入表名：

"time"."the_month"='January'

用于检索行以创建结果集的 SELECT 语句是自动生成的。筛选表达式通过 AND 与自动生成的 WHERE 子句部分连接起来。因此，如果指定多个筛选表达式，请将它们用一对圆括号括起来，例如：

("the_year"=1998 OR "the_year"=1999)

筛选表达式起直接传递语句的作用，只在执行钻取时才检查其语法。如果语法不正确，钻取就会失败。

有关更多信息，请参见钻取筛选。

如果是在编辑多维数据集，该选项卡中的筛选会在多维数据集的分区中被替代。有关访问分区的钻取筛选的信息，请参见指定钻取选项。


编辑虚拟维度对话框

使用此对话框从现有维度中选择新成员属性，该成员属性将作为虚拟维度的基础。

在 Analysis Manager 树窗格中，右击在 Microsoft® SQL Server™ 7.0 版 OLAP 服务中创建的虚拟维度，然后单击"编辑"命令时，即会显示该对话框。如果在 SQL Server 2000 Analysis Services 创建的虚拟维度中执行相同的操作，则会显示维度编辑器。有关在 SQL Server 7.0 OLAP 服务中创建的虚拟维度的更多信息，请参见在 7.0 版中创建的虚拟维度。

选项

成员属性

选择建立虚拟维度所依据的成员属性。


筛选表达式对话框

使用该对话框指定一个筛选，用以限制在"Analysis Services 处理任务"对话框中选择的多维数据集或分区的增量更新中使用的事实数据表记录。

当在"Analysis Services 处理任务"对话框中，选定一个多维数据集，单击"增量更新"，然后单击"筛选"框旁边的编辑（"..."）按钮时，将显示该对话框。

注意 如果在"Analysis Services 处理任务"对话框中选择的是默认的事实数据表（即多维数据集或分区已经使用的同一个事实数据表），就必须创建一个筛选以确保只添加已经不在多维数据集或分区中的数据。否则，多维数据集或分区将会包含重复因而是错误的数据。

例如，一个多维数据集包含从 1995 年至 1997 年的数据，将从提供 1995 年至 1997 年数据的同一个表中添加 1998 年的数据。包含年份的列的名称为 the_year。必须使用下列筛选表达式：

"the_year"=1998

Another example (alphanumeric data):

"the_month"='January'
选项

筛选表达式

键入 SQL SELECT 语句的一个 WHERE 子句表达式。不要包含 WHERE 关键字。

每当需要避免语义含混时，请使用限定的表达式。例如，如果某一列名出现在多个表中，那么请在表达式中加入表名：

"time"."the_month"='January'

用来检索增量更新记录的 SELECT 语句是自动生成的。筛选表达式使用 AND 连结到 WHERE 子句的自动生成部分。因此，如果指定多个筛选表达式，请将它们用一对圆括号括起来。例如，要检索从 1998 年到 1999 年的记录，请使用下面的筛选：

("the_year"=1998 OR "the_year"=1999)

筛选由一个或多个使用事实数据表列的表达式构成。筛选也可以包含维度表中的列，前提是这些列包括在嵌套的 SELECT 语句中，并且基础数据库支持嵌套的 SELECT 语句。

筛选表达式起到直接传递语句的作用，其语法在执行包之前并不进行检查。如果语法错误，增量更新和任务将失败。

请参见

Analysis Services 处理任务对话框

分区筛选和增量更新筛选


查找节点对话框

可以在相关性网络浏览器中使用此对话框，按名称选择节点。在大型数据挖掘模型中，有些节点可能未包含在最初的表示形式中。另外一些节点可能难于找到。而使用"查找节点"对话框使您得以快速找到节点或将节点添加到网络浏览器窗格。一次只能选择或添加一个节点。

单击"相关性网络浏览器"工具栏的"查找"工具时，即会显示该对话框。有关更多信息，请参见工具栏（相关性网络浏览器）。

选项

节点名称

键入要选择的节点的名称。随着您的键入，可用节点的列表会缩小范围显示，以便与您给出的值相匹配。

显示隐藏节点

选中此选项可以显示在网络浏览器窗格中看不到的节点。当需要添加的节点未包括在数据挖掘模型最初的表示形式中时，即可选择该选项。

节点列表

单击要添加到网络浏览器窗格中的节点的名称。也可以双击一个名称，以便在选定该名称的同时关闭该对话框。此列表显示在数据挖掘模型中定义的所有节点。

请参见

相关性网络浏览器

使用相关性网络浏览器查看


导入对策对话框

使用此对话框将现有对策从其它多维数据集导入到同一数据库中的虚拟多维数据集中。选择要导入的单个对策后，即可在"MDX 对策"框中查看用于创建该对策的多维表达式 (MDX) 语句。

在虚拟多维数据集编辑器中执行下列任一操作时，即会为虚拟多维数据集显示该对话框：

  • 在"编辑"菜单中选择"导入"，然后单击"对策"。

  • 在树窗格中右击"对策"文件夹，然后单击"导入对策"命令。

  • 单击工具栏上的"导入对策"按钮。
选项

可用对策

若要选择多维数据集中的单个对策，请选中对策名称旁边的复选框。若要选择多维数据集中的所有对策，请选中该多维数据集名称旁边的复选框。

只显示源多维数据集

如果清除此复选框，则显示"可用对策"树视图中的所有可用多维数据集和源多维数据集。


导入计算单元对话框

使用此对话框将计算单元定义从其组件多维数据集导入到虚拟多维数据集。

在虚拟多维数据集编辑器中执行下列任一操作时，即会显示该对话框：

  • 在"编辑"菜单中单击"导入"，然后单击"计算单元"。

  • 单击工具栏上的"导入计算单元"按钮。

  • 在虚拟多维数据集编辑器的树窗格中，右击"计算单元"文件夹，然后单击"导入计算单元"。
选项

可用的计算单元

选中要导入的计算单元定义旁边的复选框。如果要导入一个多维数据集中的所有计算单元定义，则选中多维数据集旁边的复选框。

该框只列出了位于虚拟多维数据集的组件多维数据集中的计算单元定义。

如果选择的计算单元定义与虚拟多维数据集中已有的计算单元定义同名，则选定的计算单元定义将按照新名称进行导入（新名称由其原有名称加一个数字后缀组成）。

值表达式

查看所选计算单元定义的计算公式。要更改虚拟多维数据集中的这个公式，则导入计算单元定义并在计算单元向导中对其进行编辑。

只显示源多维数据集

指定是否只显示在虚拟多维数据集的组件多维数据集中的计算单元定义。清除该复选框可查看数据库中的所有计算单元定义。如果添加的计算单元定义不在虚拟多维数据集的源多维数据集中，则会产生公式错误。导入计算单元定义后，可以对其进行编辑以修正公式错误，或进行其它任何所需的更改。

请参见

计算单元

如何将计算单元导入到虚拟多维数据集内

如何编辑计算单元定义


导入计算成员对话框

使用此对话框将计算成员从其组件多维数据集导入到虚拟多维数据集。

在虚拟多维数据集编辑器中执行下列任一操作时，即会显示该对话框：

  • 在"编辑"菜单中单击"导入"，然后单击"计算成员"。

  • 单击工具栏上的"导入计算成员"按钮。

  • 在树窗格中右击"计算成员"文件夹，然后单击"导入计算成员"命令。
选项

可用的计算成员

选中要导入的计算成员旁边的复选框。若要导入一个多维数据集中的所有计算成员，请选中该多维数据集旁边的复选框。

如果选择的计算成员与虚拟多维数据集中已有的计算成员同名，则选定的计算成员将按照新名称进行导入（新名称由其原有名称加一个数字后缀组成）。

值表达式

查看选定的计算成员的表达式。若要更改虚拟多维数据集中的该表达式，请导入该计算成员并在计算成员生成器中对其进行编辑。

只显示源多维数据集

指定是否只显示在虚拟多维数据集的组件多维数据集中的计算成员定义。清除该复选框即选中数据库中的所有计算成员。如果添加的计算成员不在虚拟多维数据集的源多维数据集中，则会产生公式错误。导入计算成员后，可以对其进行编辑以修正错误，或进行其它任何必要的更改。


导入命名集对话框

使用此对话框将现有命名集从其它多维数据集导入到同一数据库中的虚拟多维数据集中。选择要导入的单个命名集后，即可在"集合表达式"框中查看用于创建该命名集的多维表达式 (MDX) 语句。

在虚拟多维数据集编辑器中执行下列任一操作时，即会为虚拟多维数据集显示该对话框：

  • 在"编辑"菜单中指向"导入"子菜单，然后单击"命名集"命令。

  • 在树窗格中右击"命名集"文件夹，然后单击"导入命名集"。

  • 在工具栏上单击"导入命名集"按钮。
选项

可用的命名集

若要选择多维数据集中的某命名集，请选中所需命名集名称旁边的复选框。若要选择多维数据集中的所有命名集，请选中该多维数据集名称旁边的复选框。

只显示源多维数据集

取消对该复选框的选择，便可以显示"可用命名集"树视图中所有可用的多维数据集以及虚拟多维数据集的源多维数据集。


插入级别对话框

在维度编辑器或多维数据集编辑器中，使用该对话框为维度选择列。

当在多维数据集编辑器或维度编辑器中编辑维度时，会多次出现该对话框。

选项

树状框

查看已有的列。

列类型

选中或清除复选框以显示所描述类型的列。


插入度量值对话框

在多维数据集编辑器中，使用该对话框为度量值选择源列。

当在多维数据集编辑器中执行下列操作之一时，会出现该对话框以用于某个多维数据集：

  • 在"插入"菜单中，单击"度量值"。

  • 在树窗格中右击多维数据集图标，然后单击"新建度量值"命令。

  • 在工具栏上，单击"插入度量值"按钮。
选项

树状框

查看已有的列。

列类型

选中或清除复选框以显示所描述类型的列。


插入成员属性对话框

在维度编辑器或多维数据集编辑器中，使用该对话框为级别的新成员属性选择列。

在维度编辑器或多维数据集编辑器中，当创建新成员属性时会出现该对话框。

选项

树状框

查看已有的列。

列类型

选中或清除复选框以显示所描述类型的列。


联接列对话框

使用此对话框创建多维数据集架构中表之间的联接。

在多维数据集编辑器或关系挖掘模型编辑器的架构视图中，右击某数据表的一列，然后单击"插入联接"，即会显示此对话框。

选项

选择列

从表中选择一列，以联接到最初选择的列。

列类型

选择数据类型限制对可用列的选择。

确认

单击以创建联接并关闭此对话框。


级别命名模板对话框

使用此对话框指定级别名称，当最终用户浏览包含对话框标题栏上所显示维度的多维数据集时将看到这些级别名称。

仅对父子维度显示此对话框。父子维度总包含单一元数据级别（不包括"（全部）"级别），该级别一般会产生多个显示级别。在创建或编辑维度时并不总会知道显示级别的数目。而且，当维度表中的数据更新时，此数目也会发生变化。因此，可以使用此对话框指定应用于这些显示级别的名称。

有关父子维度的更多信息，请参见父子维度。

如果不指定级别名称，则默认情况下，所显示的级别将命名为"Level nn"，其中 nn 是一个整数，表示该级别从顶层算起的位次。"（全部）"级别是一个例外，必须将它命名为"（全部）"。

在维度编辑器或多维数据集编辑器的树窗格中选择父子维度中的级别，并单击属性窗格中的"高级"选项卡，单击"级别命名模板"，然后单击编辑（"..."）按钮时，即会显示此对话框。

在该对话框中对共享维度的值进行更改并保存结果后，必须使用"增量更新"选项来对其进行处理。有关更多信息，请参见更新和重建共享维度。在该对话框中对专用维度的值进行更改并将包含该专用维度的多维数据集进行保存后，必须使用"刷新数据"选项来对该多维数据集进行处理。有关更多信息，请参见更新和刷新多维数据集数据。

选项

级别

查看显示的级别名称，从最高级到最低级排列。默认情况下，如果维度的 All Level 属性为 No，则仅显示 Level 1 的那一行。如果维度的 All Level 属性为 Yes，则仅显示 Level 1 和 Level 2 这些行。

将光标放在最后一行的 Name 列上并键入一个值，可以添加一个空行。Level 列中每行的值都比上一行大 1。但无法对 Level 值进行编辑。

如果维度的 All Level 属性为 Yes，则"（全部）"级别（Level 1）的整行为只读，原因是"（全部）"级别的名称必须为"（全部）"（有些客户端应用程序不显示"（全部）"级别的名称）。

名称

查看显示给最终用户的级别名称。通常有两种用于提供级别名称的方法：

  • 在顶行（或者如果维度的 All Level 属性为 Yes，则是第二行）中键入一个值，值的后面加一个空格和星号 (*)。这种方法可产生除有一个代替星号的增量数字后缀外完全相同的名称。例如，如果维度的 All Level 属性为 No，则在顶行中键入"My Level *"以将名称"My Level 01"应用到顶层，将名称"My Level 02"应用到下一层，依此类推。或者，如果维度的 All Level 属性为 Yes，则在第二行中键入"My Level *"以将名称"My Level 02"应用到"（全部）"级别下面的那一层，将名称"My Level 03"应用到再下一层，依此类推。

  • 在每一级别中添加行并键入一个级别名称。如果显示的级别数目超出了所提供的级别名称数目，则将最后一个非空 Name 值连同一个追加增量数字后缀应用到未命名的级别中。例如，如果提供给 Level 8 的最后的 Name 值为 Element，则将"Element 01"、"Element 02"等应用到未命名的级别中。如果最后的 Name 值中有一个星号，则产生的后缀表示各级别从顶层算起的位次。例如，如果提供给 Level 8 的上一个 Name 值为 Element *，则将名称"Element 08"应用到 Level 8 中，而将名称"Element 09"、"Element 10"等应用到未命名的级别中。

    Result 值将变化，以反映 Name 列中的当前值。若要刷新 Result 值，单击 Level 或 Name 列中的任意处（但不要单击刚刚键入内容的行）。

    若要在级别名称中显示星号，请在 Name 列中键入双星号 (**)。

    由于分号 (;) 是在存储级别名称时起分隔作用的，建议不要在级别名称中使用分号。如果在 Name 列中键入了分号，它将被解释为级别名称的分隔符。

全部清除

单击以删除 Level 和 Name 列中的全部值，但"（全部）"级别中的值除外（如果有的话）。

结果

查看显示给最终用户的前五个级别名称。这些名称由分号 (;) 分隔。名称将更改以反映 Name 列中的值。分号和省略号（"..."）不会显示给最终用户。

确认

单击以临时保存所做的更改并关闭对话框。若要永久保存所做更改，请在该编辑器的"文件"菜单中单击"保存"命令。


链接多维数据集对话框

使用此对话框创建链接多维数据集。链接多维数据集以另外一个称为"源多维数据集"的多维数据集为基础，源多维数据集在另外一个分析服务器中定义并存储在那里。可创建链接多维数据集，作为在多个分析服务器中存储多维数据集的多个复本的替代手段。有关链接多维数据集的更多信息，请参见链接多维数据集。

若要创建链接多维数据集，必须具有访问源多维数据集的权限。如果您的用户名包括在下列定义了源多维数据集的分析服务器中的任一组中，您就拥有访问权限：OLAP Administrators 组或源多维数据集的多维数据集角色。

在 Analysis Manager 树窗格中右击"多维数据集"文件夹，然后单击"新建链接多维数据集"时，即会显示该对话框。

选项

名称

请为该链接多维数据集键入一个名称。该名称必须以字母字符开始，最长为 50 个字符。

源多维数据集

展开一个数据源并选择源多维数据集。

重要 不要从其分析服务器与正在创建的链接多维数据集所在的分析服务器相同的数据源中进行选择。

多维数据集只有在上次更改后又进行了处理时才会显示。

可以通过右击数据源并单击"刷新连接"命令，刷新与数据源的连接。

维度

查看"源多维数据集"框中所选多维数据集所包含的维度。该"维度"框为只读。

新建数据源

单击此选项将显示"多维数据源"对话框，可以在其中指定新的多维数据源。有关此过程的更多信息，请参见管理链接多维数据集。

创建新多维数据集后进行处理

选中此选项，并单击"确定"按钮后即会开始处理新的链接多维数据集。

若要在分析服务器中处理链接多维数据集，则分析服务器服务 (MSSQLServerOLAPService) 登录帐户必须是域用户帐户。该帐户必须具有访问源多维数据集的权限。如果帐户包括在发布服务器上的以下任一组中，则拥有访问权限：OLAP Administrators 组或源多维数据集的多维数据集角色。如果帐户对源多维数据集没有访问权限，则计算机或用户就不能通过该帐户处理已链接的多维数据集。


映射列对话框

使用此对话框在多维数据集编辑器中创建维度中的新级别、创建新维度或新度量值。

在多维数据集编辑器的架构视图中双击某数据表中的一列，即会显示此对话框。

选项

维度中的级别

选择该选项可在下拉列表中所选择的专用维度中创建新级别。该选项仅当多维数据集中包含专用维度时可用。

维度

选择该选项可创建新的专用维度。

度量值

选择该选项可从该多维数据集的事实数据表中创建新的度量值。


MDX 生成器

该对话框使您得以用多维表达式 (MDX) 语法创建表达式。有关 Microsoft® SQL Server™ 2000 Analysis Services 中 MDX 函数的信息，请参见 MDX 函数列表。

通过能够在其中指定 MDX 表达式的对话框和向导，显示此对话框。

选项

MDX 表达式

使用"数据"框、"函数"框、"插入"按钮、算术运算符按钮和数字按钮都可生成 MDX 表达式。

说明 "数据"框和"函数"框为生成有效的表达式提供了简便方法。可以双击这两个框中的值或将值拖入"MDX 表达式"框中。

也可以向"MDX 表达式"框中直接键入表达式。如果要添加非 Analysis Services MDX 函数库的库中的函数，则必须使用此方法。

数据

查看 MDX 表达式所应用的对象中的数据结构。

函数

查看 Analysis Services MDX 函数库中以及任何已经注册的其它库中的函数。有关个别 Analysis Services MDX 函数的信息，请选择该函数，然后按 F1 键。

若要将函数添加到"MDX 表达式"框中，请将光标放在要插入函数的地方，然后在"函数"框中选择一个函数，双击该函数或者单击"插入"。该函数语法即会出现在"MDX 表达式"框中。用适当的值替换参数及其分隔符（« 和 »）。

插入

单击此选项可以将"数据"框或"函数"框中的所选项添加到 MDX 表达式中。

算术运算符按钮

单击以向 MDX 表达式添加运算符。

数字按钮

单击以向 MDX 表达式添加数字。

注册

单击该选项可以显示"注册函数库"对话框，您可以在其中注册外部函数类型库（*.olb、*.tlb、*.dll）。新库出现在"函数"框中。有关更多信息，请参见注册函数库对话框。

使用说明

在创建 MDX 表达式时可使用下列方法：

  • Null 关键字

    可使用关键字 Null 创建值为空的 MDX 表达式。

  • 集合的临时别名

    在函数中，可用关键字 As 赋予集合一个临时别名，以供函数内部使用。在这一示例中，集合 {State} 被赋予临时别名 S1，这样我们就可以在函数后续部分的嵌套迭代中引用该集合。

    Sum({State} As S1, Sum(Geography.CurrentMember.Children,
Population * Val((Geography.CurrentMember.Properties("CityTax")) +
Val(S1.Current.Properties("StateTax")))))


挖掘模型角色对话框

使用此对话框创建或编辑挖掘模型角色。

执行下面任意一项操作时，都将显示该对话框：

  • 在挖掘模型角色管理器中，单击"新建"。

  • 在挖掘角色管理器中，右击"角色"列、"成员资格"列或者"描述"列中的某个条目，然后单击"新建"命令。

  • 在 Analysis Manager 树窗格中，右击挖掘模型角色图标，单击"管理角色"，然后单击"新建"命令。即会出现挖掘模型角色图标。

说明 挖掘模型角色的默认值由同名数据库角色导出。在此角色中所做的更改也将体现在同名数据库角色中。

选项

角色名

查看或编辑角色名称。输入的名称最长可以为 50 个字符，该名称必须以字母字符开始。如果编辑已有的角色，则对话框将显示出该角色的名称，您无法对它进行更改。

描述

查看或编辑角色描述。最多可以输入 200 个字符。如果编辑已有的角色，则无法对描述进行更改。

成员资格选项卡

查看挖掘模型角色及相关域的用户和组的名称。

添加

单击以显示"添加用户和组"对话框，在这里可以将 Microsoft® Windows NT® 4.0 或 Windows® 2000 用户和组添加到角色的成员资格中。

删除

单击以删除选中的角色。


挖掘模型角色管理器

使用此工具创建、编辑和维护挖掘模型角色。

挖掘模型角色只适用于单个模型。通过在挖掘模型角色管理器中选择角色，然后将该角色分配给角色模型，使角色得以创建。这将授予角色用户对模型的访问权限。模型角色的名称和默认值来自同名数据库角色。

在挖掘模型角色管理器中，列表中其复选框被选中的每一行均显示一个角色。这些角色中的用户可以访问其名称显示在标题栏中的模型。这些角色可以在挖掘模型角色管理器中进行维护。

每个未选中的行显示未分配给挖掘模型的角色。用户只有是已选中角色的成员才可访问模型。

要授予数据库角色中的用户对模型的访问权限，请选中角色旁边的复选框。要将角色分配给挖掘模型，请选中角色旁边的复选框。这将创建一个与数据库角色同名的挖掘模型角色。

分配给模型的角色首先列出，然后列出未分配给挖掘模型的角色（即保留数据库角色）。每个类别则按照"角色"列中角色名称的字母顺序排序。

在"Analysis Manager"树窗格中，右击挖掘模型角色图标或挖掘模型图标，然后单击"管理角色"，将显示挖掘模型角色管理器。

选项

访问

选择角色旁边的复选框以确定该角色是否可以访问挖掘模型角色管理器标题栏中所列出的模型。只有其复选框被选中的角色才能访问模型。

角色

查看角色名称。

成员资格

修改每个角色中的 Microsoft® Windows NT® 4.0 或 Windows® 2000 用户和组。

若要更改某个挖掘模型角色的成员资格，请右击"成员资格"列并单击"编辑"，或单击编辑（"..."）按钮以显示"挖掘模型角色"对话框。

说明 该选项卡中的更改可传播到与已编辑挖掘模型角色同名的数据库角色或多维数据集角色。

描述

查看对每个角色的描述。

显示

用来限制角色在列表中的显示。默认情况下，显示"全部角色"，但可以按角色中的用户名或组名进行限制。若要按角色中的用户名或组名进行限制，请在"显示"旁边的框中选择"包含用户角色"。在旁边的框中，键入用户名或组名，或键入名称的一部分，然后单击放大镜按钮。

新建

单击以显示"挖掘模型角色"对话框，在此可创建并添加一个新的挖掘模型角色。创建新角色时，同时将创建具有同样名称和规格的数据库角色。

编辑

单击以显示"挖掘模型角色"对话框，在此可以编辑该角色。

复制

单击以显示"复制角色"对话框，在此可根据所选中的挖掘模型角色给新角色提供一个名称。使用这种方法创建新的挖掘模型角色时，同时将创建具有同样名称和规格的数据库角色。


合并分区对话框

使用此对话框可以合并两个分区。在 Analysis Manager 树窗格中选择的分区的数据和聚合将合并到在"到此分区内"框中选择的分区中，之后，将删除第一个分区。

在 Analysis Manager 树窗格中展开多维数据集的 Partitions 文件夹，右击一个分区，然后单击"合并"命令，即会显示此对话框。仅对所在多维数据集包含一个以上分区的分区，此命令才是可用的。

注意 在合并包含不同事实数据表的分区时，必须手工合并这些事实数据表，以便目标分区的事实数据表中能包含该组合分区所需的全部事实。有关更多信息，请参见合并分区。

选项

合并此分区

查看在 Analysis Manager 树窗格中选择的分区。这是源分区。合并后，源分区将被删除。

到此分区内

选择要将源分区与之合并的目标分区。合并后，该分区将保留下来。

合并

单击此选项以合并指定的分区。单击"合并"选项后，将对新合并的分区进行处理。该分区的处理状态将在"处理"对话框中显示。


多维数据源对话框

使用该对话框为新链接多维数据集定义一个新的多维数据源。这一新数据源必须使用分析服务器现有的 Microsoft® SQL Server 2000™ Analysis Services 数据库，并且您必须具有对该数据库的访问权限。要提供访问权限，只需将用户名包含在链接多维数据集发布服务器的 OLAP 管理员组中或将其包含在源多维数据集的多维数据集角色中。

有关数据源的更多信息，请参见数据源。有关链接多维数据集的访问要求的更多信息，请参见链接多维数据集。

单击"链接多维数据集"对话框中的"新建数据源"时，将显示该对话框。

选项

服务器

键入要连接的分析服务器的名称。

说明 无法通过指定 IP 地址的方法来连接到分析服务器。

数据库

选择包含源多维数据集的数据库，要将该源多维数据集用于新链接多维数据集。

高级

单击以显示"数据链接属性"对话框。如果需要指定特殊选项以连接到链接多维数据集的发布服务器，则使用该对话框。

测试连接

单击以验证到链接多维数据集发布服务器和源多维数据集的连接。


命名集生成器

使用此工具创建表达式，以便用多维表达式 (MDX) 语法定义命名集。可通过将"数据"框、"函数"框、"插入"框、算术运算符按钮和数字按钮进行适当组合，或通过直接在"集合表达式"框中键入一个表达式，为命名集构造 MDX 表达式。

在多维数据集编辑器或虚拟多维数据集编辑器中创建新命名集时，即会显示此工具。

选项

集合名称

输入新命名集的名称。

集合表达式

键入 MDX 表达式以定义命名集。

重要 "数据"框和"函数"框为生成有效的表达式提供了简便方法。可以双击或者从两个框拖动值，将值添加到"集合表达式"框中。但是，如果要从 Microsoft® SQL Server™ 2000 Analysis Services MDX 函数库以外的库添加函数，则必须将包含这些函数的表达式直接键入到"集合表达式"框中。

数据

在多维数据集中选择可用作 MDX 表达式元素的数据结构。

函数

在 Analysis Services MDX 函数库中或在任何已经注册的其它库中选择函数。有关函数的更多信息，请参见函数列表。有关个别 Analysis Services MDX 函数的信息，请选择该函数，然后按 F1 键。

为了将函数添加到"集合表达式"框中，请将光标放在希望插入函数的位置，然后在"函数"框中选择一个函数，再单击"插入"。该函数语法即会出现在"集合表达式"框中。用适当的值替换参数及其分隔符（« 和 »）。

插入

单击该选项可以将"数据"框或"函数"框中所选的项目添加到"集合表达式"框中。

算术运算符按钮

单击以将运算符添加到"集合表达式"框中。

数字按钮

单击以将数字添加到"集合表达式"框中。

注册

单击该选项可以显示"注册函数库"对话框，您可以在其中注册外部函数类型库（*.olb、*.tlb、*.dll）。新库将出现在"函数"框中。有关更多信息，请参见注册函数库对话框。

MDX 使用说明

在创建 MDX 表达式时可使用下列方法：

  • Null 关键字

    可使用关键字 Null 创建值为空的 MDX 表达式。

  • 集合的临时别名

    在函数中，可用关键字 As 赋予集合一个临时别名，以供函数内部使用。在这一示例中，集合 {State} 被赋予临时别名 S1，这样我们就可以在函数后续部分的嵌套迭代中引用该集合。

    Sum({State} As S1, Sum(Geography.CurrentMember.Children,
Population * Val((Geography.CurrentMember.Properties("CityTax")) +
Val(S1.Current.Properties("StateTax")))))

请参见

命名集


OLAP 挖掘模型编辑器

使用该工具可以浏览 OLAP 数据挖掘模型的内容并编辑其结构。也可以使用 OLAP 挖掘模型编辑器和所连接的对话框来执行各种过程。

下面的关系图显示组成 OLAP 挖掘模型编辑器的元素。

与关系挖掘模型编辑器不同，OLAP 挖掘模型编辑器不显示架构视图，原因是 OLAP 数据挖掘模型是以一个单一多维数据集的结构为基础的。浏览器窗格只显示 OLAP 数据挖掘模型的内容，而结构窗格则包含该多维数据集的完整结构，其中包括指示符。这些指示符显示有哪些来自多维数据集的维度、级别、成员属性及度量值提供了到 OLAP 数据挖掘模型的输入和可预测信息。

当进行下列任意一项操作时，都会显示 OLAP 挖掘模型编辑器：

  • 在 Analysis Manager 树窗格中，右击 OLAP 数据挖掘模型，然后单击"编辑"命令。

  • 在 Analysis Manager 树窗格中，单击 OLAP 数据挖掘模型，然后单击"操作"菜单，再单击"编辑"命令。

OLAP 挖掘模型编辑器有五个元素。有关这些元素的更多信息，请单击下表中的链接。

若要执行 | 请参见
在 OLAP 挖掘模型编辑器内执行各种基本任务。 | 菜单栏（OLAP 挖掘模型编辑器）
在 OLAP 挖掘模型编辑器中执行公用函数。 | 工具栏（OLAP 挖掘模型编辑器）
查看 OLAP 数据挖掘模型结构，例如输入和可预测的列。 更改 OLAP 数据挖掘模型的结构。 | 结构窗格（OLAP 挖掘模型编辑器）
查看并编辑与 OLAP 数据挖掘模型及其数据挖掘列相关的属性。 查看对属性和应用这些属性的对象的描述。 | 属性窗格（OLAP 挖掘模型编辑器）
显示已处理的 OLAP 数据挖掘模型的内容。 | 浏览器窗格（OLAP 挖掘模型编辑器）


菜单栏（OLAP 挖掘模型编辑器）

使用 OLAP 挖掘模型编辑器中的菜单栏，执行各种与 OLAP 数据挖掘模型相关的任务。

下表描述了菜单及相关选项。

菜单项 | 描述
文件 | 保存 OLAP 数据挖掘模型和退出 OLAP 挖掘模型编辑器。
编辑 | 使您能够从 OLAP 数据挖掘模型中删除与多维数据集（数据挖掘模型以该多维数据集为基础）相关的维度、级别、成员属性及度量值，或将这些元素包括在该 OLAP 数据挖掘模型中；并可以为 OLAP 数据挖掘模型指定事例维度。
视图 | 提供属性查看选项。
工具 | 支持 OLAP 数据挖掘模型的处理。
帮助 | 提供对 OLAP 挖掘模型编辑器中的帮助的访问，以及对包含全部 Analysis Services 文档的 SQL Server 联机丛书的访问。


工具栏（OLAP 挖掘模型编辑器）

使用工具栏可以访问 OLAP 挖掘模型编辑器中最常用的功能。

下表详细描述了工具栏按钮。

按钮 | 描述
保存 | 保存 OLAP 数据挖掘模型。
处理挖掘模型 | 处理 OLAP 数据挖掘模型。


结构窗格（OLAP 挖掘模型编辑器）

使用 OLAP 挖掘模型编辑器中的结构窗格，可以核查和更改 OLAP 数据挖掘模型的结构。结构窗格为与 OLAP 数据挖掘模型相关的多维数据集中的每个维度、级别、成员属性及度量值提供了其用法的图形化表示，如下列关系图所示。

结构窗格中，每个多维数据集元素旁的复选框可以表明该多维数据集元素是否用于定义 OLAP 数据挖掘模型。根据 Case Dimension、Case Level、或 Usage 属性的设置，选中的多维数据集元素被用于创建各种用法类型的数据挖掘列。

下表详细描述了数据挖掘列用法类型。

列类型 | 描述
输入维度 | 为给事例集提供输入，而被 OLAP 数据挖掘模型用做特性列的维度、级别、成员属性或度量值。
可预测级别 | 为给事例集提供输出，而被 OLAP 数据挖掘模型用做预测列的维度、级别、成员属性或度量值。
输入级别和可预测维度 | 为给事例集提供输入和输出，而被 OLAP 数据挖掘模型用做特性列的维度、级别、成员属性或度量值。


属性窗格（OLAP 挖掘模型编辑器）

使用 OLAP 挖掘模型编辑器中的属性窗格，可以查看与 OLAP 数据挖掘模型及其数据挖掘模型列相关的属性。

下表描述了属性窗格的功能。

功能 | 描述
"属性"按钮 | 使用该按钮显示或隐藏属性窗格。
"基本"选项卡 | "基本"选项卡显示 OLAP 数据挖掘模型和挖掘模型列的最常用属性，例如，名称和描述。
描述 | 属性窗格的这一区域显示在"基本"选项卡中选择的属性的名称及其简短描述。

基本属性

"基本"选项卡用于显示和编辑（可选）OLAP 数据挖掘模型和数据挖掘列的最常查看属性。下表详细描述每种对象类型（如挖掘模型、维度、级别、成员属性及度量值）所对应的在"基本"选项卡中显示的属性。可以在结构窗格中选择这些对象类型。

属性 | 描述 | 适用对象
Name | 所选对象的名称。该属性是只读的。 | 全部
Description | 所选对象的描述。对于其 Case Dimension 属性为 True 的维度，该属性是不可用的；对于其 Case Level 属性为 True 的级别，此属性为只读。 | 全部
Source Object | 来自 OLAP 数据挖掘模型相关联的多维数据集的源对象。 | 除数据挖掘模型外的全部对象
Usage | 确定对象在 OLAP 数据挖掘模型中的用法。有关用法类型的更多信息，请参见结构窗格（OLAP 挖掘模型编辑器）。对于其 Case Dimension 属性为 True 的维度，该属性是不可用的；对于其 Case Level 属性为 True 的级别，此属性为只读。 | 全部
Source Cube | 与 OLAP 数据挖掘模型相关联的源多维数据集。 | 数据挖掘模型
Mining Algorithm | OLAP 数据挖掘模型所使用的挖掘算法提供程序的名称。 | 数据挖掘模型
Additional Parameters | OLAP 数据挖掘模型的挖掘参数和值的逗号分隔列表。 | 数据挖掘模型
Case Dimension | 指明维度是否提供供 OLAP 数据挖掘模型使用的事例集。 | 维度
Case Level | 指明级别是否提供供 OLAP 数据挖掘模型使用的事例集。 | 级别
Cluster Count | 算法标识的群集的数目。 | 数据挖掘模型


浏览器窗格（OLAP 挖掘模型编辑器）

OLAP 挖掘模型编辑器的浏览器窗格显示已处理的 OLAP 数据挖掘模型的挖掘模型内容。浏览器窗格使用数据挖掘模型浏览器来说明挖掘模型的内容。

下列关系图显示已处理的 OLAP 数据挖掘模型的浏览器窗格，以及所显示的 Microsoft® 决策树节点结构。

有关数据挖掘模型浏览器的更多信息，请参见数据挖掘模型浏览器。


分区处理设置对话框

使用该对话框指定处理多维数据集的设置。在处理多维数据集或其某个分区时使用该对话框中的设置。

在 DTS 设计器中，单击"Analysis Services 处理任务"对话框中的"多维数据集设置"时，即出现该对话框。

重要 多维数据集或分区处理选项随多维数据集或分区的元数据存储。对这些选项的设置的更改将替换多维数据集或分区以前的设置，而不管这些选项是由 Analysis Manager、数据转换服务 (DTS) 任务还是由决策支持对象 (DSO) 应用程序设置。

选项

所有聚合计算完之后

选择此选项，可以使得只有计算完所有聚合后，数据才可用于浏览。这是默认选项。

紧接着数据装载之后

选择此选项，以便在已装载数据但尚未计算完所有聚合前，可以浏览数据。也就是说，新数据可以立即进行查询，但是分析服务器可能无法立即对查询操作进行响应。

遇到缺少维度键的错误时停止处理

选择此选项，在遇到维度键错误时将停止处理。

  • 遇到下列情况后停止处理

    指定错误数（默认为 0）。

忽略所有缺少维度键的错误

选择此选项，则尽管存在键错误仍继续进行处理。

将维度键错误记录到日志文件中

选择此选项将维度键错误记录到文件中。使用下面选项之一提供文件名和路径。

  • 文件路径和名称

    键入要在其中记录维度键错误的文本文件的路径。

  • 浏览

    单击以选择文件的本地或网络位置。

请参见

处理多维数据集对话框

处理多维数据集


预测查询生成器

使用此工具创建数据挖掘预测查询任务的预测查询语法，该语法符合数据挖掘的 OLE DB 规范。

单击"数据挖掘预测查询任务"对话框中的"查询"选项卡上的"新建查询"时，将显示该对话框。

选项

事例表

选择包含要为预测查询进行分析的事例的源表。

浏览

单击以查看源表中数据的示例。

输入列

清除输入列而不是事例键列名称旁边的复选框，将其从预测查询中删除掉。事例键列用来唯一标识预测查询结果中的记录。

说明 将列从"输入列"中排除可能会影响任务所产生的输出表中预测列的值。

名称

查看要包含在预测查询中的可用源表输入列的名称。

源列

查看已选中的要包含在预测查询中的输入列的名称。

预测列

从可用预测列列表中选择预测列。用于数据挖掘预测查询任务中的数据挖掘模型的定义确定哪些列可用。

请参见

数据挖掘预测查询任务对话框

数据挖掘的预测与结果


处理对话框

使用此对话框可以在处理多维数据集、维度、数据挖掘模型或数据库时监视处理操作。

在处理、增量更新或刷新多维数据集或维度中的数据时会多次出现此对话框。处理数据库时，或者处理或增量更新数据挖掘模型时，也显示此对话框。

选项

状态栏

查看在处理多维数据集、维度、数据挖掘模型或数据库时的处理操作状态。

停止

单击以暂停或取消对多维数据集、维度、数据挖掘模型或数据库的处理操作。

重新处理

单击以从开始处重新开始对多维数据集、维度、数据挖掘模型或数据库的处理操作。

查看详细信息

单击以显示"查看跟踪行"对话框。单击一条消息，然后单击"查看详细信息"，即可查看该消息的详细信息。


处理多维数据集对话框

使用该对话框选择处理多维数据集的方式。

在 Analysis Manager 树窗格中右击某个多维数据集，然后单击"处理"命令时，即会显示此对话框。

选项

增量更新

选择此选项可将数据仓库中的新数据追加到多维数据集的分区中并更新聚合。增量更新不会影响已处理过的现有数据，而且通常所用时间比使用"处理"选项进行处理时要少得多。

执行增量更新时，用户可继续查询多维数据集；当更新完成后，用户无需进行重新连接即可访问更多的数据。

如果多维数据集的结构发生更改，或者是创建多维数据集所依据的数据发生更改，则此选项不可用。

注意 此选项将更新分区。不正确地使用分区可导致多维数据集数据不准确。有关更多信息，请参见管理分区。

刷新数据

选择此选项可以清除和重新装载多维数据集的数据，并重新计算聚合。此选项在数据仓库中的基础数据发生了更改，而多维数据集的结构仍保持不变时可用。

刷新可以在用户查询多维数据集的同时执行；当刷新完成后，用户无需进行重新连接即可访问刷新过的数据。

完全处理

选择此选项可以在对多维数据集进行结构调整（如添加维度、维度级别或度量值）后完整地重建多维数据集。此选项可根据其当前定义来重建多维数据集的结构，并重新计算和重新装载其数据。该选项可能需要花很长时间。

用此选项处理多维数据集后，用户必须重新连接到服务器计算机才能继续使用该多维数据集。

如果更新并保存了共享维度的结构，但未处理该维度，那么当采用此选项处理任意一个采用了该维度的多维数据集时，就会自动处理该维度。这时用户将立即无法使用所有其它采用了该维度的多维数据集，必须对这些多维数据集进行处理，然后才能再次使用。

对多维数据集的维度进行增量更新

选择此选项后，只要处理多维数据集，就可对多维数据集的共享维度和专用维度进行增量更新。

设置

单击此选项显示"多维数据集处理设置"对话框，在该对话框中可以指定其它多维数据集处理选项。

请参见

多维数据集处理设置对话框

处理多维数据集


处理维度对话框

使用此对话框处理共享维度。

在 Analysis Manager 树窗格中，右击"共享维度"文件夹中的一个共享维度，然后单击"处理"命令，即会显示此对话框。

选项

增量更新

选择此选项可向共享维度中追加新维度成员。当维度级别和成员的结构和关系未更改，而新成员（行）已添加到该维度表中时，可选择此选项。

当对共享维度进行增量更新时，用户将一直可以使用采用该维度的多维数据集，并且在更新完毕后即可在多维数据集内使用所添加的维度成员。

重建维度结构

选择此选项可以完全重建维度结构。在对维度级别或成员的结构或关系进行更改后可选择此选项。例如，在添加、删除或移动一个级别后，或在将一个父成员中的某成员移动到另一个父成员中以后，可使用此选项。

重要 如果更新并保存了共享维度的结构，但未处理该结构，那么当处理任意一个采用了该维度的多维数据集时，就会自动处理该结构。这时用户将立即无法使用所有其它采用了该维度的多维数据集，必须对这些多维数据集进行处理，然后才能再次使用。


处理挖掘模型对话框

使用该对话框选择处理关系数据挖掘模型或 OLAP 数据挖掘模型的方法。

右击 Analysis Manager 树窗格中的关系数据挖掘模型或 OLAP 数据挖掘模型，然后单击"处理"命令，即可出现该对话框。

选项

刷新数据

选择此选项清除并重新培训数据挖掘模型的内容。

在执行刷新的同时，用户可继续访问数据挖掘模型；刷新完成后，用户将可访问刷新过的数据而不用重新连接。

完整处理

选择它以在数据挖掘模型进行了结构变动后重新构建数据挖掘模型，例如添加支持表或数据挖掘列，或者更改现有数据挖掘列的使用。该选项可根据数据挖掘模型的当前定义重新构造数据挖掘模型，并完全培训该挖掘模型。该选项可能需要花很长时间。

使用该选项处理完挖掘模型后，用户必须重新连接到服务器计算机以继续使用数据挖掘模型。

请参见

培训数据挖掘模型


属性对话框

使用此对话框可以指定选项，用于警告、文件位置、性能与内存设置、处理、日志记录、加载项及 Active Directory™。

在 Analysis Manager 树窗格中右击某服务器，然后单击"属性"命令时即会显示此对话框。

"属性"对话框有六个选项卡。有关这些选项卡的更多信息，请单击下表中的链接。

若要执行 | 请参见
指定是否显示某警告信息，及更改 Microsoft® SQL Server™ 2000 Analysis Services 所用的文件夹。 | 常规选项卡（属性对话框）
更改性能和内存设置。 | 环境选项卡（属性对话框）
更改优化设置。 | 处理选项卡（属性对话框）
为 Analysis Services 所执行查询的自动日志记录和处理信息的自动日志记录更改设置。 此选项卡中的选项影响基于使用的优化向导和使用分析向导的输出。 | 日志记录选项卡（属性对话框）
控制哪些加载项由 Analysis Manager 自动启动。 | 加载项选项卡（属性对话框）
注册带有 Active Directory 的分析服务器，并设置属性。 | Active Directory 选项卡（属性对话框）

选项

所有选项卡中都将显示下列选项。

重置为默认值

将"属性"对话框所有选项卡中的选项（"加载项"选项卡除外）重置为其默认安装值。


常规选项卡（属性对话框）

使用此选项卡指定是否显示某警告信息，以及是否更改 Microsoft® SQL Server™ 2000 Analysis Services 所用的文件夹。

选项

启用维度级别计数

选择该选项，则可以使 Analysis Services 在新维度级别添加进来时，计数该新维度级别的成员。如果选择此选项，则只要用户试图添加的级别低于更多成员的级别，就会显示如下警告：

虽然该选项可提供实时层次结构验证，但对较大的成员数目进行计数仍可能需要数分钟或更长的时间。关闭此选项将加快维度创建过程，但成员的层次结构得不到验证。

默认值:将自动进行成员计数，并显示警告信息。

说明 在维度向导中，可以用"自动对级别成员计数"复选框暂时替代此选项。此替代仅在运行该向导期间有效。

显示处理警告

选择该选项，则会在没经过聚合就保存新的或更新过的多维数据集时，使 Analysis Services 显示下列警告信息：

管理员可通过选择"设计存储"对话框中的"不再显示此信息"复选框禁用此选项。此后，如果需要显示警告信息，唯一的方法是选择"属性"对话框中的"显示处理警告"复选框。

默认值:显示警告信息。

显示数据库密码警告

在用密码保存数据源时，使 Analysis Services 显示警告信息。当管理员在"数据链接属性"对话框的"连接"选项卡中指定用户名和密码，选择"允许保存密码"复选框，然后单击"确定"按钮时，将显示下列警告信息。

在"安全警告"对话框中，管理员可通过单击"取消"按钮避免安全性受到破坏。

管理员可通过选择"安全警告"对话框中的"不再显示此信息"复选框关闭此选项。此后，如果需要显示警告信息，唯一的方法是选择"属性"对话框中的"显示数据库密码警告信息"复选框。

默认值:显示警告信息。

若要在保存数据源密码时显示警告信息，请选择"显示数据库密码警告"复选框，然后单击"确定"按钮。

Data 文件夹

选择 Analysis Services 所使用的 Data 文件夹。如果选择新文件夹，则此临时文件夹（如下所示）也将更改成那个新文件夹。如果选择新文件夹，Analysis Services 则不访问现有数据。

重要 Data 文件夹中存储着控制最终用户对分析服务器中对象的访问的安全性文件。因此，必须确保 Data 文件夹免于未经授权的访问。

最大允许长度为 102 个字符。

默认值:C:\Program Files\Microsoft Analysis Services\Data。

若要更改 Analysis Services 使用的 Data 文件夹，则单击"Data 文件夹"框旁边的"浏览"按钮，选择一个新文件夹然后单击"确定"。

临时文件夹

确定 Analysis Services 所使用的临时文件夹。如果选择了新 Data 文件夹，则此临时文件夹也将更改成那个新文件夹。

最大允许长度为 102 个字符。

默认值:在"Data 文件夹"框中指定的文件夹。

若要更改 Analysis Services 使用的临时文件夹，则单击"临时文件夹"框旁边的"浏览"，选择一个新文件夹然后单击"确定"。如果更改了此文件夹，则必须停止并重新启动分析服务器服务 (MSSQLServerOLAPService)。


环境选项卡（属性对话框）

使用此选项卡更改性能和内存设置。

选项

最大线程数目

设置能同时使用服务器计算机 CPU 的线程数目。

默认值:服务器计算机 CPU 数的两倍。

有效范围：1-1000。

若要更改最大线程数目，请在"最大线程数目"框中指定最大数。只有整数有效。

大级别定义为

设置一个作为大级别处理的维度级别应包含的最低成员数目。

Microsoft® SQL Server™ 2000 Analysis Services 根据级别成员数目，将维度级别分为大类别和小类别。对此两种分类的处理是不同的。例如，如果未特别请求大级别的话，将不会将其发送给客户端。但即使未请求整个级别的话，也会将小级别发送给客户端。

默认值:1,000 个成员。

有效范围：1-10,000 个成员。

若要更改大级别的定义，请在"大级别定义为"框中，指定要作为大级别处理的维度级别必须包含的最低成员数目。只有整数有效。

最低分配内存

设置专门分配给 Analysis Services 的内存数量。实际的内存使用可能超出此值。

默认值:服务器计算机内存的一半。

若要更改分配给 Analysis Services 的内存数量，请在"最低分配内存"框中，以兆字节 (MB) 为单位指定分配的内存量。只有整数有效。

内存保留阈值

设置内存阈值，当接近此值时，降低内存使用。当 Analysis Services 所使用的内存量接近此阈值时，降低内存使用，而内存管理则变得更加有效。除非采用默认值，否则实际的内存使用可能会超出此值。

默认值:服务器计算机的全部内存。

若要更改内存使用的线程数，请在"内存保留阈值"框中，以 MB 为单位指定线程。只有整数有效。


处理选项卡（属性对话框）

使用此选项卡更改优化设置。

选项

预读缓冲区大小

设置在每次读取数据库信息时，放置到内存中的最大数据量。尽量将此选项的设置调高，这样可减小磁盘访问次数。

默认值:4 兆字节 (MB)。

若要更改预读缓冲区大小，请在"预读缓冲区大小"框中，以 MB 为单位指定缓冲区大小。只有整数有效。

处理缓冲区大小

设置在执行 I/O 前，内存中处理的数据量。该值越大，I/O 就越少。

默认值:4 MB。

若要更改处理缓冲区大小，请在"处理缓冲区大小"框中，以 MB 为单位指定缓冲区大小。只有整数有效。

服务器超时

设置处理对象时 Microsoft® SQL Server™ 2000 Analysis Services 等待对数据源查询的答复的最大时间。如果选择"服务器超时"复选框，在已过了指定的时间而没有得到答复时，则发生超时，同时处理过程失败。

默认值:0（禁用）。

有效范围：0（禁用）- 1,000,000 秒（大约 11 天 13 小时 46 分）。

若要启用服务器超时，则选择"服务器超时"复选框。然后在"秒"框中指定在提交查询和发生超时之间的最长时间间隔。只有整数有效。


日志记录选项卡（属性对话框）

使用此选项卡更改 Microsoft® SQL Server™ 2000 Analysis Services 执行查询的自动日志记录和处理消息自动日志记录的设置。

基于使用的优化向导和使用分析向导依赖查询日志进行工作。此选项卡中的选项将影响这些向导的输出结果。

选项

将发送到服务器的查询记录在日志中

选择此选项启用查询日志记录。

  • 每 __ 个查询后写入日志一次

    指定查询记录的周期。默认情况下，每十个查询做一次记录。可以完全禁用查询记录，也可以更改周期。

    重要 此选项如设置过低可能会对性能产生不利影响。只有整数对此设置有效。

    默认值:10（十个查询中记录一个）。

    有效范围：1-10,000。

清除日志

选择以删除查询日志中的内容。

在服务器的所有多维数据集中连续运行基于使用的优化向导后，应考虑清除查询日志。

若要清除日志，请单击"清除日志"按钮然后单击"是"按钮。

将处理消息记录到日志文件中

选择此选项启用日志文件 (.log) 的处理消息记录。

  • 文件路径和名称

    键入日志文件的路径和名称。推荐使用 UNC 路径。

  • 浏览

    单击以显示"打开"对话框，在该对话框中可为"文件路径和名称"框选择路径并指定文件名。

请参见

分析使用模式

基于使用优化性能

使用分析向导

基于使用的优化向导


加载项选项卡（属性对话框）

使用此选项卡控制哪些加载项与 Analysis Manager 一起自动启动。加载项是与 Microsoft® SQL Server™ 2000 Analysis Services 兼容的其它应用程序，可能不只由 Microsoft 公司提供。只有重新启动 Analysis Manager，在此选项卡上所做的更改才会生效

重要 与"属性"对话框中的其它选项卡不同，即使通过选择远程服务器显示该对话框，"加载项"选项卡也始终只适用于本地计算机。

选项

可用的加载项

查看已安装的加载项。带有被选择复选框的加载项将在启动 Analysis Manager 时自动启动。它们将按照显示的顺序启动。

优先级

设置 Analysis Manager 中加载项的启动顺序。

若要更改加载项启动的顺序，请单击要更改的加载项，然后重复单击一个"优先级"按钮直到它们处于所需的顺序。

描述

查看"可用的加载项"框中选定加载项的描述。

重置为默认值

此按钮不影响此该选项卡上的选项。


Active Directory 选项卡（属性对话框）

使用此选项卡可以注册带有 Active Directory™ 目录服务的分析服务器，并可提供服务器的有关信息。也可以用此选项卡编辑或删除您提供的信息。

选项

启用 Active Directory 注册

选择此复选框以启用此对话框上的选项，并注册带有 Active Directory 的服务器。

关键字

定义以逗号分隔的搜索关键字列表，用于标识该服务器。例如，您可以标明单位或工作组、服务器是用于产品还是用于开发活动，或服务器的位置。

InformationURL

指定到 Web 页的 URL，该页包含服务器或服务器对象的详细信息。所指定的 URL 必须对应于您创建并在 Intranet 内部发布的自定义 Web 页。所创建的 Web 页应包含与服务器有关的其它信息。

联系

指定负责人的名称，由他负责维护分析服务器或维护作为分析服务器主机的 Microsoft® SQL Server™ 2000 实例。所键入的值作为文本字符串存储。可以键入联系人的全名或电子邮件地址，或同时键入这两种信息。

名称

键入一个描述性名称，用以标识包含有关分析服务器注册信息的 Active Directory 服务器。所提供的名称将作为替代计算机名的用户友好别名。该名称作为文本字符串存储。它不一定是唯一的。名称可以包含特殊字符或符号、空格以及字母字符。

请参见

结合 Analysis Services 使用 Active Directory


关系挖掘模型编辑器

使用该工具浏览关系数据挖掘模型的内容并编辑其结构。也可以使用关系挖掘模型编辑器和所连接的对话框来执行各种过程。

下面的关系图显示组成关系挖掘模型编辑器的元素。

与 OLAP 挖掘模型编辑器不同，关系挖掘模型编辑器提供了两个视图：架构和内容。可以用架构视图查看事例和支持表，这些支持表有助于定义挖掘模型的数据挖掘列。内容视图则可用来检查数据挖掘模型的内容。单击关系挖掘模型编辑器底部的"架构"选项卡或"内容"选项卡，可从一个视图切换到另一个视图。也可单击"视图"菜单上的"架构"或"内容"命令。

当进行下列任意一项操作时，将显示关系挖掘模型编辑器：

  • 在 Analysis Manager 树窗格中，右击数据挖掘模型，然后单击"编辑"命令。

  • 在 Analysis Manager 树窗格中，单击数据挖掘模型，然后单击"对策"菜单上的"编辑"命令。

关系挖掘模型编辑器有五个选项卡。有关这些选项卡的更多信息，请单击下表中的链接。

若要执行 | 请参见
在关系挖掘模型编辑器内执行各种基本任务。 | 菜单栏（关系挖掘模型编辑器）
在关系挖掘模型编辑器内执行公用函数。 | 工具栏（关系挖掘模型编辑器）
查看挖掘模型结构，如列类型。 | 结构窗格（关系挖掘模型编辑器）
查看并编辑与关系挖掘模型及其数据挖掘列相关的属性。 查看对属性和应用这些属性的对象的描述。 | 属性窗格（关系挖掘模型编辑器）
显示由浏览器窗格中的"数据"和"架构"选项卡提供的挖掘模型的两个视图。 | 浏览器窗格（关系挖掘模型编辑器）


菜单栏（关系挖掘模型编辑器）

使用菜单栏执行关系数据挖掘模型的各种任务。

下表描述了菜单及相关选项。

菜单项 | 描述
文件 | 保存关系数据挖掘模型和退出关系挖掘模型编辑器。
编辑 | 允许重命名或删除关系数据挖掘模型中的列，同时删除或反转挖掘模型架构中的联接。
视图 | 提供架构、内容和属性视图选项。
插入 | 将表、列和嵌套表插入到关系数据挖掘模型中。
工具 | 支持关系数据挖掘模型处理。
帮助 | 提供对关系挖掘模型编辑器中帮助的访问，以及对 SQL Server 联机丛书的访问。丛书包含所有 Microsoft® SQL Server™ 2000 Analysis Services 文档。


工具栏（关系挖掘模型编辑器）

使用工具栏访问关系挖掘模型编辑器中的最常用功能。

下表详细描述了工具栏按钮。

按钮 | 描述
保存 | 保存关系数据挖掘模型。
插入表 | 将新表添加到关系数据挖掘模型架构中。
插入列 | 将新列添加到关系数据挖掘模型结构中。
插入嵌套表 | 将新嵌套表添加到关系数据挖掘模型结构中。
处理挖掘模型 | 显示"处理挖掘模型"对话框，在此对话框中可以选择关系挖掘模型的处理方法。


结构窗格（关系挖掘模型编辑器）

结构窗格图形化表现了挖掘模型中每一个数据挖掘模型列的使用情况，如下面的图表所示。

下表详细描述了列类型。

列类型 | 描述
键列 | 指挖掘模型用做键列的列。键列为事例集的标识列。
输入列 | 指挖掘模型为事例集的输入而用做特性列的列。
可预测列 | 指挖掘模型为事例集输出而用做预测列的列。
输入和可预测列 | 指挖掘模型为事例集的输入和输出而用做特性列的列。


属性窗格（关系挖掘模型编辑器）

使用关系挖掘模型编辑器中的属性窗格可查看与关系数据挖掘模型及其数据挖掘模型列相关的属性。

下表描述了属性窗格的功能。

功能 | 描述
属性按钮 | 显示或隐藏属性窗格。
基本选项卡 | 显示挖掘模型和挖掘模型列最常用的属性，例如 Name 和 Description。
高级选项卡 | 显示高级属性，如 Distribution 和 Content Type，这些属性用来进一步定义挖掘模型列。
描述 | 显示在属性窗格中选择的属性的名称和简要描述。

基本属性

"基本"选项卡用于显示和编辑（可选）数据挖掘模型和数据挖掘列最常用的显示属性。下表详细描述了"基本"选项卡中显示的属性，并指出属性所适用的数据挖掘对象（数据挖掘模型或数据挖掘列）。

属性 | 描述 | 适用对象
Name | 已选中的数据挖掘模型或列的名称。该属性对于数据挖掘模型是只读的。 | 数据挖掘模型和数据挖掘列
Description | 已选中的数据挖掘模型或列的描述。 | 数据挖掘模型和数据挖掘列
Mining Algorithm | 所选数据挖掘模型的数据挖掘算法提供程序。 | 数据挖掘模型
Are Keys Unique | 数据挖掘模型中的键列是否唯一标识源事例表中的记录。 | 数据挖掘模型
Is Case Key | 数据挖掘列是否用做数据挖掘模型中的键列。只有将列的这一属性设置为 False，才能删除该列。 | 数据挖掘列
IsNestedKey | 数据挖掘列是否用做数据挖掘模型中嵌套表的键列。只有将列的这一属性设置为 False，才能删除该列。 | 数据挖掘嵌套表列
Source Column | 事例或支持表中源列的名称。 | 数据挖掘列
Data Type | 数据挖掘列的数据类型。该设置必须与所使用的数据挖掘算法提供程序兼容。Microsoft® SQL Server™ 2000 Analysis Services 所支持的数据类型和算法都记录在数据挖掘 OLE DB 规范中。有关数据挖掘 OLE DB 规范的更多信息，请参见位于 Microsoft Web 站点的 Microsoft OLE DB Web 页。有关数据挖掘算法提供程序所支持的数据类型，请参见数据挖掘算法提供程序文档。 | 数据挖掘列
Usage | 不管数据挖掘列是用作输入列、可预测列或者同时用作两者，键列的该属性都是只读属性。 | 数据挖掘列
Additional Parameters | 特定提供程序挖掘参数名称和值的逗号分隔列表。有关数据挖掘算法提供程序所支持的挖掘参数，请参见数据挖掘算法提供程序文档。 | 数据挖掘模型

高级属性

"高级"选项卡显示数据挖掘模型和数据挖掘列的一些高级属性，如关系列信息和分发。下表详细描述这些高级属性。

属性 | 描述 | 适用对象
Related To | 对于关系列，指的是与所选数据挖掘列相关的列名称。键列的该属性是只读的。为列设置该属性时，Usage 属性将改变以便与相关列的值匹配。 | 数据挖掘列
Distribution | 数据挖掘列的分发标记（如 NORMAL 或 UNIFORM）。键列的该属性是只读的。 | 数据挖掘列
Content Type | 数据挖掘列的内容类型（如 DISCRETE 或 ORDERED）。键列的该属性是只读的。 | 数据挖掘列
Data Options | 数据挖掘列的模型标记（如 MODEL_EXISTENCE_ONLY 或 NOT NULL）。键列的该属性是只读的。 | 数据挖掘列


浏览器窗格（关系挖掘模型编辑器）

浏览器窗格提供关系数据挖掘模型的两个视图。"架构"选项卡显示构建关系数据挖掘模型所用的事例及相关表格。"内容"选项卡显示已处理的关系数据挖掘模型的挖掘模型内容。"内容"选项卡使用数据挖掘模型浏览器说明挖掘模型内容。

下面的关系图显示包含已显示的事例表的"架构"选项卡。

下面的关系图显示包含已显示的 Microsoft® 决策树节点结构的"内容"选项卡。


注册分析服务器对话框

使用该对话框注册分析服务器。

若要注册分析服务器，用户名必须包括在该分析服务器上的 OLAP Administrators 组中。如果用户名已添加到 OLAP Administrators 组中，则必须先从 Microsoft® Windows® 注销然后再登录，之后才能注册分析服务器。

在进行下列操作时将显示此对话框：

  • 在 Analysis Manager 树窗格中右击 Analysis Servers 文件夹，然后单击"注册服务器"命令。

    -或-

  • 单击分区向导中的"注册服务器"按钮。
选项

服务器名称

键入要连接的分析服务器的名称。

说明 无法通过指定其 IP 地址来注册分析服务器。


注册函数库对话框

使用此对话框注册其它产品的函数库或用户定义的函数库。

可以创建用户定义的函数，从而提供在 Microsoft® SQL Server™ 2000 Analysis Services 函数库中没有的函数。用户定义的函数可在任何能够生成 Microsoft ActiveX® 库的工具中产生。

可以注册下列类型的用户定义函数库：

  • 类型库 (*.olb，*.tlb，*.dll)

  • 可执行文件 (*.exe，*.dll)

  • ActiveX 控件 (*.ocx)

当发生函数名冲突（即两个库包含相同的函数名）时，Analysis Services 函数始终比注册的函数库有优先权。除 Analysis Services 函数外，列表中库的顺序也很重要。在发生名称冲突时，它能定义函数解决的优先权。第一个库占据优先权。

Analysis Services 可自动注册 Microsoft Visual Basic® for Applications Expression Services 函数库 (VBA332.dll) 和支持 Microsoft Excel 工作表函数的库。但是，Excel 库必须与 Analysis Services 分开安装。有关更多信息（包括受支持函数的列表），请参见 Visual Basic for Applications 函数和 Excel 函数。

在计算成员生成器或 MDX 生成器中单击"注册"，即会显示此对话框。在注册函数库后，库的程序 ID将显示在计算成员生成器或 MDX 生成器的"函数"框中。可以返回到"注册函数库"对话框中添加或删除其它库。

说明 所支持的函数仅限于那些只以下列数据类型为参数的函数：字符串或数字数据类型，或者包含字符串或数字值的数组或变体数据类型。此外，还支持那些仅返回字符串或数字数据类型的函数，或者仅返回包含数字值的变体数据类型的函数。

选项

添加

单击以查找并选择要注册的库文件。与函数库相关的程序 ID 即会出现在该列表框中。

删除

单击以删除要注册的选择项中的程序 ID。

关闭

当您对列表框中包含的外部函数库中的正确程序感到满意时，可以单击该选项以完成注册。

调用 MDX 内部的用户定义函数

在"注册函数库"对话框中注册用户定义的函数后，该函数即可在多维表达式 (MDX) 语法中允许有表达式的任何地方使用，例如：

With Member Measures.[Forecasted Sales] As
     'Sales * ForecastedGrowthRate(SaleReps.CurrentMember.Name)'
Select TopCount(SalesReps, HowManyReps(), Sales) on Rows,
     {Sales, [Forecasted Sales] } on Columns
From Sales

用户定义的函数 HowManyReps 和 ForecastedGrowthRate 定义为：

Public Function HowManyReps() as Integer
Public Function ForecastedGrowthRate(RepName as String) as Double

说明 同一个 ActiveX 库中可能会驻留多个用户定义的函数。


远程服务器 Data 目录对话框

使用此对话框可以确认或更改 Microsoft® SQL Server™ 2000 Analysis Services 数据库将还原到的 Data 目录的路径。

有关还原 Analysis Services 数据库的更多信息，请参见存档和还原数据库。

在 Analysis Manager 树窗格中右击一个远程服务器，然后单击"还原数据库"命令，即会显示此对话框。

选项

路径

指定在完成还原后将包含该数据库文件的 Data 目录路径。

在安装 Analysis Services 期间创建 Data 目录，并且分析服务器上的每个数据库都包含此目录。Data 目录的默认路径为：

C:\Program Files\Microsoft Analysis Services\Data\

该路径的 \Program Files\Microsoft Analysis Services\ 部分是可以更改的。（若要确定当前路径，请右击远程服务器，单击"属性"，然后查看"数据文件夹"框。）

在"路径"框中，必须将该远程服务器名放在 Data 目录路径前面。如果 Data 目录是在其磁盘级共享的，还必须包括与该磁盘相关的共享名。下列示例中，"路径"值包含服务器名 Server-1 和磁盘共享名 C$。

\\Server-1\C$\Program Files\Microsoft Analysis Services\Data\

浏览

单击此选项，可以显示能在其中浏览可用路径并选择一个路径的对话框。

确定

单击此处在"路径"框中选择该路径，并继续还原过程。

如果"确定"按钮不可用（变灰），则"路径"框中的路径无效或者您没有访问该路径的权限。


还原数据库对话框

使用此对话框对 Microsoft® SQL Server™ 2000 Analysis Services 数据库进行还原。

注意 在还原数据库时，其文件集（在 Data 目录和其子目录中）及其元数据将返回到它们在创建存档文件时的状态。自那时以来在这些目录中创建的文件将被删除。在存档文件创建以后对 Analysis Services 知识库中数据库及其对象的记录所做的更改和添加也将删除。

有关还原 Analysis Services 数据库的更多信息，请参见存档和还原数据库。

在"打开存档文件"对话框中单击"打开"按钮，即会显示此对话框。若要打开"打开存档文件"对话框，请右击要还原其数据库的服务器，然后单击"还原数据库"。

选项

还原

单击该选项可以启动还原并显示"还原数据库进度"对话框，在该对话框中您可以监视或取消还原。


数据库还原进度对话框

使用此对话框监视 Microsoft® SQL Server™ 2000 Analysis Services 数据库的还原。可取消还原操作，也可保存还原日志。

有关还原 Analysis Services 数据库的更多信息，请参见存档和还原数据库。

在"还原数据库"对话框中单击"还原"，即可显示此对话框。若要还原一个数据库，则右击要在其上还原该数据库的服务器，然后单击"还原数据库"。这会显示"打开存档文件"对话框。选择要还原的存档，然后单击"打开"以显示"还原数据库"对话框。

选项

保存日志

单击以显示一个对话框，可在其中指定还原日志的路径和文件名，然后予以保存。如果成功地完成了还原，则还原日志将包含已还原的文件的列表。否则，还原日志将包含一条或多条消息。"保存日志"仅在还原完成或取消后才可用。

取消

单击此按钮取消还原。如果单击"取消"按钮并收到一条表明已取消解压缩的消息，将不还原任何内容。在单击"取消"按钮到显示消息之间可能会有延迟。

还原完成或取消后，会由"关闭"按钮取代"取消"按钮。

关闭

单击此按钮关闭对话框。"关闭"仅在还原完成或取消后才可用。


保存对象对话框

使用此对话框命名对象。

当保存新对象或经过编辑的对象时，会多次出现此对话框。

选项

对象名

键入对象名称。对于维度名，最多可输入 24 个字符。对于像多维数据集这样的其它对象名，最多可输入 50 个字符。


选择列对话框

使用此对话框在维度向导、维度编辑器、多维数据集编辑器或关系挖掘模型编辑器中选择一列。

执行下列任一操作即会显示该对话框：

  • 在维度向导中，指定新维度的排序选项。

  • 在维度编辑器或多维数据集编辑器中，指定各种属性值。

  • 在关系挖掘模型编辑器工具栏中，选择"插入列"。
选项

树窗格

查看已有的列。

列类型

选中或清除复选框以显示所描述类型的列。


选择嵌套表键列对话框

使用该对话框指定关系数据挖掘模型中嵌套表的键列。若要将嵌套表添加到挖掘模型定义中，必须首先在关系挖掘模型编辑器的"架构"选项卡中，将其添加为支持表。

在关系挖掘模型编辑器中进行以下任意一种操作时，都将出现这个对话框：

  • 单击工具栏上的"插入嵌套表"按钮。

  • 单击"插入"菜单中的"嵌套表"命令。
选项

选择列

从可用支持表中选择一列组成新嵌套表的键。

列类型

选择数据类型限制对可用列的选择。

确定

单击以将嵌套表添加到挖掘模型并关闭对话框。

请参见

关系挖掘模型编辑器


选择表对话框

使用此对话框从所选数据源中选择一个表。

当在多维编辑器、维度编辑器或关系挖掘模型编辑器中工作时，会多次出现此对话框。

选项

表

查看所选数据源的表。

详细信息

如果在"表"框中选定某数据源，则可以查看对该数据源的描述。如果在"表"框中选定了某个表，则可以查看该表中的列。

新建数据源

单击以显示"数据链接属性"对话框，在此可以指定新数据源。对于某些操作此按钮不可用。

添加

单击以选择所需的表。如果正在替换表，则单击"确定"。


选择父成员对话框

使用此对话框为计算成员选择不同的父成员。父成员确定了计算成员在维度结构中的位置。

在计算成员生成器中单击"更改"，即会显示此对话框。

选项

树状框

使您得以展开维度并为计算成员选择所需的父成员。


选择用户对话框

使用此对话框：

选择要依据其查询使用而进行优化的用户名和组。通过"基于使用的优化向导"显示该对话框。

选择要对其查询使用进行分析的用户名和组。通过"基于使用的优化向导"显示该对话框。

"可用的用户"框中将显示被授权访问多维数据集的角色中的组和用户。

若要选择用户或组，请单击"可用的用户"框中的组或用户，然后单击"添加"。

在任意一个向导中选择"下列用户发出的查询"复选框，然后单击"添加"按钮，即会显示"选择用户"对话框。

选项

可用的用户

查看被授权访问多维数据集的角色中的组和用户。

添加

单击以将所选的组或用户添加到"所选的用户"框中。

所选的用户

查看所选的组和用户。

确定

单击以返回到向导中，然后将所选组和用户放置到"下列用户发出的查询"框中。


设置默认成员对话框

使用此对话框：

  • 清除以前指定的自定义默认成员。

  • 通过在成员树中选择一个成员或在多维表达式 (MDX) 中创建一个表达式来指定默认成员。

当轴上未显示维度并且未指定维度中的切片成员时，维度的默认成员将对查询所返回的数据集进行切片。

说明 单个角色中的默认成员可被替代。有关更多信息，请参见自定义维度安全规则。

在维度编辑器或多维数据集编辑器的树窗格中选择一个维度，在属性窗格中单击"默认成员"，然后单击编辑（"..."）按钮，即会显示此对话框。

选项

无自定义默认成员

选中以清除默认成员的说明。

如果维度的 All Level 属性设置为 Yes，则 All Caption 属性所指示的成员将成为默认成员。如果维度的 All Level 属性设置为 No，则最高级别的一个任意成员将成为默认成员。

将某成员选作默认成员

展开成员树并选择一个默认成员。

输入 MDX 公式以指定维度默认成员

键入一个 MDX 表达式表示默认成员。例如，要将 Paris 指定为 Location 维度的默认成员，请键入：

[Location].[All Location].[Europe].[France].[Paris]

也可以单击展开（"..."）按钮以显示 MDX 生成器，在该生成器中构造 MDX 表达式。

确认

单击以临时保存所做的更改并关闭对话框。若要永久保存所做更改，请在该编辑器的"文件"菜单中单击"保存"命令。


培训查询对话框

使用该对话框在数据转换服务 (DTS) Analysis Services 处理任务中修改用来处理挖掘模型的培训查询。

在"Analysis Services 处理任务"对话框树窗格中，选择关系挖掘模型并单击"培训查询"框旁边的编辑（"..."）按钮，即会显示该对话框。

选项

培训查询

键入培训查询的多维表达式 (MDX) 语法。语法必须符合数据挖掘 OLE DB 规范。有关数据挖掘 OLE DB 规范的更多信息，请参见 Microsoft Web 站点的 Microsoft® OLE DB Web 页。

请参见

Analysis Services 处理任务对话框

MDX


虚拟多维数据集编辑器

使用此工具浏览虚拟多维数据集的数据并检查和编辑虚拟多维数据集的结构。另外，使用虚拟多维数据集编辑器及相关对话框，还可以执行不同的过程。

执行下列任一操作即会显示虚拟多维数据集编辑器：

  • 在 Analysis Manager 树窗格中右击虚拟多维数据集，然后单击"编辑"命令。

  • 在 Analysis Manager 树窗格中单击虚拟多维数据集，然后在"对策"菜单中单击"编辑"命令。

  • 虚拟多维数据集编辑器有五个区域。有关这些区域的更多信息，请单击下表中的链接。
    若要执行 | 请参见
    执行虚拟多维数据集编辑器菜单中的可用命令。 | 菜单（虚拟多维数据集编辑器）
    执行虚拟多维数据集编辑器工具栏中以图标表示的公用对策。 | 工具栏（虚拟多维数据集编辑器）
    查看树窗格中显示的虚拟多维数据集对象。 | 树窗格（虚拟多维数据集编辑器）
    查看并修改虚拟多维数据集编辑器树窗格中选定对象的某些属性。

    查看对属性和应用这些属性的对象的描述。

             属性窗格（虚拟多维数据集编辑器）
    以表格格式查看多维数据集数据。交换或移动维度。

    利用维度制作切片，或深入到成员。

             数据窗格（虚拟多维数据集编辑器）

请参见

生成虚拟多维数据集

创建和维护虚拟多维数据集中的计算成员

指定钻取选项


菜单（虚拟多维数据集编辑器）

使用以下菜单选项在虚拟多维数据集编辑器中执行各项操作。

菜单 | 选项 | 描述
文件 | 保存 | 保存虚拟多维数据集。
 | 另存为 | 用其它名称保存虚拟多维数据集。
 | 退出 | 关闭虚拟多维数据集编辑器
编辑 | 结构 | 显示虚拟多维数据集向导以修改虚拟多维数据集的结构。
 | 编辑 | 编辑选定的对象。没有相关编辑器或向导的对象将无法使用这个选项。
 | 重命名 | 如果可行，可重命名所选对象。
 | 删除 | 如果可行，可删除所选对象。
 | 导入 | 为要导入虚拟多维数据集的对象的类型显示选项。选项包括计算成员、对策或命名集。
视图 | 属性 | 展开或折叠属性窗格。
 | 已启用浏览 | 检索并显示多维数据集的数据以便浏览。只要未重新设置该选项，它将一直保留以前的设置。
插入 | 计算成员 | 显示计算成员生成器以开始创建计算成员。
 | 计算单元 | 显示计算单元向导以开始创建计算单元。
 | 对策 | 显示对策向导以新建对策。
 | 命名集 | 显示命名集生成器以新建命名集。
工具 | 处理虚拟多维数据集 | 处理虚拟多维数据集。
帮助 | 虚拟多维数据集编辑器帮助 | 显示有关虚拟多维数据集编辑器的帮助主题。
 | SQL 服务联机丛书 | 打开 SQL Server 联机丛书。


工具栏（虚拟多维数据集编辑器）

使用以下工具栏按钮执行通常的操作。

按钮 | 描述
保存 | 保存多维数据集。
编辑结构（向导） | 启动虚拟多维数据集向导以修改虚拟多维数据集的结构。
插入计算成员 | 显示计算成员生成器以开始创建计算成员。
插入计算单元 | 显示计算单元向导，以开始创建计算单元。
插入对策 | 显示对策向导以新建对策。
插入命名集 | 显示命名集生成器以新建命名集。
导入计算成员 | 显示"导入计算成员"对话框，以便从源多维数据集或其它多维数据集导入计算成员。
导入计算单元 | 显示"导入计算单元"对话框，以便从源多维数据集或其它多维数据集导入计算单元。
导入对策 | 显示"导入对策"对话框，以便从源多维数据集或其它多维数据集导入对策。
导入命名集 | 显示"命名集"对话框，以便从源多维数据集或其它多维数据集导入命名集。


树窗格（虚拟多维数据集编辑器）

使用树窗格来显示多维数据集中的对象。右击某一对象即可看到该对象的快捷菜单。

下表列出了如何访问有关多维数据集对象的可用信息。

右击 | 快捷菜单选项 | 描述
虚拟多维数据集 | 处理虚拟多维数据集 | 处理虚拟多维数据集。
 | 编辑结构（向导） | 显示虚拟多维数据集向导以修改虚拟多维数据集的结构。
"维度"文件夹 | 编辑结构（向导） | 显示虚拟多维数据集向导以修改虚拟多维数据集的结构。
维度 | 编辑结构（向导） | 显示虚拟多维数据集向导以修改虚拟多维数据集的结构。
级别 | 无 | --
"度量值"文件夹 | 编辑结构（向导） | 显示虚拟多维数据集向导以修改虚拟多维数据集的结构。
度量值 | 编辑结构（向导） | 显示虚拟多维数据集向导以修改虚拟多维数据集的结构。
 | 重命名 | 重命名度量值。
"计算成员"文件夹 | 新建计算成员 | 显示计算成员生成器以开始创建计算成员。
 | 导入计算成员 | 显示"导入计算成员"对话框，以便从源多维数据集或其它多维数据集导入计算成员。
计算成员 | 新建计算成员 | 显示计算成员生成器以开始创建计算成员。
 | 导入计算成员 | 显示"导入计算成员"对话框，以便从源多维数据集或其它多维数据集导入计算成员。
 | 编辑 | 在计算成员生成器中显示计算成员以进行编辑。
 | 删除 | 删除计算成员。
 | 重命名 | 重命名计算成员。
"计算单元"文件夹 | 新建计算单元 | 显示计算单元向导，以开始创建计算单元。
 | 导入计算单元 | 显示"导入计算单元"对话框，以便从源多维数据集或其它多维数据集导入计算单元。
计算单元 | 新建计算单元 | 显示计算单元向导以开始创建计算单元。
 | 导入计算单元 | 显示"导入计算单元"对话框，以便从源多维数据集或其它多维数据集导入计算单元。
 | 编辑 | 显示计算单元向导，以便编辑所选的计算单元定义。
 | 重命名 | 重命名所选的计算单元定义。
 | 删除 | 删除选定的计算单元对策。
"对策"文件夹 | 新建对策 | 显示对策向导以新建对策。
 | 导入对策 | 显示"导入对策"对话框，以便从源多维数据集或其它多维数据集导入对策。
对策 | 新建对策 | 显示对策向导以新建对策。
 | 导入对策 | 显示"导入对策"对话框，以便从源多维数据集或其它多维数据集导入对策。
 | 编辑 | 显示对策向导以编辑所选对策。
 | 重命名 | 重命名对策。
 | 删除 | 从虚拟多维数据集中删除对策。
"命名集"文件夹 | 新建命名集 | 显示命名集生成器以新建命名集。
 | 导入命名集 | 显示"导入命名集"对话框，以便从源多维数据集或其它多维数据集导入命名集。
命名集 | 新建命名集 | 显示命名集生成器以新建命名集。
 | 导入命名集 | 显示"导入命名集"对话框，以便从源多维数据集或其它多维数据集导入命名集。
 | 编辑 | 显示命名集生成器，以编辑所选的命名集。
 | 重命名 | 重命名命名集。
 | 删除 | 从虚拟多维数据集中删除命名集。


属性窗格（虚拟多维数据集编辑器）

使用属性窗格查看在树窗格中所选对象的属性。若要显示属性窗格，请单击该树窗格下的"属性"选项卡或单击"查看"菜单中的"属性"命令。

每种类型的对象都包含不同的属性集。可用属性窗格修改所选对象的属性设置。对于共享维度、其级别以及其成员属性，有些属性是只读的，并且必须在维度编辑器中或通过在多维数据集编辑器中编辑其源多维数据集进行更改。

下表描述了显示在属性窗格中的属性。

对象 | 属性 | 描述
对策 | Action Type | 指明该对策所执行的操作种类。
Application | 存储用于执行此对策的应用程序所需的附加信息。
Caption Expression | 如果用于执行某一对策的应用程序支持该对策，则对该对策所显示的文本。本属性以多维表达式 (MDX) 的形式表示。
Description | 显示用于描述对策的文本字符串。
Invocation 决定对策的激活方式。
  • Interactive：当最终用户在用户界面激活相关元素时，对策将交互运行。这是默认设置，而且是 Microsoft SQL Server 2000 Analysis Services 中多维数据集浏览器唯一支持的类型。

  • On Open：客户打开一个虚拟多维数据集时，对策自动运行。

  • Batch：由客户端应用程序以批处理任务的形式运行对策。这些对策提供了检查异常的方法。
Name | 包含对策名。该属性是只读的。
Value | 显示对策的语法。该语法以 MDX 表达式的形式表示，并可包含引号引起来的字面表达式。
计算成员 | BackColor | 指明显示计算成员时所用的背景颜色。若要使用这一可选的属性，客户端应用程序就必须支持此属性的使用，并且能够解释其值。只有数字值有效。虚拟多维数据集浏览器和虚拟多维数据集编辑器数据窗格不支持这个属性。
FontFlags | 指明显示计算成员时所用的字体标志。若要使用这一可选的属性，客户端应用程序就必须支持此属性的使用，并且能够解释其值。只有数字值有效。虚拟多维数据集浏览器和虚拟多维数据集编辑器数据窗格不支持这个属性。
FontName | 指明显示计算成员时所用的字体。若要使用这一可选的属性，客户端应用程序就必须支持此属性的使用，并且能够解释其值。虚拟多维数据集浏览器和虚拟多维数据集编辑器数据窗格不支持这个属性。
FontSize | 指明显示计算成员时所用的字体大小。若要使用这一可选的属性，客户端应用程序就必须支持此属性的使用，并且能够解释其值。只有数字值有效。虚拟多维数据集浏览器和虚拟多维数据集编辑器数据窗格不支持这个属性。
ForeColor | 指明显示计算成员时所用的前景颜色。若要使用这一可选的属性，客户端应用程序就必须支持此属性的使用，并且能够解释其值。只有数字值有效。虚拟多维数据集浏览器和虚拟多维数据集编辑器数据窗格不支持这个属性。
Format String | 指明显示单元值时所用的格式。单击 Format String 并显示下拉列表时，即显示常用格式的列表。此属性与度量值的 Display Format 属性接受同样的值。有关更多信息，请参见显示格式。
Name | 包含计算成员的名称。
Non Empty Behavior | 存储度量值的名称，该度量值用于解析 MDX 中的 NON EMPTY 查询。若 Non Empty Behavior 属性为空，则必须反复计算计算成员，以确定成员是否为空。如果 Non Empty Behavior 属性包含度量值的名称，则在指定的度量值为空的情况下将计算成员视为空。
Parent Dimension | 列出包含计算成员的维度。如果计算成员是度量值，请指定"度量值"。
Parent Member | 列出包含计算成员的成员。父成员确定了计算成员在维度结构中的位置。如果父维度是只包含一个级别的维度或"度量值"，那么此属性必须为空。
Solve Order | 指明当此计算成员与其它计算成员有交叉时的求值次序。有效值为 0（零）和正整数或负整数。Solve Order 值较小的计算成员在求值时优先。
Value | 包含定义计算成员值的 MDX 表达式。最终用户浏览虚拟多维数据集时即可看到该值。
Visible | 确定计算成员在多维数据集中是否可见。
计算单元 | BackColor | 指明由单元坐标和条件所定义的单元的背景颜色。
Calculation Condition | 包含一个 MDX 条件表达式，该表达式定义了利用计算公式、通过测试每个单元进行计算的计算子多维数据集单元。
Calculation Subcube | 包含一个 MDX 集表达式，该表达式定义了用计算公式计算的多维数据集数据的子集。
Calculation Value | 包含一个 MDX 表达式，该表达式为计算子多维数据集中的每个单元提供值。
Description | 包含描述计算单元定义的文本字符串。
Disabled | 确定是否已禁用单元计算。默认值为 False。
FontName | 指明由单元坐标和条件所定义的单元的字体名称。
FontSize | 指明由单元坐标和条件所定义的单元的字体大小。
FontFlags | 指明由单元坐标和条件所定义的单元的字体标记。
Calculation Pass Number | 指明执行此计算的计算传递。
Calculation Pass Depth | 确定完整计算计算单元定义所需的计算传递的数量。
ForeColor | 指明由单元坐标和条件所定义的单元的前景颜色。
Format String | 指明由单元坐标和条件所定义的单元的格式字符串。
Name | 包含计算单元定义的名称。该属性是只读的。
Solve Order | 包含表示对计算单元求值的次序的数字。
Visible | 确定计算单元定义在架构行集中是否可见。默认值为 True。
多维数据集 | Default Measure | 指明当轴上未显示度量值也未指定切片度量值时，查询所返回的度量值。如果未指定默认度量值，那么将以任意一个度量值充当默认度量值。
Description | 包含用于描述虚拟多维数据集的文本字符串。
Enable Drillthrough | 指明是否在此虚拟多维数据集上启用钻取。有关更多信息，请参见指定钻取选项。
Name | 包含虚拟多维数据集的名称。
Visible | 表示当最终用户浏览可用多维数据集列表时，能否看到该虚拟多维数据集。
维度 | All Member Formula | 包含"（全部）"级别的自定义汇总公式。此公式是 MDX 表达式，它确定了"（全部）"成员的单元值，并且会替代度量值的 Aggregate Function 属性。有关更多信息，请参见自定义汇总公式和自定义成员公式。
Description | 包含用于描述该维度的文本字符串。在虚拟多维数据集编辑器中该属性是只读的。
Name | 包含维度名。在虚拟多维数据集编辑器中该属性是只读的。
Visible | 表示当最终用户浏览虚拟多维数据集时，能否看到该维度。
级别 | Custom Rollup Formula | 包含用于替代级别中默认汇总值的 MDX 表达式。有关更多信息，请参见自定义汇总公式和自定义成员公式。
Description | 包含用于描述级别的文本字符串。在虚拟多维数据集编辑器中它是只读的。
Disabled | 表示该级别是否在此多维数据集中可用。此属性不能用于父子维度。无法在计算成员和其它 MDX 表达式中显式引用"禁用"属性为"是"的级别。
Name | 包含级别名。在虚拟多维数据集编辑器中该属性是只读的。
Visible | 表示当最终用户浏览多维数据集时能否看到该级别。若要将此属性设置为 False，就必须首先将下方所有级别的 Member Keys Unique 属性设置为 True。Visible 属性不能用于父子维度。与 Visible 属性设置为 False 的其它对象不同，级别不能在计算成员和其它 MDX 表达式的计算成员中显式引用。
度量值 | Aggregate Function | 包含用于聚合度量值的函数。在虚拟多维数据集编辑器中它是只读的。
Data Type | 指明在聚合中存储度量值的列数据类型。在虚拟多维数据集编辑器中它是只读的。
Description | 包含用于描述该度量值的文本字符串。
Display Format | 指明当最终用户浏览虚拟多维数据集时所看到的度量值的格式。有关更多信息，请参见显示格式。在虚拟多维数据集编辑器中它是只读的。
Name | 包含度量值的名称。当最终用户浏览多维数据集时将看到该名称。
Source Cube | 列出源多维数据集。从中可获得所选的度量值。在虚拟多维数据集编辑器中它是只读的。
Source Measure | 列出源度量值，从中可获得所选的度量值。在虚拟多维数据集编辑器中它是只读的。
Visible | 表示最终用户浏览多维数据集时能否看到该度量值。如果源多维数据集中度量值的这个值是 False，则在虚拟多维数据集编辑器中此属性是只读的。
成员属性 | Caption | 包含用于显示该成员属性的标题。在虚拟多维数据集编辑器中它是只读的。
Data Size | 指明存储成员属性值的列中所允许的最大字符数目。在虚拟多维数据集编辑器中它是只读的。
Data Type | 指明存储成员属性值的列的数据类型。在虚拟多维数据集编辑器中它是只读的。
Description | 包含用于描述该成员属性的文本字符串。在虚拟多维数据集编辑器中它是只读的。
Language | 标识成员属性的客户语言。在虚拟多维数据集编辑器中它是只读的。
Name | 包含成员属性的名称。在虚拟多维数据集编辑器中它是只读的。
Source Column | 包含位于维度的多个维度表中某一个表的列，该维度包含的成员属性存储了成员属性值。在虚拟多维数据集编辑器中它是只读的。
Type | 指明用于向客户端应用程序指明成员属性值中信息类型的指示符。在虚拟多维数据集编辑器中它是只读的。
Visible | 表示当最终用户浏览多维数据集时能否看到该成员属性。在虚拟多维数据集编辑器中它是只读的。
命名集 | Name | 包含命名集的名称。
Value | 包含命名集的 MDX 表达式。


数据窗格（虚拟多维数据集编辑器）

使用数据窗格来显示虚拟多维数据集的数据。数据查看窗格中的默认视图以表格形式显示数据，其中列标题由一个维度构成，左边的列由另一个维度构成。（对于这种用途，度量值被视为单个维度。）虚拟多维数据集的其余维度将在数据切片窗格中显示。

数据查看窗格中的白色单元格代表度量值，这些度量值根据数据切片窗格中显示的所有维度成员框中的成员得到。在前面的示例中，度量值反映数据切片窗格中除 Time 维度以外的每个维度的"全部"成员。如果 Time 维度的成员框中显示 1997，就表示所显示的度量值限于 1997 年。后面本主题将用示例展示如何在数据切片窗格中对维度进行切片，以限制要显示的度量值。若要浏览实际数据，可以深化数据或对数据进行切片。

在数据查看窗格中工作

若要在数据查看窗格中以维度的任意组合来浏览多维数据集数据，请将度量值或维度从数据切片窗格拖到数据查看窗格中的任意一个轴上。

用另一个维度替换数据查看窗格中的维度

  • 将维度从数据切片窗格拖到数据查看窗格中要替换的维度上。

    当鼠标指针如下所示时，其位置就是正确的：

    -或-

    数据查看窗格中的维度上移到数据切片窗格中，新的维度将替代它的位置。

将维度移到数据查看窗格中

  • 将维度从数据切片窗格拖到现有维度的下方（或旁边）的单元格中。

    当鼠标指针如下所示时，其位置就是正确的：

    -或-

    新维度出现在现有维度的下方（或旁边），从而扩展了数据查看窗格。

更改数据查看窗格中维度的顺序

  • 拖动维度并将其放到所希望的位置。

从数据查看窗格中删除维度

  • 将要删除的维度从数据查看窗格拖到数据切片窗格。

深化到成员中

  • 在数据查看窗格中双击维度成员。如果成员下方还有成员，那么它们将显示出来。

    只有双击某个成员，它才会展开。其它成员仍将在数据查看窗格中保持其当前级别。在下例中，双击 Drink 成员可深化到其子成员中。

    若要显示级别中的所有成员，请在数据查看窗格中双击父级别的名称。级别名称用按钮形状表示（例如上例中的 Product Family）。

对维度进行切片

  • 若要更改数据切片窗格中维度的成员，请单击成员框的向下箭头，展开成员，然后选择新成员。数据查看窗格中的多维数据集数据将改变，以反映维度成员的变化。

"数据"选项卡有一个内在的内存限制，当您试图浏览过多的数据或深化得太深时可能会达到该限制值。当达到该极限值时，将显示下列消息：

无法显示多维数据集的当前视图。
无法为 Flexgrid 分配内存。

不能通过添加或分配更多的内存来提高该极限值。如果达到该极限值，请减少要浏览的数据量或数据深度，或者使用其它浏览器。


写启用对话框

使用此对话框启用对多维数数据集的读/写权限。

如果对一个多维数据集进行写启用，则具有多维数据集单元读/写权限的角色中的最终用户可以记录他们在浏览该多维数据集时对单元数据所做的更改。更改记录在称为回写表的表中，与该多维数据集的数据及其源数据分隔开来。浏览写启用的多维数据集的最终用户将看到对该多维数据集在这个回写表中所做的全部更改的结果。

在 Analysis Manager 树窗格中右击一个多维数据集，然后单击"写启用"命令即会显示该对话框。

选项

表名

为多维数据集的回写表键入名称。

数据源

选择存储回写表的数据源。

新建

单击以指定新的数据源。


OLE DB 符合性

本节概述此版本的 Microsoft® SQL Server™ 2000 Analysis Services 的功能与 1999 年 3 月（2.6 版）的 OLE DB 规范的 OLAP 部分的差别。

对于规范要求的 394 个强制项，除其中的四项外，Analysis Services 符合其余所有项。

Analysis Services 实现了多维表达式 (MDX) 语法的 Backus-Naur form (BNF) 规范中列举的六个可选项（共七项）。

Analysis Services 通过新增 32 个函数和别名扩展了 MDX 语法。

Analysis Services 实现了规范中定义的可选 IMDFind 接口。

不相符项

下列项是 OLE DB 规范的一部分，Analysis Services 实现这些项的方式与规范不同或者完全省略了这些项。

强制项

在 Analysis Services 中与 OLE DB 规范不符的四个强制项中，一个是 MDX 函数，一个是 COM 接口的成员函数，最后两个与 MDX 语法有关。下表对每一项进行了标识并解释了规范与 Analysis Services 实现之间的差异。

项目 | Analysis Services 实现 | OLE DB 规范
Ancestors («Member», «Level») | «Level» 必须与 «Member» 有相同的层次结构级别。 | 返回成员的集合必须全部来自同一层次结构，但是 «Level» 不必是与 «Member» 同一层次结构的级别。
Count(«Set»[, EXCLUDEEMPTY | INCLUDEEMPTY]) | 默认状态下计算空的单元数。 | 默认状态下不计算空的单元数。
Descendants(«Member», «Level»[, «Desc_flags»] | 返回成员和指定级别间所有级别上的叶成员。 | 返回任意级别的叶成员。
Descendants(«Member», «Distance»[, «Desc_flags»] | 返回层次结构中成员和指定距离间的所有级别上的叶成员。 | 返回任意距离的叶成员。
IMDRangeRowset::GetRangeRowset | 仅当请求的范围返回单个单元或整个数据集时才返回 S_OK。任何其它范围返回 E_FAIL。 | 允许返回部分数据集。
表达式分隔符 | 要求使用单引号标记 MDX 语句中定义计算成员的表达式。 | 不需要分隔字符。
单元属性值分隔符 | 要求使用单引号标记 MDX 语句中的单元属性值。 | 不需要分隔字符。

可选

在 BNF 规范中列举的七个可选 MDX 函数中，Analysis Services 实现六个。这一忽略的函数是 CASE 语句，有简单和搜索两种形式。

附加项和扩展

通过实现可选接口并提供 32 个附加的 MDX 函数和别名，Analysis Services 提供了扩展 OLE DB 规范的附加功能。

IMDFind

IMDFind 是数据集对象上的可选接口。此接口包含查找数据集中的单元序号和轴上的元组序号的方法。

方法 | 描述
FindCell | 查找并返回数据集中基于成员数组和起始单元序号的单元序号。
FindTuple | 将指针返回到基于成员数组、起始序号和轴标识符的元组序号。

MDX 扩展

即使这些 MDX 函数不在 OLE DB 规范中出现，Analysis Services 也可以使用它们。大多数函数都提供附加的功能，有一些函数是用作现有函数的别名。

函数 | 描述
AddCalculatedMembers(«Set») | 向集合中添加计算成员。
«Member».Children | 返回成员的子代。
CovarianceN(«Set», «Numeric Expression»[, «Numeric Expression»]) | 返回在某一集合上对两个系列求得的协方差（非偏置填充）。
Crossjoin(«Set1», «Set2») | 返回两个集合的矢量积。
«Set».Current | 返回迭代过程中集合中的当前元组。
Dimensions(«Numeric Expression») | 返回这样的维度，该维度在多维数据集中的以零为基的位置是由数值表达式指定的。
Dimensions(«String Expression») | 返回其名称由字符串指定的维度。
DrilldownLevel(«Set», , «Index») | 深化集合中指定的维度。
Head(«Set»[, « Numeric Expression »]) | 返回集合中指定数目的前若干个元素。
Levels(«String Expression») | 返回其名称由字符串表达式指定的级别。
«Hierarchy».Levels(«Numeric Expression») | 返回这样一个级别，该级别在层次结构中的位置是由数值表达式指定的。
Members(«String Expression») | 返回其名称由字符串表达式指定的成员。
«Level».Ordinal | 返回级别的以零为基的序数值。
SetToArray(«Set»[, «Set»]...[, «Numeric Expression»]) | 将一个或多个集合转换为数组，以用于用户定义的函数中。
SetToStr(«Set») | 用集合构造一个字符串。
Stddev(«Set»[, «Numeric Expression»]) | Stdev 的别名。
StddevP(«Set»[, «Numeric Expression»]) | StdevP 的别名。
StdevP(«Set»[, «Numeric Expression»]) | 返回在某一集合上对数值表达式求得的标准偏差（偏置填充）。
StripCalculatedMembers(«Set») | 从集合中删除计算成员。
StrToSet(«String Expression») | 用字符串表达式构造一个集合。
StrToTuple(«String Expression») | 用字符串构造一个元组。
Subset («Set», «Start»[, «Count»]) | 从集合中返回元素的子集。
Tail(«Set»[, «Count»]) | 从集合尾部返回子集。
TupleToStr(«Tuple») | 用元组构造一个字符串。
«Dimension».UniqueName | 返回维度的唯一名称。
«Level».UniqueName | 返回级别的唯一名称。
«Member».UniqueName | 返回成员的唯一名称。
ValidMeasure(«Tuple») | 通过将不适用的维度强制到其顶层，来返回虚拟多维数据集中的有效度量值。
Variance(«Set»[, «Numeric Expression»]) | Var 的别名。
VarianceP(«Set»[, «Numeric Expression»]) | VarP 的别名。
VarP(«Set»[, «Numeric Expression»]) | 返回在某一集合上对数值表达式求得的方差（偏置填充）。
VisualTotals(«Set», «Pattern») | 动态计算集合中指定的子成员的合计，并在结果集中对合计的标签使用某种模式来显示。


用于数据挖掘的 OLE DB 符合性

本节概述此版本的 Microsoft® SQL Server™ 2000 Analysis Services 功能与 2000 年 6 月的"用于数据挖掘的 OLE DB"规范的差异。

对于规范所要求的所有项，除其中的八项外，Analysis Services 遵守所有其它项。

Analysis Services 用一附加列扩展了 MINING_MODELS 架构行集。

不相符项

在不遵守"用于数据挖掘的 OLE DB"规范的八个项目中，四个直接处理受支持的数据挖掘语法，两个引用受支持的数据挖掘模型设置，另外两个引用数据挖掘函数。

项目 		Analysis Services 版本 用于数据挖掘的 OLE DB 规范
完善挖掘模型 | 必须删除所有数据挖掘模型内容，而且必须使用完整的旧和新事例集重新训练数据挖掘模型。 | 如果挖掘算法提供程序支持完善数据挖掘模型，可通过执行带附加事例的另一个 INSERT INTO 语句来完善数据挖掘模型。
CONTENT_TYPE CONTENT_TYPE 执行下列内容类型：
  • CONTINUOUS

  • DISCRETE

  • DISCRETIZED

  • KEY

  • TABLE
 CONTENT_TYPE 执行下列内容类型：
  • CONTINUOUS

  • CYCLICAL

  • DISCRETE

  • DISCRETIZED

  • KEY

  • ORDER

  • ORDERED

  • PROBABILITY

  • PROBABILITY_VARIANCE

  • PROBABILITY_STDEV

  • SEQUENCE

  • SEQUENCE_TIME

  • STDEV

  • SUPPORT

  • TABLE

  • VARIANCE
DISTRIBUTION_FLAG DISTRIBUTION_FLAG 执行下列分发类型：
  • NORMAL
 DISTRIBUTION_FLAG 执行下列分发类型：
  • BINOMIAL

  • LOG_NORMAL

  • MULTINOMIAL

  • NORMAL

  • POISSON

  • T-DISTRIBUTION

  • UNIFORM
INSERT 语句 <源数据查询>支持下列源数据查询类型：
  • OPENROWSET

  • SHAPE

  • SINGLETON SELECT
 <源数据查询>支持下列源数据查询类型：
  • OPENROWSET

  • SELECT

  • SHAPE

  • SINGLETON CONSTANT

  • SINGLETON SELECT
SELECT 语句 | 不允许使用SELECT * FROM <模型>语法。 | SELECT * FROM <模型>语法用于浏览所有可能的事例。
CREATE MINING MODEL 语句 列定义语句中支持下列建模标志以处理丢失的值：

NOT NULL

 列定义语句中支持下列建模标志以处理丢失的值：

NOT NULL
IGNORE NULL
NULL INFORMATIVE
PredictScore(<标量列引用>) | 未实现。 | 对于可预测列，此函数返回在指定列上输入数据集的可预测分，如标量值。
PredictNodeID(<标量列引用>) | 未实现。 | 对于可预测列，此函数返回叶节点的节点 ID，事例在该节点中为指定列归类。
PredictProbabilityStdev(<标量列引用>) | 未实现。 | 该函数返回具有最大概率的柱状图条目概率的标准偏差。
PredictProbabilityVariance(<标量列引用>) | 未实现。 | 该函数返回具有最大概率的柱状图条目概率的标准偏差。

附加项和扩展

通过实现附加架构行集列，Analysis Services 提供了扩展"用于数据挖掘的 OLE DB"规范的附加功能。

架构行集扩展

MINING_MODELS 架构行集存储与数据挖掘模型有关的元数据。下表包含添加到 MINING_MODELS 架构行集的列。

列名 | 类型指示 | 描述
MSOLAP_MODEL_SOURCE | DBTYPE_WSTR | 存储 OLAP 挖掘模型的源多维数据集的名称。


MDX

多维表达式 (MDX) 语言用于在 Microsoft® SQL Server™ 2000 Analysis Services 中操作多维信息。MDX 在 OLE DB 中的 OLAP 扩展中进行定义。

MDX 在很多方面与 SQL 相似，它提供丰富而功能强大的语法来检索和操作多维数据，如存储在分析服务器上的多维数据集中的数据。Analysis Services 既支持计算成员定义中的 MDX 函数，又支持共同使用 PivotTable® 服务和 OLE DB 及 Microsoft ActiveX® 数据对象 (ADO) 生成本地多维数据集和查询多维数据集数据的完整语言实现。

此外，MDX 还支持用户定义函数的创建和注册。可以创建用户定义函数对多维数据进行操作，并按照 MDX 语法接受参数并返回值。

以下主题提供有关 MDX 的更多信息。

主题 | 描述
MDX 概述 | 描述基本 MDX 概念并提供 SQL 语法和 MDX 语法之间的比较。
MDX 基础 | 提供构造简单 MDX 查询的基本概述。
高级 MDX | 详述有关复杂 MDX 查询的更高级信息，如命名集和计算成员。
有效的 MDX | 提供关于 MDX 的提示、工作区及功能讨论。
Analysis Services 中的 MDX 函数 | 详述 MDX 所支持的语句和函数。


MDX 概述

本节介绍多维表达式 (MDX) 并解释支持其结构和语法的一些概念。本节包含以下主题。

主题 | 描述
MDX 简介 | 提供对 MDX 的简要介绍。
MDX 中的重要概念 | 解释关系查询和多维查询之间的区别。
SQL 和 MDX 比较 | 提供关于 SQL 和 MDX 之间区别的更详细描述。


MDX 简介

MDX（多维表达式的英文首字母缩写词）是一种语法，支持多维对象与数据的定义和操作。MDX 在很多方面与结构化查询语言 (SQL) 语法相似，但它不是 SQL 语言的扩展；事实上，MDX 所提供的一些功能也可由 SQL 提供，尽管不是那么有效或直观。

如同 SQL 查询一样，每个 MDX 查询都要求有数据请求（SELECT 子句）、起始点（FROM 子句）和筛选（WHERE 子句）。这些关键字以及其它关键字提供了各种工具，用来从多维数据集析取数据的特定部分。MDX 还提供了可靠的函数集，用来对所检索的数据进行操作，同时还具有用用户定义函数扩展 MDX 的能力。

如同 SQL，MDX 提供管理数据结构的数据定义语言 (DDL) 语法。其中有用于创建（和删除）多维数据集、维度、度量值以及它们的坐标对象的 MDX 命令。


MDX 中的重要概念

多维表达式 (MDX) 的用途是使对多个维度的数据的访问更为简单和直观。

维度、级别、成员和度量值

用于数据定义和操作的大多数语言（如 SQL）都设计为在两个维度中检索数据：列维度和行维度。下面的关系图说明一个用于存储定单信息的传统关系数据库。

各个表均提供二维数据。各行与各列的交集是一单个数据元素，称为字段。要在 SQL 查询中查看的特定列用 SELECT 语句进行指定，而要检索的行用 WHERE 子句加以限定。

而对于多维数据，则可以用具有两个以上纬度的结构来表示。这些称作多维数据集的结构具有多个维度。在多维数据集中维度的交集处，可能有不止一个数据元素，这些数据元素称为度量值。下列关系图说明使用三个维度（"路线"、"服务"和"时间"）和两个度量值（"包"和"上一次"）的多维数据集。各个维度分成不同的级别，而每个级又进一步分为成员。例如，"源"维度提供"东半球"级别，该级别又分为四个成员，"非洲"、"亚洲"、"澳大利亚"和"欧洲"。

如您所见，即使是从多维数据源中查询简单数据也可能是一项复杂的任务。例如，多维数据集可以有三个以上的维度，或者可以只有一个维度。

多维数据集、维度、级别、成员、度量值的概念对于理解 MDX 语法很重要。如果您是联机分析处理 (OLAP) 数据库的初学者，请进一步阅读这些构架主题。

单元、元组和集合

SQL 从表返回二维数据子集，而 MDX 从多维数据集返回多维数据子集。

多维数据集关系图表明多维成员的交集创建单元，从这些单元可以获取数据。为标识和析取这类数据（不管这些数据是单个单元还是单元块），MDX 使用称为元组的参照系。元组列出维度和成员来标识多维数据集内的单个单元和更大的单元部分；因为各个单元是多维数据集所有维度的交集，所以元组可以唯一标识多维数据集中的每个单元。为起到参照的作用，将多维数据集中的度量视为该多维数据集本身中的一个专用维度，名为"度量值"。例如，在前面的关系图中，以下元组标识其中值为 400 的单元：

(源.[东半球].非洲, 时间.[下半年].[第四季度], 路线.航空, 度量值.包)

元组唯一标识多维数据集中的一部分；它不必指某个特定单元，也不必包括多维数据集中的所有维度。以下示例均为多维数据集关系图的元组：

(源.[东半球])
(时间.[下半年], 源.[西半球])

这些元组提供多维数据集称为切片的各个部分，这些部分包含不止一个单元。

元组的有序集合称为集合。在 MDX 查询中，轴维度和切片器维度由这种元组集合组成。以下示例是对关系图内多维数据集中的一个元组集合的描述。

{ (时间.[上半年].[第一季度]), 时间.[第二季度].[第三季度]) }

此外，还可以创建命名集。命名集是一个带有别名的集合，用来使 MDX 查询更易理解，并且如果 MDX 查询特别复杂，还可使处理更为简单。

轴维度和切片器维度

在 SQL 中，通常需要限制对表的查询所返回的数据量。例如，可能希望只看到有四十个字段的表中的两个字段，而且如果有满足特定条件的第三个字段，也只看到两个字段。可以通过在 SELECT 语句中指定列，并使用 WHERE 语句基于特定准则限制所返回的行来完成此任务。

在 MDX 中，这些概念也适用。SELECT 语句用来选择要返回的维度和成员，称之为轴维度。WHERE 语句用来将返回的数据限定为特定维度和成员条件，称之为切片器维度。轴维度预期返回多个成员的数据，而切片器维度预期返回单个成员的数据。

"轴维度"和"切片器维度"这两个术语用于区别查询的源多维数据集中单元的维度（在 FROM 子句中指明）与结果多维数据集中的单元的维度，其中，结果多维数据集可由多个多维数据集维度组成。

计算成员

计算成员是并非基于数据、而是基于 MDX 中评估表达式的成员。它们的返回方式与一般成员相同。MDX 提供一组可用于创建计算成员的可靠的函数集合，从而在多维数据操作方面给用户以非常大的灵活性。

用户定义函数

MDX 以用户定义函数的形式提供扩展性，这些函数可使用任何支持组件对象模型 (COM) 接口的编程语言进行编写。用户可以创建和注册自己的函数，这些函数对多维数据进行操作，同时按 MDX 语法接受参数并返回值。用户可以从计算成员生成器、支持 MDX 的数据定义语言 (DDL) 语句以及 MDX 查询内部调用用户定义函数。

PivotTable 服务

在 Microsoft® SQL Server™ 2000 Analysis Services 中，MDX 数据定义和操作服务通过 PivotTable® 服务提供。当未连接到分析服务器时，PivotTable 服务还为多维查询提供独立的 OLE DB 提供程序功能。PivotTable 服务用于本地多维数据集的定义和操作，使用此多维数据集可以多维格式在本地存储数据。

请参见

轴维度和切片器维度

计算成员

多维数据集

维度

级别

度量值

成员、元组和集合

PivotTable 服务


SQL 和 MDX 比较

多维表达式 (MDX) 语法乍看起来与结构化查询语言 (SQL) 的语法非常相似。在很多方面，MDX 所提供的功能也与 SQL 相似；甚至经过努力可以在 SQL 中复制某些由 MDX 提供的功能。

然而，SQL 和 MDX 之间存在一些显著区别，并且用户应当从概念上认清这些区别。以下信息将从 SQL 开发人员的角度，对认清 SQL 和 MDX 之间概念上的区别提供指导。

SQL 和 MDX 之间最显著的区别在于 MDX 具有引用多个维度的能力。尽管在 Microsoft® SQL Server™ 2000 Analysis Services 中存在单独使用 SQL 查询多维数据集的可能性，但是 MDX 所提供的命令却可以专门检索具有几乎任意多个维度的多维数据结构中的数据。

SQL 处理查询时仅涉及列和行这两个维度。因为 SQL 只设计用来处理二维表格格式数据，所以"列"和"行"这两个术语在 SQL 语法中具有意义。

比较而言，MDX 在查询中则可处理一个、两个、三个或更多的维度。因为 MDX 中可以使用多个维度，所以每个维度称作一个轴。MDX 中的"列"和"行"这两个术语在 MDX 查询中仅用作前两个轴维度的别名；还有其它指派了别名的维度，但对于 MDX 这些别名本身没有真实意义。MDX 支持这些别名是为了显示；许多 OLAP 工具不能显示具有两个以上维度的结果集。

在 SQL 中，SELECT 子句用于定义查询的列布局，而 WHERE 子句用于定义行布局。可是在 MDX 中 SELECT 子句可用于定义几个轴维度，而 WHERE 子句可用来多维数据限制于特定的维度或成员。

在 SQL 中，WHERE 子句用于筛选查询所返回的数据。在 MDX 中，WHERE 子句用于提供查询所返回的数据切片。虽然这两个概念相似，却不可等同。

SQL 查询使用 WHERE 子句包含应该或不应该在结果集中返回的项目的任意列表。虽然筛选中长的条件列表可以缩小所检索数据的范围，但是不要求子句中的元素必须产生清晰而简洁的数据子集。

然而在 MDX 中，切片的概念意味着 WHERE 子句中的各个成员标识来自不同维度的数据的不同部分。由于多维数据的结构化结构，不可能请求同一维度的多个成员的切片。因为这一点，MDX 中的 WHERE 子句能提供清晰而简洁的数据子集。

创建 SQL 查询的过程也与创建 MDX 查询的过程不同。SQL 查询的创建者将二维行集的结构形象化并加以定义，并且编写对一个或多个表的查询对该结构进行填充。相反，MDX 查询的创建者通常将多维数据集的结构形象化并加以定义，并且编写对单个多维数据集的查询对该结构进行填充。这可能导致多维数据集具有任意数量的维度，例如，可能存在一个维度的数据集。

SQL 结果集的视觉形象是直观的；集合是一个行与列组成的二维表格。但是，MDX 结果集的视觉形象就不直观。因为多维结果集可以有三个以上的维度，所以将该结构形象化比较困难。要在 SQL 中引用这些二维数据，在引用称为字段的单个数据单元时，可以使用适合于数据的任何方法，列名称和行的唯一标识均可。但是，MDX 在引用数据单元时，不管数据形成的是单个单元还是一组单元，都使用一种非常特定并且统一的语法。

尽管 SQL 和 MDX 具有相似的语法，但是 MDX 语法功能异常强大，而且，它可以非常复杂。然而，因为设计 MDX 本来意图是为了提供一种查询多维数据的简单而有效的方法，所以它采用了一致且易于理解的方式使用户认清二维查询和多维查询在概念上的区别。


基本 MDX

多维表达式 (MDX) 命令使您得以查询多维数据集之类的多维对象并返回多维数据集。本主题及其副主题提供 MDX 查询的概述。

与 SQL 的情况一样，MDX 查询的作者在编写查询前必须确定所请求数据集的结构。以下主题描述 MDX 查询及其产生的数据集，并提供有关基本 MDX 语法的更详细信息。

主题 | 描述
基本 MDX 查询 | 提供 MDX 查询的基本语法信息。
成员、元组和集合 | 提供对成员、元组和集合的简要描述，包括概念性信息及语法。
轴维度和切片器维度 | 描述轴维度和切片器维度以及它们在带有 SELECT 和 WHERE 子句的 MDX 查询中的使用。
建立多维数据集上下文 | 提供对 MDX 查询中的 FROM 子句的用途的描述。


基本 MDX 查询

基本多维表达式 (MDX) 查询以与下面的示例类似的方式进行构造：

SELECT [<axis_specification>
       [, <axis_specification>...]]
  FROM [<cube_specification>]
[WHERE [<slicer_specification>]]
基本 MDX 语法——SELECT 语句

在 MDX 中，SELECT 语句用于指定包含多维数据的子集的数据集。为讨论 MDX SELECT 语句的各种语法元素，本主题提出一个基本 MDX 查询示例并将其分解为本身的各种语法元素以讨论各个元素的用途和结构。

若要指定数据集，MDX 查询必须包含有关下列各项的信息：

  • 轴的数目。最多可在 MDX 查询中指定 128 个轴。

  • 要包括在 MDX 查询的各个轴上的来自各个维度的成员。

  • 设置 MDX 查询上下文的多维数据集的名称。

  • 来自切片器维度的成员，在该维度上对来自轴维度的成员进行数据切片。

这些信息可能很复杂。如您在本主题中将看到的，MDX 语法可以简单且直观的方式使用 MDX SELECT 语句提供这类信息。

基本 MDX 查询示例

以下 MDX 查询示例用于讨论基本的 MDX SELECT 语句语法的各个部分：

SELECT
   { [Measures].[Unit Sales], [Measures].[Store Sales] } ON COLUMNS,
   { [Time].[1997], [Time].[1998] } ON ROWS
FROM Sales
WHERE ( [Store].[USA].[CA] )

基本的 MDX SELECT 语句包含一个 SELECT 子句和一个 FROM 子句，以及一个可选的 WHERE 子句。

SELECT 子句决定 MDX SELECT 语句的轴维度。本 MDX 查询示例中定义了两个轴维度。有关 SELECT 子句中轴维度的构造的更多信息，请参见指定轴维度的内容。

FROM 子句决定当析取数据以填充 MDX SELECT 语句的结果集时将使用哪个多维数据源。有关 FROM 子句的更多信息，请参见 SELECT 语句。

可选用的 WHERE 子句决定哪个维度或成员用作切片器维度；这将数据的析取限制于特定维度或成员。本 MDX 查询示例使用 WHERE 子句来将轴维度的数据析取限制于 Store 维度的特定成员。有关 WHERE 子句中切片器维度的构造的更多信息，请参见指定切片器维度的内容。

MDX SELECT 语句支持 WITH 关键字之类的其它可选语法，并支持使用 MDX 函数通过计算应包含在轴或切片器维度中的内容来构造成员。有关 MDX SELECT 语句的更多信息，请参见 SELECT 语句。

MDX SELECT 语句的语法格式与 SQL 语法类似；可是用户将注意到以下几个显著区别：

  • MDX 语法通过用花括号（{ 和 } 字符）括住元组或成员来辨别集合。有关成员、元组和集合语法的更多信息，请参见成员、元组和集合。

  • MDX 查询在 SELECT 语句中最多可以有 128 个轴维度，但只有前 5 个轴有别名。轴可以用其在 MDX 查询中的顺序位置或者用其别名（如果给它指派了别名的话）来引用。在上面的 MDX 查询示例中，使用了 COLUMNS 和 ROWS 轴别名。此 MDX 查询还可以使用各个轴的顺序位置用以下方式编写：
    SELECT
   { [Measures].[Unit Sales], [Measures].[Store Sales] } ON AXIS(0),
   { [Time].[1997], [Time].[1998] } ON AXIS(1)
FROM Sales
WHERE ( [Store].[USA].[CA] )
  • 如同 SQL 查询一样，FROM 子句为 MDX 查询指定数据的源。然而，与 SQL 查询不同的是，MDX 查询中的 FROM 子句被限定为单个多维数据集。来自其它多维数据集的信息也可以进行检索，方法是使用 LookupCube 函数逐个值地进行。

  • WHERE 子句用于描述切片器维度。如果某个维度没有作为 WHERE 子句的一部分提出，则 Microsoft® SQL Server™ 2000 Analysis Services 假定任何未指派给轴维度的维度均为切片器维度，并用其默认成员对该维度进行筛选。WHERE 子句可以为指定维度更改筛选进程，从而实现对所包含数据的精确控制。


成员、元组和集合

在开始创建多维表达式 (MDX) 查询之前，应当理解成员、元组和集合的定义，也要理解用于构造和引用这些元素的 MDX 语法。

成员

成员是代表维度中一次或多次数据出现的项。请把维度中的成员看作基础数据库中的一个或多个记录，其该列内的值归入该分类。成员是描述多维数据集中的单元数据时的最低参照层次。

例如，下面的关系图加入阴影以表示"时间.[下半年].[第三季度]"成员。

如果成员的名称中有空格或数字，则要使用括号字符 [ 和 ]。尽管"时间"维度是一个词，也可在其外面加上方括号；上面的关系图中所示的成员还可表示为：

时间.[下半年].[第四季度]
成员名和成员键

可用其成员名或其成员键引用某个成员。上一示例中用其成员名"第四季度"引用"时间"维度中的成员。但是，在具有非唯一成员名的维度中成员名可以是重复的，或者在可更改维度中成员名是可更改的。

引用成员的可选方法是引用成员键。成员键由维度用来专门标识给定成员。在 MDX 中使用"和"号 (&) 字符将成员键与成员名区别开，如下面的示例所示：

[时间].[下半年].&[Q4]

在这种情况下，使用"第四季度"成员的成员键 Q4。引用成员键确保在可更改维度中以及在具有非唯一成员名的维度中成员的正确标识。

"和"(&) 号字符可用来表示任何 MDX 表达式中的成员键引用。

计算成员

还可将成员创建为 MDX 查询的一部分，以使返回的数据基于评估表达式，而不是要查询的多维数据集中所存储的数据。这些成员称为计算成员，它们提供大量的 MDX 的功能和灵活性。在 MDX 查询中用 WITH 关键字定义计算成员。例如，如果想要通过增加"包"度量值现有值的 10% 来对所有包裹进行预测估算，可以仅创建一个提供此信息的计算成员，并象使用多维数据集中的任何其它成员那样使用它，如以下示例所示。

WITH MEMBER [Measures].[PackagesForecast] AS
'[Measures].[Packages] * 1.1'

有关更多信息，请参见计算成员。

成员函数

MDX 提供许多函数来从其它 MDX 实体（如维度和级别）检索成员，因此对成员的显式引用并非总是必要。例如，FirstChild 函数允许从给定维度或级别检索所有的成员；为得到"时间"维度的第一个子代成员，可以将其显式声明，如以下示例所示：

时间.[上半年]

还可以使用 FirstChild 函数来返回相同的成员，如下例所示：

时间.FirstChild

有关 MDX 成员函数的更多信息，请参见 MDX 函数列表。

元组

元组用于定义来自多维数据集的数据切片；它由来自一个或多个维度的单个成员的有序集合组成。元组用于标识来自多维数据集的特定多维数据块；由来自多维数据集中各个维度的一个成员组成的元组完全描述单元值。换言之，元组是一种成员向量；请把元组看作基础数据库中的一个或多个记录，其这些列内的值归入这些分类。一系列关系图给出了元组的各种类型。

多维数据集的阴影部分表示 (时间.[下半年]) 元组。请注意该元组包括了多维数据集的一半，因为它未排除"源"或"路线"维度中的任何信息。

下面的关系图加入阴影以表现 (时间.[下半年], 路线.非陆地.航空) 元组。

本元组表示位于这些成员的交集内的单元。

在 MDX 中，元组根据其复杂性依照语法进行构造。如果它仅由来自单个维度的一个成员组成（通常称作简单元组），则以下语法是可接受的。

时间.[下半年]

如果它由来自不止一个维度的成员组成，则元组所表示的成员必须括在圆括号内，如以下示例所示。

(时间.[下半年], 路线.非陆地.航空)

由单个成员组成的元组也可括在圆括号内，但这不是必需的。元组常常编组成集合，以便在 MDX 查询中使用。

元组函数

有一些返回元组的 MDX 函数，它们可在任何接受元组的地方使用。

有关元组函数的更多信息，请参见 MDX 函数列表。

元组和维数

元组可包括多个维度中的成员，也可包括来自同一个维度的多个成员。术语维数用来表示元组中成员所描述的维度。顺序在元组的维数中起一定作用，并可影响集合内元组的使用。

集合

集合是零个、一个或多个元组的有序集合。集合最常用于在 MDX 查询中定义轴维度和切片器维度，并且同样可能只具有单个元组或可能在某些情况下为空。下面的示例显示具有两个元组的集合：

{ (时间.[上半年], 路线.非陆地.航空), (时间.[下半年], 路线.非陆地.海路) }

一个集合可包含同一个元组不止一次的出现。下面的集合是可接受的：

{ 时间.[下半年], 时间.[下半年] }

集合指以元组表示的一组成员组合，或指集合中的元组所代表的单元中的值，视集合使用的上下文而定。

在 MDX 语法中，元组用花括号括起来以构造集合。

重要 由单个元组组成的集合不是元组；MDX 将其解释为集合。某些 MDX 函数接受元组作为参数，而如果传递单个元组集合，则会产生错误。元组和单个元组集合不可互换。

聚合函数

显式键入元组并将它们括在花括号内并不是检索集合的唯一方法。MDX 支持许多种返回集合的函数。

冒号运算符使使您得以使用成员的自然顺序创建集合。例如下面的集合：

{[第一季度]:[第四季度]}

检索与下面的集合相同的成员集合：

{[第一季度], [第二季度], [第三季度], [第四季度]}

冒号运算符是一种包含函数；冒号运算符两边的成员都将包含在结果集内。

其它返回集合的 MDX 函数可单独使用，也可作为以逗号分隔的成员列表的一部分使用。例如，下面所有的 MDX 表达式都是有效的：

{时间.Children}
{时间.Children, 路线.非陆地.航空}
{时间.Children, 路线.非陆地.航空, 源.Children}

有关聚合函数的更多信息，请参见 MDX 函数列表。

集合和维数

与元组一样，集合也有维数。由于集合由元组组成，因此集合的维数用其中各个元组的维数表达。正因为如此，所以集合中的元组必须具有相同的维数。换言之，下面的示例不能作为集合使用：

{ (时间.[下半年], 路线.非陆地.航空), (路线.非陆地.航空, 时间.[下半年]) }

集合内元组的顺序非常重要；例如，它影响轴维度内的嵌套顺序。第一个元组表示第一个或最外部维度，第二个元组表示次外部维度，以此类推。

命名集

命名集是为其创建了别名的集合。命名集最常用在复杂的 MDX 查询中，以使这些查询更易阅读和便于维护。

有关命名集的更多信息，请参见在 MDX 中生成命名集。


轴维度和切片器维度

当设计多维表达式 (MDX) 查询时，应用程序一般查看多维数据集并将维度集合划分为两个子集：

  • 轴维度，为多个成员检索数据的维度。

  • 切片器维度，为单个成员检索数据的维度。

因为轴维度和切片器维度都可从要查询的多维数据集的多个维度构造，所以用这些术语将要查询的多维数据集使用的维度与在由 MDX 查询返回的多维数据集中创建的维度区分开。

例如，假定存在名为 TestCube 的多维数据集，具有两个名为 Route 和 Time 的简单维度。因为多维数据集的度量值是 Measures 维度的一部分，所以该多维数据集总共有三个维度。查询要提供一个矩阵，可以在该矩阵内跨路线和时间比较 Packages 度量值。

在下面的 MDX 查询示例中，Route 和 Time 维度用作轴维度，Measures 维度用作切片器维度。Members 函数表明要用于构造集合的维度或级别的成员，而不必在 MDX 查询中显式声明给定维度或级别的各个成员。

SELECT
   { Route.nonground.Members } ON COLUMNS,
   { Time.[1st half].Members } ON ROWS
FROM TestCube
WHERE ( [Measures].[Packages] )

得到的值表格类似于下表，表中在 COLUMNS 和 ROWS 轴维度的各个交集显示 Packages 度量值的值。

 | air | sea
1st quarter | 60 | 50
2nd quarter | 45 | 45

MDX 首先评估轴维度和切片器维度，并在从要查询的多维数据集检索信息之前生成结果多维数据集的结构。

切片器维度在其用途上类似于轴维度，但具有对轴维度不起作用的一些限制。

说明 Microsoft® SQL Server™ 2000 Analysis Services 除支持 Measures 维度外，最多可支持多维数据集中的 128 个共享或专用维度。因此，对 Analysis Services 多维数据集的 MDX 查询限制在最多 129 个轴。

请参见

指定轴维度的内容

指定切片器维度的内容


指定轴维度的内容

轴维度决定多维结果集的边缘。多维表达式 (MDX) 使用 SELECT 子句通过将集合指派到特定轴来指定轴维度。以下信息描述在 MDX 中怎样处理这种指派。

在下面的语法示例中，每个 <axis_specification> 值定义一个轴维度。数据集中轴的个数等于多维表达式 (MDX) 查询中 <axis_specification> 值的个数。MDX 查询最多可以支持 128 个指定轴，但几乎没有 MDX 查询会用到 5 个以上的轴。

<axis_specification> 语法可分解为：

<axis_specification> ::= <set> ON <axis_name>

<axis_name> ::= COLUMNS | ROWS | PAGES | SECTIONS | CHAPTERS | AXIS(<index>)

每个轴维度与一个数字相关联：0 对应于 x 轴，1 对应于 y 轴，2 对应于 z 轴，等等。<index> 值是轴号。对于前 5 个轴，COLUMNS、ROWS、PAGES、SECTIONS 和 CHAPTERS 这几个别名可分别代替 AXIS(0)、AXIS(1)、AXIS(2)、AXIS(3) 和 AXIS(4) 使用。

MDX 查询无法跳过轴。也就是说，包含一个或多个 <axis_name> 值的查询不能排除低编号轴或中间轴。例如，查询不能有 ROWS 轴而无 COLUMNS 轴，或有 COLUMNS 和 PAGES 轴而无 ROWS 轴。

然而可以指定不带轴的 SELECT 子句（即空 SELECT 子句）。这种情况下，所有维度均为切片器维度，并且 MDX 查询选择一个单元。

各个 <set> 值定义轴的内容。有关集合的更多信息，请参见成员、元组和集合。


指定切片器维度的内容

切片器维度筛选多维数据。可以通过将切片器维度包含在多维表达式 (MDX) 查询的 WHERE 子句来限制所返回的数据。

假定未显式指派给轴的维度是切片器维度，并用其默认成员进行筛选。维度的默认成员可在 Analysis Manager 的"Default Member"属性中进行显式指定。该属性等同于决策支持对象 (DSO) 中的 DefaultMember 属性。如果未显式指定默认成员，如果存在"（全部）"级别，则默认成员为"全部"成员，否则为最高级别的任意成员。（"全部"成员的名称不必为"全部"。）

切片器维度还可通过使用 MDX 语法的 WHERE 子句进行显式指定。WHERE 子句的语法可分解为：

[WHERE [<slicer_specification>]]

成员名 [全部] 可能在多维数据集内不唯一，因为许多维度都拥有 [全部] 级别。建议用户用维度名对该名称加以限定，使其含义明确。下面的示例示范 WHERE 子句和"全部"成员的使用：

WHERE ( [Route].[All], [Time].[1st half] )

切片器维度只可接受评估为单个元组的表达式。这并不意味着在切片器维度中只能显式声明单个元组，如下例所示：

WHERE ( [Time].[1st half], [Route].[nonground] )

如果以切片器表达式的形式提供元组集合，则 MDX 将尝试顺着集合聚合各个元组中的结果单元来评估集合。换言之，MDX 将尝试对集合使用 Aggregate 函数，用与其相关的聚合函数聚合各个度量值。下面的示例展示了使用元组集合的有效的 WHERE 子句：

WHERE { ([Time].[1st half], [Route].[nonground]), ([Time].[1st half], [Route].[ground]) }

如果«slicer_specification» 不能求解为单个元组，则将产生错误。

有关 Aggregate 函数的更多信息，请参见 Aggregate。


建立多维数据集上下文

若要建立多维数据集上下文，请指定要对其运行多维表达式 (MDX) 查询的多维数据集。MDX 查询中的 FROM 子句决定多维数据集上下文。下面的语法表明哪个多维数据集为 MDX 查询提供上下文：

FROM «cube_specification»

«cube_specification» 由单个多维数据集的名称完成。

例如，如果 MDX 查询要对 SalesCube 多维数据集运行，则 FROM 子句可以是：

FROM SalesCube

这并未限制用户一次使用不止一个多维数据集；可以使用 LookupCube 函数来从多维数据集上下文以外的多维数据集检索数据。下面的语法将产生错误，因为与 SQL 不同，MDX 查询中的 FROM 子句通常不允许联接：

FROM SalesCube, OtherCube

然而，一些 OLAP 提供程序可能允许顺着全等维度联接多维数据集；如果两个多维数据集共享一个维度，则可以使用此语法对其进行联接，其方式与链接多维数据集的联接方式类似。有关联接多维数据集的更多信息，请参见 OLAP 提供程序文档。

有关 MDX SELECT 语句中 FROM 子句的更多信息，请参见 SELECT 语句。


高级 MDX

多维表达式 (MDX) 语法的设计不仅为了从多维度数据源析取简单数据，而且为了提供附加功能来创建命名集、计算成员，及将信息写回到维度和单元。

下面的主题涉及 MDX 语法更高级的方面。

主题 | 描述
创建和使用属性值 | 详述创建和使用维度、级别、成员和单元属性的过程
生成 MDX 中的命名集 | 描述 MDX 中命名集的用途和在 MDX 查询中创建与使用命名集所需的技术
生成 MDX 中的计算成员 | 提供有关 MDX 中计算成员的信息，包括在 MDX 表达式中创建和使用计算成员所需的技术
生成 MDX 中的高速缓存 | 提供有关 MDX 中的高速缓存的信息，包括在 MDX 查询中创建和使用高速缓存所需的技术
生成 MDX 中的计算单元 | 详述创建和使用计算单元的过程
在 MDX 中创建和使用用户定义函数 | 详述 MDX 中外部函数库及用户定义函数的创建和使用
使用回写 | 描述使用 MDX 将信息写回到多维数据源的维度和单元的技术
使用 DRILLTHROUGH 检索源数据 | 讨论使用 MDX DRILLTHROUGH 语句，检索适用于多维数据源中单元的源数据行集
理解传递次序和求解次序 | 详述传递次序和求解次序的概念，以及这些功能如何影响 MDX 查询和表达式


创建和使用属性值

多维表达式 (MDX) 支持维度、级别、成员和单元的内在属性及自定义属性。内在属性用来为单个单元提供唯一的名称、标题甚至格式和字体大小。另一方面，自定义属性可用来为成员提供几乎任何类型的附加特性。

下表所列为描述这些属性用途的主题。

主题 | 描述
成员属性的使用 | 描述成员所支持的内在属性、创建新成员属性的过程和用来查询成员属性的进程
单元属性的使用 | 描述单元所支持的内在属性、创建新单元属性的过程和用来查询单元属性的进程


成员属性的使用

在给定轴的轴规范中，集合表达式选择元组来填充轴。数据集返回有关各个元组中每个成员的一些基本信息，如成员名、父级别、子代数目等等。这些信息即称为成员属性。成员常常具有与其相关的附加属性，并且成员属性对给定级别的所有成员均可用。就组织结构而言，成员属性可视为存储于单个维度上按维度组织的数据。

例如，"产品"级别可为每件产品提供 SKU、SRP、"重量"和"体积"属性。这些属性不是成员，但包含有关"产品"级别成员的附加信息。所有成员均支持成员的格式值等内在成员属性，而维度和级别提供附加的内在维度和级别成员属性，如成员的 ID。可使用维度编辑器或多维数据集编辑器，或用多维表达式 (MDX) 语句在 Analysis Manager 中创建附加成员属性。成员属性可通过使用 DIMENSION PROPERTIES 关键字或 Properties 函数来进行检索。

DIMENSION PROPERTIES 关键字

应用程序可能需要通过在轴上添加成员属性来扩展成员信息。因此，各个维度的各个级别可能包含成员的一组可用属性。

DIMENSION PROPERTIES 关键字用来指定用于给定轴维度的成员属性。下面的语法定义了 MDX SELECT 语法，添加了 DIMENSION PROPERTIES 关键字的语法：

SELECT [<axis_specification>
       [, <axis_specification>...]]
  FROM [<cube_specification>]
[WHERE [<slicer_specification>]]

<axis_specification> 值包含可选的 <dim_props> 值，它使用 DIMENSION PROPERTIES 关键字来启用维度、级别和成员属性的查询。带有 <dim_props> 值的 <axis_specification> 语法分解为：

<axis_specification> ::= <set> [<dim_props>] ON <axis_name>

<set> 和 <axis_name> 值在指定轴维度的内容中进行描述。<dim_props> 语法分解为：

<dim_props> ::= [DIMENSION] PROPERTIES <property> [,<property>...]

<property> 语法的分解会因所查询的属性而有所不同。维度和级别的内在成员属性前必须加上维度和/或级别的名称。成员的内在成员属性不能由维度名或级别名限定。自定义成员属性前应加上其所驻留的级别的名称。

可以通过在轴规范的集合表达式之后使用 DIMENSION PROPERTIES 关键字，来选择附加成员属性。例如下面的 MDX 查询：

SELECT
   CROSSJOIN(年, (销售量, 预算销售量)) ON COLUMNS,
   NON EMPTY 产品.MEMBERS
   DIMENSION PROPERTIES 产品.SKU, 产品.SRP ON ROWS
FROM SalesCube
WHERE (一月, 销售代表.[All], 地理.美国)

返回以下数据集：

可以为特定轴仅指定那些投影在轴上的维度属性。可能会混淆同一查询中对内在维度和级别成员属性的请求与内在成员属性。有关内在维度和级别成员属性与内在成员属性的差别，稍后会在本主题中进行详细解释。

Properties 函数

成员属性还可通过使用 MDX 中的 Properties 函数进行检索。例如，下面的 MDX 查询使用 WITH 关键字来创建包含 [Store Sqft] 成员属性的计算成员：

WITH
   MEMBER [度量值].[商店规模] AS
   'Val(商店.当前成员.属性("商店平方米"))'

SELECT
   {[度量值].[单个销售额], [度量值].[商店规模]} ON COLUMNS,
   {[商店].[商店名称].成员} ON ROWS
From Sales

以生成一个与下表中的结果集类似的结果集：

有关生成计算列的更多信息，请参见生成 MDX 中的计算成员。

请注意 MDX 查询示例中 Val() 函数的使用。Properties 函数是字符串类型的函数；所有用 Properties 函数检索的成员属性均将强制转换为字符串。

请参见

CREATE CUBE 语句

自定义成员属性

内在维度和级别成员属性

内在成员属性

Properties属性

SELECT 语句


内在维度和级别成员属性

所有维度和级别均支持下表所列的内在成员属性。这些成员属性在特定维度或级别的上下文中使用，并且为指定维度或级别的每个成员提供值。例如，在多维表达式 (MDX) 查询中指定下列语句：

[Sales].Name

返回 [Sales] 维度的各个引用成员的名称：

属性 | 描述
ID | 成员的内部维护 ID
Key | 存储于 MEMBERS 架构行集的 MEMBER_KEY 列中成员的值
Name | 成员的名称

维度成员属性前是应用属性的维度的名称。下例示范了正确的语法：

DIMENSION PROPERTIES «Dimension».ID

级别成员属性前可加上级别名，或为附加规范加上维度和级别名，如下所示：

DIMENSION PROPERTIES [«Dimension».]«Level».ID

请参见

成员属性的使用


内在成员属性

所有的成员也都支持下表所列的内在成员属性。内在成员属性不能为特定维度或级别加以请求；它们应用于多维表达式 (MDX) 查询中轴维度的所有成员。例如，在 MDX 查询中指定下列语句：

PROPERTIES DESCRIPTION

返回对轴维度中各个成员的描述。

下表列出 Microsoft SQL Server 2000 Analysis Services 所支持的内在成员属性。

属性 | 描述
CALCULATION_PASS_DEPTH | 仅用于计算单元。计算公式的传递深度，此属性确定解析计算公式需要多少个传递。有关传递次序的更多信息，请参见理解传递次序和求解次序。
CALCULATION_PASS_NUMBER | 仅用于计算单元。计算公式的传递号，此属性确定计算公式将分别在哪个传递上开始赋值和结束计算。该属性的默认值为 1；其最大值为 65,535。有关传递次序的更多信息，请参见理解传递次序和求解次序。
CATALOG_NAME | 该成员所属的目录的名称。
CHILDREN_CARDINALITY | 成员具有的子代数目。它可为估计值，所以不应依赖它进行确切计数。提供程序应尽可能返回最佳的估计值。
CONDITION | 仅用于计算单元。计算单元的计算条件。此属性接受 MDX 逻辑表达式，对计算子多维数据集中的每个单元计算此表达式。如果它返回 True，将应用计算公式而且单元返回所得值。如果返回 False，单元返回原始单元值。如果未指定，CONDITION 默认为 True（换句话说，计算公式应用于计算子多维数据集中的所有单元。）
CUBE_NAME | 该成员所属的多维数据集的名称。
DESCRIPTION | 人们可读取的成员或计算单元定义的文字说明。
DIMENSION_UNIQUE_NAME | 该成员所属的维度的唯一名称。对于通过限定生成唯一名称的提供程序，此名称的各个组件彼此分隔。
DISABLED | 仅用于计算单元。表明是否禁用计算单元的 Boolean 属性。DISABLED 默认为 False。
HIERARCHY_UNIQUE_NAME | 层次结构的唯一名称。如果成员所属的层次结构不止一个，则其所属的每个层次结构都各有一行。对于通过限定生成唯一名称的提供程序，此名称的各个组件彼此分隔。
LEVEL_NUMBER | 成员距层次结构的根的距离。根级为零。
LEVEL_UNIQUE_NAME | 成员所属的级别的唯一名称。对于通过限定生成唯一名称的提供程序，此名称的各个组件彼此分隔。
MEMBER_CAPTION | 与成员相关的标签或标题。它主要用于显示。如果不存在标题，则返回 MEMBER_NAME。
MEMBER_GUID | 成员 GUID。
MEMBER_NAME | 成员的名称。
MEMBER_ORDINAL | 成员的顺序号。这是当本维度成员以其自然排序顺序排序时，该成员的排序名次。如果提供程序没有自然顺序的概念，则这应是以 MEMBER_NAME 排序后的名次。
MEMBER_TYPE 成员的类型。它可以是下列值之一：
  • MDMEMBER_TYPE_REGULAR

  • MDMEMBER_TYPE_ALL

  • MDMEMBER_TYPE_FORMULA

  • MDMEMBER_TYPE_MEASURE

  • MDMEMBER_TYPE_UNKNOWN

MDMEMBER_TYPE_FORMULA 优先于 MDMEMBER_TYPE_MEASURE。因此，如果 Measures 维度上有一公式（计算）成员，它将列为MDMEMBER_TYPE_FORMULA。

MEMBER_UNIQUE_NAME | 成员的唯一名称。对于通过限定生成唯一名称的提供程序，此名称的各个组件彼此分隔。
PARENT_COUNT | 该成员具有的父代数目。
PARENT_LEVEL | 成员的父代距层次结构的根级的距离。根级为零。
PARENT_UNIQUE_NAME | 成员父代的唯一名称。对于根级的任何成员均返回 NULL。对于通过限定生成唯一名称的提供程序，此名称的各个组件彼此分隔。
SCHEMA_NAME | 该成员所属架构的名称。

MEMBERS 架构行集中的列支持内在成员属性。有关 MEMBERS 架构行集的更多信息，请参见 MDSCHEMA_MEMBERS。其它内在成员属性也可受到支持，但这要视提供程序而定。但是，所有提供程序都必须提供此处所列的内在成员属性，以遵守 1999 年 3 月 (2.6) 发表的 OLE DB 规范的 OLAP 部分。

内在成员属性的使用不受任何种类附加规范的限制，因为内在成员属性适用于所有成员。以下语法示例说明用法：

PROPERTIES «Property»

重要 由于内在成员属性不能由维度或级别名称限定，所以使用者不能为同一轴上不同的维度（或级别）选择不同的内在成员属性。例如，如果 ROWS 轴具有 Geography 和 SalesRep 维度，则客户不能为 Geography 维度选择 MEMBER_CAPTION 内在成员属性，也不能为 SalesRep 维度选择 MEMBER_UNIQUE_NAME 内在成员属性。使用者必须为同一轴上的所有维度选择一个（或一些）相同的内在成员属性。

请参见

成员属性的使用


自定义成员属性

自定义成员属性可添加到维度中的特定命名级别中。自定义成员属性不能添加到维度的"（全部）"级别，或添加到维度本身。自定义成员属性可使用 Analysis Manager 中的维度编辑器或多维数据集编辑器、或通过使用决策支持对象 (DSO) 库的应用程序来添加到基于服务器的维度或多维数据集中。此外，当在 PivotTable® 服务中创建本地多维数据集时，自定义成员属性可作为 CREATE CUBE 语句的一部分加以定义。

用来引用自定义成员属性的语法类似于用来引用内在级别成员属性的语法，如下列示例所示：

PROPERTIES [«Dimension».]«Level».«Custom Member Property»

请参见

成员属性的使用


单元属性的使用

多维表达式 (MDX) 中的单元属性所包含的信息，是有关多维数据集之类的多维数据源中单元的内容和格式的信息。MDX 支持 MDX SELECT 语句中的 CELL PROPERTIES 关键字来检索内在单元属性。内在单元属性通常用于协助单元数据的直观显示。

下列示例显示 MDX SELECT 语句的语法，其中包含 CELL PROPERTIES 关键字语法。

SELECT [<axis_specification>
       [, <axis_specification>...]]
  FROM [<cube_specification>]
[WHERE [<slicer_specification>]]
[<cell_props>]

<cell_props> 值的语法如下所示，它使用 CELL PROPERTIES 关键字以及一个或多个内在单元属性：

<cell_props> ::= CELL PROPERTIES <property> [, <property>...]

下表列出用于 <property> 值的受支持内在单元属性，并对单元属性内容进行简短描述。

属性 | 描述
BACK_COLOR | 显示 VALUE 或 FORMATTED_VALUE 属性的背景颜色。有关更多信息，请参见 FORE_COLOR 和 BACK_COLOR 内容。
CELL_EVALUATION_LIST | 适用于单元的以分号分隔的一列求值公式，按从最低到最高的求解次序排列。有关求解次序的更多信息，请参见理解传递次序和求解次序。
CELL_ORDINAL | 数据集中单元的序列号。
FORE_COLOR | 显示 VALUE 或 FORMATTED_VALUE 属性的前景颜色。有关更多信息，请参见 FORE_COLOR 和 BACK_COLOR 内容。
FONT_NAME | 用来显示 VALUE 或 FORMATTED_VALUE 属性的字体。
FONT_SIZE | 用来显示 VALUE 或 FORMATTED_VALUE 属性的字体大小。
FONT_FLAGS 字体的掩码细节效果。该值是以下一个或多个常量的按位 OR 操作的结果：
  • MDFF_BOLD = 1

  • MDFF_ITALIC = 2

  • MDFF_UNDERLINE = 4

  • MDFF_STRIKEOUT = 8

例如，值 5 表示粗体 (MDFF_BOLD) 和下划线 (MDFF_UNDERLINE) 字体效果的组合。
FORMAT_STRING 用来创建 FORMATTED_VALUE 属性值的格式字符串。

有关更多信息，请参见 FORMAT_STRING 内容。
FORMATTED_VALUE | 表示 VALUE 属性的格式化显示的字符串。
NON_EMPTY_BEHAVIOR | 用于在求解空单元时确定计算成员的行为的度量值。
SOLVE_ORDER | 单元的求解次序。
VALUE | 单元的未格式化值。

不要求提供程序支持所有内在单元属性；只有 CELL_ORDINAL、FORMATTED_VALUE 和 VALUE 单元属性必须受到支持。所有的单元属性（内在的或提供程序特有的）在 PROPERTIES 架构行集中进行定义，包括它们的数据类型和提供程序支持。有关 PROPERTIES 架构行集的更多信息，请参见 MDSCHEMA_PROPERTIES。

默认情况下，如果未用 CELL PROPERTIES 关键字，则返回的单元属性为 VALUE、FORMATTED_VALUE 和 CELL_ORDINAL（按此顺序）。如果使用了 CELL PROPERTIES 关键字，则只返回用此关键字显式声明的单元属性。

下例示范了 MDX 查询中 CELL PROPERTIES 关键字的使用：

SELECT
   {[Measures].[Unit Sales], [Measures].[Store Size]} ON COLUMNS,
   {[Store].[Store Name].Members} ON ROWS
FROM Sales
CELL PROPERTIES VALUE, FORMATTED_VALUE, FORMAT_STRING, FORE_COLOR, BACK_COLOR

对于返回平展行集的 MDX 查询，不返回单元属性；这种情况下，每个单元表现为似乎只返回了 FORMATTED_VALUE 单元属性。

Custom Member Options

使用维度编辑器或多维数据集编辑器的 Custom Member Options 属性，可通过 Analysis Manager 设置单元属性。Custom Member Options 属性接受每个成员的列引用，该引用包含以逗号分隔的单元属性列表。单元属性以字符串表达式的形式表示，如以下示例所示。

FORE_COLOR='255',BACK_COLOR='65535'

示例为指定成员提供一个带红色前景的黄色背景。除非父代是带单元属性的自定义成员，否则单元属性通常汇总到父代成员。在这种情况下，父代单元属性替代从其子代派生的单元属性。

请参见

属性窗格（维度编辑器架构视图）

属性窗格（多维数据集编辑器架构视图）


FORMAT_STRING 内容

FORMAT_STRING 单元属性用于格式化 VALUE 单元属性，以创建 FORMATTED_VALUE 单元属性值。FORMAT_STRING 单元属性对于字符串和数字原始值均能处理，它对该值应用格式表达式以返回 FORMATTED_VALUE 单元属性的格式化值。下列各表详述了用于处理字符串和数字值的语法和格式字符。

字符串值

字符串的格式表达式可以是一部分，也可以是由分号 (;) 分隔开的两部分。

使用 | 结果
一部分 | 格式应用于所有字符串值。
两部分 | 第一部分应用于字符串数据，而第二部分应用于空值和零长度字符串 ("")。

下表所描述的字符可出现在字符串的格式字符串中。

字符 | 描述
@ | 字符占位符。它显示一个字符或一个空格。如果字符串在 at 符号 (@) 出现在格式字符串中的位置上有字符，则显示该字符。否则，在该位置显示空格。占位符从右到左进行填充，除非格式字符串中有惊叹号 (!)。
& | 字符占位符。它显示一个字符或什么都不显示。如果字符串在 ampersand 符号 (&) 出现在格式字符串中的位置上有字符，则显示该字符。否则什么都不显示。占位符从右到左进行填充，除非格式字符串中有惊叹号 (!)。
< | 强制小写。以小写格式显示所有字符。
> | 强制大写。以大写格式显示所有字符。
! | 强制从左到右填充占位符。（默认为从右到左填充占位符。）

数字值

数字的用户定义格式表达式可以有一到四个由分号分隔的部分。如果格式参数包含一个命名数字格式，则只允许有一个部分。

使用 | 结果
一部分 | 格式表达式应用于所有值。
两部分 | 第一部分应用于正值和零，第二部分应用于负值。
三部分 | 第一部分应用于正值，第二部分应用于负值，第三部分应用于零。
四部分 | 第一部分应用于正值，第二部分应用于负值，第三部分应用于零，第四部分应用于空值。

下例具有两个部分：第一部分定义正值和零的格式，而第二部分定义负值的格式。

"$#,##0;($#,##0)"

如果包含两个紧挨着的分号，则缺少的部分用正值的格式打印。例如，下面的格式用第一部分的格式显示正值和负值，如果值为零则显示"Zero"：

"$#,##0;;\Z\e\r\o"

下表说明了可出现在数字格式的格式字符串中的字符。

字符 | 描述
无 | 不以任何格式显示数字。
0 | 数字占位符。显示一位数字或一个零。 如果表达式在 0 出现在格式字符串中的位置上有数字，则显示该数字。否则，在该位置显示零。 如果数字的位数少于格式表达式中零的个数（在十进制分隔符的任一边），则显示起始的或尾随的零。 如果数字十进制分隔符右边的位数多于格式表达式中十进制分隔符右边零的个数，则将数字四舍五入为同零的个数一样的小数位数。 如果数字十进制分隔符左边的位数多于格式表达式中十进制分隔符左边零的个数，则显示多出的数字而不作任何修改。
# | 数字占位符。显示一位数字或什么都不显示。如果表达式在 # 出现在格式字符串中的位置上有数字，则显示该数字。否则，在该位置什么都不显示。如果数字的位数等于或少于格式表达式中十进制分隔符任一边的 # 字符个数时，除了不显示起始或尾随的零外，这个符号的作用类似于数字占位符 0。
. | 小数占位符。（在某些地方，用逗号作为十进制分隔符。）小数占位符决定了十进制分隔符左边和右边分别显示几位数字。如果格式表达式中，该符号左边只包含一个数字符号 (#)，则小于 1 的数字开始于十进制分隔符。若要显示用分数显示时的前导零，请用 0 作为十进制分隔符左边的第一个数字占位符。在格式化输出中用作小数占位符的实际字符取决于用户系统所识别的数字格式。
% | 百分数占位符。表达式乘以 100。百分比字符 (%) 插入到其在格式字符串中出现的位置。
, | 千位分隔符。（在某些地方，用句号作为千位分隔符。）千位分隔符将十进制分隔符左边的位数大于等于四的数字中的千位和百位分隔开。如果格式包含一个由数字占位符（0 或 #）包围的千位分隔符，则指定了千位分隔符的标准用法。如果两个相邻的千位分隔符或一个千位分隔符紧挨十进制分隔符的左边（无论是否指定小数），则表示"通过除以 1000 来将数字按比例减小，并如所需要的那样四舍五入。"例如，可以使用格式字符串"##0,,"将 100,000,000 表示为 100。小于 1,000,000 的数字显示为 0。除了紧挨十进制分隔符左边以外的任何位置上的两个相邻的千位分隔符仅视作指定使用千位分隔符。在格式化输出中用作千位分隔符的实际字符取决于用户系统所识别的数字格式。
: | 时间分隔符。（在某些地方，可能用其它字符表示时间分隔符。）当格式化时间值时，时间分隔符将小时、分和秒分隔开。在格式化输出中用作时间分隔符的实际字符取决于用户系统设置。
/ | 日期分隔符。（在某些地方，可能用其它字符表示日期分隔符。）当格式化日期值时，日期分隔符将日、月和年分隔开。在格式化输出中用作日期分隔符的实际字符取决于用户系统设置。
E- E+ e- e+ | 科学记数法格式。如果格式表达式在 E-、E+、e- 或 e+ 右边至少包含一个数字占位符（0 或 #），则数字以科学记数法格式显示并且将 E 或 e 插入到数字和其指数之间。右边数字占位符的个数决定了指数中的数字个数。使用 E- 或 e-，紧挨着负指数放置减号。使用 E+ 或 e+，紧挨着负指数放置减号，并将加号紧挨着正指数放置。
- + $ ( ) | 显示文字字符。若要显示所列字符以外的其它字符，请在字符前加上一个反斜线 (\) 或将其放入双引号 (" ") 中。
\ | 显示格式字符串内的下一个字符。若要显示如同文字字符一样有特殊含义的字符，请在字符前加上一个反斜线 (\)。反斜线符号本身不显示。使用反斜线符号与将下一个字符放入双引号内的作用是相同的。若要显示反斜线，请使用两个反斜线 (\\)。不能作为文字字符显示的字符示例包括：日期格式化及时间格式化字符（a、c、d、h、m、n、p、q、s、t、w、y、/ 和 :）、数字格式化字符（#、0、%、E、e、逗号和句号）和字符串格式化字符（@、&、<、> 和 !）。
"ABC" | 在双引号 (" ") 内显示字符串。若要在格式中从代码内部包含字符串，请将文本放在 Chr(34) 之间。（双引号的字符代码为 34。）

日期值

下表说明了可以出现在日期/时间格式的格式字符串中的字符。

字符 | 描述
: | 时间分隔符。（在某些地方，可能用其它字符表示时间分隔符。）当格式化时间值时，时间分隔符将小时、分和秒分隔开。在格式化输出中用作时间分隔符的实际字符取决于用户系统设置。
/ | 日期分隔符。（在某些地方，可能用其它字符表示日期分隔符。）当格式化日期值时，日期分隔符将日、月和年分隔开。在格式化输出中用作日期分隔符的实际字符取决于用户系统设置。
C | 按顺序将日期显示为 ddddd，将时间显示为 ttttt。如果日期序列号没有小数部分，则只显示日期信息。如果没有整数部分，则只显示时间信息。
d | 将日显示为不带起始零的数字 (131)。
dd | 将日显示为带起始零的数字 (01–31)。
ddd | 将日显示为缩写 (Sun–Sat)。
dddd | 将日显示为全名 (Sunday–Saturday)。
ddddd | 将日期显示为完整日期（包括日、月和年），它根据用户系统的短日期格式设置进行了格式化。对于 Microsoft® Windows®，默认的短日期格式为 m/d/yy。
dddddd | 将日期序列号显示为完整日期（包括日、月和年），它根据用户系统所认可的长日期设置进行了格式化。对于 Windows，默认的长日期格式为 mmmm dd, yyyy。
w | 将星期中的天显示为数字（1 代表星期天，依次排列到 7，7 代表星期六）。
ww | 将年中的星期显示为数字 (1–54)。
m | 将月显示为不带起始零的数字 (112)。如果 m 紧跟 h 或 hh，则显示分而不显示月。
mm | 将月显示为带起始零的数字 (0112)。如果 m 紧跟 h 或 hh，则显示分而不显示月。
mmm | 将月显示为缩写 (Jan–Dec)。
mmmm | 将月显示为完整月份名 (January–December)。
q | 将年的季度显示为数字 (1–4)。
y | 将年中的日显示为数字 (1–366)。
yy | 将年显示为两位数字 (0099)。
yyyy | 将年显示为四位数字 (1009999)。
h | 将小时显示为不带起始零的数字 (0–23)。
hh | 将小时显示为带起始零的数字 (00–23)。
n | 将分显示为不带起始零的数字 (059)。
nn | 将分显示为带起始零的数字 (00–59)。
s | 将秒显示为不带起始零的数字 (059)。
ss | 将秒显示为带起始零的数字 (0059)。
T t t t t | 将时间显示为用时间分隔符格式化的完整时间（包括小时、分和秒），此时间分隔符由用户系统所认可的时间格式定义。无论是在上午 (A.M.) 还是在下午 (P.M.)，如果选择了起始零选项并且时间早于 10:00（例如 09:59），则显示起始零。对于 Windows，默认的时间格式为 h:mm:ss。
上午/下午 | 使用 12 小时制时钟。将从午夜到正午的任何时刻带上大写的 AM 一起显示；将从正午到午夜的任何时刻带上大写的 PM 一起显示。
am/pm | 使用 12 小时制时钟。将从午夜到正午的任何时刻与小写的 am 一起显示；将从正午到午夜的任何时刻与小写的 pm 一起显示。
A/P | 使用 12 小时制时钟。将从午夜到正午的任何时刻与大写的 A 一起显示；将从正午到午夜的任何时刻与大写的 P 一起显示。
a/p | 使用 12 小时制时钟。将从午夜到正午的任何时刻与小写的 a 一起显示；将从正午到午夜的任何时刻与小写的 p 一起显示。
AMPM | 使用 12 小时制时钟。将 AM 字符串文字以用户系统所定义的形式与从午夜到正午的任何时刻一起显示；将 PM 字符串文字以用户系统所定义的形式与从正午到午夜的任何时刻一起显示；AMPM 大、小写皆可，但所显示的字符串的大小写与系统设置所定义的字符串相匹配。对于 Windows，默认格式为 AM/PM。


FORE_COLOR 和 BACK_COLOR 内容

FORE_COLOR 和 BACK_COLOR 单元属性分别用于以 Microsoft® Windows® 操作系统红-绿-蓝 (RGB) 格式存储单元的文本和背景的颜色信息。

规范的 RGB 颜色的有效范围为 0 到 16,777,215 (&H00FFFFFF)。此范围内数字的高位字节始终等于 0；低位的 3 个字节，从最低位字节到最高位字节分别决定了红色、绿色和蓝色的数量。红色、绿色和蓝色成分分别由一个 0 到 255 (&HFF) 之间的数字表示。

例如，值 255 (&H000000FF) 代表红色，值 65280 (&H0000FF00) 代表绿色，而值 16711680 (&H00FF0000) 代表蓝色。


生成 MDX 中的命名集

多维表达式 (MDX) 中的集可能是长而复杂并且不易理解的声明。例如，下面的 MDX 查询检查 FoodMart 2000 中的各种 Chardonnay 酒和 Chablis 酒的单位销售额：

SELECT
   {[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chardonnay],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chardonnay],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chardonnay],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chardonnay],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chardonnay],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chablis Wine],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chablis Wine],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chablis Wine],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chablis Wine],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chablis Wine]} ON COLUMNS,
   {Measures.[Unit Sales]} ON ROWS
FROM Sales

尽管该 MDX 查询就结果集而言还算简单，但是当想要进行维护时就显得冗长且难处理了。

创建命名集是简化维护如同前例的 MDX 查询，并提高其易懂性的一个方法。命名集只不过是一个与别名相关联的集合表达式。命名集可将能正常合并到集合中的成员或函数合并。命名集别名视为集合表达式，并可用于任何接受集合表达式的地方。

为了举例说明，将前面的 MDX 查询示例重新编写，以便运用命名集，如下例所示：

WITH SET [ChardonnayChablis] AS
   '{[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chardonnay],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chardonnay],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chardonnay],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chardonnay],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chardonnay],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chablis Wine],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chablis Wine],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chablis Wine],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chablis Wine],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chablis Wine]}'

SELECT
   [ChardonnayChablis] ON COLUMNS,
   {Measures.[Unit Sales]} ON ROWS
FROM Sales

WITH 关键字用来创建 [ChardonnayChablis] 命名集，然后在 MDX SELECT 语句中再次使用了此关键字。在这种方式下，用 WITH 关键字创建的集合可以更改而不会打乱 MDX SELECT 语句。有关使用 WITH 关键字创建命名集的更多信息，请参见使用 WITH 创建命名集。

命名集使此 MDX 查询示例较易理解，但仍不易维护，因为该命名集是作为 MDX 查询本身的一部分加以定义的。命名集的作用域仅限于 MDX 查询，并且不可再次使用。

但是 MDX 和 PivotTable® 服务提供了创建具有更广作用域的命名集的功能。CREATE SET 语句允许客户应用程序创建在 MDX 会话的生存周期内存在的命名集，使命名集对该会话中的所有 MDX 查询都可用。例如，CREATE SET 语句对于在多种查询中一贯重复使用某个集合的客户应用程序是有意义的。有关使用 CREATE SET 在会话中创建命名集的更多信息，请参见 CREATE SET 语句。

但是就维护而言，连这种作用域都是受限制的。Microsoft® SQL Server™ 2000 Analysis Services 提供了创建全局命名集的功能，这种命名集作为多维数据集的一部分进行存储。有关创建全局命名集的更多信息，请参见创建命名集。

请参见

PivotTable 服务


使用 WITH 创建命名集

WITH 关键字作为 MDX SELECT 语句的一部分包括其中，以构造作为 MDX 查询组成部分的命名集。

下面的语法用于将 WITH 关键字添加到 MDX SELECT 语句：

[WITH <formula_specification>]
      [, <formula_specification>]
SELECT [<axis_specification>
       [, <axis_specification>...]]
  FROM [<cube_specification>]
[WHERE [<slicer_specification>]]

命名集的 <formula_specification> 值进一步分解为以下语法定义：

<formula_specification> ::= SET <set_name> AS '<set>'

<set_name> 参数包含命名集的别名。<set> 参数包含命名集别名所指的集合表达式。

例如，[ChardonnayChablis] 命名集用于特指 FoodMart 2000 数据库的 Product 维度上的所有 Chardonnay 酒和 Chablis 酒成员。以下示例对命名集的语法进行了描述：

WITH SET [ChardonnayChablis] AS
   '{[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chardonnay],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chardonnay],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chardonnay],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chardonnay],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chardonnay],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chablis Wine],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chablis Wine],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chablis Wine],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chablis Wine],
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chablis Wine]}'

还可在用于创建命名集的集合表达式中使用 MDX 函数。下面的 MDX 查询示例使用 Filter、CurrentMember、Name 和 InStr 函数来创建 [ChardonnayChablis] 命名集，它曾用于本主题较早的 MDX 查询示例中。

WITH SET [ChardonnayChablis] AS
   'Filter([Product].Members, (InStr(1, [Product].CurrentMember.Name, "chardonnay") <> 0) OR (InStr(1, [Product].CurrentMember.Name, "chablis") <> 0))'

SELECT
   [ChardonnayChablis] ON COLUMNS,
   {Measures.[Unit Sales]} ON ROWS
FROM Sales


生成 MDX 中的计算成员

在多维表达式 (MDX) 中，计算成员定义为这样一种成员：它并非通过检索数据来解析，而是通过计算 MDX 表达式来返回值。此无害的定义包括的范围十分惊人；在 MDX 查询中构造和使用计算成员的能力为多维数据提供了大量操作功能。如下表所列，本主题主要讨论创建计算成员的一些较基本的方面。

主题 | 描述
使用 WITH 创建计算成员 | 讨论在 MDX 查询中使用 WITH 关键字创建计算成员。
在计算成员中使用函数 | 详述函数在计算成员和其它 MDX 表达式中的使用。
条件表达式 | 涵盖计算成员中 IF 关键字之类的条件表达式的使用。


使用 WITH 创建计算成员

与用于命名集的方式类似，多维表达式 (MDX) 中的 WITH 关键字用于描述计算成员。

下面的语法用于将 WITH 关键字添加到 MDX SELECT 语句：

[WITH <formula_specification>]
      [, <formula_specification>]
SELECT [<axis_specification>
       [, <axis_specification>...]]
  FROM [<cube_specification>]
[WHERE [<slicer_specification>]]

计算成员的 <formula_specification> 值在以下语法定义中进一步分解：

<formula_specification> ::= MEMBER <member_name>
                            AS '<value_expression>'
                            [,SOLVE_ORDER = <unsigned integer>]
                            [,<cell_property>=<value_expression>...]

<member_name> 值是计算成员的完全合法名称，其中包括了该计算成员所关联的维度或级别，而 <value_expression> 值在经过计算后，将返回计算成员的值。可选择使用 SOLVE_ORDER 关键字指定计算成员的求解次序；如果未用，则计算成员的求解次序默认设置为 0。

通过在 <cell_property> 值中提供单元属性的名称和在 <value_expression> 值中提供单元属性值，可随意指定计算成员内在单元属性的值。

例如，下面的 MDX 查询示例定义了两个计算成员。第一个计算成员 [Measures].[StoreType] 用于表示 Store Type 成员属性。第二个计算成员 [Measures].[ProfitPct] 用于计算给定商店的总利润率，并将其表示为格式化的百分比值。

WITH
   MEMBER [Measures].[StoreType] AS
   '[Store].CurrentMember.Properties("Store Type")',
   SOLVE_ORDER = 2
   MEMBER [Measures].[ProfitPct] AS
   'Val((Measures.[Store Sales] - Measures.[Store Cost]) / Measures.[Store Sales])',
   SOLVE_ORDER = 1, FORMAT_STRING = 'Percent'
SELECT
   { [Store].[Store Name].Members} ON COLUMNS,
   { [Measures].[Store Sales], [Measures].[Store Cost], [Measures].[StoreType],
   [Measures].[ProfitPct] } ON ROWS
FROM Sales

计算成员可在层次结构的任意位置创建。例如，下列 MDX 查询示例定义作为 [Beer and Wine] 成员的子成员创建的计算成员，以确定给定商店的啤酒和果酒 (Beer and Wine) 的单位销售额是否至少为 100.00：

WITH
   MEMBER [Product].[Beer and Wine].[BigSeller] AS
  'IIf([Product].[Beer and Wine] > 100, "Yes","No")'
SELECT
   {[Product].[BigSeller]} ON COLUMNS,
   {Store.[Store Name].Members} ON ROWS
FROM Sales

也可创建不仅取决于多维数据集中的现有成员，而且取决于同一 MDX 表达式中定义的其它计算成员的计算成员。下列示例说明这样的 MDX 表达式：

WITH
   MEMBER [Measures].[ProfitPct] AS
   'Val((Measures.[Store Sales] - Measures.[Store Cost]) / Measures.[Store Sales])',
   SOLVE_ORDER = 1, FORMAT_STRING = 'Percent'
   MEMBER [Measures].[ProfitValue] AS
   '[Measures].[Store Sales] * [Measures].[ProfitPct]',
   SOLVE_ORDER = 2, FORMAT_STRING = 'Currency'
SELECT
   { [Store].[Store Name].Members} ON COLUMNS,
   { [Measures].[Store Sales], [Measures].[Store Cost], [Measures].[ProfitValue],
   [Measures].[ProfitPct] } ON ROWS
FROM Sales

第二个计算成员 [Measures].[ProfitValue] 使用第一个计算成员 [Measures].[ProfitPct] 中创建的值来生成自己的值。


在计算成员中使用函数

多维表达式 (MDX) 中的计算成员非常灵活。计算成员提供这种灵活性的途径之一是可用于 MDX 中的函数种类非常多。除了 Microsoft® SQL Server™ 2000 Analysis Services 函数库提供的内部 MDX 函数以外，计算成员还可利用外部函数库来提供附加功能。

对于使用计算成员的各种方式的讨论，超出了本主题的范围。本主题主要侧重于计算成员中最常用的运算符和函数及其使用方法。

运算符

MDX 支持在 MDX 表达式中使用的多种算术、逻辑和比较运算符。

算术运算符

算术运算符支持一组基本的算术运算。求解算术运算时遵循算术优先顺序；乘、除运算符最先处理，接着是加、减运算符。如果表达式中所使用的所有算术运算符的优先顺序相同，例如语句 a + b + c + d，则算术运算符按从左到右的顺序进行处理。下表列出所支持的基本算术运算符。

运算符 | 描述
+ | 加
- | 减和一元非
* | 乘
/ | 除

比较运算符

比较运算符比较两个字符串、数字或日期表达式，并根据所测试的比较结果返回 TRUE 或 FALSE。为进行比较，当空值和非空值比较时，空值视为零。若要检查单元中的空值，请使用 IsEmpty 或 Is 函数，如果单元包含空值则函数返回 TRUE，否则返回 FALSE。支持 TRUE 和 FALSE 常量；TRUE 常量计值为 1，而 FALSE 常量计值为 0。

运算符 | 描述
< | 小于
> | 大于
<= | 小于等于
>= | 大于等于
<> | 不等于
= | 等于

按位运算符

按位运算符根据对逻辑表达式的检查返回 TRUE 或 FALSE 值。因为支持 TRUE 和 FALSE 常量，所以下面的两个 MDX 表达式现在都是有效的：

([Measures].[IsTrue] AND [Measures].[IsFalse]) = 0
([Measures].[IsTrue] AND [Measures].[IsFalse]) = FALSE

逻辑运算符要求可取值为逻辑值的表达式。数值表达式在执行逻辑比较前隐式转换为逻辑值。任何取值为 0 或 NULL 的数值表达式视为 FALSE，而任何取值为 0 以外的值的数值表达式视为 TRUE。字符串表达式不进行隐式转换；试图对字符串表达式使用按位运算符将产生错误。

运算符 | 描述
«Expression1» AND «Expression2» | 如果两个表达式均为真则返回 TRUE，否则返回 FALSE。
«Expression1» OR «Expression2» | 如果两个表达式至少有一个为真则返回 TRUE，否则返回 FALSE。
NOT «Expression1» | 如果表达式不为真，则返回 TRUE，否则返回 FALSE。
«Expression1» XOR «Expression2» | 如果两个表达式只有一个为真则返回 TRUE，否则返回 FALSE。

集合运算符

如下表所述，集合运算符用于处理集合的创建、分割和连接。

运算符 | 描述
«Set1» + «Set1» | 对两个集合执行 Union 函数。
«Set1» * «Set2» | 对两个集合执行 Crossjoin 函数。
«Set1» - «Set2» | 对两个集合执行 Except 函数。
«Member1»:«Member2» | 创建自然排序集合，并将两个成员作为终结点，这两个指定成员间的所有成员作为集合的成员包括其中。

函数

MDX 提供多种函数来用于 MDX 表达式中。本主题简要论述各个函数种类，细述特定种类的 MDX 函数所返回的数据类型。

有关 MDX 函数分类的更多信息，请参见 MDX 函数列表。

数值函数

MDX 提供了丰富的数值函数，可用于执行各种聚合和统计计算。

MDX 中的聚合函数用于对许多成员（通常指定为集合）快速执行计算。例如，Aggregate 函数对由集合中所有成员组成的单元进行聚合，这样做可比尝试执行手工聚合简单得多。如下面的 MDX 查询示例所示，当 Aggregate 函数与产生总和的度量值相组合时，功能尤其强大：

WITH
   MEMBER [Time].[1st Half Sales] AS 'Aggregate({Time.[Q1], Time.[Q2]})'
   MEMBER [Time].[2nd Half Sales] AS 'Aggregate({Time.[Q3], Time.[Q4]})',
   MEMBER [Time].[Difference] AS 'Time.[2nd Half Sales] - Time.[1st Half Sales]',
SELECT
   { [Store].[Store State].Members} ON COLUMNS,
   { Time.[1st Half Sales], Time.[2nd Half Sales], Time.Difference} ON ROWS
FROM Sales
WHERE [Measures].[Store Sales]

查询产生了各州的店面销售额总和，带有前两个计算成员用 Aggregate 函数所提供的上半年和下半年的聚合，以及由第三个计算成员提供的二者的差额。

MDX 还提供了一列统计函数，以处理例程统计计算，如统计协方差和标准偏差。例如，Median 函数计算集合内的中值，如以下 MDX 查询所示。

WITH
   MEMBER [Time].[1st Half Sales] AS 'Sum({[Time].[Q1], [Time].[Q2]})'
   MEMBER [Time].[2nd Half Sales] AS 'Sum({[Time].[Q3], [Time].[Q4]})'
   MEMBER [Time].[Median] AS 'Median(Time.Members)'
SELECT
   NON EMPTY { [Store].[Store Name].Members} ON COLUMNS,
   { [Time].[1st Half Sales], [Time].[2nd Half Sales], [Time].[Median]} ON ROWS
FROM Sales
WHERE [Measures].[Store Sales]

在本示例中，除了 [Time].[1st Half Sales] 和 [Time].[2nd Half Sales] 计算成员提供的各个商店的上半年和下半年的店面销售额的聚合之外，还有 [Time].[Median] 计算成员提供的各个商店店面销售额的中值。

字符串函数

MDX 提供许多字符串函数，不只是为了 MDX 表达式内的字符串处理，还为了支持 MDX 中用户定义函数。例如，MemberToStr 函数将某成员引用转换为 MDX 格式的字符串以用于用户定义函数，因为用户定义函数不接受来自 MDX 的对象引用。

集合函数

集合函数用于在 MDX 中返回集合，为用户提供方便生成动态定义的集合和快速创建可再次使用的命名集的功能。Members 函数是最常用的集合函数之一，它将级别或维度的所有成员（计算成员除外）作为一个集合返回。下面的 MDX 查询示例示范了工作中的 Members 函数。

SELECT
   NON EMPTY { [Store].[Store Name].Members} ON COLUMNS,
   {Measures.[Store Sales]} ON ROWS
FROM Sales

本 MDX 查询示例返回了 Sales 多维数据集中的各个商店的总店面销售额数字。如果不用 Members 函数，则不得不显式输入各个商店名称，以使其完成本 MDX 查询示例的功能。

元组函数

如同集合函数，元组函数用于在 MDX 中返回元组。元组函数还用于辅助 MDX 中的用户定义函数，如 StrToTuple 函数。由于用户定义函数不能处理 MDX 对象引用，用户定义函数可以返回 MDX 格式的字符串返回值来表示元组，并使用 StrToTuple 函数将它转换为有效的元组引用。

成员函数

计算成员中常常引用成员；成员函数允许计算成员执行复杂成员检索，从而同样轻松地处理层次结构和集合。

MDX 中计算成员的解可以是本质上迭代的，因为计算成员可以基于对集合成员的迭代进行构造。MDX 中 CurrentMember 之类的函数使您得以利用此迭代功能。

其它函数

MDX 还提供其它函数，包括处理维度、层次结构、级别和数组的函数。例如，SetToArray 函数允许用户定义函数将集合引用作为用字符串表示的个体成员变量数组进行检索，使您得以创建可提供与集合有关的功能的用户定义函数。


条件表达式

多维表达式 (MDX) 中的另一项功能是创建条件表达式；此表达式基于条件存在情况，根据计算成员中所做的决策而返回不同的信息。

下列主题讨论 MDX 中使用的各种条件表达式。

主题 | 描述
IIf 函数 |  | 描述用于简单决策的 MDX 表达式中的 IIf 函数的使用。


IIf 函数

多维表达式 (MDX) 中的 IIf 函数可用于执行简单的是或否决策。例如，考虑以下 MDX 查询示例。

WITH MEMBER [Measures].[BigSeller] AS
   'IIf(Measures.[Store Sales] > 20000, "Yes", "No")'

SELECT
   {[Store].[Store Name].Members} ON COLUMNS,
   {[Measures].[Store Sales], [Measures].[BigSeller]} ON ROWS
FROM Sales

本 MDX 查询示例为 Sales 多维数据集中的各个商店返回两行。一行是 [Measures].[Store Sales] 成员，提供各个商店的总店面销售额。第二行是一个计算成员，它基于各个商店的店面销售额决定商店是否是个"大销售商"。简而言之，IIf 函数用于检查简单的是或否条件。在本事例中，条件是各个商店的店面销售额数字是否大于 $20,000.00。如果是，则此商店成员的值为 Yes。如果店面销售额数字等于或小于 $20,000.00，则返回 No 值。

这是一个使用 IIf 函数根据单个 Boolean 条件返回不同值的简单图解示例；可用其它 MDX 函数和运算符提供 IIf 函数中的返回值。

有关 IIf 函数语法的更多信息，请参见 IIf。


生成 MDX 中的高速缓存

多维表达式 (MDX) 提供的另一项改善性能的功能是，将常用多维数据集切片装载到内存，对其进行高速缓存以达到更快检索的目的。

Microsoft® SQL Server™ 2000 Analysis Services 和 PivotTable® 服务分别自动高速缓存服务器和客户端上的查询定义、数据和元数据。这种高速缓存改善了查询重复请求相同的数据或元数据这一情况下的性能，减少了网络流量或执行时间。

在 MDX 中为特定数据创建高速缓存的功能，使用户可以对需要重复使用的数据的高速缓存进行完全控制，从而可以提高查询性能。

就创建作用域而言，高速缓存类似于命名集，因为它可为单个查询或会话的生存周期创建高速缓存。

若要创建用于会话级别的高速缓存，可使用 CREATE CACHE 语句。CREATE CACHE 语句可用于创建查询级别的高速缓存，但 WITH 语句也可同样轻松地完成这项任务。

例如，下面的 MDX 查询使用 WITH 语句来进行高速缓存：

WITH CACHE AS '(Store.[Store Name].Members)'

SELECT
   {[Store].[Store Name].Members} ON COLUMNS,
   {[Measures].[Unit Sales]} ON ROWS
FROM Sales

WITH 语句可用于为单个查询创建高速缓存，而 CREATE CACHE 语句还可用于创建会话级别的高速缓存。为使用会话级别的高速缓存，CREATE CACHE 语句要求 PivotTable 服务。

有关 CREATE CACHE 语句的更多信息，请参见 CREATE CACHE 语句。


使用 WITH 创建高速缓存

如同命名集和计算成员一样，WITH 关键字也用于创建在单个查询的生存周期可用的查询级别高速缓存。下面的语法用于将 WITH 关键字添加到 MDX SELECT 语句：

[WITH <formula_specification>]
      [, <formula_specification>]
SELECT [<axis_specification>
       [, <axis_specification>...]]
  FROM [<cube_specification>]
[WHERE [<slicer_specification>]]

高速缓存的 <formula_specification> 值进一步分解为下面的语法定义：

<formula_specification> ::= CACHE AS '(<set>[, <set>...])'

<set> 值是用来创建高速缓存的集合表达式。<set> 值可支持 MDX 集合函数的使用。

当用 <set> 集合表达式构造高速缓存时，下列规则适用：

  • 每个 <set> 都必须包含仅来自一个维度的成员。各个成员必须互不相同。

  • 各个 <set> 必须来自不同的维度。

  • <set> 不能包含度量值。


生成 MDX 中的计算单元

多维表达式 (MDX) 提供许多用来生成计算值（如计算成员、自定义汇总以及自定义成员）的工具。虽然功能强大且用途广泛，但因为它们影响成员，而非单元，所以提供的功能有限。因此使用这些功能很难影响一组特定单元或单个单元。

计算单元功能通过使您得以定义单元的特定切片（称为计算子多维数据集），并将公式应用到该计算子多维数据集内的各个单元来提供此功能。应用公式时依据的是可应用于每个单元的可选条件。

计算单元通过允许用计算单元进行递归传递，并将计算公式应用于传递次序的特定传递上，以此利用 Microsoft SQL Server 2000 Analysis Services 中的传递次序功能来提供如目标搜索公式这样复杂的功能。

有关传递次序的更多信息，请参见理解传递次序和求解次序。

从创建范围方面来说，计算单元与计算成员类似，因为计算单元可作为多维数据集的一部分在全局范围内使用，或为会话或单个查询的生存周期而临时创建。

若要创建作为多维数据集一部分的计算单元，请使用 CREATE CELL CALCULATION 语句。对于现有多维数据集，ALTER CUBE 语句也可用来添加计算单元。

若要创建用于会话生存周期的计算单元，请使用 CREATE CELL CALCULATION 语句。

若要创建用于查询生存周期的计算单元，请使用 WITH 语句。

请参见

ALTER CUBE 语句

CREATE CELL CALCULATION 语句

使用 WITH 创建计算单元


使用 WITH 创建计算单元

与用在计算成员中的方式类似，多维表达式 (MDX) 中的 WITH 关键字用于描述计算单元。

下面的语法用于将 WITH 关键字添加到 MDX SELECT 语句：

[WITH <formula_specification>]
      [, <formula_specification>]
SELECT [<axis_specification>
       [, <axis_specification>...]]
  FROM [<cube_specification>]
[WHERE [<slicer_specification>]]

计算单元的 <formula_specification> 值在以下语法定义中进一步分解：

<formula_specification> ::= CELL CALCULATION <formula_name>
                            FOR '(<calculation_subcube>)'
                            AS '<calculation_formula>'
                            [,<calculation_property_list>]

<cell_property_list> 在下列语法中进一步定义：

<cell_property_list> ::= <property_name = '<value>'
                         [, <property_name> = '<value>'...]

<formula_name> 值是计算单元的名称。<calculation_subcube> 包含一列正交的、单维度 MDX 集合表达式，而每个表达式都必须解析为下列集合分类之一。

分类 | 描述
空集合 | 解析为空集合的 MDX 集合表达式。在这种情况下，该集合被忽略。
单个成员集合 | 解析为单个成员的 MDX 集合表达式。
级别成员的集合 | 解析为单个级别的成员的 MDX 集合表达式。其示例为 «Level».Members MDX 函数。若要包括计算成员，请使用 «Level».AllMembers MDX 函数。
后代的集合 | 解析为指定成员后代的 MDX 集合表达式。其示例为 Descendants(«Member», «Level», «Desc_flags») MDX 函数。

如果 <calculation_subcube> 参数中未描述某个维度，则假定它已包括所有成员，以构造计算子多维数据集。因此，如果 <calculation_subcube> 参数为 NULL，则计算单元定义应用于整个多维数据集。

<calculation_formula> 参数包含一个 MDX 表达式，而该表达式对 <calculation_subcube> 参数中定义的所有单元均取值为单元值。

<calculation property list> 参数包含一列要应用于在 <calculation_subcube> 参数中指定的单元的成员属性。

下列属性专用于计算单元。

属性 | 描述
CALCULATION_PASS_DEPTH | 计算公式的传递深度，此属性确定解析计算公式需要多少个传递。有关传递次序的更多信息，请参见理解传递次序和求解次序。
CALCULATION_PASS_NUMBER | 计算公式的传递号，此属性确定计算公式在哪个传递上开始计算。此属性的默认值为 1。有关传递次序的更多信息，请参见理解传递次序和求解次序。
CELL_EVALUATION_LIST | 适用于单元的以分号分隔的一列求值公式，按从最低到最高的求解次序排列。有关求解次序的更多信息，请参见理解传递次序和求解次序。
CONDITION | 计算单元的计算条件，此属性接受 MDX 逻辑表达式，将用计算子多维数据集中的每个单元对该表达式进行赋值。如果它返回 True，将应用计算公式而且单元返回所得值。如果返回 False，单元返回原始单元值。如果未指定，CONDITION 默认为 True（换句话说，计算公式应用于计算子多维数据集中的所有单元）。
DESCRIPTION | 人们可读取的计算单元定义的文字说明。
DISABLED | 指明是否禁用计算单元的 Boolean 属性。DISABLED 默认为 False。

也可使用其它标准单元属性，如 FORE_COLOR 和 BACK_COLOR。

有关单元属性和成员属性的使用的更多信息，请参见单元属性的使用和成员属性的使用。

补充考虑事项

CONDITION 属性指定的计算条件根据计算单元定义的创建范围只处理一次。这提高了赋值多个计算单元定义的性能，尤其是多维数据集传递间具有重叠的计算单元的情况。

如果计算条件在全局范围内作为多维数据集的一部分创建，则在处理多维数据集时处理计算条件。如果以任何方式在多维数据集中修改了单元，而且单元包括在计算单元定义的计算子多维数据集中，则在重新处理该多维数据集前，该计算条件可能不准确。例如，使用回写可能出现这种情况。在重新处理该多维数据集时重新处理计算条件。

如果计算条件在会话范围创建，则在会话中发出该语句时对计算条件进行处理。与全局创建的计算单元定义一样，如果修改单元，则计算条件对于计算单元定义可能不准确。

如果计算条件在查询范围创建，则在执行查询时对计算条件进行处理。虽然 MDX 查询执行的处理时间短，数据滞后时间问题充其量是极轻微的，但单元修改问题在这里同样存在。

另一方面，只要对包含单元（这些单元包含在计算单元定义中）的多维数据集发出 MDX 查询，就会处理计算公式，而与范围无关。

请参见

理解传递次序和求解次序


在 MDX 中创建和使用用户定义函数

多维表达式 (MDX) 提供大量内部函数，设计这些函数是为完成从标准统计计算到成员在层次结构中的遍历的各种功能。但是，如同其它复杂而功能强大的产品一样，总是需要进一步扩展此类产品的功能。

为此，MDX 提供添加用户定义函数引用到 MDX 语句的功能。此功能已在 MDX 中普遍使用；Microsoft® Excel 和 Microsoft Visual Basic® 之类的外部库所提供的作为应用程序库的功能就利用了这种功能。

在 MDX 中使用用户定义函数

以调用内部 MDX 函数的相同方式，在 MDX 中调用用户定义函数。对于不带参数的函数，则使用函数名和一对空括号，如下所示：

MyNewFunction()

如果用户定义函数有一个或多个参数，就会依次提供参数，并用逗号彼此分隔。下面的示例说明了带有三个参数的用户定义函数：

MyNewFunctionWithParms("Parameter1", 2, 800)
USE LIBRARY 语句

可是在将用户定义函数用于 MDX 语句中之前，包含用户定义函数的外部库必须先载入内存中。用 USE LIBRARY 语句执行外部库的装载。

所有用户定义函数都必须与组件对象模型 (COM) 类相关联才能使用，这些类通常以 Microsoft ActiveX 动态链接库 (DLL) 的形式提供。

例如，假如用户定义函数是位于 C:\Winnt\System 路径下、名为 MyFunc.dll 的 ActiveX DLL 的一部分，可以使用 USE LIBRARY 语句用库名将其装载，如下所示：

USE LIBRARY "C:\WINNT\SYSTEM\MyFunc.dll"

为正确工作，各个类必须进行注册，所以 USE LIBRARY 语句还可以用类名装载用户定义函数。因此，假如示例函数位于示例 ActiveX DLL 内并与"MyFuncClass"类关联，可以使用以下示例装载库：

USE LIBRARY "MyFunc.MyFuncClass"

当引用可能位于不同服务器的不同位置的库时，推荐使用本方法。由于 ActiveX DLL 组件必须在服务器和客户机上注册，引用类名就可确保库从正确的位置装载，而不管该位置所在。

多个库可以用单个 USE LIBRARY 语句同时装载，其中库名或类名之间用逗号分隔，如下所示：

USE LIBRARY "C:\WINNT\SYSTEM\MyFunc.dll", "C:\WINNT\SYSTEM\NewFuncs.dll"

不带参数的 USE LIBRARY 语句将取消注册除 Microsoft® SQL Server™ 2000 Analysis Services 函数库之外的所有函数库。

PivotTable® 服务支持 USE LIBRARY 语句。有关 USE LIBRARY 语句的更多信息，请参见 USE LIBRARY 语句。

DROP LIBRARY 语句

DROP LIBRARY 语句可用于卸载特定库或卸载所有的库。如同 USE LIBRARY 语句一样，DROP LIBRARY 语法即可接受文件名又可接受类名，如以下语句所示：

DROP LIBRARY "MyFunc.MyFuncClass"

PivotTable 服务支持 DROP LIBRARY 语句。有关 DROP LIBRARY 语句的更多信息，请参见 DROP LIBRARY 语句。

创建用户定义函数

用户定义函数可用支持 COM 接口的任何编程语言创建。

参数和返回值

用户定义函数可接受任何可强制转换为字符串、数字或者字符串数组或数字数组的参数。用户定义类型或对象引用不能用作参数。如果参数数据类型作为函数原型的部分加以显式声明，如双精度型或整型，则 Microsoft SQL Server 2000 Analysis Services 首先将传递给参数的值强制转换为显式声明的数据类型。例如，如果参数接受 Double 数据类型，则长整型值将强制转换为双精度浮点型值。日期数据类型强制转换为日期的字符串表达式。PivotTable 服务也尝试将直接传递给数值参数的字符串强制转换为数字值。如果强制转换出于任何原因失败，则 PivotTable 服务返回错误条件。

数组也可用作参数；Analysis Services 支持通过如 SetToArray 之类的函数使用数组。如同其它参数一样，如果数组参数的数据类型作为函数原型的部分加以显式声明，则 PivotTable 服务会将数组值强制转换为显式声明了的数据类型。

如果数组参数的数据类型未显式声明或声明为变量数组，则 PivotTable 服务也将尝试强制转换数组的元素。但是，PivotTable 服务对数组中变量进行强制转换的处理略有不同；所强制转换的数据类型取决于数组的第一个元素，并要求所有其它数组元素与此数据类型相同。例如，如果数组中第一个元素是字符串，则要求数组中的所有其它元素也都是字符串，并且 PivotTable 服务将尝试将其它元素强制转换为字符串数据类型。如果数组中的第一个元素赋值为空（如一个空单元），则将空变量而不是第一个元素为空的变量数组传递给数组参数。如果数组中的其它元素赋值为空，则数组元素强制转换为零。建议用户对于要用作用户定义函数参数的数组，显式声明它的数据类型。

同样，用户定义函数可返回任何可强制转换为数字、字符串或变量的数据类型。对返回值的限制更强；不允许返回数组。此外，PivotTable 服务假定如果返回变量，则其包含数字数据。如果字符串、数组或其它非数字数据通过变量返回，则 PivotTable 服务返回计算的错误条件。

函数中的可选参数不受支持；PivotTable 服务要求用户定义函数中的所有参数均为已填充的。

返回空值的函数（例如 Visual Basic 中的子程序）也可使用，但是要以 CALL 关键字调用。例如，如果想要在 MDX 语句中使用 MyVoidFunction() 函数，可采用下面的语法：

CALL(MyVoidFunction)
其它考虑事项

如同任何其它 MDX 函数一样，MDX 会话如要继续必须先求解外部函数；外部函数执行期间锁定 MDX 会话。强烈建议不要使用任何对话框之类的用户交互作用，除非存在特定原因使 MDX 会话待处理的用户交互作用暂停。

外部函数库的函数名称可复制 Analysis Services 函数库或其它外部函数库的函数名称。通常，如果外部函数库包含与 Analysis Services 函数库中某个函数的名称相同的函数，则 Analysis Services 函数库优先于外部函数库。如果两个外部函数库包含具有相同名称的函数，则外部函数库的注册顺序决定优先权。

但是，如果想要替代优先顺序或想要从特定外部函数库调用某个函数，则可在外部函数前加上程序 ID 并以感叹号字符分隔，如下所示：

«ProgramID»!«FunctionName»(«Argument1», «Argument2», ...)

如果外部函数库支持多个接口，则接口 ID 还可用于补充指定函数，如下所示：

«ProgramID»!«InterfaceID»!«FunctionName»(«Argument1», «Argument2», ...)


使用回写

将信息写入到多维表达式 (MDX) 中的写启用多维数据集的功能称为回写。回写受两种不同方法所支持，这取决于要更改成员的级别深度。如本主题稍后所描述的那样，回写在服务器多维数据集中通过 PivotTable® 服务得到支持。不支持向本地多维数据集回写。

最低级别成员回写

最低级别成员指维度中与该维度最低定义级别相关联的成员。例如，在下面的关系图中，Products（产品）维度定义了三个级别（"（全部）"级别不算在内）：

任何向 [Product Name]（产品名称）级别成员的回写均视作最低级别回写，因为 [Product Name]（产品名称）级别以下没有定义其它的级别。

独立的表由 Microsoft® SQL Server™ 2000 Analysis Services 进行维护，以存储由回写更改的数据，并且 PivotTable 服务通过受到影响的聚合成员传播这些数据。

有关最低级别回写的更多信息，请参见将值写回单元。

最低级别回写最常用于为推测分析修改单个最低级别成员数据。如果给定聚合的所有成员都要进行修改，使用聚合级别成员回写则更容易些。

聚合级别成员回写

聚合级别成员是指维度中的成员，该成员的值取决于与聚合级别以下级别相关的成员的值。例如，在前面的关系图中，[Brand Name]（商标名称）级别即是聚合级别，因为其成员的值取决于在 [Product Name]（产品名称）级别上执行的聚合。[Product Category]（产品目录）也是一个聚合级别，因为其成员的值取决于创建自 [Brand Name]（商标名称）级别成员的聚合。为了修改聚合级别，所有用于为该聚合级别而构造该值的成员都必须进行修改，所以聚合级别回写更难于处理。用户可以单独修改各个最低级别成员以使聚合级别提供想得到的值，但对于提供上千、上万或更多个值的多维数据集，建议不要采用这种做法。

可以改为使用分配来应用 UPDATE CUBE 语句。通过使用四个不同的分配公式之一，MDX 可以在所有的最低级别成员中分配所需要的聚合值，帮助用户有效处理所有的单个最低级别回写。聚合级别回写只有在使用 Sum 聚合函数聚合值时才能使用。

当要求对聚合数字的修改影响特定聚合的所有最低级别成员时，聚合级别回写尤其有用。尽管最低级别回写也可用于完成此任务，但是聚合级别回写速度更快，因为将其视为单个原子事务进行处理，确保了安全性验证或公式验证不会使多维数据集处于不一致的状态。

说明 当分配整型值时，聚合级别回写可能由于对增量进行四舍五入更改而生成不精确的结果。

有关聚合级别成员回写的更多信息，请参见 UPDATE CUBE 语句。


使用 DRILLTHROUGH 检索源数据

DRILLTHROUGH 语句在多维表达式 (MDX) 中使用，以从多维数据集单元的源数据中检索行集。

为在多维数据集上执行 DRILLTHROUGH 语句，必须在"钻取选项"对话框中为该多维数据集启用钻取。DRILLTHROUGH 语句所返回的列也在此对话框中指定。（如果正在使用决策支持对象 (DSO) 而不是使用对话框进行编程，则可以使用 AllowDrillThrough 和 DrillThroughColumns 属性。）有关更多信息，请参见指定钻取选项。

以下语法结构描述了 DRILLTHROUGH 语句：

<drillthrough> := DRILLTHROUGH [<Max_Rows>] [<First_Rowset>] <MDX select>
   < Max_Rows> := MAXROWS <positive number>
   <First_Rowset> := FIRSTROWSET <positive number>

DRILLTHROUGH 语句包含 SELECT 子句，以标识需要检索源数据的多维数据集单元。除了在本 SELECT 子句中各个轴上只能指定一个成员外，此 SELECT 子句与普通 MDX SELECT 语句相同。如果在一个轴上指定了多个成员，则会发生错误。

<max_rows> 语法指定各个返回行集中行的最大个数。如果用于连接数据源的 OLE DB 提供程序不支持 DBPROP_MAXROWS，则忽略 <max_rows> 设置。

<first_rowset> 语法标识其行集最先返回的分区。

下面的示例说明了 DRILLTHROUGH 语句的使用：

DRILLTHROUGH
    SELECT [Warehouse].[All Warehouses].[Canada].[BC] ON ROWS,
    [Time].[1998].[Q1] ON COLUMNS,
    [Product].[All Products].[Drink] ON PAGES,
    [Measures].[Units Shipped] ON SECTIONS
    FROM [My Cube]


理解传递次序和求解次序

Microsoft SQL Server 2000 Analysis Services 中两个功能最强大且相对最困难的概念是求解次序和传递次序，它们共同决定了当处理查询时对多维数据集进行解析的方式。本主题假定您已对多维数据集、自定义成员、计算成员以及自定义汇总有了基本的理解。

传递次序

当多维数据集作为多维表达式 (MDX) 查询的结果进行计算时，它至少要经过一个阶段的计算，而且根据使用的各种与计算有关的功能，如自定义汇总公式、自定义汇总运算符以及计算单元，可能需要进行多个阶段的计算。

每一阶段都称为一个计算传递，因为分析服务器进行了适用于该阶段的一次完整的计算传递。可用顺序位置（称为计算传递号）对计算传递进行引用。完全计算多维数据集的所有单元所需的计算传递的计数称为多维数据集的计算传递深度。

多维数据集始终有一个计算传递，用来检索为多维数据集存储的数据。因为传递号的顺序位置由零开始，所以这一传递始终称为计算传递 0。所有计算成员和自定义成员也在传递 0 以及其后的每个计算传递上计算，计算时使用由每个计算成员的求解次序在此计算传递内建立的公式优先级。不允许对此计算传递执行其它操作；计算单元不能将计算传递 0 指派给其计算传递号。

如果多维数据集包含自定义汇总公式或自定义汇总运算符，则执行第二个计算传递以处理计算这些功能所需的计算。这些功能从计算传递 1 开始计算，而且也在其后由计算单元定义确定的每个计算传递计算。对于自定义汇总公式或自定义汇总运算符，不能更改计算传递号，因为在每个计算传递上对其进行计算，而且公式优先级由求解次序处理。但是，计算单元可以将计算传递 1 指派给其计算传递号，稍后会在本主题中更详细地描述。

无计算单元的多维数据集至多包含两个计算传递。但是，计算单元可指定在其上进行计算单元定义计算的最后一个计算传递号，以及计算单元定义与多少个传递一起使用，从而提供创建使用两个或多个计算传递的多维数据集的能力。

计算单元可使用多维数据集编辑器"高级"选项卡上的 Calculation Pass Number 属性或者使用 MDX 语句中的 CALCULATION_PASS_NUMBER 属性指定计算传递号。另外，通过指定将计算公式以递归方式应用到计算子多维数据集的计算传递的数量，可允许进行递归计算。可通过多维数据集编辑器"高级"选项卡上的 Calculation Pass Depth 属性或使用 MDX 语句中的 CALCULATION_PASS_DEPTH 属性访问此功能，它可允许在多维数据集中使用高度复杂的计算，如目标搜索等式。计算传递号为计算单元定义确定赋值开始以及计算结束所在的计算传递。计算传递深度决定要有多少计算传递才能完全计算计算单元定义。只有计算单元才会有大于 1 的计算传递号。

使用计算单元定义的单元属性 CALCULATION_PASS_NUMBER 和 CALCULATION_PASS_DEPTH，完全计算计算单元所需的计算传递的包含范围数可用如下公式定义：CALCULATION_PASS_NUMBER 到 (CALCULATION_PASS_NUMBER - CALCULATION_PASS_DEPTH) + 1。换句话说，如果计算单元定义具有为 4 的 CALCULATION_PASS_NUMBER 和为 3 的 CALCULATION_PASS_DEPTH，则计算单元定义在计算传递 4、3 和 2 中取值，然后在计算传递 2、3 和 4 中计算。

所有计算传递都保留在内存中，以方便对计算公式中以前的传递值进行引用。引用给定单元的以前传递值的能力使得在性能提高的情况下进行复杂的计算，如推测分析和目标搜索公式。

完全计算多维数据集所有单元所需的计算传递数量可通过首先赋值全部自定义成员、自定义汇总、计算成员以及计算单元来确定。赋值从由 CALCULATION_PASS_NUMBER 属性确定的最高计算传递到最低计算传递进行，以精确确定计算传递间的公式优先级。然后当计算计算传递时将次序逆转，按从最低到最高的次序计算。实际上，每个计算传递都视为一个嵌套计算，最低计算传递嵌套最深。

下表说明计算传递号和计算传递深度对示例多维数据集的影响。示例多维数据集包括四项计算：

  • 计算成员，以深灰阴影表示，SOLVE_ORDER 为 1。

  • 自定义汇总公式，以深蓝阴影表示，SOLVE_ORDER 为 2。

  • 计算单元定义，以绿色阴影表示，CALCULATION_PASS_NUMBER 为 2，CALCULATION_PASS_DEPTH 为 1，SOLVE_ORDER 为 1。

  • 计算单元定义，以红色阴影表示，CALCULATION_PASS_NUMBER 为 3，CALCULATION_PASS_DEPTH 为 2，SOLVE_ORDER 为 2。
传递关系图 | 传递描述
 | 计算传递 3 因为带红色阴影的计算单元定义的 CALCULATION_PASS_DEPTH 为 2，所以再次对单元进行递归计算，所用的是从上一计算传递派生的值。在此传递中也再次对计算成员和自定义汇总公式进行计算。 计算传递 2 对两个计算单元定义的计算都根据 CALCULATION_PASS_NUMBER 和 CALCULATION_PASS_DEPTH 的取值从此处开始。在此传递中也再次对计算成员和自定义汇总公式进行计算。 计算传递 1 所有自定义汇总公式和自定义汇总运算符都在传递 1 上开始计算。 计算传递 0 从源检索数据。计算计算成员和自定义成员。此时不执行其它计算。

在前一表格所示的关系图中，不同颜色标记的箭头显示了对各种计算的赋值顺序和计算次序。在具有多个计算的多维数据集中，某些计算可能重叠。当出现这种情况时，将用重叠计算的求解次序解析公式优先级，但只能在给定的传递内进行。如果为包含多个传递（即 CALCULATION_PASS_DEPTH 大于 1）的计算单元定义指定了求解次序，则求解次序应用于每个传递以解析公式优先级。因为求解次序应用在每个计算传递上，所以重叠的计算单元定义对于自定义汇总或计算成员解析中所包含的单元，可能生成不同的值。稍后会在本主题中更详细的讨论求解次序。

递归计算和目标搜索计算通过使用 MDX 中的 CalculationPassValue 和 CalculationCurrentPass 函数，可以使用在以前传递中获得的值。CalculationCurrentPass 函数提供当前计算传递号，而且 CalculationPassValue（给定 MDX 表达式和计算传递号）在指定计算传递号内对 MDX 表达式进行赋值并返回结果。

求解次序

在单个传递内，求解次序确定两项内容：对维度、成员、计算成员、自定义汇总以及计算单元进行赋值的次序，以及对其进行计算的次序。具有最高求解次序的成员最先进行赋值，但最后进行计算。这与任何其它嵌套操作的行为相似：最外部的操作在最内部的操作完成之前无法完成，但首先对最外部的操作进行赋值，以确定在最外部操作可执行前，必须完成最内部的操作。成员的求解次序越低，就赋值和计算而言，其嵌套的程度越深，该成员具有最高求解次序并占据最外部位置。

在维度包括自定义成员、自定义汇总公式、计算成员以及计算单元的多维数据集中，求解次序确定对各种计算进行赋值的次序。最高的求解次序始终首先进行赋值，然后次最高，依此类推。

然而其计算顺序却是相反的。首先计算最低的求解次序，然后是次最低的，依此类推。求解次序实质上是在嵌套公式，与任何嵌套公式一样，最外部的公式首先赋值，但最后计算。最内部的公式最后赋值，但首先计算，因为最外部的公式可能要依赖最内部公式所产生的值来进行计算。

虽然将所有的度量值视作另一种维度，但是它们对求解次序来说总是最后赋值而最先计算。换句话说，度量值总是具有最低的求解次序。

在多维数据集编辑器中，可通过更改属性窗格"高级"选项卡中的 Solve Order 属性来更改计算成员和计算单元的求解次序。可通过对树窗格内维度的位置重新排序更改维度的求解次序。有关多维数据集编辑器的使用的更多信息，请参见多维数据集编辑器 — 架构视图。

在 MDX 中，当创建或更改计算成员和计算单元时，可使用 SOLVE_ORDER 成员属性。

求解次序直接影响以此方式对维度和成员进行计算而生成的结果。以下关系图描述两个维度的行为，每个维度都有一个计算成员，并且二者交叉于一个单元。下面的关系图中举了求解次序不同的两个示例。

第一个示例中，Dimension 2 求解次序较高。因此交集用维度 2 (Dimension 2) 的公式进行赋值。可是为了向该公式提供数据，维度 1 (Dimension 1) 中的计算成员必须进行赋值和计算。所以先计算维度 1 (Dimension 1) 的公式以提供计算维度 2 (Dimension 2) 的公式所需的值。然后维度 2 (Dimension 2) 的公式进行计算，结果放置于单元中。

第二个示例中，维度 1 (Dimension 1) 求解次序较高。位于交集的单元使用维度 1 (Dimension 1) 的公式进行赋值。由于维度 2 (Dimension 2) 求解次序较低，接着对它进行赋值，然后首先对它进行计算并且将值提供给维度 1 (Dimension 1) 的公式。然后维度 1 (Dimension 1) 的公式进行计算，结果放置于单元中。

为进一步说明求解次序潜在复杂性，以下给出一系列 MDX 查询示例。

对于第一个示例，意在查看上半年与下半年的收入及开支的差额。然后，可以构造一个类似于以下示例的简单 MDX 查询：

WITH
MEMBER [Time].[Year Difference] AS
   '[Time].[2nd half] - [Time].[1st half]
SELECT
   { [Money].[Income], [Money].[Expenses] } ON COLUMNS,
   { [Time].[1st half], [Time].[2nd half], [Time].[Year Difference] } ON ROWS
FROM TestCube

本 MDX 查询将产生类似于下表的结果集（将计算成员划上阴影线）。

 | Income | Expenses
1st half | 5000 | 4200
2nd half | 8000 | 7000
Year Difference | 3000 | 2800

对于此查询，求解次序不是问题所在，可假设多维数据集不使用任何计算成员，因为查询中只有一个计算成员。

而对于第二个示例，意在查看上半年和下半年的开支后净收入的百分比，可使用下面的 MDX 查询：

WITH
MEMBER [Money].[Net Income] AS
   '([Money].[Income]  [Money].[Expenses]) / [Money].[Income]'
SELECT
   { [Money].[Income], [Money].[Expenses], [Money].[Net Income] } ON COLUMNS,
   { [Time].[1st half], [Time].[2nd half] } ON ROWS
FROM TestCube

本 MDX 查询将产生略有不同的结果集，类似于下表（将计算成员划上阴影线）。

 | Income | Expenses | Net Income
1st half | 5000 | 4200 | 0.16
2nd half | 8000 | 7000 | 0.125

本 MDX 查询与前一个类似，不包含任何复杂的求解次序，因为它也只有一个计算成员。请注意计算成员在本示例以及上个示例的结果数据集中所处的放置。第一个 MDX 查询示例将计算成员作为 ROWS 轴维度的一部分使用，而本查询示例将计算成员作为 COLUMNS 轴维度的一部分使用。当将两个计算成员组合到单个 MDX 查询中时，这种放置在下个示例中将变得重要。

最后，决定将前面的两个示例组合到单个 MDX 查询中。此时，求解次序变得很重要。例如，在以下 MDX 查询中尝试进行这种组合：

WITH
MEMBER [Time].[Year Difference] AS
   '[Time].[2nd half] - [Time].[1st half],
   SOLVE_ORDER = 1
MEMBER [Money].[Net Income] AS
   '([Money].[Income] - [Money].[Expenses]) / [Money].[Income]',
   SOLVE_ORDER = 2
SELECT
   { [Money].[Income], [Money].[Expenses], [Money].[Net Income] } ON COLUMNS,
   { [Time].[1st half], [Time].[2nd half], [Time].[Year Difference] } ON ROWS
FROM TestCube

Year Difference 和 Net Income 这两个计算成员在本 MDX 查询示例的结果数据集中的单个单元交叉。决定该单元将怎样进行赋值的唯一途径是依靠求解次序。用于构造该单元的公式会因两个计算成员的求解次序不同而产生不同的结果。

SOLVE_ORDER 关键字用于指定 MDX 查询或 CREATE MEMBER 命令中计算成员的求解次序。如果未指定求解次序，则它默认为零。在该情况下，其上下文在 MDX 查询中指定的多维数据集中的维度次序将按照本主题前面所列的规则确定求解次序。这也适用于赋以了相同 SOLVE_ORDER 值的不同维度中的计算成员。

用于 SOLVE_ORDER 关键字的整数值是相对值；该值只告诉 MDX 基于具有更高值的计算成员所得的值来计算成员。如果计算成员的定义不带 SOLVE_ORDER 关键字，则它默认为零。指定值不必起始于零，也不必连续。

在本 MDX 查询示例中，Net Income 具有最高求解次序，因此待求的单元用 Net Income 公式进行赋值。但是 Net Income 公式最后计算；为计算 Net Income，下一个计算成员 Year Difference 必须首先计算以使 Net Income 可以使用 Year Difference 的结果来执行自己的计算。

此嵌套计算的结果示于下表。

 | Income | Expenses | Net Income
1st half | 5000 | 4200 | 0.16
2nd half | 8000 | 7000 | 0.125
Year Difference | 3000 | 2800 | 0.066

正如所见，共享单元内的结果基于计算 Net Income 的公式；换句话说，它用 Year Difference 数据进行计算，产生下面的公式（为清楚起见，结果四舍五入）：

((8000 - 5000) - (7000 - 4200)) / (8000 - 5000) = 0.066

或

(3000 - 2800) / 3000 = 0.066

可是，如果交换 MDX 查询中计算成员的求解次序，共享单元内结果的计算将有所不同，如下所示：

WITH
MEMBER [Time].[Year Difference] AS
   '[Time].[2nd half] - [Time].[1st half],
   SOLVE_ORDER = 2
MEMBER [Money].[Net Income] AS
   '([Money].[Income] - [Money].[Expenses]) / [Money].[Income]',
   SOLVE_ORDER = 1
SELECT
   { [Money].[Income], [Money].[Expenses], [Money].[Net Income] } ON COLUMNS,
   { [Time].[1st half], [Time].[2nd half], [Time].[Year Difference] } ON ROWS
FROM TestCube

由于已经交换了计算成员的顺序，Year Difference 公式用于赋值单元。Net Income 计算成员首先求解，然后求解 Year Difference 计算成员，产生如下表所示、差别很大的结果。

 | Income | Expenses | Net Income
1st half | 5000 | 4200 | 0.16
2nd half | 8000 | 7000 | 0.125
Year Difference | 3000 | 2800 | -0.035

因为对 Net Income 数据使用 Year Difference 公式，所以共享单元的公式类似以下计算：

((8000 - 7000) / 8000) - ((5000 - 4200) / 5000) = -0.035

或

0.125 - 0.16 = -0.035

更改求解次序值

求解次序值的范围可介于 -8181 到 65535 之间。强烈建议设置求解次序值时仅使用正整数。某些计算驻留在特定的求解次序上，如下表所列。如果其它运算使用这些值，传递的求解次序可变得无法预测。

计算 | 求解次序
计算单元公式 "dirtiness" | -6143
自定义汇总公式（如果无其它指定） | -5119
用 Analysis Services 的早期版本创建的虚拟维度 | -4097
直观合计计算 | -4096
所有其它计算（如果无其它指定） | 0

例如，更改低于默认自定义汇总公式值 –5119 的计算单元定义的求解次序将造成计算单元定义在自定义汇总公式前计算，这可能产生不正确的结果。

在具有相同求解次序的多个计算中，使用下列公式优先级：

  1. 计算单元

  2. 自定义汇总公式

  3. 自定义成员和计算成员

  4. 所有其它计算

计算单元在出现求解次序冲突时采用高于所有其它计算的优先级。如果同一分类内出现多个计算，使用计算的声明次序。例如，如果两个计算单元定义对同一计算传递具有相同的求解次序，则声明次序确定哪个首先赋值。

补充考虑事项

传递次序和求解次序的组合是一个要处理的非常复杂的问题，尤其在具有很多维度而维度又涉及计算成员、自定义汇总公式或计算单元的多维数据集中，更是如此。当 MDX 赋值 MDX 查询时，将考虑给定传递内所涉及的所有事项（包括 MDX 查询中指定的多维数据集的维度）的求解次序值。

例如，当对带有计算成员的多维数据集执行带有计算成员的查询时，查询和多维数据集的求解次序都要进行赋值，就好像查询是多维数据集的一部分；该操作在多维数据集的上下文内执行。因为不易检查维度在多维数据集中的求解次序，确保在多维数据集的上下文内正确处理复杂 MDX 查询中的计算成员的求解次序可能十分困难。

同样，由于维度在多维数据集中的求解次序可从多维数据集编辑器更改，MDX 查询会受到影响；曾经运行正常的 MDX 查询可能返回意外的结果，因为执行 MDX 查询的多维数据集上下文中的求解次序改变了。

请参见

CalculationCurrentPass

CalculationPassValue

多维数据集编辑器 — 架构视图

CREATE MEMBER 语句


有效应用 MDX

本主题提供有关多维表达式 (MDX) 函数在各种方案中的更有效应用的信息。所论及的主题列于下表。

主题 | 描述
MDX 中的注释 | 描述 MDX 语句中注释的使用。
使用空单元 | 解释 MDX 中与空单元相关的行为及函数。
在多维数据集的上下文内创建单元 | 讨论返回单个单元的 MDX 查询的创建。
使用 RollupChildren 函数 | 讨论 RollupChildren 函数对多维数据分析的影响。
WHERE 子句替代 | 详述 MDX 查询的 WHERE 子句怎样及何时可替代 MDX 语句中的单个集合函数、成员函数、元组函数或数值函数的解析。


MDX 中的注释

多维表达式 (MDX) 中的语句可以包含用户可读的注释，当处理命令时则将这些注释忽略。三种不同的表示注释的字符集列于下表。

字符 | 描述
// | C++ 风格的正斜线。将位于正斜线和本行结尾之间的所有文本忽略。
-- | SQL 风格的连字符。将位于破折号和本行结尾之间的所有文本忽略。
/*...*/ | C 风格的正斜线与星号对。将位于起始正斜线及星号和结束星号与正斜线之间的所有文本忽略。这种注释类型可以跨越多行。

以下示例说明 MDX 命令中注释的使用：

/* Using this query to view
   info about units shipped
   and units ordered  */

WITH MEMBER [Measures].[ShippingPercent] AS
'-- Returns [Units Shipped] over [Units Ordered] as a percent value
Measures.[Units Shipped] / Measures.[Units Ordered]',
FORMAT_STRING = 'Percent'

SELECT
   { [Measures].[Units Shipped], [Measures].[Units Ordered], [Measures].[ShippingPercent] } ON COLUMNS,
// The next command specifies nonempty members only
   NON EMPTY [Store].[Store Name].Members ON ROWS
FROM Warehouse   -- Pulled from the Warehouse cube

建议在复杂的或不易理解的 MDX 查询中使用注释，因为它们加入了信息但却不影响性能。


使用空单元

当两个或更多维度的交集数据不存在时，多维表达式 (MDX) 语句中就会出现空单元。例如，下面的 MDX 查询示例就产生了很多空单元：

SELECT
   {[Store].[Store Name].Members} ON COLUMNS,
   {[Product].[Excellent Diet Cola]} ON ROWS
FROM Sales
WHERE [Measures].[Unit Sales]

Excellent Diet Cola 这种产品在所有商店中都没有销售。对于销售该产品的商店，Unit Sales 度量值将包含数字值。但是对于不销售该产品的商店，将显示空单元。

空单元影响值表达式和搜索条件的赋值。若要理解为何要这样，请注意值表达式是由初级值表达式组成。这些初级值表达式之一是 <tuple>[.VALUE]，它返回多维数据集（它的一些坐标用 <tuple> 显式地加以指定，而其它坐标可以隐式地从 MDX 语句的上下文得到）中单元的值。此单元可以是空单元。空单元在以下三种情况下影响表达式赋值：

  • 对于数字值表达式。在数字值表达式中，该值可用其它值加、减、乘或除。它还可以作为任何带有 <numeric_value_expression> 参数的函数的参数出现。

  • 对于字符串值表达式。在字符串值表达式中，该值可串联于另一个字符串。

  • 对于由初级布尔表达式组成的搜索条件。初级布尔表达式的形式如下：
    <boolean_primary> ::= <value_expression> <comp_op> <value_expression>

值表达式将由初级值表达式组成，这将导致以上所述的前两种情况的出现。

空单元赋值

MDX 通过定义出现在空单元中的特殊的空单元值来明确标识空单元。空单元值的赋值方式如下：

  • 如果 <value_expression> 是空单元值，则 IsEmpty(<value_expression>) 函数返回 TRUE。否则返回 FALSE。

  • 当空单元值是任何数字运算符（+、-、* 或 /）的操作数时，其行为方式类似于数字零。

  • 当空单元值是字符串串联运算符 (||) 的操作数时，其行为方式类似于空字符串。

  • 当空单元值是任何比较运算符（=、<>、>=、<=、>、<）的操作数时，根据其它操作数的数据类型是数字或字符串，该空单元值的行为分别类似于数字零或空字符串。

  • 当对数字值进行排序时，空单元值排在与零相同的位置。在空单元值和零之间，空单元值排在零之前。

  • 当对字符串值进行排序时，空单元值排在与空字符串相同的位置。在空单元值和空字符串之间，空单元值排在空字符串之前。

空单元可以以各种不同方式处理；最简单的方式是对其不予考虑。可是，由于这在 MDX 中并不总行得通，因此提供了函数来处理空单元。

NON EMPTY 关键字

对空单元不予考虑的最简单的方法是在 MDX 查询中使用 NON EMPTY 关键字。以下示例是本主题前面所讨论过的同一个 MDX 查询示例，但是在这里使用了 NON EMPTY 关键字。

SELECT
   NON EMPTY {[Store].[Store Name].Members} ON COLUMNS,
   {[Product].[Excellent Diet Cola]} ON ROWS
FROM Sales
WHERE [Measures].[Unit Sales]

第一个轴维度中所有无产品单位销售额值的商店均排除在结果数据集以外。将空元组从 MDX 查询的结果数据集中筛选出去。

注意到本函数筛选出空元组而不是单个空单元是很重要的。因为这一点，即使当使用了 NON EMPTY 关键字，空单元仍可出现在结果数据集中。例如，假定想要检查 1997 年各个商店的两种不同产品的单位销售额。以下 MDX 查询示例使用 NON EMPTY 关键字来筛选出空元组：

SELECT
   NON EMPTY CROSSJOIN ({[Product].[Excellent Diet Cola], [Product].[Fabulous Diet Cola]}, {[Time].[1997]}) ON COLUMNS,
   NON EMPTY {[Store].[Store Name].Members} ON ROWS
FROM Sales
WHERE [Measures].[Unit Sales]

但是，结果数据集与下表类似。

 | Excellent Diet Soda | Fabulous Diet Soda
 | 1997 | 1997
Store 6 | 20.00 | 11.00
Store 7 | 25.00 | 6.00
Store 24 | 11.00 | 19.00
Store 11 | 36.00 | 32.00
Store 13 | 25.00 | 22.00
Store 2 | 2.00 |
Store 3 | 23.00 | 16.00
Store 15 | 14.00 | 17.00
Store 16 |  | 13.00
Store 17 | 22.00 | 12.00
Store 22 | 2.00 |
Store 23 | 4.00 | 5.00

尽管使用了 NON EMPTY 关键字，结果数据集仍显示了三个空单元。由 MDX 查询创建的元组可能包含空单元，但元组本身非空。例如，在上面的结果数据集中，尽管 Store 22 在 1997 年未销售任何 Fabulous Diet Soda 产品，而在 1997 年的确销售了一些 Excellent Diet Soda 产品。那么，由 CROSSJOIN 命令创建的元组的确包含一个未赋值为空单元的成员，因此该元组不视为空并且未筛选出去。

有关 MDX SELECT 语句中 NON EMPTY 的使用的更多信息，请参见 SELECT 语句。

CoalesceEmpty 函数

此 MDX 函数返回一列值内的第一个非空值。当想要以另一个数值表达式或字符串表达式替换空单元值时，可使用该函数。

CoalesceEmpty 函数使您得以从左到右赋值一系列值表达式。将系列中第一个未赋值为空单元值的值表达式返回。例如，以下 MDX 查询修改前面的 MDX 查询示例，来以零替换 Unit Sales 度量值中所有的空单元值：

WITH MEMBER [Measures].[NonEmptyUnitSales] AS
   'CoalesceEmpty(Measures.[Unit Sales], 0)'

SELECT
   NON EMPTY CROSSJOIN ({[Product].[Excellent Diet Cola], [Product].[Fabulous Diet Cola]}, {[Time].[1997]}) ON COLUMNS,
   NON EMPTY {[Store].[Store Name].Members} ON ROWS
FROM Sales
WHERE [Measures].[NonEmptyUnitSales]

下表说明了本 MDX 查询示例返回的结果数据集。

 | Excellent Diet Soda | Fabulous Diet Soda
 | 1997 | 1997
Store 19 | 0 | 0
Store 20 | 0 | 0
Store 9 | 0 | 0
Store 21 | 0 | 0
Store 1 | 0 | 0
Store 5 | 0 | 0
Store 10 | 0 | 0
Store 8 | 0 | 0
Store 4 | 0 | 0
Store 12 | 0 | 0
Store 18 | 0 | 0
HQ | 0 | 0
Store 6 | 20.00 | 11.00
Store 7 | 25.00 | 6.00
Store 24 | 11.00 | 19.00
Store 11 | 36.00 | 32.00
Store 13 | 25.00 | 22.00
Store 2 | 2.00 | 0
Store 3 | 23.00 | 16.00
Store 15 | 14.00 | 17.00
Store 16 | 0 | 13.00
Store 17 | 22.00 | 12.00
Store 22 | 2.00 | 0
Store 23 | 4.00 | 5.00

NonEmptyUnitSales 计算成员的值由 CoalesceEmpty 函数决定。如果 Unit Sales 值赋值为非空单元，则返回 CoalesceEmpty 语句中的第一个值。如果 [Unit Sales] 值赋值为空单元值，则返回 CoalesceEmpty 语句中的第二个值。因为 CoalesceEmpty 函数以零替换了所有的空单元值，因而没有内容可供 NON EMPTY 关键字筛选，所以查询中的所有元组都有效并出现在结果数据集中。

其它函数

其它函数（尤其是计算函数）处理空单元的方法取决于这些函数可用的功能和选项。Count 和 Avg 之类的函数赋值单元的计数，但是否用这种类型的函数赋值空单元应仔细考虑。实际上，有时计算空单元的数量是更可取的。例如，当将销售代表的数量作为性能赋值查询的一部分计数时，所有的销售代表都应包括在计数中，而不管其是否销售了产品。这种情况下，各个无销售结果产生一个空单元。可是，还有其它的不应将空单元计算在内的情况，如当在某个域内获取销售额的平均值时。这种情况下，计入无销售单元的数字将不准确地降低平均值。

一些 MDX 函数包含可能改变输出的空单元，这样的函数允许将空单元作为其计算的一部分包含其中，或将空单元排除在外。例如，Count 支持使用 INCLUDEEMPTY 和 EXCLUDEEMPTY 标志来分别处理计数时对于空单元的包含或排除。


在多维数据集的上下文内创建单元

对于某些应用程序，可能想要在多维数据集内返回单个单元的数据。例如，经理们可拥有某个用 Microsoft® Excel 编写的决策支持应用程序，而该程序使用来自多维数据商店的数据。假设每天当此应用程序启动时，经理们想要在应用程序的主窗口的顶部查看当年的所有产品和顾客的季度内全世界销售额。

解决方案是创建一个数据集，对该数据集而言，所有维度均为切片器维度。用来完成它的多维表达式 (MDX) 语句采用如下形式：

SELECT FROM cube_name WHERE slicer_specification

这导致产生只有一个单元的数据集。因为未指定轴维度，切片器规范对准整个多维数据集中的所需点。

这种没有轴因此只有一个单元的情况下，适用以下条件：

  • IMDDataset::GetAxisInfo 方法将 0 返回给 *pcAxes，将空指针返回给 *prgAxisInfo。

  • 除了 MDAXIS_SLICERS 轴，所有轴的轴行集将为空。切片器维度的轴将包含有关创建了单个单元的切片器条件的信息。

  • 可使用单元序数 0 来寻址单个单元。


使用 RollupChildren 函数

RollupChildren 函数在多维表达式 (MDX) 语句中的使用易于解释，但此函数对 MDX 查询的影响范围可能十分广泛。

RollupChildren 函数将不同的一元运算符应用于各个子代，以汇总成员的子代，并且将汇总的值以数字返回。所使用的一元运算符可由与子代成员相关联的成员属性提供，或者可以是直接提供给函数的字符串表达式。

RollupChildren 函数的影响出现在设计为对现有多维数据集数据执行选择性分析的 MDX 查询中。例如，下表包含 Net Sales 父代成员的一列子代成员，其一元运算符（用 UNARY_OPERATOR 成员属性表示）示于括号内。

父成员 | 子代成员
Net Sales | Domestic Sales (+) Domestic Returns (-) Foreign Sales (+) Foreign Returns (-)

Net Sales 父代成员当前提供总净销售额减去总国内和国外销售额值，并将国内和国外盈利作为汇总的部分减去。

现在，如果想要提供快速和简便的国内和国外总销售额加 10% 的预测（忽略国内和国外盈利），则有两种方法使用 RollupChildren 函数来执行此操作。

自定义成员属性

如果这将是常用的操作，一种方法是创建成员属性，该属性可为给定函数存储要用于各个子代的运算符。例如，创建名为 SALES_OPERATOR 的成员属性，并给它分配下表所描述的一元运算符。

父成员 | 子代成员
Net Sales | Domestic Sales (+) Domestic Returns (~) Foreign Sales (+) Foreign Returns (~)

使用这个新成员属性，以下 MDX 语句可以快速而有效地完成总销售额赋值操作：

RollupChildren([Net Sales], [Net Sales].CurrentMember.Properties("SALES_OPERATOR")) * 1.1

当调用函数时，使用存储于该成员属性内的运算符将各个子代的值应用于总数。下表列出有效的一元运算符并描述预期的结果。

运算符 | 结果
+ | total = total + current child
- | total = total - current child
* | total = total * current child
/ | total = total / current child
~ | 不在汇总结果中使用子代。子代的值被忽略。

代字号 (~) 一元运算符表示当生成汇总总数时忽略此成员。将国内和国外盈利成员忽略，并且将 RollupChildren 函数返回的汇总总数乘以 1.1。

IIf 函数

然而，如果示例操作不普遍或者如果只应用于一个 MDX 查询，则可将 IIf 函数与 RollupChildren 函数一起使用来提供相同的结果。下面的 MDX 查询提供与前面的 MDX 示例相同的结果，但这里没有使用自定义成员属性：

RollupChildren([Net Sales], IIf([Net Sales].CurrentMember.Properties("UNARY_OPERATOR") = "-", "~", [Net Sales].CurrentMember.Properties("UNARY_OPERATOR))) * 1.1

MDX 语句检查子代成员的一元运算符；如果它用于减法（正如国内和国外盈利成员的情况），则代字号 (~) 一元运算符由 IIf 函数取代。否则，使用子代成员的一元运算符。最后，将所返回的汇总总数乘以 1.1 来提供国内和国外总销售额预测值。

请参见

RollupChildren


WHERE 子句替代

多维表达式 (MDX) 语句中的各个单个集合、成员、元组或数字函数总是在整个语句的更大上下文中执行。例如，考虑以下表达式中的 FILTER 函数：

SELECT FILTER(SalesRep.MEMBERS, [1996].VALUE > 500) ON COLUMNS,
   Quarters.MEMBERS ON ROWS
FROM SalesCube
WHERE ([Geography].[All], [Products].[All], [1996], Sales)

FILTER 的第二个参数"[1996].VALUE"本身未包含足够的信息。需要六个坐标来决定 VALUE，各个坐标分别来自六个维度的其中之一。参数只包含一个来自 Years 维度的坐标。这种情况下，其它的坐标依次通过以下几点来获得：

  1. 其余的轴规范。这产生（在上例中）SalesRep 维度的坐标，因为 FILTER 函数在 SalesRep 维度的各个成员中重申。

  2. 切片器条件（WHERE 子句）和切片器维度的坐标。这产生 Geography、Products 和 Measures 维度的坐标，分别为 Geography.[All]、Products.[All] 和 Measures.Sales。

  3. 既未出现在轴上又未出现在切片器上的维度的默认成员。这样便为 Quarters 维度获取默认成员。

当坐标在 WHERE 子句和表达式中都加以指定时，会出现特殊情况。例如，假设应用程序要求这样的数据集：在 COLUMNS 轴上包含美国所有在 1995 年具有多于 500 个 ActualSales 单位的州的 1996 年预算销售额，在 ROWS 轴上包含 Quarters。以下语句可以创建此数据集：

SELECT FILTER({USA.CHILDREN}, ([1995], ActualSales) > 500) ON COLUMNS,
   Quarters.MEMBERS ON ROWS
FROM SalesCube
WHERE ([1996], BudgetedSales, [Products].[All], [SalesRep].[All])

由于为美国的各个州对 FILTER 函数进行赋值，所以已经有了来自 WHERE 子句的坐标 ([1996], BudgetedSales)。可是，它又从 FILTER 函数获得坐标 ([1995], ActualSales)。为避免潜在的冲突，FILTER 函数的参数具有优先权。一般而言，任何获自 WHERE 子句的坐标将由轴规范中所指定的坐标替代。


Analysis Services 中的 MDX 函数

Microsoft SQL Server 2000 Analysis Services 允许在多维表达式 (MDX) 语法中使用函数。函数可以在任何有效的 MDX 语句中使用，并且经常用于查询、计算成员及自定义汇总定义。在 MDX 中有三种类型的函数，将分别在三个不同的主题中进行介绍。下表列出、描述并且提供了到每个主题的链接。

主题 | 描述
MDX 函数引用 | 提供 MDX 固有的函数列表，其中包含语法及示例。
已注册的函数库 | 描述在 MDX 表达式中外部函数库（例如 Microsoft Excel 工作表库以及 Microsoft Visual Basic for Applications Expression Services 库）的用法。


MDX 函数引用

下面的主题提供了有关 Microsoft SQL Server 2000 Analysis Services 中包含的多维表达式 (MDX) 函数的信息。可以使用 MDX 函数列表按照其返回值分类来查找函数，或从目录的以字母排序的列表中按名称选择函数。

MDX 函数列表


MDX 语法规则

MDX 函数引用中多维表达式 (MDX) 语法的关系图使用下面这些规则。

规则 | 使用
[ ] （方括弧） | 可选语法项目。不必键入方括号。
| （竖线） | 分隔括号或大括号内的语法项目。只能选择一个项目。
«»（小花括号） | MDX 语法中用户提供的参数。不要键入该小花括号。
[,...] | 表示前面的项可重复任意次。项目由逗号分隔。


MDX 函数列表

本主题包含 Microsoft® SQL Server™ 2000 Analysis Services 中多维度表达式 (MDX) 函数的列表。可以使用这些列表按照返回值的分类来查找函数，或从目录的按字母排序列表中按名称选择函数。

示例中使用的样本

对于下列主题中的许多表达式示例，SampleSet 的定义如下：

{USA, Buffalo, France, NYC, London, California, LA, Nice, UK, Paris}

下表列出该集合中每个成员的销售数据。

位置 | 1995 年销售数据 | 1996 年销售数据
UK | 1900 | 1700
London | 250 | 300
France | 2500 | 2500
Paris | 365 | 250
Nice | 27 | 100
USA | 5000 | 6500
Boston | 900 | 1100
Buffalo | 300 | 200
California | 2000 | 3500
Los Angeles | 500 | 900

MDX 函数组

下表列出按返回值的分类进行分组的 MDX 函数。可以使用表中的链接跳转到函数引用主题。

数组函数
函数 | 描述
SetToArray | 将一个或多个集合转换为数组，以用于用户定义函数中。

维度函数、层次结构函数和级别函数
维度函数
函数 | 描述
Dimension | 返回包含指定的层次结构、级别或成员的维度。
Dimensions | 返回多维数据集中基于零的位置是由数值表达式指定的维度，或者其名称是由字符串指定的维度。

层次结构函数
函数 | 描述
Hierarchy | 返回级别或成员的层次结构。

级别函数
函数 | 描述
Level | 返回成员的级别。
Levels | 返回维度中其位置是由数值表达式指定的级别，或者其名称是由字符串表达式指定的级别。

逻辑函数
函数 | 描述
Is | 如果两个相比较的对象相等，则返回 True，否则返回 False。
IsAncestor | 确定指定的成员是否为另一个指定成员的祖先。
IsEmpty | 确定表达式是否取值为空单元值。
IsGeneration | 确定指定成员是否位于指定的代中。
IsLeaf | 确定指定成员是否为叶成员。
IsSibling | 确定指定成员是否为另一个指定成员的兄弟。

成员函数
函数 | 描述
Ancestor | 返回指定级别或距成员指定距离的成员的祖先。
ClosingPeriod | 返回成员在一个级别上的后代中的最后一个兄弟。
Cousin | 返回成员下方与指定的成员具有相同的相对位置的成员。
CurrentMember | 返回迭代过程中维度上的当前成员。
DataMember | 返回与非叶成员关联的系统生成的数据成员。
DefaultMember | 返回维度或层次结构的默认成员。
FirstChild | 返回成员的第一个子代。
FirstSibling | 返回成员的父代的第一个子代。
Ignore | 保留。
Item | 从元组中返回成员。
Lag | 返回指定成员的维度上的上一个成员。
LastChild | 返回成员的最后一个子代。
LastSibling | 返回成员的父代的最后一个子代。
Lead | 返回指定成员的维度上后面的成员。
LinkMember | 返回按层次结构排列的成员。
Members | 返回其名称由字符串表达式指定的成员。
NextMember | 返回指定成员所在级别的下一个成员。
OpeningPeriod | 返回某一级别上成员的后代中的第一个兄弟。
ParallelPeriod | 返回上一时期中与指定成员具有相同的相对位置的成员。
Parent | 返回成员的父代。
PrevMember | 返回指定成员所在级别的上一个成员。
StrToMember | 根据字符串表达式返回成员。
ValidMeasure | 通过将不适用的维度强制到其顶层，来返回虚拟多维数据集中的有效度量值。

数值函数
函数 | 描述
Aggregate | 返回根据查询的上下文，用适当的聚合函数计算所得的值。
Avg | 返回在某一集合上对数值表达式求得的平均值。
CalculationCurrentPass | 针对当前查询上下文返回多维数据集的当前计算传递。
CalculationPassValue | 返回在当前多维数据集的指定计算传递上对 MDX 表达式求得的值。
CoalesceEmpty | 将空单元值合并为数字或字符串。
Correlation | 返回在某一集合上对两个系列求得的相关性。
Count | 返回多维数据集中的维度数、维度中的级别数、集合中的单元数或元组中的维度数。
Covariance | 返回使用偏置填充公式在某一集合上对两个系列求得的总体协方差。
CovarianceN | 返回使用非偏置填充公式在某一集合上对两个系列求得的样本协方差。
DistinctCount | 返回集合中的元组数，不包括重复的元组。
IIf | 返回由逻辑测试确定的两个数值或字符串值之一。
LinRegIntercept | 对集合进行线性回归，并返回回归线公式 y = ax + b 中 b 的值。
LinRegPoint | 对集合进行线性回归，并返回回归线公式 y = ax + b 中 y 的值。
LinRegR2 | 对集合进行线性回归，并返回 R2（确定系数）。
LinRegSlope | 对集合进行线性回归，并返回回归线公式 y = ax + b 中 a 的值。
LinRegVariance | 对集合进行线性回归，并返回与回归线公式 y = ax + b 相关的方差。
LookupCube | 返回在同一数据库中另外一个指定的多维数据集上对 MDX 表达式求得的值。
Max | 返回在某一集合上对数值表达式求得的最大值。
Median | 返回在某一集合上对数值表达式求得的中值。
Min | 返回在某一集合上对数值表达式求得的最小值。
Ordinal | 返回级别的以零为基的序数值。
Predict | 计算当前坐标中指定的数据挖掘模型中的字符串表达式。
Rank | 以一为基返回元组在集合中的阶。
RollupChildren | 扫描成员参数的子代并将字符串表达式运算符应用于计算所得的值。
Stddev | Stdev 的别名。
StddevP | StdevP 的别名。
Stdev | 返回使用非偏置填充公式对集合计算数值表达式所得的样本标准偏差。
StdevP | 返回使用偏置填充公式对集合计算数值表达式所得的填充标准偏差。
StrToValue | 根据字符串表达式返回值。
Sum | 返回在某一集合上对数值表达式求得的和。
Value | 返回度量值的值。
Var | 返回使用无偏置填充公式在某一集合上对数值表达式求得的样本方差。
Variance | Var 的别名。
VarianceP | VarP 的别名。
VarP | 返回使用偏置填充公式对集合计算数值表达式的总体方差。

其它函数
函数 | 描述
Call | 执行包含用户定义函数的字符串表达式。

聚合函数
函数 | 描述
AddCalculatedMembers | 向集合中添加计算成员。
AllMembers | 返回包含指定维度或级别的所有成员的集合，包括计算成员。
Ancestors | 返回指定距离上某个成员的所有祖先。
Ascendants | 返回成员祖先的集合，包括成员本身。
Axis | 返回与主轴关联的集合。
BottomCount | 从集合底端开始返回指定数目的项，可以选择首先对集合排序。
BottomPercent | 对集合排序，并返回底端的 n 个元素，这些元素的累积合计至少为指定的百分比。
BottomSum | 对集合排序，并返回底端的 n 个元素，这些元素的累积合计至少为指定的值。
Children | 返回成员的子代。
Crossjoin | 返回两个集合的矢量积。
Descendants | 返回某一成员在指定级别上的或者距某一成员指定距离的后代集合，可以选择包含或不包含其它级别上的后代。
Distinct | 从集合中删除重复的元组。
DrilldownLevel | 将集合中的成员从指定级别深化一个级别。 另一种方法是，在集合中的指定维度上深化。
DrilldownLevelBottom | 将集合底端的 n 个成员从指定级别深化一个级别。
DrilldownLevelTop | 将集合顶端的 n 个成员从指定级别深化一个级别。
DrilldownMember | 在第一个集合与第二个集合的交集中深化。
DrilldownMemberBottom | 类似于 DrilldownMember，除了只包括底端的 n 个子代。
DrilldownMemberTop | 类似于 DrilldownMember，除了只包括顶端的 n 个子代。
DrillupLevel | 从集合的某一指定级别之下的成员浅化。
DrillupMember | 在第一个集合与第二个集合的交集中浅化。
Except | 查找两个集合之间不同的项，可以选择保留重复项。
Extract | 从析取的维度元素中返回元组集合。即 Crossjoin 的反运算。
Filter | 返回根据搜索条件对集合进行筛选所得到的集合。
Generate | 将集合应用到另一集合的每个成员，然后用 union 运算合并所得的集合。
Head | 返回集合中指定数目的前若干个元素。
Hierarchize | 在层次结构中对集合的成员排序。
Intersect | 返回两个输入集合的交集，可以选择保留重复项。
LastPeriods | 返回指定的成员之前（包含该成员）的成员集合。
Members | 返回维度、层次结构或级别中所有成员的集合。
Mtd | PeriodsToDate 函数的快捷函数，将级别指定为 Month。
NameToSet | 基于包含成员名称的字符串表达式，返回一个包含单个成员的集合。
NonEmptyCrossjoin | 返回两个或多个集合的矢量积，除空成员之外。
Order | 排列集合的成员，可以选择保留或打破层次结构。
PeriodsToDate | 返回指定级别上的一个时期（成员）集合，从第一个时期开始到指定的成员为止。
Qtd | PeriodsToDate 函数的快捷函数，将级别指定为 Quarter。
Siblings | 返回成员的兄弟，包括成员本身。
StripCalculatedMembers | 从集合中删除计算成员。
StrToSet | 用字符串表达式构造一个集合。
Subset | 从集合中返回元素的子集。
Tail | 从集合尾部返回子集。
ToggleDrillState | 切换对成员的钻取状态。此函数是 DrillupMember 和 DrilldownMember 的组合。
TopCount | 从集合顶端开始返回指定数目的项，可以选择首先对集合排序。
TopPercent | 对集合排序，并返回顶端的 n 个元素，这些元素的累积合计至少为指定的百分比。
TopSum | 对集合排序，并返回顶端的 n 个元素，这些元素的累积合计至少为指定的值。
UNION | 返回两个集合的并集，可以选择保留重复项。
VisualTotals | 动态计算集合中指定的子成员的合计，并在结果集中对合计的标签使用某种模式来显示。
Wtd | PeriodsToDate 函数的快捷函数，将级别指定为 Week。
Ytd | PeriodsToDate 函数的快捷函数，将级别指定为 Year。

字符串函数
函数 | 描述
CalculationPassValue | 返回在多维数据集的指定计算传递上对 MDX 表达式求得的值。
CoalesceEmpty | 将空单元值合并为字符串或数字。
Generate | 返回通过在集合上对字符串表达式计算而创建的连锁字符串。
IIf | 返回由逻辑测试确定的两个字符串或数值之一。
LookupCube | 返回在同一数据库中另外一个指定的多维数据集上对 MDX 表达式求得的值。
MemberToStr | 从某个成员构造一个字符串。
Name | 返回维度、层次结构、级别或成员的名称。
Properties | 返回包含成员属性值的字符串。
SetToStr | 用集合构造一个字符串。
TupleToStr | 用元组构造一个字符串。
UniqueName | 返回维度、级别或成员的唯一名称。
UserName | 返回当前连接的域名和用户名。

元组函数
函数 | 描述
Current | 返回迭代过程中集合中的当前元组。
Item | 从集合中返回元组。
StrToTuple | 用字符串构造一个元组。


 Analysis Services

A


AddCalculatedMembers

返回通过将计算成员添加到指定的集合而生成的集合。

语法

AddCalculatedMembers(«Set»)

注释

此函数只包含在集合中为兄弟的计算成员。

示例

在上面关系图中，下列函数返回如下值。

表达式 返回
AddCalculatedMembers({GrandParent.Children})

{[Parent 1],[Parent 2],[Calculated member 0]}

AddCalculatedMembers({[Parent 1].Children})

{[Member 1.1], [Member 1.2], [Member 1.3], [Calculated member 1.4]}

AddCalculatedMembers({[Parent 2].[Member 2.1]})

{[Member 2.1], [Calculated member 2.4]}


Aggregate

返回根据成员的聚合类型，用适当的聚合函数计算所得的值。

语法

Aggregate(«Set»[, «Numeric Expression»])

注释

此函数不能用在计算成员上。

示例

在下面的表达式中，先用度量值 SumSales 显示计算成员 Total，然后再用度量值 MaxSales 显示计算成员 Total。在前一种情况下，Total 是通过加法（使用 Sum）计算得到的。在后一种情况下，Total 是通过取最大值计算得到的。

WITH MEMBER Geography.Total AS  'AGGREGATE({USA, France})'
SELECT {Measures.SumSales, Measures.MaxSales} ON COLUMNS,
      {USA, France, Total} ON ROWS
FROM SalesCube
WHERE ([1998])


AllMembers

返回包含指定维度或级别的所有成员的集合，包括计算成员。

语法
维度

«Dimension».AllMembers

级别

«Level».AllMembers

注释

该函数在语义上与 AddCalculatedMembers 函数类似，也只包括在维度或级别中为兄弟的计算成员。但是，如果没有成员，例如 [Measures] 维度，则 AllMembers 函数仍会返回计算成员。

示例

在该关系图中，以下示例返回集合 {[Parent 1],[Parent 2],[Calculated Member 0]}：

[GrandParent].AllMembers


Ancestor

返回指定级别或指定距离上成员的祖先。

语法
级别

Ancestor(«Member», «Level»)

返回 «Level» 中指定的维度级别中的 «Member» 的祖先。

距离

Ancestor(«Member», «Numeric Expression»)

返回层次结构中与 «Member» 的距离为 «Numeric Expression» 个步骤的祖先。

示例

如果 Geography 维度包括级别 Country、State 和 City，下列函数将返回如下值。

表达式 返回
Ancestor(Los Angeles, Country)

[USA]

Ancestor(Los Angeles, State)

[California]

Ancestor(Los Angeles, 0)

[Los Angeles]

Ancestor(Los Angeles, 1)

[California]

Ancestor(Los Angeles, 2)

[USA]


Ancestors

返回指定级别或距离的成员的所有祖先的集合。

语法
级别

Ancestors(«Member», «Level»)

返回 «Level» 中指定级别的 «Member» 的所有祖先。

返回成员的集合必须全部来自同一层次结构，但是 «Level» 不必是与 «Member» 同一层次结构的级别。

距离

Ancestors(«Member», «Numeric Expression»)

返回层次结构中 «Member» 之上 «Numeric Expression» 个步骤的层次结构的所有成员。Ancestors 函数的这一形式适用于父代级别未知或无法命名的情况。返回成员的集合必须都来自同一层次结构。

说明 Ancestors(«Member», 0) 返回 «Member»。

注释

与 Ancestor 函数不同，Ancestors 是一个集合值表达式；它返回的是一个集合而不是一个成员。

示例

如果 Geography 维度包括级别 Country、State 和 City，下列函数将返回如下值。

表达式 返回
Ancestors([Los Angeles], Country)

{ USA }

Ancestors([Los Angeles], State)

{ California }

Ancestors([Los Angeles], 0)

{ [Los Angeles] }

Ancestors([Los Angeles], 1)

{ California }

Ancestors([Los Angeles], 2)

{ USA }


Ascendants

返回指定成员的祖先集合。

语法

Ascendants(«Member»)

注释

Ancestor 函数返回特定级别上的一个特定的祖先成员或祖先，而 Ascendants 函数则不同，它对成员的层次结构执行后序遍历，并且在集合中返回与给定成员相关的所有祖先成员，包括其自身。

示例

下例返回集合 { LA, California, USA, [All Locations] }：

Ascendants([Los Angeles])


Avg

返回在某一集合上对数值表达式求得的平均值。

语法

Avg(«Set»[, «Numeric Expression»])

注释

此函数需要单元数的隐性计数，不包含空单元。若要强制包含空单元，应用程序必须使用 CoalesceEmpty 函数。有关空单元的更多信息，请参见 OLE DB 文档。

示例

如果 Sales 分别为 1000、2000 和 3000，则下面的函数返回 2000：

Avg({USA, Canada, Mexico}, Sales)


Axis

返回在坐标轴中指定的集合。

语法

Axis(«Numeric Expression»)

注释

Axis 函数使用轴上基于零的位置（在 «Numeric Expression» 中指定）以返回在轴中定义的集合。例如，Axis(0) 返回 COLUMNS 轴，Axis(1) 返回 ROWS 轴，依次类推。此函数无法用于筛选轴。

示例

表中的示例使用以下多维表达式 (MDX) 查询。

SELECT {Time.Members} ON COLUMNS, {Location.Members} ON ROWS
FROM TestCube
表达式 返回
Axis(0)
 {Time.Members} 所表示的成员集合，位于 COLUMNS 轴。
Axis(1)
 {Location.Members} 所表示的成员集合，位于 ROWS 轴。


 Analysis Services

B


BottomCount

从集合底端开始返回指定数目的项，可以选择首先对集合排序。

语法

BottomCount(«Set», «Count»[, «Numeric Expression»])

注释

此函数根据 «Numeric Expression» 的值对集合进行排序，然后返回底端 «Count» 成员，其中的 «Count» 是一个数值表达式。

重要 与 TopCount 函数相似，BottomCount 函数总是打破层次结构。

示例
BottomCount(Geography.Cities.Members, 5, Sales)

请参见

TopCount


BottomPercent

对集合排序并返回指定数目的最底部的元素，这些元素的累积合计至少为指定的百分比。

语法

BottomPercent(«Set», «Percentage», «Numeric Expression»)

注释

此函数对在 «Set« 中指定的集合进行排序，并返回其 «Numeric Expression» 的累积合计至少为 «Percentage» 的指定数量的最底端元素。«Percentage» 是一个数值表达式。

重要 与 TopPercent 函数相似，BottomPercent 函数总是打破层次结构。

示例
BottomPercent(Products.[Product Description].Members, 25, Sales)

请参见

TopPercent


BottomSum

使用数值表达式对集合排序，并返回指定数量的最底端元素，这些元素的和至少为指定的值。

语法

BottomSum(«Set», «Value», «Numeric Expression»)

注释

此函数按 «Numeric Expression« 进行排序并挑选最底端的 n（可能的最小数）个元素，这些元素的和至少是 «Value»。

重要 与 TopSum 函数相似，BottomSum 函数总是打破层次结构。

示例
BottomSum(Products.[Product Description].Members, 100000, Quantity)

请参见

TopSum


 Analysis Services

C


CalculationCurrentPass

针对指定的查询上下文返回多维数据集的当前计算传递。

语法

CalculationCurrentPass()

注释

CalculationCurrentPass 函数返回当前查询上下文标志的计算传递的基于零的索引。

示例

下列示例返回当前计算传递号：

CalculationCurrentPass()

请参见

CalculationPassValue


CalculationPassValue

返回在多维数据集的指定计算传递上对多维表达式 (MDX) 表达式求得的值。

语法
数值

CalculationPassValue(«Numeric Expression», «Pass Value»[, «Access Flag»])

CalculationPassValue 函数计算 «Numeric Expression»（该参数在 «Pass Value» 中指定的计算传递内）所指定的 MDX 数值表达式，并可选择通过 «Access Flags» 中指定的访问标志进行修改，然后返回数值。

字符串

CalculationPassValue(«String Expression», «Pass Value»[, «Access Flag»])

CalculationPassValue 函数计算 «Numeric Expression»（该参数在 «Pass Value» 中指定的计算传递内）所指定的 MDX 字符串表达式，并可选择通过 «Access Flags» 中指定的访问标志进行修改，然后返回字符串值。

注释

«Pass Value» 参数的行为可以更改对 «Access Flag» 参数的依赖。下表详细描述在 «Access Flag» 参数中允许的访问标志。

访问标志 | 描述
ABSOLUTE | «Pass Value» 包含计算传递的基于零的索引。
RELATIVE | «Pass Value» 包含当前计算传递的相对偏移量。如果偏移量解析为一个小于 0 的计算传递索引，则使用计算传递 0，无错误发生。

示例
数值

下例从计算传递 0 返回 [Sales] 的值：

CalculationPassValue([Sales], 0)
字符串

下例从前一计算传递 0 返回 [Sales] 成员的全名：

CalculationPassValue(MemberToStr([Sales]), -1, RELATIVE)

请参见

CalculationCurrentPass


Call

执行返回空的用户定义函数。

语法

Call «UDF Name»

注释

Call 函数执行由 «UDF» 指定的注册用户定义函数。此函数仅适用于返回空的用户定义函数。

说明 如果用户定义函数没有在客户端注册，Call 函数将尝试从分析服务器调用用户定义函数。

示例
Call MyOwnVoidFunction()


Children

返回成员的子代。

语法

«Member».Children

示例

下列代码返回 { Nebraska, Oklahoma, Montana }：

[Geography].[All Geography].[Central Region].Children


ClosingPeriod

返回成员在指定级别上的后代中的最后一个兄弟。

语法

ClosingPeriod([«Level»[, «Member»]])

注释

如果指定 «Level»，则使用包含 «Level» 的维度，否则使用 Time 维度。如果没有指定 «Level»，则使用 «Member» 所在级别的下一级别。如果未指定 «Level» 或 «Member»，则默认设置为 Time.CurrentMember。

此函数等同于 BottomCount(Descendants(«Member», «Level»), 1)。

OpeningPeriod 函数与此函数类似，但返回第一个兄弟而不是最后一个兄弟。

示例

下例返回 [1991].December：

ClosingPeriod(Month, [1991])

请参见

OpeningPeriod


CoalesceEmpty

将空单元值合并为数字或字符串并返回合并后的值。

语法
数值

CoalesceEmpty(«Numeric Expression»[, «Numeric Expression»]...)

字符串

CoalesceEmpty(«String Expression»[, «String Expression»]...)

注释

此函数返回值表达式列表中的第一个（左侧）非空的值表达式。如果所有的值表达式都取值为空单元值，则返回空单元值。

所有值表达式都必须取值为数值数据类型或空单元值。或者，所有值表达式都必须取值为字符串数据类型或空单元值。

有关空单元的更多信息，请参见 OLE DB 文档。

示例
数值

如果 Measures.CurrentMember 是空单元值，则下例返回 -99，否则返回 Measures.CurrentMember：

CoalesceEmpty(Measures.CurrentMember, -99)
字符串

下例在 Time.Parent.Name 是空单元值时，返回字符串 "EMPTY"，否则返回 Time.Parent.Name：

CoalesceEmpty(Time.Parent.Name, "EMPTY")


Correlation

返回在某一集合上对两个系列求得的相关性。

语法

Correlation(«Set», «Numeric Expression»[, «Numeric Expression»])

注释

此函数根据第一个 «Numeric Expression» 对 «Set» 求值，以得到 y 轴的值。如果提供了第二个 «Numeric Expression»，则根据第二个 «Numeric Expression» 对 «Set» 求值，以获得 x 轴的值的集合。如果未提供第二个 «Numeric Expression»，那么 «Set» 的成员将被用作 x 轴的值。

说明 空单元或包含文本或逻辑值的单元将被忽略，但会包括值为零的单元。


Count

返回集合中项目的数量（具体数目取决于集合）。

语法
维度

Dimensions.Count

返回多维数据集中的维度数，其中包括 [Measures] 维度。

级别

«Dimension»|«Hierarchy».Levels.Count

返回维度或层次结构中的级别数，包括 [All] 级别（如果适用）。

集合 - 语法 1

Count(«Set»[, ExcludeEmpty | IncludeEmpty])

返回集合中的单元数。该语法允许分别使用 ExcludeEmpty 或 IncludeEmpty 标志来排除或包含空单元。

集合 - 语法 2

«Set».Count

返回集合中的单元数，其中包括空单元。

元组

«Tuple».Count

返回元组中的维度数。

说明 默认状态下计算空的单元数。默认情况下，OLE DB 中可比较的 Count 函数不包含空单元。

注释

若要从集合计数中排除空单元，请使用可选的 ExcludeEmpty 关键字。

示例

如果 Time 包含级别 Year 和 Month，Year 的成员是 1994 和 1995，那么下面的示例返回 24：

集合 - 示例 1
Count({Time.Month.Members})
集合 - 示例 2
Time.Month.Members.Count


Cousin

返回父成员下方与指定子成员具有相同的相对位置的子成员。

语法

Cousin(«Member1», «Member2»)

注释

此函数在级别内的成员顺序和位置上操作。如果有两个维度，第一个有四个级别，第二个有五个级别，则第一个维度第三级别的同代是第二个维度的第三级别。

示例

在下面的示例中，假定年份 1996 和 1994 在成员 March 之前都包含相同数目的月份：

Cousin([1996].March, [1994])

本例产生成员 [1994].March。

如果同一示例假定 1996 级别包含 January、February、March、April、May、June、July、August、September、October、November 和 December 成员，而 1994 级别包含 [1st Quarter]、[2nd Quarter]、[3rd Quarter] 和 [4th Quarter] 成员，则该示例返回 [1994].[3rd Quarter]，因为它处于该级别内的同一相对位置（第三）。


Covariance

返回使用偏置填充公式在某一集合上对两个系列求得的总体协方差。

语法

Covariance(«Set», «Numeric Expression»[, «Numeric Expression»])

注释

此函数根据第一个 «Numeric Expression» 对 «Set» 求值，以得到 y 轴的值。如果提供了第二个 «Numeric Expression»，则根据第二个 «Numeric Expression» 对 «Set» 求值，以获得 x 轴的值的集合。如果未提供第二个 «Numeric Expression»，那么 «Set» 的成员将被用作 x 轴的值。

Covariance 使用偏置填充公式。CovarianceN 使用非偏置填充公式。

说明 空单元或包含文本或逻辑值的单元将被忽略，但会包括值为零的单元。


CovarianceN

返回使用非偏置填充公式在某一集合上对两个系列求得的样本协方差。

语法

CovarianceN(«Set», «Numeric Expression»[, «Numeric Expression»])

注释

此函数根据第一个 «Numeric Expression» 对 «Set» 求值，以得到 y 轴的值。如果提供了第二个 «Numeric Expression»，则根据第二个 «Numeric Expression» 对 «Set» 求值，以获得 x 轴的值的集合。如果未提供第二个 «Numeric Expression»，那么 «Set» 的成员将被用作 x 轴的值。

CovarianceN 函数使用非偏置填充公式，而 Covariance 函数使用偏置填充公式。

说明 空单元或包含文本或逻辑值的单元将被忽略，但会包括值为零的单元。


Crossjoin

返回两个集合的矢量积。

语法

Crossjoin(«Set1», «Set2»)

替代语法

«Set1» * «Set2»

说明 此替代语法是 Microsoft® SQL Server™ 2000 Analysis Services 对 OLE DB 2.0（或更新版本）中的多维表达式 (MDX) 的扩展。

注释

所得集合中元组的顺序取决于 «Set1» 和 «Set2» 的顺序，以及其成员的顺序。

如果 «Set1» = {x1, x2,...,xn} 并且 «Set2» = {y1, y2, ..., yn}，则 Crossjoin(Set1, Set2) 为：

{(x1, y1), (x1, y2),...,(x1, yn), (x2, y1), (x2, y2),...,

(x2, yn),..., (xn, y1), (xn, y2),..., (xn, yn)}

示例

下例返回 {([1994], USA), ([1994], Japan), ([1995], USA), ([1995], Japan)}：

CrossJoin({[1994], [1995]}, {USA, Japan})


Current

返回迭代过程中集合中的当前元组。

语法

«Set».Current

注释

在集合的迭代过程中，与 Generate 这类函数一样，迭代过程每一步中所操作的元组就是当前元组。此函数返回该元组。


CurrentMember

返回迭代过程中维度上的当前成员。

语法

«Dimension».CurrentMember

注释

在维度成员集合的迭代过程中，迭代过程的每一步中正在被操作的成员就是当前成员。此函数返回该成员。

示例
Time.[1996].CurrentMember


 Analysis Services

D


DataMember

返回系统生成的、与某个维度的非叶成员相关的数据成员。

语法

«Member».DataMember

注释

如果 «Member» 是叶成员，或者如果非叶成员没有相关联的数据成员，则返回 «Member»。

示例

下例返回非叶成员 [Location].[UK] 的数据成员：

[Location].[UK].DataMember


DefaultMember

返回维度或层次结构的默认成员。

语法
维度

«Dimension».DefaultMember

层次结构

«Hierarchy».DefaultMember

注释

默认成员在维度或层次结构的 Default Member 属性（决策支持对象库中的 DefaultMember）中指定。如果该属性是空的且维度包含"（全部）"级别，则默认成员是"全部"成员。如果该属性是空的而维度或层次结构不包含"（全部）"级别，则默认成员是最高级别的任何成员。后一种情况下，DefaultMember 函数不明确。

示例
维度

如果 Time 维度包含级别"（全部）"、Year、Quarter、Month 和成员 All-Time，则下面的表达式返回 All-Time：

Time.DefaultMember
层次结构

如果 [Fiscal Year] 层次结构包含级别 Quarter、Month 和成员 [Month 1]，则下列表达式返回 [Month 1]：

[Fiscal Year].DefaultMember


Descendants

返回某一成员在指定级别或距离上的后代集合，可以选择包含或不包含其它级别上的后代。

语法
级别

Descendants(«Member», [«Level»[, «Desc_flags»]])

返回成员的后代集合，该成员由 «Member» 指定，位于 «Level» 所指定的级别，并且可以选择由 «Desc_flags» 中指定的标志进行修改。

如果没有指定 «Level» 或 «Desc-flags» 参数，则函数的语法如下：

Descendants(«Member», «Member».Level, SELF_BEFORE_AND_AFTER)

距离

Descendants(«Member», «Distance»[, «Desc_flags»])

返回成员的后代，而该成员由 «Member»（在层次结构中有 «Distance» 个步骤）指定，并且可以选择由 «Desc_flags» 中指定的标志进行修改。此语法通常用于处理不齐整层次结构。指定 «Distance» 为 0 将返回一个只包含 «Member» 中指定的成员的集合。

标志
标志 | 描述
SELF | 默认值。只从 «Level» 中返回后代成员。当且仅当指定的 «Level» 是 «Member» 的级别时，才包括 «Member»。
AFTER | 从所有从属于 «Level» 的级别中返回后代成员。
BEFORE | 返回 «Member» 和 «Level» 之间所有级别的后代成员，不包括来自 «Level» 的成员。
BEFORE_AND_AFTER | 从所有从属于 «Member» 的级别的所有级别中返回后代成员，不包括来自 «Level» 中的成员。
SELF_AND_AFTER | 返回 «Level» 中和 «Level» 的所有从属级别中的后代成员。
SELF_AND_BEFORE | 返回 «Level» 中和 «Member» 与 «Level» 之间所有级别中的后代成员。
SELF_BEFORE_AFTER | 返回所有从属于 «Member» 级别的所有级别的后代成员。
LEAVES | 返回在 «Member» 及 «Level» 或 «Distance» 之间的叶后代成员。

注释

默认情况下，只包含指定级别或距离上的成员。此函数与 SELF 的 «desc_flag» 值相对应。通过更改 «desc_flags» 的值，可以包含或不包含位于指定级别或距离的后代、指定级别或距离之前或之后（直到叶节点为止）的子代、以及与指定的级别或距离无关的所有叶子代。

示例

假定 Location 维度中级别的命名为（按照层次结构顺序）Countries（国家）、States（州）、Counties（县）和 Cities（城市）。

表达式 返回
Descendants(USA)
 美国 (USA) 的所有州 (State)、县 (County) 和城市 (City)
Descendants(USA, Counties)
 美国 (USA) 的所有县 (County)
Descendants(USA, Counties, SELF)
 美国 (USA) 的所有县 (County)
Descendants(USA, Counties, BEFORE)
 美国 (USA) 的所有州 (State)
Descendants(USA, Counties, AFTER)
 美国 (USA) 的所有城市 (City)
Descendants(USA, Counties, BEFORE_AND_AFTER)
 美国 (USA) 的所有州 (State) 和城市 (City)
Descendants(USA, Counties, SELF_BEFORE_AFTER)
 美国 (USA) 的所有州 (State)、县 (County) 和城市 (City)
Descendants(USA, States, LEAVES)
 美国 (USA) 的所有州 (State) 以及国家 (Country) 级别和州 (State) 级别间的任何叶成员。
Descendants(USA, 1)
 美国 (USA) 的所有州 (State)
Descendants(USA, 2, SELF_BEFORE_AFTER)
 美国 (USA) 的所有州 (State)、县 (County) 和城市 (City)

请参见

Level


Dimension

返回包含指定的成员、级别或层次结构的维度。

语法
成员

«Member».Dimension

返回包含 «Member» 的维度。

级别

«Level».Dimension

返回包含 «Level» 的维度。

层次结构

«Hierarchy».Dimension

返回包含 «Hierarchy» 的维度。

注释

Microsoft® SQL Server™ 2000 Analysis Services 按照独立的维度来实现层次结构，所以 «Hierarchy».Dimension 返回 «Hierarchy»。

示例
成员
[1998].Dimension

该示例返回 Time。

级别
Year.Dimension

该示例返回 Time。

层次结构
FiscalYear.Dimension

该示例返回 Time。


Dimensions

返回由数值表达式或字符串表达式指定的维度。

语法
数字

Dimensions(«Numeric Expression»)

返回这样的维度，该维度在多维数据集中以零为基的位置是由 «Numeric Expression» 指定的。

说明 Measures 维度总由 Dimensions(0) 表示。

字符串

Dimensions(«String Expression»)

返回这样的维度，该维度的名称是由 «String Expression» 指定的。

注释

Dimensions 函数的字符串版本通常用于用户定义的函数。

示例

如果将 Time、Region 和 Product 维度添加到多维数据集（按照所列顺序），则下面的表达式将返回 Region：

Dimensions(2)


Distinct

返回一个集合，并从指定集合中删除重复的元组。

语法

Distinct(«Set»)

注释

从尾部删除重复的元组。

示例

下例返回 {(a,b), (c,d )}：

Distinct({(a,b), (c,d), (a,b)})


DistinctCount

返回集合中非重复、非空元组的数目。

语法

DistinctCount(«Set»)

注释

DistinctCount 函数等同于 Count(Distinct(«Set»), ExcludeEmpty)。该函数只能用于计算度量值，并且只能包含最顶端的级别。例如，下列 MDX 查询将失败，因为 DistinctCount 函数正用于非度量值成员：

WITH MEMBER Gender.a as 'DistinctCount({[Product Name].Members})'
SELECT
   { Gender.a } ON COLUMNS,
   { Customers.Children } ON ROWS
FROM Sales
WHERE (Measures.[unit sales])

通过使用计算度量值成员替换上一示例中的非度量值成员，下列 MDX 查询示例将有效：

WITH MEMBER Measures.a as 'DistinctCount({[Product Name].Members})'
SELECT
   { Measures.a } ON COLUMNS,
   { Customers.Children } ON ROWS
FROM Sales
WHERE (Measures.[unit sales])
示例

假设全部三个元组都解析为非空单元，则下例返回 2：

DistinctCount({Time.[1995], Time.[1997], Time.[1995]})


DrilldownLevel

将集合的成员深化到集合中所表示的最低级别的下一级，或者深化到集合中所代表的一个任意指定的成员级别的下一级。

语法

DrilldownLevel(«Set»[, {«Level» | , «Index»}])

返回集合的按层次结构排列的成员，该集合在 Set 中指定，比集合中所表示的最低级别低一级，或者比通过Level 中的引用或通过 Index 中基于零的索引指定的任意级别低一级，是集合中所表示的一个成员。

注释

深化后得到的成员在其父代下按层次结构排列。在 «Set» 中原始成员之间的顺序被保留。

如果指定了 «Level» 而 «Set» 中没有表示 «Level» 的成员，则返回 «Set»。

在元组集合中深化时，可以用元组中以零为基的数值位置而不是级别来指定要深化的维度。例如，在下面的集合中，示例元组为 (Canada, Drink, [1998])：

(Crossjoin(Crossjoin([Store Country].members,[Product Family].members),
[Year].members)

Store 维度的位置是 0，Product 维度的位置是 1，Time 维度的位置是 2。下列表达式在 Product 维度上深化：

DrilldownLevel(Crossjoin(Crossjoin([Store Country].members,
[Product Family].members),[Year].members),,1)
示例

以例返回集合 {USA, CA, <all cities in CA>, WA, <all cities in WA>, Canada}：

DrilldownLevel({[Customers Location].USA, [Customers Location].CA,
[Customers Location].WA, [Customers Location].Canada})

本例返回与上例相同的集合：

DrilldownLevel({[Customers Location].USA, [Customers Location].CA,
[Customers Location].WA, [Customers Location].Canada},
[Customers Location].[State Province])

假设 [Customers Location] 维度的 [Country] 级别具有为 1 的索引，则下例返回集合 {USA, CA, WA, Canada, BC}：

DrilldownLevel({[Customers Location].USA, [Customers Location].CA,
[Customers Location].WA, [Customers Location].Canada}, ,1)


DrilldownLevelBottom

将集合的最底端的成员从指定级别深化一个级别。

语法

DrilldownLevelBottom(«Set», «Count»[, [«Level»][, «Numeric Expression»]])

注释

此函数类似于 DrilldownLevel 函数，但它不包含指定的 «Level» 上每个成员的所有子代，而是根据 «Numeric Expression» 只返回底端的 «Count» 个子代。

示例

假设 Oregon 和 Washington 的销售额最低，则以下示例返回集合 {USA, Oregon, Washington}：

DrilldownLevelBottom({[Customers Location].USA},2,,[Unit Sales])

表达式

DrilldownLevelBottom({[Customers Location].[Country].Members},2,,[Unit Sales])

返回集合

{Canada, <bottom two provinces in Canada>,
Mexico, <bottom two states in Mexico>, ...,
USA, <bottom two states in USA>}.

请参见

DrilldownLevel


DrilldownLevelTop

将集合中最顶端的成员从指定级别深化一个级别。

语法

DrilldownLevelTop(«Set», «Count»[, [«Level»][, «Numeric Expression»]])

注释

此函数类似于 DrilldownLevel 函数，但它不包含指定的 «Level» 上每个成员的所有子代，而是根据 «Numeric Expression» 只返回顶端的 «Count» 个子代。

示例

假设 California 和 New York 的销售额最高，则以下示例返回集合 {USA, California, New York}：

DrilldownLevelTop({[Customers Location].USA},2,,[Unit Sales])

表达式

DrilldownLevelTop({[Customers Location].[Country].Members},2,,[Unit Sales])

返回集合

{Canada, <top two provinces in Canada>,
Mexico, < top two states in Mexico>, ...,
USA, < top two states in USA>}.

请参见

DrilldownLevel


DrilldownMember

在指定的第一个集合与第二个集合的成员交集中深化。

或者，在元组集合上深化。

语法

DrilldownMember(«Set1», «Set2»[, RECURSIVE])

注释

此函数对 «Set1» 与 «Set2» 交集中的成员进行深化。«Set1» 通常是 «Set2» 的子集。如果指定了 RECURSIVE，则将继续深化，每一步都将用 «Set2» 对扩展后的结果集进行比较。

«Set1» 可能包含的是元组而不是成员。对元组的深化是 OLE DB 的扩展，这种深化将返回元组集合而非成员集合。

示例

这些示例深化到成员。

示例

DrilldownMember({USA, Canada, Mexico}, {USA, Washington, Mexico})

返回集合：

{USA, <all states in USA>, Canada, Mexico, <all states in Mexico>}

示例

DrilldownMember({USA, Canada, Mexico}, {USA, Washington, Mexico},RECURSIVE)

返回集合：

{USA, <all states in USA before Washington>,
WA, <all cities in Washington>, <all cities in USA after Washington>,
Canada, Mexico, <all states in Mexico>}.

下列示例深化到元组。

示例

DrilldownMember({(USA,[Unit Sales]), (Canada,[Unit Sales]),
(Mexico,[Unit Sales])},{USA, Washington})

返回元组集合：

{(USA,[Unit Sales]), (Arizona,[Unit Sales]), ... , (Wyoming,[Unit Sales]),
(Canada,[Unit Sales]), (Mexico,[Unit Sales])}.

示例

DrilldownMember({(USA,[Unit Sales]), (Canada,[Unit Sales]),
(Mexico,[Unit Sales])},{USA, Washington},RECURSIVE)

返回元组集合：

{(USA,[Unit Sales]), (Arizona,[Unit Sales]), ... (Washington,[Unit Sales]), (<City1 in Washington>,[Unit Sales]), ... (<CityN in Washington>,[Unit Sales]), ...
(Wyoming,[Unit Sales]), (Canada,[Unit Sales]), (Mexico,[Unit Sales])}.


DrilldownMemberBottom

在第一个集合与第二个集合的交集中深化，将所得集合的成员数限制在一个指定的值上。或者，也可以在元组集合上深化。

语法

DrilldownMemberBottom(«Set1», «Set2», «Count»[, [«Numeric Expression»][, RECURSIVE]])

注释

«Set1» 可以包含元组而不能包含成员。对元组的深化是 OLE DB 的扩展，这种深化将返回元组集合而非成员集合。

此函数类似于 DrilldownMember 函数，但它不包含成员的所有子代，而是根据 «Numeric Expression» 只返回底端的 «Count» 个子代。

示例

示例

DrilldownMemberBottom({USA, Canada, Mexico}, {USA, Washington, Mexico}, 2, [Unit Sales])

返回集合

{USA, <bottom two states in USA>, Canada, Mexico, <bottom two states in Mexico>}

示例

DrilldownMemberBottom({USA, Washington, Canada, Mexico}, {USA, Washington, Mexico}, 2, [Unit Sales],
RECURSIVE)

返回集合

{USA, Washington, <bottom two cities in WA>, Canada, Mexico, <bottom two states in Mexico>}.
元组深化

示例

DrilldownMemberBottom({(USA, [Unit Sales]), (Washington, [Unit Sales]),
(Canada, [Unit Sales]), (Mexico, [Unit Sales])},
{USA, Washington},2,[Store Sales],RECURSIVE)

返回集合

{(USA, [Unit Sales]), (Washington, [Unit Sales]), (<bottom two cities in WA>,
[Unit Sales]), (Canada, [Unit Sales]), (Mexico, [Unit Sales]}.

请参见

DrilldownMember


DrilldownMemberTop

在第一个集合与第二个集合的交集中深化，将所得集合的成员数限制在一个指定的值上。

或者，在元组集合上深化。

语法

DrilldownMemberBottom(«Set1», «Set2», «Count»[, [«Numeric Expression»][, RECURSIVE]])

注释

«Set1» 可以包含元组而不能包含成员。对元组的深化是 OLE DB 的扩展，这种深化将返回元组集合而非成员集合。

此函数类似于 DrilldownMember 函数，但它不包含成员的所有子代，而是根据 «Numeric Expression» 只返回顶端的 «Count» 个子代。

示例
成员深化

下列示例说明对成员的深化：

表达式 返回
DrilldownMemberTop({USA, Canada, Mexico}, {USA, Washington, Mexico}, 2, [Unit Sales])

{USA, <top two states in USA>, Canada, Mexico, <top two states in Mexico>}

DrilldownMemberTop({USA, Washington, Canada, Mexico}, {USA, Washington, Mexico}, 2, [Unit Sales], RECURSIVE)

{USA, Washington, <top two cities in Washington>, Canada, Mexico, <top two states in Mexico>}.

元组深化

示例

DrilldownMemberTop({(USA, [Unit Sales]), (Washington, [Unit Sales]),
(Canada, [Unit Sales]), (Mexico, [Unit Sales])},
{USA, Washington},2,[Store Sales],RECURSIVE)

返回集合

{(USA, [Unit Sales]), (Washington, [Unit Sales]), (<top two cities in Washington>,
[Unit Sales]), (Canada, [Unit Sales]), (Mexico, [Unit Sales]}.

请参见

DrilldownMember


DrillupLevel

从集合的某一指定级别之下的成员浅化。

语法

DrillupLevel(«Set»[, «Level»])

注释

如果未指定 «Level»，则假定级别是 «Set» 中最低级别成员所在级别的上一个级别。

示例

示例

DrillUpLevel({USA, California, [Los Angeles], Washington, Seattle, Canada, [British Columbia]})

返回集合

{USA, California, Washington, Canada, [British Columbia]}

示例

DrillUpLevel({USA, California, [Los Angeles], Washington, Seattle, Canada, [British Columbia]},[Store Country])

返回集合

{USA, Canada }.


DrillupMember

在指定的第一个集合与第二个集合的成员交集中浅化。

语法

DrillupMember(«Set1», «Set2»)

注释

此函数对 «Set1» 与 «Set2» 交集中的成员进行浅化。«Set2» 通常是 «Set1» 的子集。

示例

示例

DrillupMember({Canada, Mexico, USA, Washington, Seattle},{Washington})

返回集合

{Canada, Mexico, USA, Washington}.


 Analysis Services

E


Except

查找两个集合之间不同的项，可以选择保留重复项。

语法

Except(«Set1», «Set2»[, ALL])

注释

在查找不同的项之前先消除两个集合中的重复项。可选的 ALL 标志保留重复项。清除 «Set1» 中的匹配重复项并保留非匹配重复项。

示例

示例

Except({Canada, [British Columbia], Mexico, [British Columbia], USA, Washington}, {Canada, Mexico, California})

返回

{[British Columbia], USA, Washington}

示例

Except({Canada, [British Columbia], Mexico, [British Columbia], USA, Washington}, {Canada, Mexico, California}, ALL)

返回

{[British Columbia], [British Columbia], USA, Washington}.


Extract

从析取的维度元素中返回元组集合。

语法

Extract(«Set», «Dimension»[, «Dimension»...])

注释

此函数从析取的 «Dimension» 元素中返回由元组组成的集合。它始终删除重复项。Extract 函数执行的操作与 Crossjoin 函数相反。

示例

示例

Extract({([1997], Washington), ([1997], California), ([1998], California)}, Time)

返回集合

{[1997], [1998]}

请参见

Crossjoin


 Analysis Services

F


Filter

返回根据搜索条件对指定集合进行筛选所得到的集合。

语法

Filter(«Set», «Search Condition»)

注释

Filter 函数对 Set 中指定的集合的每个成员，评估多维表达式 (MDX) 逻辑表达式（该表达式在 Search Condition 中指定），并返回满足搜索条件的成员集合。

Filter 函数的工作方式与 IIf 函数的类似。IIf 函数仅返回两个选项中的一个，返回其中哪个取决于 MDX 逻辑表达式的取值，而 Filter 函数返回满足指定搜索条件的一组成员。实际上，Filter 函数对该集合中的每个成员执行 IIf(«Search Criteria», «Member», NULL)，并返回所得结果。如果所有成员都不满足搜索条件，则返回空集。

示例

如果这些城市从 1995 到 1996 级别的销售额下降，则以下示例返回 {Paris, Buffalo}：

Filter(SampleSet, (Sales,[1996]) < (Sales, [1995]))

请参见

IIf


FirstChild

返回成员的第一个子代。

语法

«Member».FirstChild

示例

如果 Time 维度包含级别 Year、Quarter、Month、Week 和 Day，则下面的代码返回 January：

[1995].FirstChild


FirstSibling

返回成员的父代的第一个子代。

语法

«Member».FirstSibling

示例

假定维度由月份组成，则下面的示例返回 January：

May.FirstSibling


 Analysis Services

G


Generate

将集合应用到另一集合的每个成员，然后用 union 运算合并所得的集合。或者，返回一个在某个集合上计算字符串表达式所得的值创建的串联字符串。

语法
集合

Generate(«Set1», «Set2»[, ALL])

字符串

Generate(«Set», «String Expression»[, «Delimiter»])

注释

此函数的集合版本将 «Set2» 应用于 «Set1» 的每个成员，然后用 union 运算合并所得的集合。如果指定了 ALL，结果中将保留重复项。

此函数的字符串版本迭代于 «Set» 中指定的集合的每个成员，对成员计算字符串表达式（在 «String Expression» 中指定）的值，然后将结果串联成返回字符串。或者，可以用 «Delimiter» 提供字符串表达式（即用分隔符来分隔串联返回字符串中的每个结果），从而对字符串进行分隔。

示例
集合
Generate({USA, France}, Descendants(Geography.CurrentMember, Cities))

此函数对集合 {USA, France} 中的每个成员应用表达式 Descendants(Geography.CurrentMember, Cities)。每应用于一个成员便产生一个集合。（应用于 USA 将生成美国 (USA) 所有城市的集合；应用于 France 将生成法国 (France) 所有城市的集合。）这些集合通过 union 运算合并以返回此函数的结果。本例中，美国和法国的所有城市就是结果。通常，Generate(«Set1», «set_expression») 将把 «set_expression» 应用于 «Set1» 的每个成员，然后用 union 运算合并所得的结果。

如果通过 CurrentMember，«Set1» 与 «set_expression» 无关，那么 Generate 生成 «set_expression» 所指的集合的简单复制，它包含的复制与 «Set1» 中的元组一样多。如果指定了可选的 ALL 标志，结果中将保留所有重复项。如果未指定 ALL，重复项将被删除。例如：

Generate({USA, FRANCE}, {SEATTLE, BOSTON}, ALL)

返回集合

{SEATTLE, BOSTON, SEATTLE, BOSTON}.

但如果未指定 ALL，那么返回的集合是

{SEATTLE, BOSTON}.
字符串

以下示例返回字符串 "19971998"：

Generate( {Time.[1997], Time.[1998]}, Time.CurrentMember.Name)

以下示例返回字符串 "1997 and 1998"：

Generate( {Time.[1997], Time.[1998]}, Time.CurrentMember.Name, " and ")


 Analysis Services

H


Head

返回集合中指定数目的前若干个元素。

语法

Head(«Set»[, «Numeric Expression»])

注释

此函数返回集合中前 «Numeric Expression» 个元素。保留元素的顺序。«Numeric Expression» 的默认值是 1。如果 «Numeric Expression» 小于 1，则返回空集合。如果 «Numeric Expression» 超出了集合中元组的个数，则返回原始的集合。

示例

以下示例返回集合 {USA, Canada, France}：

Head({USA, Canada, France, Germany, Japan}, 3)


Hierarchize

在层次结构中对集合的成员排序。

语法

Hierarchize(«Set»[, POST])

注释

此函数在层次结构中对 «Set» 的成员排序。除非使用 POST 关键字，否则当未指定其它排序条件时，级别中的成员按其自然顺序排序，这是维度上的成员的默认排序顺序。POST 关键字使用后自然顺序对一个级别中的成员进行排序。Hierarchize 始终保留重复项。

示例

示例

Hierarchize(SampleSet)

按自然顺序返回集合。按层次结构排列的数据集如下所示（假定数据源的自然顺序是按字母排列）：

France |  |
 |  | Nice
 |  | Paris
UK |  |
 |  | London
USA |  |
 | California |
 |  | LA
 |  | Buffalo
 |  | NYC


Hierarchy

返回包含指定的成员或级别的层次结构。

语法
成员

«Member».Hierarchy

返回包含 «Member» 的层次结构。

级别

«Level».Hierarchy

返回包含 «Level» 的层次结构。

示例
成员
[January].Hierarchy

该示例返回 Time.FiscalYear。

级别
[Quarter].Hierarchy

该示例返回 Time.FiscalYear。


 Analysis Services

I


 Analysis Services

Ignore

保留。


IIf

返回由逻辑测试确定的两个数值或字符串值之一。

语法
数字

IIf(«Logical Expression», «Numeric Expression1», «Numeric Expression2»)

如果 «Logical Expression» 取值为 TRUE，则此函数返回 «Numeric Expression1»，否则，返回 «Numeric Expression2»。

字符串

IIf(«Logical Expression», «String Expression1», «String Expression2»)

如果 «Logical Expression» 取值为 TRUE，则此函数返回 «String Expression1»，否则，返回 «String Expression2»。

注释

只有当 «Logical Expression» 的值为零时，才认为该表达式是 FALSE。任何其它值都被解释为 TRUE。

不推荐用 Iif 函数基于搜索条件创建成员的集合。请改用 Filter 函数根据逻辑表达式评估指定集合中的每个成员，然后返回成员的子集合。

示例
数字

如果 Measures.CurrentMember 是空单元，则下面的示例返回 0，否则返回 1：

IIf(IsEmpty(Measures.CurrentMember), 0, 1)
字符串

如果 Measures.CurrentMember 是空单元，则下面的字符串返回字符串 "Yes"，否则返回字符串 "No"：

IIf(IsEmpty(Measures.CurrentMember), "Yes", "No")

请参见

Filter


Intersect

返回两个输入集合的交集，可以选择保留重复项。

语法

Intersect(«Set1», «Set2»[, ALL])

注释

此函数返回 «Set1» 和 «Set2» 的交集。根据默认设置，在相交之前先删除两个集合中的重复项。

可选的 ALL 保留重复项。ALL 有几种工作方式。算法是：不重复的元素照常相交。对于 «Set1» 中的每个重复项，将其与 «Set2» 中的重复项相匹配，如果存在匹配的项，则在交集中保留匹配的重复项。

示例

示例

Intersect({[1994], [1995], [1996]}, {[1995], [1996], [1997]})

返回集合 {[1995], [1996]}。


Is

如果两个相比较的对象完全等同，则返回 TRUE，否则返回 FALSE。

语法

«Object 1» IS «Object 2»

如果在 «Object 1» 和 «Object 2» 中指定的两个元组或成员完全等同，则返回 TRUE，否则返回 FALSE。

替代语法

«Object 1» IS NULL

如果在 «Object 1» 中指定的级别、元组或成员为 NULL，则返回 TRUE，否则返回 FALSE。

注释

Is 函数通常用于元组或成员以确定对象是否幂等。

示例

以下示例返回 FALSE：

Time.[1996] IS NULL


IsAncestor

若指定成员是另一个指定成员的祖先，返回 TURE；否则，返回 FALSE。

语法

IsAncestor(«Member1»,«Member2»)

注释

如果 «Member 1» 中指出的成员是 «Member 2» 中指定成员的祖先，则该函数返回 TRUE。

示例

如果 [Time].CurrentMember 是 [Time].[January] 的祖先，则下列示例返回 TRUE：

IsAncestor([Time].CurrentMember, [Time].[January])

请参见

Ancestor


IsEmpty

如果表达式的值为空单元值，则返回 TRUE，否则返回 FALSE。

语法

IsEmpty(«Value Expression»)

注释

IsEmpty 函数是可靠地对空单元进行测试的唯一方法，因为空单元值对 Microsoft SQL Server 2000 Analysis Services 有特殊的意义。有关空单元的更多信息，请参见 OLE DB 文档。

示例

如果 Measures.CurrentMember 是空单元，则以下示例返回 TRUE：

IsEmpty(Measures.CurrentMember)

请参见

使用空单元


IsGeneration

若指定成员处于指定的代中，返回 TRUE；否则，返回 FALSE。

语法

IsGeneration(«Member»,«Numeric Expression»)

注释

如果 «Member» 中指出的成员在 «Numeric Expression» 中指定的子代内，则该函数返回 TRUE。为编写代索引，叶成员是代索引 0。所有其它成员是其子代 + 1 并集的一部分，因此，指定成员可能属于多个代。

示例

如果 [Time].CurrentMember 是第二代的一部分，则下列示例返回 TRUE：

IsGeneration([Time].CurrentMember, 2)


IsLeaf

若指定成员是叶成员，返回 TRUE；否则，返回 FALSE。

语法

IsLeaf(«Member»)

注释

如果 «Member» 中指出的成员是叶成员，则该函数返回 TRUE。

示例

如果 [Time].CurrentMember 是叶成员，则下列示例返回 TRUE：

IsLeaf([Time].CurrentMember)


IsSibling

若指定成员是另一个指定成员的兄弟，返回 TRUE；否则，返回 FALSE。

语法

IsSibling(«Member1»,«Member2»)

注释

如果 «Member 1» 中指出的成员是 «Member 2» 中指定成员的兄弟，则该函数返回 TRUE。

示例

如果 [Time].[1995] 是 [Time].[1997] 的兄弟，则下列示例返回 TRUE：

IsSibling([Time].[1995], [Time].[1997])


Item

从指定的元组中返回成员。或者，从集合中返回元组。

语法
成员

«Tuple».Item(«Index»)

从 «Tuple» 中指定的元组中返回成员。将返回的成员是通过 «Index» 中元组内的成员基于零的位置来指定。

元组

«Set».Item(«String Expression»[, «String Expression»...]| «Index»)

从 «Set» 中指定的集合返回元组。将返回的元组是通过 «String Expression» 中的名称来指定，或通过 «Index» 中集合内的元组基于零的位置来指定。

示例
成员

以下示例返回 [1999]：

([1999],Sales, [2000],Sales).Item(0)

如果 [1996] 是 Time 维度的 Year 级别中的第一个成员，则下面的示例返回 [1996]：

Time.Year.Members.Item(0)
元组

下面的示例返回 ([1996],Sales)：

{([1996],Sales), ([1997],Sales), ([1998],Sales)}.Item(0)


 Analysis Services

L


Lag

返回成员，该成员处在其所在维度中指定的成员之前指定的位数上。

语法

«Member».Lag(«Numeric Expression»)

注释

成员在维度中的位置由维度的自然顺序决定。位置的编号以零为基。

如果 «Numeric Expression» 为零，则返回 «Member»。如果 «Numeric Expression» 为负数，则返回其后的成员。

Lag(1) 等同于 PrevMember。Lag(-1) 等同于 NextMember。

«Member».Lead 函数与此类似，但是方向相反。Lag(n) 等同于 Lead(-n)。

示例

如果 Time 维度中的级别包括 Year 和 Month，则下面的示例返回 [1994].November：

[1995].February.Lag(3)


LastChild

返回指定成员的最后一个子代。

语法

«Member».LastChild

示例

如果 Time 维度包含 Year、Quarter、Month、Week 和 Day，则下面的示例返回 December：

1995.LastChild


LastPeriods

返回指定的成员之前（包含该成员）的成员集合。

语法

LastPeriods(«Index»[, «Member»])

注释

如果未指定 «Member»，则为 Time.CurrentMember。

如果 «Index» 为正，返回的 «Index» 成员集合就将以 «Member» 结束，以 «Member» 之后的第 «Index» - 1 个成员开始。

如果 «Index» 为负，返回的 (- «Index») 成员集合则以 «Member» 开始，以 «Member» 之前的第 (- «Index» - 1) 个成员结束。

如果 «Index» 为零，则返回空集合。

示例

下表列出 LastPeriods 函数的可能用法。

表达式 返回
LastPeriods(2, [1997June])

{[1997May], [1997June]}

LastPeriods(-2, [1997June])

{[1997June], [1997July]}

LastPeriods(1, [1997June])

{[1997June]}

LastPeriods(-1, [1997June])

{[1997June]}

LastPeriods(0, [1997June])

Empty set


LastSibling

返回指定成员的父代的最后一个子代。

语法

«Member».LastSibling

示例

如果父代级别为 quarters，则以下示例返回 June：

May.LastSibling


Lead

返回成员，该成员处在其所在维度中指定的成员后指定的位数上。

语法

«Member».Lead(«Numeric Expression»)

注释

成员在维度中的位置由维度的自然顺序决定。位置的编号以零为基。

如果 «Numeric Expression» 为零，则返回 «Member»。如果 «Numeric Expression» 为负数，则返回前面的成员。

Lead(1) 等同于 NextMember。Lead(-1) 等同于 PrevMember。

«Member».Lag 函数与此类似，但方向相反。Lead(n) 等同于 Lag(-n)。

示例

如果 Time 维度中的级别包括 Year 和 Month，则下面的示例返回 [1995].February：

[1994].November.Lead(3)


Level

返回成员的级别。

语法

«Member».Level

示例

如果 Time 维度有"（全部）"、Year、Quarter、Month、Week 和 Day 级别，则以下示例返回 Month 级别：

January.Level

下面的示例返回 Month 级别的名称：

January.Level.Name


Levels

返回由数值表达式或字符串表达式指定的级别。

语法
数字

«Dimension».Levels(«Numeric Expression»)

返回其基于零的位置是由 «Numeric Expression» 指定的级别。

字符串

Levels(«String Expression»)

返回其名称是由 «String Expression» 指定的级别。

注释

字符串版本的 Levels 函数用于用户定义的函数。

示例

下面的示例假定 Time 维度有"（全部）"、Year、Quarter、Month、Week 和 Day 级别。

数字

以下示例返回 Quarter 级别：

Time.Levels(2)
字符串

以下示例返回 Year 级别：

Levels("Year")


LinkMember

返回在指定层次结构中等价于指定成员的成员。

语法

LinkMember(«Member», «Hierarchy»)

示例

以下示例返回 [Fiscal Year].[1999].[Qtr1].[Jan].[12]：

LinkMember([Calendar].[1999].[Jan].[12], [Fiscal Year])


LinRegIntercept

对集合进行线性回归，并返回回归线公式 y = ax + b 中 b 的值。

语法

LinRegIntercept(«Set», «Numeric Expression»[, «Numeric Expression»])

注释

线性回归（使用最小二乘法）计算一系列点的最佳拟合线等式。假定回归线由以下等式指定，其中 a 称作斜率而 b 称作截距：

y = ax+b

此函数用第一个 «Numeric Expression» 对 «Set» 求值，以获得 y 轴的值的集合。如果提供了第二个 «Numeric Expression»，那么该函数将用第二个 «Numeric Expression» 对 «Set» 求值，以得到 x 轴的值的集合。如果不存在第二个 «Numeric Expression»，该函数就将 «Set» 的成员用作 x 轴的值。

后一种情况对标准维度不常用（例如 SalesPerson）。但是，它常用于 Time 维度。

获得点集后，LinRegIntercept 返回回归线的截距（等式中的 b）。

说明 空单元或包含文本或逻辑值的单元将被忽略，但会包括值为零的单元。

示例

以下示例返回公式 y = ax + b 中 b 的值，该值可用来查找 Sales 中最后九个时期的销售额趋势：

LinRegIntercept(LastPeriods(9), Sales) returns the value for b.


LinRegPoint

对集合进行线性回归，并返回回归线公式 y = ax + b 中 y 的值。

语法

LinRegPoint(«Numeric Expression», «Set», «Numeric Expression»[, «Numeric Expression»])

注释

线性回归（使用最小二乘法）计算一系列点的最佳拟合线等式。假定回归线由以下等式指定，其中 a 称作斜率而 b 称作截距：

y = ax+b

LinRegPoint 对其最后三个参数的使用，与其它 LinReg xxx 函数相似：即用其来计算回归线。此函数求得第一个参数的值，然后将所得数字用作回归等式 (y = ax + b) 中 x 的值来计算 y 的值。

说明 空单元或包含文本或逻辑值的单元将被忽略，但会包括值为零的单元。

示例

本例将找出 Sales 中最后九个时期销售数据的趋势，并对下一时期进行预测：

LinRegPoint(10, LastPeriods(9), Sales) returns the next period.


LinRegR2

对集合进行线性回归，并返回 R2（确定系数）。

语法

LinRegR2(«Set», «Numeric Expression»[, «Numeric Expression»])

注释

线性回归（使用最小二乘法）计算一系列点的最佳拟合线等式。假定回归线由以下等式指定，其中 a 称作斜率而 b 称作截距：

y = ax+b

此函数用第一个 «Numeric Expression» 对 «Set» 求值，以获得 y 轴的值的集合。如果提供了第二个 «Numeric Expression»，那么该函数将用第二个 «Numeric Expression» 对 «Set» 求值，以得到 x 轴的值的集合。如果不存在第二个 «Numeric Expression»，该函数就将 «Set» 的成员用作 x 轴的值。

后一种情况对标准维度不常用（例如 SalesPerson）。但是，它常用于 Time 维度。

获得了点集后，LinRegR2 返回用来描述线性等式与点的拟合程度的统计 R2。

说明 空单元或包含文本或逻辑值的单元将被忽略，但会包括值为零的单元。


LinRegSlope

对集合进行线性回归，并返回回归线公式 y = ax + b 中 a 的值。

语法

LinRegSlope(«Set», «Numeric Expression»[, «Numeric Expression»])

注释

线性回归（使用最小二乘法）计算一系列点的最佳拟合线等式。假定回归线由以下等式指定，其中 a 称作斜率而 b 称作截距：

y = ax+b

此函数用第一个 «Numeric Expression» 对 «Set» 求值，以获得 y 轴的值的集合。如果提供了第二个 «Numeric Expression»，那么该函数将用第二个 «Numeric Expression» 对 «Set» 求值，以得到 x 轴的值的集合。如果不存在第二个 «Numeric Expression»，该函数就将 «Set» 的成员用作 x 轴的值。

后一种情况对标准维度不常用（例如 SalesPerson）。但是，它常用于 Time 维度。

获得了点集后，LinRegSlope 返回回归线的斜率（等式中的 a）。

说明 空单元或包含文本或逻辑值的单元将被忽略，但会包括值为零的单元。

示例

以下示例查找 Sales 中最后九个时期的销售额趋势，并返回公式 y = ax + b 中 a 的值：

LinRegSlope(LastPeriods(9), Sales) returns the value for a.


LinRegVariance

对集合进行线性回归，并返回与回归线公式 y = ax + b 相关的方差。

语法

LinRegVariance(«Set», «Numeric Expression»[, «Numeric Expression»])

注释

线性回归（使用最小二乘法）计算一系列点的最佳拟合线等式。假定回归线由以下等式指定，其中 a 称作斜率而 b 称作截距：

y = ax+b

此函数用第一个 «Numeric Expression» 对 «Set» 求值，以获得 y 轴的值的集合。如果提供了第二个 «Numeric Expression»，那么该函数将用第二个 «Numeric Expression» 对 «Set» 求值，以得到 x 轴的值的集合。如果不存在第二个 «Numeric Expression»，该函数就将 «Set» 的成员用作 x 轴的值。

后一种情况对标准维度不常用（例如 SalesPerson）。但是，它常用于 Time 维度。

获得点集后，LinRegVariance 返回用来描述线性等式与点的拟合程度的统计方差。

说明 空单元或包含文本或逻辑值的单元将被忽略，但会包括值为零的单元。


LookupCube

返回在同一数据库中另外一个指定的多维数据集上对多维表达式 (MDX) 表达式求得的值。

语法
数字

LookupCube(«Cube String», «Numeric Expression»)

LookupCube 函数计算 «Numeric Expression»（该参数在 «Cube String» 中指定的多维数据集上下文内的另一多维数据集中）所指定的数值表达式，并返回数值。

字符串

LookupCube(«Cube String», «String Expression»)

LookupCube 函数计算 «String Expression»（该参数在 «Cube String» 指定的多维数据集上下文内的另一多维数据集中）所指定的字符串表达式，并返回字符串值。

注释

LookupCube 函数仅对同一数据库内的其它多维数据集起作用。除了由 MDX 表达式的源多维数据集上下文建立的多维数据集外，该函数无法用来访问数据库中的多维数据集。例如，如果 MDX SELECT 语句引用 FoodMart 2000 数据库中的 Sales 多维数据集，则 LookupCube 函数限制为 FoodMart 2000 数据库内的其它多维数据集。

示例
数字

以下示例返回 Warehouse 多维数据集中 [Warehouse].[All Warehouses] 成员的值：

LookupCube("Warehouse","[Warehouse].[All Warehouses]")
字符串

下列示例返回 Warehouse 多维数据集中 [Warehouse].[Maddock Stored Foods] 成员的值的全名：

LookupCube("Warehouse", "MemberToStr([Warehouse].[Maddock Stored Foods])")


 Analysis Services

M


Max

返回在某一集合上对数值表达式求得的最大值。

语法

Max(«Set»[, «Numeric Expression»])

注释

Max 函数返回数值表达式的最大值，该表达式在 «Numeric Expression» 中指定，对在 «Set» 中指定的集合进行求值。

示例

如果国家/地区的 Sales 分别是 1000、2000 和 3000，则返回 3000：

Max({USA, CANADA, MEXICO}, Sales)


Median

返回在某一集合上对数值表达式求得的中值。

语法

Median(«Set»[, «Numeric Expression»])

注释

Median 函数返回数值表达式的中值，该表达式在 «Numeric Expression» 中指定，对在 «Set» 中指定的集合进行求值。

示例

如果国家/地区的 Sales 分别是 1000、2000 和 3000，则下例返回 2000：

Median({USA, CANADA, MEXICO}, Sales)


Members

返回维度、级别或层次结构中成员的集合。或者，返回字符串表达式所指定的成员。

语法
维度

«Dimension».Members

此语法返回 «Dimension» 中所有成员的集合。

层次结构

«Hierarchy».Members

此语法返回 «Hierarchy» 中所有成员的集合。

级别

«Level».Members

该语法返回维度中指定级别上所有成员的集合。

字符串

Members(«String Expression»)

此语法返回其名称由具有多维表达式 (MDX) 格式的 «String Expression» 指定的成员。一般用于用户定义的函数。

示例
维度

示例

Geography.Members

返回 Geography 维度中所有成员的集合。

层次结构

示例

Time.Quarterly.Members

返回 Time 维度的 Quarters 层次结构中所有成员的集合。

级别

如果 Year 级别包含 [1994]、[1995] 和 [1996]，则该示例返回集合 {[1994], [1995], [1996]}：

Year.Members
字符串

以下示例返回一个成员，其中的 UDF() 为返回具有 MDX 格式（如 "[Measures].[Unit Sales]"）的字符串的用户定义函数。

Members(UDF())


MemberToStr

从成员返回多维表达式 (MDX) 格式的字符串。

语法

MemberToStr(«Member»)

注释

返回为 MDX 格式的成员定义的字符串。MemberToStr 函数通常用于用户定义的函数。

示例

以下示例返回字符串 Time.[1998]：

MemberToStr(Time.[1998])


Min

返回在某一集合上对数值表达式求得的最小值。

语法

Min(«Set»[, «Numeric Expression»])

注释

Min 函数返回数值表达式的最小值，该表达式在 «Numeric Expression» 中指定，对在 «Set» 中指定的集合进行求值。

示例

如果国家/地区的 Sales 分别是 1000、2000 和 3000，则返回 1000：

Min({USA, CANADA, MEXICO}, Sales)


Mtd

返回 Time 维度 Month 级别上的成员集合，从第一个时期开始到指定的成员为止。

语法

Mtd([«Member»])

注释

Mtd 函数是 PeriodsToDate 函数的快捷函数，它将函数的 «Level» 参数定义为 Month。如果未指定成员，则根据默认设置是 Time.CurrentMember。

Mtd(«Member») 等同于 PeriodsToDate(Month, «Member»)。

示例

下例将返回 1997 年 9 月的头五天。

MTD([05-Sep-1997])


 Analysis Services

N


Name

返回级别、维度、成员或层次结构的名称。

语法
维度

«Dimension».Name

级别

«Level».Name

成员

«Member».Name

层次结构

«Hierarchy».Name

注释

Name 函数返回对象名称，但不是唯一名称。

示例
维度
Products.Name
级别
Products.[Product Description].Name
成员
Products.[Product Description].Widgets.Name
层次结构
Time.[Fiscal Year].Name


NameToSet

基于包含成员名称的字符串表达式，返回一个包含单个成员的集合。

语法

NameToSet(«Member Name»)

注释

如果 «Member Name» 中指定的成员名称存在，则返回包含该成员的集合。否则，NameToSet 函数返回空集合。

示例

下面的函数返回包含 Time 维度的 [Quarter 1] 成员的集合：

NameToSet("[Time].[Quarter 1]")


NextMember

返回指定成员所在级别的下一个成员。

语法

«Member».NextMember

注释

NextMember 函数返回与 «Member» 中所指定的成员位于同一级别的下一个成员。

示例

如果 Year 级别是由名为 [1994]、[1995] 和 [1996] 的成员组成，则下例返回 [1995]：

[1994].NextMember


NonEmptyCrossjoin

以一个集合的形式返回两个或多个集合的矢量积，不包括空元组以及无相关事实数据表数据的元组。

语法

NonEmptyCrossjoin(«Set1», «Set2»[, «Set3»...][, «Crossjoin Set Count»])

注释

NonEmptyCrossjoin 函数以一个集合的形式返回两个或多个集合的矢量积，不包括空元组或无基础事实数据表提供的数据的元组，因此所有计算成员均被自动排除。如果未指定 Crossjoin Set Count，则所有指定的集合将交叉联接，而且从所得集合中排除空成员。如果已指定 «Crossjoin Set Count»，则交叉联接以 «Set1» 开头的 «Crossjoin Set Count»。剩余集合用于确定在所得交叉联接集合中哪些成员是非空的。

例如，您要查看参加 Big Time Savings 促销的 Beverly Hills 每个商店的单位总销售额，但仅想查看位于 California 的那些客户的总销售额。但是，下列多维表达式 (MDX) 语法返回一个集合，该集合包含在 California 所有城市的单位总销售额，是按 Beverly Hills 的商店对客户进行分组的，而且都参加了 Big Time Savings 促销；该集合是三个集合的矢量积。所返回的单位销售额仅是三个集合的矢量积；未返回参加 Big Time Savings 促销的 Beverly Hills 的商店的总销售额，而仅是参加促销本身的每个商店或客户城市的各个单位销售额。

NonEmptyCrossJoin([Store].[Beverly Hills].Children, [Customers].[CA].Children, {[Promotions].[Big Time Savings]})

上面的示例范围太窄，无法完成任务。相反，下列 MDX 语句仅交叉联接前两个集合，而且从返回的集合中删除了非空成员。因为未使用 {[Promotions].[Big Time Savings]}，所以下一 MDX 语句范围太宽；MDX 语句包含太多元组，无法完成目标。

NonEmptyCrossJoin([Store].[Beverly Hills].Children, [Customers].[CA].Children)

下列 MDX 语句使用 Crossjoin Set Count 参数返回一个集合，该集合包含 California 所有城市的单位销售额，而且按 Beverly Hills 的商店对客户进行分组；该集合是前两个集合的矢量积。但是，只返回了参加 Big Time Savings 促销的交叉联接集合中的那些成员，所以完成了任务。在 Crossjoin Set Count 参数中指定的前两个集合交叉联接，而第三个集合用于在确定交叉联接集合成员是否包含数据时确定应考虑交叉联接集合的哪些成员。

NonEmptyCrossJoin([Store].[Beverly Hills].Children, [Customers].[CA].Children, {[Promotions].[Big Time Savings]},2)

NonEmptyCrossjoin 函数的好处是处理涉及两个以上集合的交叉联接时更快、更有效，而且函数所提供的语法更简单。使用下列 MDX 语句中所示的 Filter、Crossjoin 和 IsEmpty 函数也可获得相同结果，但效率较低：

Filter(Crossjoin([Store].[Beverly Hills].Children, [Customers].[CA].Children), NOT IsEmpty([Promotions].[Big Time Savings])

当添加其它集合时，使用 Filter、Crossjoin 和 IsEmpty 就变得不太实际，因为每个 Crossjoin 语句嵌套在另一个 Crossjoin 语句中才能返回相同结果。例如，使用 NonEmptyCrossjoin 将 [Product].Children 集合添加到返回的集合中类似于：

NonEmptyCrossJoin([Store].[Beverly Hills].Children, [Customers].[CA].Children, [Product].Children, {[Promotions].[Big Time Savings]}, 3)

在另一方面，使用 Filter、Crossjoin 和 IsEmpty 函数执行相同功能与下列类似：

Filter(Crossjoin(Crossjoin([Store].[Beverly Hills].Children, [Customers].[CA].Children), [Product].Children), NOT IsEmpty([Promotions].[Big Time Savings]))

前一 MDX 语句在执行时比较慢，而且易读性比其基于 NonEmptyCrossjoin 的对应语句要差。

示例

下列语句返回一个集合，该集合包含 California 所有城市的全部单位销售额，而且按参加 Big Time Savings 促销的 Beverly Hills 的商店对客户进行分组：

NonEmptyCrossJoin([Store].[Beverly Hills].Children, [Customers].[CA].Children, {[Promotions].[Big Time Savings]},2)

请参见

Crossjoin

Filter

IsEmpty


 Analysis Services

O


OpeningPeriod

返回某一指定级别的后代中的第一个兄弟，或者某一指定成员的后代中的第一个兄弟。

语法

OpeningPeriod([«Level»[, «Member»]])

注释

如果指定 «Level»，则使用包含 «Level» 的维度，否则使用 Time 维度。如果没有指定 «Level»，则使用 «Member» 所在级别的下一级别。如果未指定 «Level» 和 «Member»，则默认设置为 Time.CurrentMember。

此函数等同于 TopCount(Descendants(«Member», «Level»), 1)。

ClosingPeriod 函数与此类似，但返回最后一个兄弟而非第一个兄弟。

示例

下例返回 [1991].January：

OpeningPeriod(Month, [1991])


Order

排列指定集合的成员，可以选择保留或打破层次结构。

语法

Order(«Set», {«String Expression» | «Numeric Expression»}
[, ASC | DESC | BASC | BDESC])

注释

Order 有两种变化形式：按层次结构排列（ASC 或 DESC）和不按层次结构排列（BASC 或 BDESC，其中 B 代表打破层次结构）。按层次结构排列的排序首先按成员在层次结构中的位置对其进行排序，然后再对每个级别进行排序。而不按层次结构排列的排序在对集合中的成员排序时不考虑层次结构。如果没有明确说明，则根据默认设置使用 ASC。

示例

示例

Order(SampleSet, ([1995], Sales), DESC)

按层次结构排列所有成员然后按 Sales 排序每个级别。在构造排序后的列表时，比较最高级别上的 Sales。因此，如果 California 的所有城市的 Sales 合计低于 New York 的所有城市的 Sales 合计，在按降序排列的列表中，California 和 California.LA 将排在 NYC 的下面。

该示例的结果

Order(SampleSet, ([1995], Sales), DESC)

在下表中列出。

位置 |  |  | 1995 年销售数据
USA |  |  | 5000
 | California |  | 2000
 |  | LA | 500
 |  | Buffalo | 300
 |  | NYC | 900
France |  |  | 2500
 |  | Paris | 365
 |  | Nice | 27
UK |  |  | 1900
 |  | London | 250

下面的表达式在按成员的值排序成员时不考虑它们在成员层次结构中的相对位置。在本例中，按每个城市的 1995 年销售数据排序数值，包括按州和国家/地区计算的累积销售数据：

Order(SampleSet, ([1995], Sales), BDESC)

下表显示上一个表达式的结果。

位置 | 1995 年销售数据
USA | 5000
France | 2500
California | 2000
UK | 1900
NYC | 900
LA | 500
Paris | 365
Buffalo | 300
London | 250
Nice | 27

说明 如果输入的集合中有两个元素，这两个元素的 «String Expression» 或 «Numeric Expression» 有相同的值，则保留输入顺序。

例如，如果 USA 和 Europe 的销售额各为 300，而 Asia 的销售额为 100，则以下表达式返回的是集合 {Asia, USA, Europe}，而不是集合 {Asia, Europe, USA}：

Order({USA, Europe, Asia}, Sales, BASC)


Ordinal

返回级别的以零为基的序数值。

语法

«Level».Ordinal

示例

对于带有名为 [All Products]、[Product Category] 和 [Product Name] 三个级别的 Products 维度，以下示例返回 2：

Products.[Product Name].Ordinal


 Analysis Services

P


ParallelPeriod

返回上一时期中与指定成员具有相同的相对位置的成员。

语法

ParallelPeriod([«Level»[, «Numeric Expression»[, «Member»]]])

注释

此函数类似于 Cousin 函数，但与 Time 系列的关系更密切。它在 «Level»（称作 ancestor）中提取 «Member» 的祖先，然后提取滞后 «Numeric Expression» 的 ancestor 的兄弟，并返回那个兄弟后代中 «Member» 的并行时期。

此函数有如下默认值：

  • 如果没有指定 «Level»，则 «Member» 值默认为 Time.CurrentMember。否则就是 dimension.CurrentMember，其中 dimension 是 level 所属的维度。

  • «Numeric Expression» 默认为 1。

  • «Level» 默认为 «Member» 的父代级别。

此函数等同于 Cousin(Member,Lag(Ancestor(Member,Level),Numeric Expression)。

示例

下表列出如何使用此函数的各种示例。

表达式 返回
ParallelPeriod(Year,2,
[96 Qtr 3])

[94 Qtr 3]

ParallelPeriod(Year,2)
 Time.CurrentMember 两年前的并行时期。

即，如果 Time.CurrentMember 是 [1993June]，则返回的成员是 [1991June]。

ParallelPeriod(Year)
 Time.CurrentMember 一年前的并行时期。

即，如果 Time.CurrentMember 是 [1993June]，则返回的成员是 [1992June]。

ParallelPeriod()
 Time.CurrentMember 父代的前一个兄弟中的并行时期。

例如，如果 Time.CurrentMember 是 [1993June]，则返回的成员是 [1993March]。[1993June] 的父代是 Quarter2，它的前一个兄弟是 Quarter1，Quarter1 中的并行时期是 [1993March]。


Parent

返回成员的父代。

语法

«Member».Parent

注释

此函数返回在 «Member» 中指定的成员的父成员。

示例

如果 Geography 维度包括 State 和 Country，则以下示例返回 USA：

California.Parent


PeriodsToDate

返回指定级别上的一个时期（成员）集合，从第一个时期开始到指定的成员为止。

语法

PeriodsToDate([«Level»[, «Member»]])

注释

在 «Level» 作用域内，此函数返回处于 «Member» 级别上的时期的集合，该集合以第一个时期开始，以 «Member» 结束。如果没有指定级别或成员，则 «Member» 的值就为 Time.CurrentMember，并且 «Level» 为 Time.CurrentMember 的父代级别。如果指定了级别，则 «Member» 为 dimension.CurrentMember，其中的 dimension 是 «Level» 的维度。

示例

下表列出可以使用 PeriodsToDate 的各种方法。

表达式 返回
PeriodsToDate(Quarter,
[05-Sep-1997])
 从 Quarter3 开始的天数的集合。
PeriodsToDate(Year, March)
集合 {January, February, March}。
PeriodsToDate(Year)
 从 Time.CurrentMember 的祖先所在的年份开始一直到 Time.CurrentMember 为止的成员的集合。
PeriodsToDate()
 从 Time.CurrentMember 的时期所在的级别开始一直到 Time.CurrentMember 为止的成员的集合。所有返回的成员与 Time.CurrentMember 位于同一级别上。

PeriodsToDate(level, member) 与 TopCount(Descendants(Ancestor(member, level), member.Level), 1):member 相同


Predict

返回在数据挖掘模型上对数值表达式求得的值。

语法

Predict(«Mining Model Name», «Numeric Expression»)

注释

Predict 函数计算在另一数据挖掘模型（位于在 «Mining Model Name» 中指定的挖掘模型的上下文中）的 «Numeric Expression» 中指定的数值表达式的值。

在用于数据挖掘规范的 OLE DB 中提供了有关数据挖掘语法和函数的相关文档。有关数据挖掘 OLE DB 规范的更多信息，请参见位于 Microsoft Web 站点的 Microsoft OLE DB Web 页。

示例

以下代码将返回 [Gender] 数据挖掘列中柱状图条目的方差值，该列具有 Customer Pattern Discovery 数据挖掘模型中的最大可能性：

Predict("Customer Pattern Discovery","PredictVariance([Customer Pattern Discovery].[Gender])")


PrevMember

返回指定成员所在级别的上一个成员。

语法

«Member».PrevMember

注释

此函数返回与 «Member» 中所指定的成员位于同一级别的前一个成员。

示例

如果 Year 级别是由 [1994]、[1995] 和 [1996] 组成的，则下例返回成员 [1995]：

[1996].PrevMember


Properties

返回包含成员属性值的字符串。

语法

«Member».Properties(«String Expression»)

注释

Properties 函数返回在 «String Expression» 中指定的成员属性的值。成员属性可以是任何标准的成员属性，如 NAME、ID、KEY 或 CAPTION，它也可以是用户定义的成员属性。

示例

在 Store 维度中，如果 Store Name 级别有一个相关的成员属性 Store Manager，则下例返回 Smith：

[Store].[All Stores].[USA].[WA].[Bellingham].[Store 2].Properties("Store Manager")


 Analysis Services

Q


Qtd

返回 Time 维度 Quarter 级别上的成员集合，从第一个时期开始到指定的成员为止。

语法

Qtd([«Member»])

注释

PeriodsToDate 函数的这个快捷函数将 PeriodsToDate 函数的 «Level» 参数预定义为 Quarter。如果未指定成员，则根据默认设置是 Time.CurrentMember。

Qtd(«Member») 等同于 PeriodsToDate(Quarter, «Member»)。

示例

下例将返回从 1997 年第三季度开始的天数的集合：

Qtd([05-Sep-1997]))

请参见

PeriodsToDate


 Analysis Services

R


Rank

以一为基返回指定的元组在指定集合中的阶。

语法

Rank(«Tuple», «Set»[, «Calc Expression»])

注释

如果未指定 «Calc Expression»，则 Rank 函数返回元组的以一为基的顺序位置，而该元组在 «Set» 内指定的集合中的 «Tuple» 指定。

如果指定了 «Calc Expression»，则 Rank 函数对元组计算 «Calc Expression» 中指定的数值表达式，以确定其以一为基的阶。指定 «Calc Expression» 之后，Rank 函数给集合中相同的阶分配重复的值。但是，重复值的存在影响集合中后面元组的阶。例如，如果集合 {(a,b), (e,f), (c,d)} 中的元组 (a,b) 与元组 (c,d) 具有相同的值，并且元组 (a,b) 的阶为 1，则 (a,b) 和 (c,d) 的阶都将为 1，但是 (e,f) 的阶将为 3。在该集合中元组的阶没有 2。

Rank 函数不对集合进行排序。

示例

下例返回 3：

Rank((c,d), {(a,b), (e,f), (c,d)})

但是，如果集合 { (a,b), (e,f), (c,d) } 中元组的值分别为 1、8 和 3，相应地，在 [Test] 度量值中，下例返回 2：

Rank ((c,d), {(a,b), (e,f), (c,d)}, Measures.Test)


RollupChildren

使用指定的一元运算符，通过汇总指定成员的子代值，从而返回所生成的值。

语法

RollupChildren(«Member», «String Expression»)

注释

使用在 «String Expression» 中指定的一元运算符，RollupChildren 函数对在 «Member» 中指定的成员的子代值进行汇总。

下表描述了可用于该函数的有效一元运算符。

运算符 | 结果
+ | total = total + current child
- | total = total - current child
* | total = total * current child
/ | total = total / current child
% | total = (total / current child) * 100
~ | 不在汇总结果中使用子代。子代的值被忽略。

如果成员属性中的运算符未列在表中，则会发生错误。求值顺序取决于兄弟的顺序（而不是运算符的优先顺序）。

示例

以下示例通过将默认的一元运算符用于各个子成员来创建父成员的汇总：

RollupChildren(Location.CurrentMember, Location.CurrentMember.Properties("UNARY_OPERATOR"))


 Analysis Services

S


SetToArray

将一个或多个集合转换为数组，以用于用户定义的函数中。

语法

SetToArray(«Set»[, «Set»...][, «Numeric Expression»])

注释

此函数将一个或多个集合转换为数组，以用于用户定义的函数中。所得数组中的维数与指定的集合数相同。

可以使用可选的数值表达式来提供数组单元中的值。如果省略了数值表达式，则集合成员的默认值将用作数组单元值。

所得数组中的单元坐标与集合在列表中的位置相对应。例如，如果 SetToArray(SA, SB, SC) 中的每个集合都有两个元素，则将产生三维数组：

(SA1, SB1, SC1) (SA2, SB1, SC1) (SA1, SB2, SC1) (SA2, SB2, SC1)
(SA1, SB1, SC2) (SA2, SB1, SC2) (SA1, SB2, SC2) (SA2, SB2, SC2)

说明 SetToArray 的返回类型为 VARIANT 类型 VT_ARRAY。因此，SetToArray 的输出只用作对用户定义函数的输入。

示例
SetToArray(Geography.Members, Measures.Sale)


SetToStr

从集合中构建具有多维表达式 (MDX) 格式的字符串。

语法

SetToStr(«Set»)

示例

下例返回 "{[Time].[1995], [Time].[1996]}"：

SetToStr({1995, 1996})


Siblings

返回指定成员的兄弟，包括成员本身。

语法

«Member».Siblings

示例

下例返回集合 { January, February, March }：

[Time].[All Time].[1998].[Quarter 1].[January].Siblings


Stddev

Stdev 的别名。

请参见

Stdev


StddevP

StdevP 的别名。

请参见

StdevP


Stdev

返回使用非偏置填充公式对集合计算数值表达式所得的样本标准偏差。

语法

Stdev(«Set»[, «Numeric Expression»])

注释

Stdev 函数使用非偏置填充公式，而 StdevP 函数使用偏置填充公式。

示例
Stdev({USA, CANADA, MEXICO}, Sales)

请参见

StdevP


StdevP

返回使用偏置填充公式对集合计算数值表达式所得的填充标准偏差。

语法

StdevP(«Set»[, «Numeric Expression»])

注释

StdevP 函数使用偏置填充公式，而 Stdev 函数使用非偏置填充公式。

示例
Stdev({USA, CANADA, MEXICO}, Sales)

请参见

Stdev


StripCalculatedMembers

返回通过将计算成员从指定的集合中删除而生成的集合。

语法

StripCalculatedMembers(«Set»)

注释

此函数从某个集合中删除计算成员，该集合包含使用 AddCalculatedMembers 添加的计算成员。

示例
StripCalculatedMembers([Store Size in SQFT].[All Store Size in SQFT].Children)


StrToMember

返回具有多维表达式 (MDX) 格式的字符串表达式中的成员。

语法

StrToMember(«String Expression»)

返回具有 MDX 格式的字符串中的成员，该字符串应包含有成员，并在 «String Expression» 中指定。

注释

StrToMember 函数通常用于用户定义的函数。

示例

下例返回成员 Time.[1996]：

StrToMember("Time.[1996]")


StrToSet

从具有多维表达式 (MDX) 格式的指定字符串表达式中构建集合。

语法

StrToSet(«String Expression»)

示例

下面的示例返回包含 Time 维度所有成员的集合：

StrToSet("Time.Members")


StrToTuple

从具有多维表达式 (MDX) 格式的指定字符串表达式中构建元组。

语法

StrToTuple(«String Expression»)

示例

下例返回 (Sales, [1994])：

StrToTuple("(Sales, [1994])")


StrToValue

从字符串表达式返回值。

语法

StrToValue(«String Expression»)

注释

StrToValue 函数通常用于用户定义的函数。

示例

下例返回 45：

StrToValue("45")


Subset

从指定集合中返回元组的子集。

语法

Subset(«Set», «Start»[, «Count»])

注释

此函数从 «Set» 中返回 «Count» 元组，并作为一个集合，该集合从 «Start» 位置开始。«Start» 是以零为基：0 对应于集合中的第一个元组，1 对应于第二个元组，依此类推。如果没有指定 «Count»，则返回从集合 «Start» 开始到集合末尾的所有元组。

示例

下例返回集合 {USA, Canada}：

Subset({USA, Canada, France, Germany, Japan, England, Peru}, 0, 2)


Sum

返回在某一集合上对数值表达式求得的和。

语法

Sum(«Set»[, «Numeric Expression»])

示例

如果 USA、CANADA 和 MEXICO 成员的值分别为 1000、2000 和 3000，则以下示例返回 6000：

Sum({USA, CANADA, MEXICO}, Sales.VALUE)

以下示例更加直观，并且同样有效：

Sum({USA, CANADA, MEXICO}, Sales)


 Analysis Services

T


Tail

从集合尾部返回子集。

语法

Tail(«Set»[, «Count»])

注释

此函数返回集合中后面 «Count» 个元素。保留元素的顺序。«Count» 的默认值为 1。如果 «Count» 小于 1，则返回空集合。如果 «Count» 超出了集合中元组的个数，则返回原始的集合。

示例

以下代码返回集合 {France, Germany, Japan}：

Tail({USA, Canada, France, Germany, Japan}, 3)


ToggleDrillState

切换对成员的钻取状态。

语法

ToggleDrillState(«Set1», «Set2»[, RECURSIVE])

注释

此函数是 DrillupMember 和 DrilldownMember 的组合。它切换 «Set2» 与 «Set1» 交集中每个成员的深化和浅化状态。如果深化 «Set2» 与 «Set1» 交集中的成员 m（即，有一个后代），则应用 DrillupMember(«Set1», {m})。如果浅化（即没有后代直接位于 m 之后），则对 Set1 应用 DrilldownMember(«Set1», {m}[, RECURSIVE])。如果通过 RECURSIVE 调用 ToggleDrillState，则使用可选的 RECURSIVE 标志。

示例
ToggleDrillState({Product.Bread.Members},{Product.Bagels, Product.Muffins}, RECURSIVE)

请参见

DrillupMember

DrilldownMember


TopCount

从指定集合的顶端成员开始，返回指定数目的项目，可以选择首先对集合排序。

语法

TopCount(«Set», «Count»[, «Numeric Expression»])

注释

此函数根据 «Numeric Expression» 的值对集合进行排序，然后返回顶端 «Count» 成员，其中的 «Count» 是一个数值表达式。

重要 与 BottomCount 函数相似，此函数总是打破层次结构。

示例
Topcount(Geography.Cities.Members, 5, Sales)

请参见

BottomCount


TopPercent

对集合排序并返回最顶端的元素，这些元素的累积合计至少为指定的百分比。

语法

TopPercent(«Set», «Percentage», «Numeric Expression»)

注释

此函数使用 «Numeric Expression» 对集合进行排序，并返回其 «Numeric Expression» 的累积合计至少为 «Percentage» 的顶端 n 个元素。«Percentage» 是一个数值表达式。

重要 与 BottomPercent 函数相似，此函数总是打破层次结构。

示例
TopPercent({London, Paris, Rome, New York, Seattle, Tokyo}, 15, Sales)

请参见

BottomPercent


TopSum

对集合排序并返回最顶端的元素，这些元素的累积合计至少为指定的值。

语法

TopSum(«Set», «Value», «Numeric Expression»)

注释

此函数在 «Numeric Expression» 上排序并挑选顶端的 n（可能的最小数）个元素，这些元素的累积合计至少是 «Value»。

重要 与 BottomSum 函数相似，此函数总是打破层次结构。

示例
Topsum(Products.[Product Description].Members, 100000, Quantity)

请参见

BottomSum


TupleToStr

返回指定元组中具有多维表达式 (MDX) 格式的字符串。

语法

TupleToStr(«Tuple»)

示例

下例返回 "([Time].[1995], [Regions].[All Regions].[Europe].[France])"：

TupleToStr(France, 1995)


 Analysis Services

U


Union

返回对两个集合进行 union 运算所生成的集合，可以保留重复的成员。

语法

Union(«Set1», «Set2»[, ALL])

替代语法 1

{«Set1», «Set2»}

替代语法 2

«Set1» + «Set 2»

注释

此函数返回 «Set1» 和 «Set2» 的 union 运算结果，并在默认情况下消除重复项。ALL 标志表示在并集中保留重复项。从尾部删除重复项。

也可以将逗号分隔的集合列表用括号括起来或使用 + 运算符，通过 union 算法合并集合。例如：

{USA.Children, CANADA.Children}

与

{USA.Children} + {CANADA.Children}

等同于

Union(USA.Children, CANADA.Children, ALL)

使用替代语法时始终保留重复的成员。

说明 此替代语法是 OLE DB 中多维表达式 (MDX) 的 Microsoft® SQL Server™ 2000 Analysis Services 扩展。


UniqueName

返回指定级别、维度、成员或层次结构的唯一名称。

语法
维度

«Dimension».UniqueName

级别

«Level».UniqueName

成员

«Member».UniqueName

层次结构

«Hierarchy».UniqueName

注释

UniqueName 函数返回对象的唯一名称，而不是其它名称。

示例
维度
Products.UniqueName
级别
Products.[Product Description].UniqueName
成员
Products.[Product Description].Widgets.UniqueName
层次结构
Time.[Fiscal Year].UniqueName


UserName

返回当前连接的域名和用户名。

语法

UserName

注释

返回的值的格式如下：

domain-name\user-name

示例

如果一个用户连接到 NYC 域，其用户名为 alanc，则下例返回 NYC\alanc：

UserName


 Analysis Services

V


ValidMeasure

通过将不适用的维度强制到其顶层，来返回虚拟多维数据集中的有效度量值。

语法

ValidMeasure(«Tuple»)

返回 «Tuple» 中指定的虚拟多维数据集中某个元组的有效度量值。

注释

在计算虚拟多维数据集内的值时，度量值单元只包含基础多维数据集之间非共有的维度的"（全部）"级别上的值。ValidMeasure 函数从非共有维度的"（全部）"级别坐标上的单元返回度量值。

示例

例如一个名为 ExchSales 的虚拟多维数据集，它源自多维数据集 Sales 和 ExchRate。Sales 多维数据集包含维度 Time、Products 和 Customers 以及以美元 (Dollar) 为单位的度量值 Sale。ExchRate 多维数据集包含维度 Time 和 Currency 以及度量值 Rate。

若要创建计算成员 YenSale 来返回以日元 (Yen) 为单位的每个销售数据值，则必须为 ExchRate 多维数据集内没有的每个维度指定"（全部）"级别以便使虚拟多维数据集单元中有值。如果虚拟多维数据集内有许多维度都是基础多维数据集所不共有的，则该操作会很麻烦。

而 ValidMeasure 函数确保从每个非共有维度的"（全部）"级别上的适当单元取度量值。下面两个多维表达式 (MDX) 语句是等效的：

YenSale = Sum({Descendants(Time.CurrentMember, Day}},
    Sale * (Currency.Yen, AllProducts, AllCustomers))

YenSale = Sum({Descendants(Time.CurrentMember, Day}},
    Sale * ValidMeasure(Currency.Yen))


Value

返回度量值的值。

语法

«Member».Value

注释

Value 函数返回在 «Member» 中指定的度量值的值。它是度量值的默认属性。

示例
Sales.Measures.CurrentMember.Value


Var

返回使用无偏置填充公式在某一集合上对数值表达式求得的样本方差。

语法

Var(«Set»[, «Numeric Expression»])

注释

Var 函数返回数值表达式的非偏置方差，该表达式在 «Numeric Expression» 中指定，对在 «Set» 中指定的集合进行求值。

Var 函数使用非偏置填充公式，而 VarP 函数使用偏置填充公式。

示例
Var ({USA, CANADA, MEXICO}, Sales)

请参见

VarP


Variance

Var 的别名。

请参见

Var


VarianceP

VarP 的别名。

请参见

VarP


VarP

返回使用偏置填充公式对集合计算数值表达式的总体方差。

语法

VarP(«Set»[, «Numeric Expression»])

注释

VarP 函数返回数值表达式的偏置方差，该表达式在 «Numeric Expression» 中指定，对在 «Set» 中指定的集合进行求值。

VarP 函数使用偏置填充公式，而 Var 函数使用非偏置填充公式。

示例
VarP({USA, CANADA, MEXICO}, Sales)

请参见

Var


VisualTotals

返回通过动态合计指定集合中的子成员而生成的集合，可以选择在结果集中对父成员名称使用某种模式来显示。

重要 VisualTotals 函数不能用在对包含非重复计数度量值的多维数据集进行的查询中，这样的查询将对所有度量值返回错误。有关更多信息，请参见使用聚合函数。

语法

VisualTotals(«Set», «Pattern»)

注释

此函数只对 «Set»中指定的子成员的值进行合计。«Set» 中没有指定的子成员将不包括在结果中。«Pattern» 指定合计标签的格式。模式使用的文字按实际内容处理，星号 (*) 是替代父成员的字符。若要显示星号，请使用两个星号 (**)。

说明 VisualTotals 函数取代所得单元集的父成员。父成员和子成员的多个层次结构可以在 «Set» 中指定。

示例

假定 Product 维度有一个成员 Baked Goods，其中包含子成员 Bread。而Bread 有三个子成员：Bagels、Muffins 和 Sliced Bread。

在第一种情形中，构造选择语句时会把

[Product].[All Products].[Food].[Baked Goods].[Bread]

作为父成员并将

[Product].[All Products].[Food].[Baked Goods].[Bread].[Bagels]
[Product].[All Products].[Food].[Baked Goods].[Bread].[Muffins]

作为子成员。父成员的结果表示该成员的所有子代的预计算值，并且不考虑该结果集合没有包含的其它子成员。

select
  {[Measures].[Unit Sales]} on columns,
  {[Product].[All Products].[Food].[Baked Goods].[Bread],
   [Product].[All Products].[Food].[Baked Goods].[Bread].[Bagels],
   [Product].[All Products].[Food].[Baked Goods].[Bread].[Muffins]
  } on rows
from Sales

Unit Sales

Bread

7,870.00

Bagels

815.00

Muffins

3,497.00

另一种可替代它的解决方法是使用 VisualTotals 函数，它能动态地计算集合中子成员的合计并显示精确的 Bread 值。

select
{[Measures].[Unit Sales]} on columns,
{VisualTotals({[Product].[All Products].[Food].[Baked Goods].[Bread],
  [Product].[All Products].[Food].[Baked Goods].[Bread].[Bagels],
  [Product].[All Products].[Food].[Baked Goods].[Bread].[Muffins]},
   "**Subtotal - *")
} on rows
from Sales

Unit Sales

*Subtotal - Bread

4,312.00

Bagels

815.00

Muffins

3,497.00

通过用"Bread"取代单星号替代字符构造字符串"*SubTotal – Bread"，以便为动态计算的合计产生有具体含义的名称。替代字符串中双星号指定字符串 "*Subtotal - Bread" 中的输出星号。


 Analysis Services

W


Wtd

返回 Time 维度 Week 级别上的成员集合，从第一个时期开始到指定的成员为止。

语法

Wtd([«Member»])

注释

Wtd 函数是 PeriodsToDate 函数的快捷函数，它将 PeriodsToDate 函数的 «Level» 参数定义为 Week。如果未指定成员，则默认为 Time.CurrentMember。

Wtd(«Member») 等同于 PeriodsToDate(Week, «Member»)。

示例

下面的示例将返回从一周的开始到当前日的天数：

Wtd(Day)

请参见

PeriodsToDate


 Analysis Services

Y


Ytd

返回 Time 维度 Year 级别上的成员集合，从第一个时期开始到指定的成员为止。

语法

Ytd([«Member»])

注释

Ytd 函数是 PeriodsToDate 函数的快捷函数，它将 PeriodsToDate 函数的 «Level» 参数定义为 Year。如果未指定成员，则根据默认设置是 Time.CurrentMember。

Ytd(«Member») 等同于 PeriodsToDate(Year, «Member»)。

示例

下例将返回从 Time.CurrentMember 祖先的起始年到 Time.CurrentMember 的成员集合：

Ytd()

请参见

PeriodsToDate


已注册的函数库

Microsoft® SQL Server™ 2000 Analysis Services 包含并自动注册 Microsoft Visual Basic® for Applications Expression Services 函数库，而且如果将 Microsoft Excel 工作表库安装在带有 Analysis Services 的计算机上，则会自动注册该库。

Analysis Services 支持这些库中的许多函数，但并不全部支持。有关所支持函数的信息，请参见 Visual Basic for Applications 函数和 Excel 函数。


Visual Basic for Application 函数

Microsoft® SQL Server™ 2000 Analysis Services 支持 Microsoft Visual Basic® for Applications Expression Services 库中的许多函数。该库包括在 Analysis Services 中，并自动注册。此版本不支持的函数在下表中以星号 (*) 标明。

有关这些函数的语法和示例的更多信息，请在 Microsoft Web site 的 MSDN® 库中搜索函数名。

Abs | *Add | *AppActivate | Array
Asc | AscB | AscW | Atn
*Beep | *Calendar | *CallByName | CBool
CByte | Ccur | Cdate | CDbl
*CDec | *ChDir | *ChDrive | Choose
Chr | *ChrB | ChrW | CInt
*Clear | CLng | *Command | Cos
*Count | *CreateObject | CSng | CStr
*CurDir | Cvar | CVDate | *CVErr
Date | DateAdd | DateDiff | DatePart
DateSerial | DateValue | Day | DDB
*DeleteSetting | *Description | *Dir | *DoEvents
*Environ | *EOF | *Err | *Error
Exp | *FileAttr | *FileCopy | *FileDateTime
FileLen | *Filter | Fix | Format
*FormatCurrency | *FormatDateTime | *FormatNumber | *FormatPercent
*FreeFile | FV | *GetAllSettings | *GetAttr
*GetObject | *GetSetting | *HelpContext | *HelpFile
Hex | Hour | IIf | *IMEStatus
*Input | *InputB | *InputBox | InStr
InStrB | *InStrRev | Int | IPmt
*IRR | *IsArray | IsDate | IsEmpty
IsError | *IsMissing | IsNull | IsNumeric
IsObject | *Item | *Join | *Kill
*LastDllError | LCase | Left | LeftB
Len | LenB | *Loc | *LOF
Log | LTrim | Mid | MidB
Minute | *MIRR | *MkDir | Month
*MonthName | *MsgBox | Now | NPer
*NPV | *Number | Oct | Partition
Pmt | PPmt | PV | QBColor
*Raise | *Randomize | Rate | *Remove
*Replace | *Reset | RGB | Right
RightB | *RmDir | Rnd | Round
RTrim | *SaveSetting | Second | *Seek
*SendKeys | *SetAttr | Sgn | *Shell
Sin | SLN | *Source | Space
*Split | Sqr | Str | StrComp
String | *StrReverse | Switch | SYD
Tan | Time | Timer | TimeSerial
TimeValue | Trim | TypeName | UCase
Val | *VarType | Weekday | *WeekdayName
*Width | Year |  |


Excel 函数

Microsoft® SQL Server™ 2000 Analysis Services 支持 Microsoft Excel 工作表库中的许多函数，如果该库安装在带有 Analysis Services 的计算机上，则它会自动注册。此版本不支持的函数在下表中以星号 (*) 标明。

Acos | Acosh | And | *Application
Asc | Asin | Asinh | Atan2
Atanh | AveDev | Average | BetaDist
BetaInv | BinomDist | Ceiling | ChiDist
ChiInv | ChiTest | Choose | Clean
Combin | Confidence | Correl | Cosh
Count | CountA | *CountBlank | *CountIf
Covar | *Creator | CritBinom | *DAverage
Days360 | Db | Dbcs | *DCount
*DCountA | Ddb | Degrees | DevSq
*DGet | *DMax | *DMin | Dollar
*DProduct | *DStDev | *DStDevP | *DSum
*DVar | *DVarP | Even | ExponDist
Fact | FDist | Find | FindB
FInv | Fisher | FisherInv | Fixed
Floor | Forecast | *Frequency | FTest
Fv | GammaDist | GammaInv | GammaLn
GeoMean | *Growth | HarMean | *HLookup
HypGeomDist | *Index | Intercept | Ipmt
Irr | IsErr | IsError | IsLogical
IsNA | IsNonText | IsNumber | Ispmt
IsText | Kurt | Large | *LinEst
Ln | Log | Log10 | *LogEst
LogInv | LogNormDist | *Lookup | Match
Max | *MDeterm | Median | Min
*MInverse | MIrr | *MMult | Mode
NegBinomDist | NormDist | NormInv | NormSDist
NormSInv | NPer | Npv | Odd
Or | *Parent | Pearson | Percentile
PercentRank | Permut | Pi | Pmt
Poisson | Power | Ppmt | Prob
Product | Proper | Pv | Quartile
Radians | *Rank | Rate | Replace
ReplaceB | Rept | Roman | Round
RoundDown | RoundUp | RSq | Search
SearchB | Sinh | Skew | Sln
Slope | Small | Standardize | StDev
StDevP | StEyx | Substitute | *Subtotal
Sum | *SumIf | SumProduct | SumSq
SumX2MY2 | SumX2PY2 | SumXMY2 | Syd
Tanh | TDist | Text | TInv
Transpose | *Trend | Trim | TrimMean
TTest | USDollar | Var | VarP
Vdb | *VLookup | Weekday | Weibull
ZTest |  |  |


符合 MDX 语法的用户定义函数

可以为自己创建并注册能对多维数据进行操作的函数。这些函数称为用户定义函数，能以多维表达式 (MDX) 语法接受参数和返回值。可以使用组件对象模型 (COM) 自动语言，如 Microsoft® Visual Basic® 或 Microsoft Visual C++® 等创建用户定义函数。可以使用任何能够生成 Microsoft ActiveX® 库的工具来开发用户定义函数。

在使用用户定义函数之前，必须注册编译函数的库（即文件）。可以注册下列类型的用户定义函数库：

  • 类型库 (*.olb, *.tlb, *.dll)

  • 可执行文件 (*.exe, *.dll)

  • ActiveX 控件 (*.ocx)

若要注册一个用户定义函数库，请发出 USE LIBRARY 语句。该语句的语法为：

USE LIBRARY "<library_path_and_file_name>" | <program_ID>
[,"<library_path_and_file_name>" | <program_ID>...]

例如:

USE LIBRARY "c:\functions\mylib.dll"

若要注册多个库，请使用带有多个参数的 USE LIBRARY 语句，参数之间以逗号分隔。例如：

USE LIBRARY "c:\functions\mylib.dll","c:\functions\johnslib.dll"

不带参数的 USE LIBRARY 语句将取消注册除 Microsoft SQL Server™ 2000 Analysis Services 函数库之外的所有函数库。

不支持隐藏和限制的用户定义函数。

说明 只有当用户定义函数只接受 string 或 numeric 数据类型，或包含字符串或数值的 array 或 variant 数据类型作为参数时，才支持用户定义函数。另外，只有当用户定义函数只返回 string 或 numeric 数据类型，或包含数值的 variant 数据类型时，才支持用户定义函数。

多个用户定义函数可以驻留在相同的 ActiveX 库中。

调用 MDX 内部的用户定义函数

注册用户定义函数之后，即可在允许使用表达式的 MDX 语法中的任何地方使用此用户定义函数。例如：

With Member Measures.[Forecasted Sales] As
     'Sales * ForecastedGrowthRate(SaleReps.CurrentMember.Name)'
Select TopCount(SalesReps, HowManyReps(), Sales) on Rows,
     {Sales, [Forecasted Sales] } on Columns
From Sales

用户定义的函数 HowManyReps 和 ForecastedGrowthRate 定义为：

Public Function HowManyReps() as Integer
Public Function ForecastedGrowthRate(RepName as String) as Double

用户定义函数还可用在计算成员生成器中。

说明 在调用用户定义函数时，必须忽略可选参数之后的所有参数，才能忽略可选参数本身。

函数优先与限定

如果多个函数库中包含具有相同名称的函数，则 Analysis Services 函数库具有优先权。除 Analysis Services 函数库外，优先权按照 USE LIBRARY 语句的注册顺序排列。

在调用函数时，可以使用以下语法替代优先权或调用特定库中的函数：

programid!functionname(argument1,argument2,...)

函数名称之前应加上函数库程序 ID 和感叹号 (!)。该语法可确保当库中的函数名不唯一时能够调用正确的函数。

如果库包含多个接口，则可使用以下语法指定库和接口：

programid!interfaceid!functionname(argument1,argument2,...)


使用方法

本节包含 Microsoft® SQL Server™ 2000 Analysis Services 的各个管理过程。各个过程在下列主题中列出：

  • 配置分析服务器

  • 创建多维数据集的必备对象

  • 生成和处理多维数据集

  • 创建安全角色

  • 管理多维数据集存储

  • 增强维度

  • 用可选功能增强多维数据集

  • 更新多维数据集和维度

  • 管理数据挖掘模型

  • 存档、还原和复制数据

  • 分析和优化性能

  • 自动处理和调度管理任务

有关某个过程的更多背景信息，请在列出该过程的步骤的主题中，单击"请参见"列表中的某个链接。

请参见

管理 Analysis Services


配置分析服务器

下列主题描述配置分析服务器的过程：

  • 如何注册分析服务器

  • 如何使用 SQL Server 企业管理器添加链接的分析服务器

  • 如何启动迁移知识库向导

  • 如何配置用于 Web 的 Analysis Services


如何注册分析服务器

注册服务器

  1. 在 Analysis Manager 树窗格中右击"分析服务器"文件夹，然后单击"注册服务器"命令。

  2. 根据身份验证的方法，在"注册分析服务器"对话框中键入以下内容之一：
    • 对于是默认身份验证方法的直接连接，键入 Microsoft® Windows NT® 4.0 或 Microsoft Windows® 2000 系统中的服务器名称，然后单击"确定"按钮。

    • 对于基于 HTTP 的连接，键入"http://"和宿主 Analysis Services 的 Web 服务器的名称或 IP 地址，然后单击"确定"按钮。在许多情况下，Web 服务器的名称将与分析服务器的名称相同。仅当安装了 Microsoft SQL Server™ 2000 企业版的 Analysis Services 时，才可能建立基于 HTTP 的连接。

    说明 必须具有安全身份验证才能通过这两种方法访问分析服务器。用户名必须包含在要注册的分析服务器上的 OLAP 管理员组中，而且如果要注册的分析服务器是远程计算机，那么用户名也必须包含在本地计算机上的 OLAP 管理员组中。如果将您的用户名添加到了 OLAP 管理员组中，则您可能必须先注销然后再登录到 Windows NT 4.0 或 Windows 2000，才可以注册该服务器。

请参见

连接的身份验证

直接连接的身份验证

注册服务器


如何使用 SQL Server 企业管理器添加链接的分析服务器

使用 SQL Server 企业管理器添加链接的分析服务器

  1. 在 SQL Server 企业管理器中，连接到将宿主该链接的 SQL Server 计算机。

  2. 在树窗格中，展开"安全性"文件夹以查看"链接服务器"。

  3. 右击"链接服务器"，然后单击"新建链接服务器"命令。

  4. 在"链接服务器属性"对话框中，键入有关链接服务器的信息。要求的字段有：
    • 链接服务器：它是分析服务器在 SQL Server 上被引用时所使用的名称。可使用该名称在查询中标识链接服务器。

    • 提供程序名称：选择"用于 OLAP 服务 8.0 的 Microsoft OLE DB 提供程序"。

    • 数据源：它是宿主 Analysis Services 的计算机的主机名。

    • 目录：它是通过该链接提供的 OLAP 数据库的名称。
  5. 单击"提供程序选项"按钮。在"提供程序选项"对话框中，选择"允许 InProcess"复选框。

    说明 "允许 InProcess"选项会影响所有使用用于 Analysis Services 的 OLE DB 提供程序的链接服务器。只可以在 SQL Server 企业管理器中更改该选项。

请参见

添加链接的服务器


如何启动迁移知识库向导

启动迁移知识库向导

  1. 在 Analysis Manager 树窗格中，展开"分析服务器"文件夹。

  2. 右击要迁移的 Analysis Services 知识库所在的服务器，然后单击"迁移知识库"命令。

请参见

迁移 Analysis Services 知识库


如何配置用于 Web 的 Analysis Services

配置用于 Web 的 Analysis Services

  1. 将 Msolap.asp 文件从 C:\Program Files\Microsoft Analysis Services\Bin 文件夹复制到要用作分析服务器的计算机中的 C:\Inetpub\Wwwroot 文件夹。（实际位置可能与这些默认位置不同。）通过由 Microsoft® Internet Information 服务 (IIS) 验证了身份的连接必须能够访问该计算机。

    重要 如果分析服务器计算机上不存在 C:\Inetpub\Wwwroot 文件夹，则可能未安装 IIS。IIS 必须安装在分析服务器计算机上，并且必须为默认 Web 站点指派了名称或 IP 地址才能完成本过程。分析服务器计算机必须运行支持 IIS 的操作系统，如 Microsoft Windows NT® 4.0 Server（不是 Windows NT 4.0 Workstation）或 Microsoft Windows® 2000。

  2. 创建或打开包含 Internet Information 服务管理单元的 Microsoft 管理控制台 (MMC)。

    在 Windows 2000 上，可打开管理工具并运行 Internet 服务管理器。

  3. 在控制台树中，展开要管理的服务器，然后单击"默认 Web 站点"。

    如果要管理的服务器未在控制台树中出现，请右击"Internet Information 服务"，然后单击"连接"指定服务器。

  4. 在详细信息窗格中右击 Msolap.asp，然后单击"属性"命令。

  5. 在"属性"对话框中，如果"读取"复选框未选中，请选中它，然后选中"脚本资源访问"复选框。单击"确定"按钮以设置这些属性并关闭对话框。

  6. 在 Internet Information 服务管理单元的树窗格中，右击 Web 站点，然后单击"属性"。

  7. 在"Web 站点属性"对话框中，单击"主目录"选项卡。根据分析服务器计算机的操作系统，对 Msolap.asp 所宿主的站点做如下更改：
    • 对于 Windows 2000，在"执行权限"框中选择"仅脚本"或"脚本和可执行文件"。可以选择"应用程序保护"框中的"高（隔离）"，以确保作为基于 IIS 的进程运行的 Analysis Services 的最大稳定性。

    • 对于 Windows NT 4.0 Server，单击"脚本"或"执行（包括脚本）"。可以选择"运行于独立内存空间（隔离进程）"复选框以确保作为基于 IIS 的进程运行的 Analysis Services 的最大稳定性。
  8. 单击"确定"按钮。

请参见

连接的身份验证

如何注册分析服务器


创建多维数据集的必备对象

下列主题描述创建多维数据集必备对象的过程：

  • 如何创建数据库

  • 如何指定数据源

  • 如何使用维度向导创建共享维度

  • 如何使用维度编辑器创建共享维度

  • 如何根据成员属性创建虚拟维度

  • 如何根据列创建虚拟维度

请参见

为多维数据集创建必备对象


如何创建数据库

创建数据库

  1. 在 Analysis Manager 树窗格中，在"分析服务器"文件夹下右击将包含数据库的服务器，然后单击"新建数据库"命令。

  2. 在"数据库"对话框中键入数据库的名称和描述，然后单击"确定"按钮。

请参见

创建数据库


如何指定数据源

指定数据源

  1. 在 Analysis Manager 树窗格中，展开将从该数据源提取数据的数据库。

  2. 右击"数据源"文件夹，然后单击"新建数据源"命令。

  3. 在"数据链接属性"对话框中，在"提供程序"选项卡上单击一个 OLE DB 提供程序。

  4. 完成"连接"选项卡，该选项卡因提供程序的不同而不同。

    说明 如果与 SQL Server™ 2000 数据提供程序相连，则建议在"输入登录到服务器所需的信息"下，选择"使用 Windows NT 集成安全性"。

    如果在第 3 步中选择了用于 ODBC 驱动程序的 Microsoft® OLE DB 提供程序，则可在"连接"选项卡上单击"使用数据源名称"按钮，单击向下箭头显示数据源名称列表，然后单击一个数据源名称。如果列表中没有要选择的数据源名称，则必须定义一个数据源名称。在"控制面板"中，使用"ODBC 数据源管理器"定义数据源名称，然后返回到"连接"选项卡并单击"刷新"按钮。有关更多信息，请参见管理 Analysis Services 之前。

  5. 若要判定数据源连接是否正确，请单击"测试连接"按钮。如果连接正确，则会收到信息说明测试连接成功。单击"确定"按钮清除该信息。

  6. 在"数据链接属性"对话框中单击"确定"按钮。

请参见

指定数据源


如何使用维度向导创建共享维度

使用维度向导创建共享维度

  1. 在 Analysis Manager 树窗格中，展开要在其中创建共享维度的数据库。

  2. 右击"共享维度"文件夹，指向"新建维度"菜单，然后单击"向导"命令。

  3. 在向导的第二步选择"星型架构：单个维度表"选项或"雪花架构：多个相关性维度表"。其它选项用于父子维度、虚拟维度和数据挖掘维度。

  4. 执行向导中余下的步骤。

在完成该向导之后，即会显示维度编辑器以便进一步完善该维度。

请参见

用向导创建共享维度


如何使用维度编辑器创建共享维度

使用维度编辑器创建共享维度

  1. 在 Analysis Manager 树窗格中，展开要在其中创建共享维度的数据库。

  2. 右击"共享维度"文件夹，指向"新建维度"菜单，然后单击"编辑器"命令。

  3. 在"选择维度表"对话框中展开数据源，单击用于该维度的维度表，然后单击"确定"按钮。

    即会显示维度编辑器，维度表显示在"架构"选项卡中。

  4. 若要向该维度中添加更多的表，请在"插入"菜单上单击"表"命令，然后使用"选择表"对话框。

  5. 如果该维度包含多个表，则要确保每个表都与另一个表相联接。若要联接两列，请在"架构"选项卡中将其中一列拖到另一列上。

  6. 在维度中创建级别。首先创建最高、综合性最强的级别，然后逐步创建较低、较具体的级别，这种方法最方便。否则，如果启用成员计数，则会在每次添加级别时显示确认对话框。对于要创建的每个级别：
    1. 在"插入"菜单中单击"级别"命令。

    2. 在"插入级别"对话框中选择该级别基于的列，然后单击"确定"按钮。

    在创建一个级别后，该级别即会显示在树窗格中。

  7. （可选）在属性窗格中，修改该维度及其级别的属性。有关这些属性的更多信息，请参见属性窗格（维度编辑器数据视图）。

  8. 若要保存该维度，请在"文件"菜单上单击"保存"命令，在"新维度名称"对话框中键入该维度的名称，然后单击"确定"按钮。

请参见

用编辑器创建共享维度


如何浏览共享维度

浏览共享维度

  • 在 Analysis Manager 树窗格中右击某个共享维度，然后单击"浏览维度数据"。

    -或-

  • 在多维数据集编辑器树窗格中右击某一共享维度，然后单击"浏览"命令。

请参见

查看维度数据


如何浏览专用维度

浏览专用维度

  • 在多维数据集编辑器树窗格中右击某一专用维度，然后单击"浏览"命令。

请参见

查看维度数据


如何基于成员属性创建虚拟维度

根据成员属性创建虚拟维度

  1. 根据创建的是共享虚拟维度还是专用虚拟维度，选择执行下列操作之一：
    • 如果要创建共享虚拟维度，则在 Analysis Manager 树窗格中展开要在其中创建虚拟维度的数据库。右击"共享维度"文件夹，指向"新建维度"菜单，然后单击"向导"命令。

    • 如果要创建专用虚拟维度，则在 Analysis Manager 树窗格中右击要在其中创建虚拟维度的多维数据集，然后单击"编辑"命令。在"插入"菜单上指向"维度"子菜单，然后单击"新建"命令。
  2. 在"欢迎"步骤中单击"下一步"按钮。

  3. 在"选择维度的创建方式"步骤中，选择"虚拟维度：另一个维度的成员属性"。单击"下一步"按钮。

  4. 在"选择带有成员属性的维度"步骤中，选择包含成员属性的维度。单击"下一步"按钮。

  5. 在"选择虚拟维度的级别"步骤中，选择虚拟维度的级别：
    1. 从顶层开始，对于要定义的每个级别，在"可用的成员属性"列表框中，选择定义该级别的成员属性，然后单击">"按钮。

    2. 单击"下一步"按钮。
  6. 在"选择高级选项"步骤中，选择可应用的任何高级选项。如果不应用高级选项，请单击"下一步"按钮。

  7. 如果出现"指定排序依据和唯一性"步骤，则对于每个级别，要在"排序依据"列中，选择决定向最终用户显示该级别成员的顺序的值。另外，对于每个级别，还可以在"键唯一"列和"名称唯一"列中，分别指定在成员键和成员名称中的唯一性作用域。单击"下一步"按钮。

  8. 在"完成"步骤中：
    1. 在"维度名称"编辑框中，键入长度可达 24 个字符的名称。

    2. 如果希望该虚拟维度是专用维度，则要清除"与其它多维数据集共享此维度"复选框。（如果按照共享虚拟维度的过程操作，则不会显示该复选框。）

    3. 单击"完成"按钮。

请参见

创建虚拟维度


如何基于列创建虚拟维度

根据列创建虚拟维度

  1. 根据创建的是共享虚拟维度还是专用虚拟维度，选择执行下列操作之一：
    • 如果要创建共享虚拟维度，则在 Analysis Manager 树窗格中展开要在其中创建虚拟维度的数据库。右击"共享维度"文件夹，指向"新建维度"菜单，然后单击"向导"命令。

    • 如果要创建专用虚拟维度，则在 Analysis Manager 树窗格中右击要在其中创建虚拟维度的多维数据集，然后单击"编辑"命令。在"插入"菜单上指向"维度"子菜单，然后单击"新建"命令。
  2. 在"欢迎"步骤中单击"下一步"按钮。

  3. 在"选择维度的创建方式"步骤中，进行下列操作之一：
    • 如果将提供列的维度只有一个维度表，请选择"星型架构：单个维度表"。

    • 如果将提供列的维度具有多个维度表，请选择"雪花架构：多个相关性维度表"。
  4. 单击"下一步"按钮。

  5. 在"选择维度表"步骤中，选择将为虚拟维度提供列的一个或多个维度表。单击"下一步"按钮。

  6. 如果显示"创建和编辑联接"步骤，请通过将列拖到要联接的列将所有的表联接起来。单击"下一步"按钮。

  7. 如果显示"选择维度类型"步骤，请选择该维度的类型。如果选择"时间维度"复选框：
    1. 在"日期列"框中，选择将对其进行分析以创建该虚拟维度的级别的列。

    2. 单击"下一步"按钮。

    3. 在"选择时间级别"列表框中，选择该虚拟维度的级别。

    4. （可选）在"日"列表框和"月"列表框中，选择年度的开始日期。

    5. 单击"下一步"按钮。

    如果选择"标准维度"选项按钮，请单击"下一步"按钮。

  8. 如果出现"选择维度的级别"步骤，则请选择该虚拟维度的级别：
    1. 从顶层级别开始，对于要定义的每个级别，在"可用的列"框中选择定义该级别的列，然后单击">"按钮。

    2. 单击"下一步"按钮。
  9. 如果出现"指定成员键列"步骤，则要为一个或多个级别选择成员键列。单击"下一步"按钮。

  10. 在"选择高级选项"步骤中，选择任何可应用的高级选项，然后单击"下一步"。根据所选的高级选项，可能出现其它对话框。

  11. 在"设置可更改属性"步骤中，选择"更改"按钮。虚拟维度必须是可更改的维度。单击"下一步"按钮。

  12. 如果出现"指定排序依据和唯一性"步骤，则对于每个级别，要在"排序依据"列中，选择决定向最终用户显示该级别成员的顺序的值。另外，对于每个级别，还可以在"键唯一"列和"名称唯一"列中，分别指定在成员键和成员名称中的唯一性域。单击"下一步"按钮。

  13. 如果出现"指定存储模式和创建成员组"步骤，则要指定存储模式。如果选择"MOLAP"，则要指明是否在该维度的最低级别之上自动插入的级别中创建成员组。单击"下一步"按钮。

  14. 在"完成"步骤中：
    1. 在"维度名称"编辑框中，键入长度可达 24 个字符的名称。

    2. 如果希望该虚拟维度是专用维度，则要清除"与其它多维数据集共享此维度"复选框。（如果按照共享虚拟维度的过程操作，则不会显示该复选框。）

    3. 单击"完成"按钮。
  15. 在编辑器树窗格中，选择新创建的虚拟维度。

  16. 如果属性窗格未展开，请单击树窗格下方的"属性"按钮以展开它。

  17. 在属性窗格中单击"高级"选项卡。

  18. 单击 Depends on Dimension 属性，然后在下拉列表中单击为该虚拟维度提供列的维度。

  19. 单击 Virtual 属性，然后在下拉列表中单击 True。

  20. 在"文件"菜单上单击"保存"命令。

请参见

创建虚拟维度


生成和处理多维数据集

下列主题旨在描述生成和处理多维数据集的过程：

  • 如何启动多维数据集向导

  • 如何使用多维数据集编辑器建立多维数据集

  • 如何创建专用维度

  • 如何向多维数据集内添加多列度量值

  • 如何启动虚拟多维数据集向导

  • 如何启动存储设计向导

  • 如何处理多维数据集

  • 如何处理虚拟多维数据集

  • 如何查看 SQL 语句

  • 如何更改 Analysis Services 使用的临时文件夹

  • 如何在多维数据集编辑器中浏览样本数据

请参见

生成和处理多维数据集


如何启动多维数据集向导

启动多维数据集向导

  1. 在 Analysis Manager 树窗格中展开要在其中建立多维数据集的数据库。

  2. 右击"多维数据集"文件夹，指向"新建多维数据集"菜单，然后单击"向导"命令。

在您完成向导之后，屏幕上会显示出现多维数据集编辑器，它可以帮助您进一步完善多维数据集。

请参见

用向导建立多维数据集

多维数据集


如何用多维数据集编辑器生成多维数据集

用多维数据集编辑器建立多维数据集

  1. 在 Analysis Manager 树窗格中展开要在其中建立多维数据集的数据库。

  2. 右击"多维数据集"文件夹，指向"新建多维数据集"菜单，然后单击"编辑器"命令。

  3. 在"选择事实数据表"对话框中展开数据源，然后单击要将用作多维数据集的事实数据表的表。

    "详细信息"下面出现单击的表的各列。

  4. 单击"确定"按钮。

    即会显示多维数据集编辑器，并在"架构"选项卡中显示事实数据表。

  5. 若要为多维数据集选择度量值，请在多维数据集编辑器树窗格中，右击"度量值"文件夹，然后单击"新建度量值"命令。使用"插入度量值"对话框选择事实数据表中的列作为度量值。

    在选择每个度量值后，它即会出现在树窗格中的"度量值"文件夹下。

  6. 为多维数据集选择现有的共享维度或定义新维度。
    • 现有的共享维度：在多维数据集编辑器树窗格中，右击"维度"文件夹，然后单击"现有的维度"命令。在"共享维度"下选择现有的共享维度，然后单击">"按钮将其添加到多维数据集中。

    • 新维度：在多维数据集编辑器树窗格中右击"维度"文件夹，然后单击"新建维度"命令。使用维度向导创建新维度。如果要将该维度设为专用维度，请在"完成"步骤中清除"与其它多维数据集共享此维度"复选框。

    选择或定义维度之后，它的维度表即会显示在多维数据集编辑器的"架构"选项卡中，而在维度表与事实数据表之间会用一条直线来表示联接关系。另外，可以将维度表联接到其它维度表以形成雪花架构。确认所需的全部联接均已存在。若要添加联接，请将某个列拖动到要联接的列。

  7. 若要保存多维数据集，请在"文件"菜单上单击"保存"命令，在"新多维数据集名称"对话框中键入多维数据集的名称，然后单击"确定"按钮。

    多维数据集的新名称即会显示在多维数据集编辑器树窗格中。

  8. 若要设计多维数据集的聚合，请在"工具"菜单上单击"设计存储"命令。即会显示存储设计向导用以帮助设计聚合。

    该向导的最后一个步骤让您选择立即处理多维数据集，或选择以后处理多维数据集。在您和最终用户查看多维数据集的数据之前，必须对它进行处理。处理过程要花费大量时间，具体情况取决于多维数据集的大小。

说明 只有在最终用户重新连接到服务器计算机之后，新处理的多维数据集才可见。

请参见

用编辑器建立多维数据集

多维数据集

设计存储选项和聚合

处理多维数据集


如何创建专用维度

创建专用维度

  1. 在 Analysis Manager 树窗格中右击要在其中创建专用维度的多维数据集，然后单击"编辑"命令。

  2. 在多维数据集编辑器的"插入"菜单上，指向"维度"子菜单，然后单击"新建"命令。

  3. 在维度向导中，遍历各个步骤定义专用维度。有关更多信息，请单击向导中的"帮助"按钮。

  4. 在"完成"步骤中，若要指明该维度是专用的，请清除"与其它多维数据集共享此维度"复选框。

  5. 单击"完成"按钮。

  6. （可选）在属性窗格中，修改该维度及其级别的属性。

  7. 在"文件"菜单上单击"保存"命令。

请参见

创建和维护专用维度

属性窗格（维度编辑器数据视图）


如何将多列度量值添加到多维数据集中

向多维数据集内添加多列度量值

  1. 在 Analysis Manager 树窗格中右击多维数据集，然后单击"编辑"命令。

  2. 在多维数据集编辑器树窗格中右击"度量值"文件夹，然后单击"新建度量值"。使用"插入度量值"对话框为度量值选择其中一列。

  3. 在多维数据集编辑器树窗格中，确保选择了新的度量值。

  4. 展开属性窗格，并在"源列"值中键入包含这些列的表达式。例如：
    "sales_fact_1998"."store_sales"-"sales_fact_1998"."store_cost"
  5. 在"文件"菜单上单击"保存"命令。

请参见

向多维数据集内添加多列度量值


如何启动虚拟多维数据集向导

启动虚拟多维数据集向导

  1. 在 Analysis Manager 树窗格中，展开要在其中创建虚拟多维数据集的数据库。

  2. 右击"多维数据集"文件夹，然后单击"新建虚拟多维数据集"命令。

请参见

生成虚拟多维数据集


如何启动存储设计向导

启动存储设计向导

  1. 在 Analysis Manager 树窗格中，在要为其设置存储选项和设计聚合的多维数据集所在的数据库下，展开"多维数据集"文件夹。

  2. 右击要为其设置存储选项和设计聚合的多维数据集，然后单击"设计存储"命令。

请参见

设计存储选项和聚合


如何处理多维数据集

处理多维数据集

  1. 在 Analysis Manager 树窗格中，在包含多维数据集的数据库下展开"多维数据集"文件夹。

  2. 右击多维数据集，然后单击"处理"命令。

  3. 在"处理多维数据集"对话框中单击"完全处理"按钮，然后单击"确定"按钮。

  4. 在"处理"对话框中，等待该多维数据集完成处理，或者单击"停止"按钮中断并取消处理。

在处理完成之后但关闭"处理"对话框之前，可以查看用来处理多维数据集的 SQL 语句。

说明 只有在最终用户重新连接到服务器计算机之后，新处理的多维数据集才可见。

请参见

如何查看 SQL 语句

处理多维数据集


如何处理虚拟多维数据集

处理虚拟多维数据集

  1. 在 Analysis Manager 树窗格中，在包含虚拟多维数据集的数据库下，展开"多维数据集"文件夹。

  2. 右击虚拟多维数据集，然后单击"处理"命令。

  3. 在"处理"对话框中，等待该虚拟多维数据集完成处理，或者单击"停止"中断并取消处理。

在完成处理之后但在关闭"处理"对话框之前，可以查看用来处理该虚拟多维数据集的 SQL 语句。

说明 只有在最终用户重新连接到服务器计算机之后，新处理的虚拟多维数据集才可见。

请参见

如何查看 SQL 语句

处理多维数据集


如何查看 SQL 语句

查看 SQL 语句

  1. 在"处理"对话框中，单击以 SQL 图标开始的行。

  2. 单击"查看详细资料"按钮。

请参见

创建分区

处理多维数据集

更新和刷新多维数据集数据


如何更改 Analysis Services 所使用的临时文件夹

更改 Analysis Services 使用的临时文件夹

  1. 在 Analysis Manager 树窗格中右击要为其更改临时文件夹的分析服务器，然后单击"属性"命令。

  2. 在"临时文件夹"文本框旁边单击"浏览"按钮，选择一个新文件夹，然后单击"确定"按钮。

  3. 在"属性"对话框中单击"确定"按钮。

如果更改了该文件夹，则必须终止后再重新启动 MSSQLServerOLAPService 服务。

请参见

处理多维数据集


如何在多维数据集编辑器中浏览样本数据

在多维数据集编辑器中浏览样本数据

  1. 在 Analysis Manager 树窗格中，在"多维数据集"文件夹下右击未处理的多维数据集，然后单击"编辑"命令。

  2. 在多维数据集编辑器中，在"视图"菜单上单击"数据"命令。

Analysis Services 即会显示多维数据集编辑器的"数据"选项卡，在数据查看窗格中显示样本数据。在多维数据集编辑器的底部显示以下信息:

! Cube is not processed. Viewing sample data.

请参见

浏览未处理的多维数据集


创建安全角色

下列主题描述创建安全角色的过程：

  • 如何创建数据库角色

  • 如何创建多维数据集角色，更改它的默认值和指定单元安全性

  • 如何创建挖掘模型角色并更改其默认值

  • 如何在数据库角色中创建维度安全的自定义规则

  • 如何在多维数据集角色中创建维度安全的自定义规则

  • 如何创建单元安全性的自定义规则

请参见

创建安全角色


如何创建数据库角色

创建数据库角色

  1. 在 Analysis Manager 树窗格中，右击要为其创建数据库角色的数据库，然后单击"管理角色"命令。

  2. 在数据库角色管理器中，执行下列操作之一：
    • 若要以某个现有角色为基础创建新角色，请选择该现有角色，然后单击"复制"按钮。在"复制角色"对话框中指定新角色的名称，然后单击"确定"按钮。选择该新角色，然后单击"编辑"按钮。

    • 若要不使用其它角色的值来定义新角色，请单击"新建"按钮。在"数据库角色"对话框中的"角色名"框中键入值。输入的名称最长可以为 50 个字符，该名称必须以字母字符开始。
  3. （可选）在"数据库角色"对话框中的"描述"框中键入值。

  4. 在"强制于"框中选择下列选项之一：
    • 服务器。由于服务器上数据的筛选因而服务器强制执行更安全，但这可能减慢性能。查询解析完全在分析服务器上或在数据源进行。

    • 客户端。客户端强制一般会提供更好的性能，但可能允许用户未经授权就访问客户端工作站上的数据。查询解析可能完全在客户端工作站上进行，也可能部分在客户端工作站上进行。
  5. 在"成员资格"选项卡中，指定角色中的用户和组。若要开始添加用户和组，请单击"添加"按钮，然后在"添加用户和组"对话框中：
    1. 在"列出的名称来自"列表中，单击要从中选择用户和组的域。

    2. 若要在"名称"下面显示用户，请单击"显示用户"按钮。

    3. 若要显示组的成员，请单击该组，然后单击"成员"按钮。

    4. 若要向角色中添加用户或组，请单击该用户或组，然后单击"添加"按钮。

    5. 在完成向角色添加用户和组后，单击"确定"按钮。

    若要从角色中删除用户或组，请在"成员资格"选项卡中选择该用户或组，然后单击"删除"按钮。

  6. （可选）在"多维数据集"选项卡中，选择该数据库角色可以访问的多维数据集。对于选择的每个多维数据集，都会创建一个多维数据集角色。

  7. （可选）在"挖掘模型"选项卡中，选择该数据库角色可以访问的数据挖掘模型。为每个所选的挖掘模型均创建一个挖掘模型角色。

  8. （可选）在"维度"选项卡中，为显示的每种权限选择一个规则。（只有对写启用维度才会显示读/写权限。）下表描述可用于每种权限的规则。
    权限 | 规则 | 规则描述
    读取 | 无限制 | 角色可以查看所有成员。这是默认规则。
    完全受限 | 角色仅可以查看单个成员。如果维度不具有"（全部）"级别，则可见成员为最高级别中的第一个成员。
    自定义 | 只能查看在"自定义维度安全性"对话框中指定的级别和成员。若要访问此对话框，请选择"自定义"选项，然后在"自定义设置"列中单击编辑（"..."）按钮。有关更多信息，请参见定义维度安全性的自定义规则。
    读/写 | 无限制 | 角色可以更新所有成员。仅当读取权限的规则为"无限制"时，才能使用此规则。
    完全受限 | 角色不能更新成员。这是默认规则，并且仅当读取权限的规则为"无限制"或"完全受限"时，才能使用此规则。
    自定义 | 只能更新在"自定义维度安全性"对话框中指定的级别和成员。若要访问此对话框，请选择"自定义"选项，然后在"自定义设置"列中单击编辑（"..."）按钮。仅当读取权限的规则为"无限制"或"自定义"时，才能使用此规则。有关更多信息，请参见定义维度安全性的自定义规则。

    有关这些权限和规则的更多信息，请参见维度安全。

  9. 在"数据库角色"对话框中单击"确定"按钮。

只有在维度保持写启用时，"维度"选项卡中的读/写权限才有效。有关更多信息，请参见写启用的维度。

请参见

创建数据库角色


如何创建多维数据集角色、更改其默认值和指定单元安全性

创建多维数据集角色，更改它的默认值和指定单元安全性

  1. 在 Analysis Manager 树窗格中，右击要为其创建多维数据集角色的多维数据集，然后单击"管理角色"按钮。

  2. 在多维数据集角色管理器中，未选取的角色是没有访问该多维数据集权限的数据库角色。已选取的角色是具有访问权限的多维数据集角色。执行下列操作中的一种：
    • 若要通过授予某个数据库角色访问权限来创建新的多维数据集角色，请选择该数据库角色旁边的复选框。本过程中余下的步骤是可选的。若要继续，请选择该多维数据集角色，然后单击"编辑"按钮。

    • 若要使用现有的多维数据集角色作为新多维数据集角色的基础，请选择该现有的多维数据集角色，然后单击"复制"按钮。（该操作还会创建一个与新多维数据集角色同名的数据库角色。）在"复制角色"对话框中指定新角色的名称，该名称最多可有 50 个字符并以字母字符开始，然后单击"确定"按钮。选择该新角色，然后单击"编辑"按钮。

    • 若要不用其它角色的值来定义新的多维数据集角色，请单击"新建"按钮。（该操作还会创建一个与该多维数据集角色同名的数据库角色。）在"多维数据集角色"对话框中的"角色名"框中键入值。输入的名称最长可以为 50 个字符，该名称必须以字母字符开始。
  3. （可选）在"多维数据集角色"对话框中的"描述"框中键入值。

  4. 在"强制于"框中选择下列选项之一：
    • 服务器。服务器强制更安全，但可能降低运行速度。查询解析完全在分析服务器上或在数据源进行。

    • 客户端。客户端强制一般会提供更好的性能，但可能允许用户未经授权就访问客户端工作站上的数据。查询解析可能完全在客户端工作站上进行，也可能部分在客户端工作站上进行。
  5. 在"启用钻取"复选框中，指明该角色是否可以钻取单元的源数据。该功能还要求对该多维数据集或至少其一个分区启用钻取。有关更多信息，请参见指定钻取选项。

  6. 在"成员资格"选项卡中，指定角色中的用户和组。

    说明 在此选项卡上所做的更改将传播到与所编辑的多维数据集角色同名的数据库角色和多维数据集角色上。

    若要开始添加用户和组，请单击"添加"按钮，然后在"添加用户和组"对话框中：

    1. 在"列出的名称来自"列表中，单击要从中选择用户和组的域。

    2. 若要在"名称"下面显示用户，请单击"显示用户"按钮。

    3. 若要显示组的成员，请单击该组，然后单击"成员"按钮。

    4. 若要向角色中添加用户或组，请单击该用户或组，然后单击"添加"按钮。

    5. 在完成向角色添加用户和组后，单击"确定"按钮。

    若要从角色中删除用户或组，请在"成员资格"选项卡中选择该用户或组，然后单击"删除"按钮。

  7. （可选）在"维度"选项卡中，为显示的每种权限选择一个规则。（只有对写启用维度才会显示读/写权限。）下表描述可用于每种权限的规则。
    权限 | 规则 | 规则描述
    读取 | 无限制 | 角色可以查看所有成员。这是默认规则。
    完全受限 | 角色不能查看成员。当角色中的用户浏览多维数据集时，他们看不到维度。
    自定义 | 只能查看在"自定义维度安全性"对话框中指定的级别和成员。若要访问此对话框，请选择"自定义"选项，然后在"自定义设置"列中单击编辑（"..."）按钮。有关更多信息，请参见定义维度安全性的自定义规则。
    读/写 | 无限制 | 角色可以更新所有成员。仅当读取权限的规则为"无限制"时，才能使用此规则。
    完全受限 | 角色不能更新成员。这是默认规则，并且仅当读取权限的规则为"无限制"或"完全受限"时，才能使用此规则。
    自定义 | 只能更新在"自定义维度安全性"对话框中指定的级别和成员。若要访问此对话框，请选择"自定义"选项，然后在"自定义设置"列中单击编辑（"..."）按钮。仅当读取权限的规则为"无限制"或"自定义"时，才能使用此规则。有关更多信息，请参见定义维度安全性的自定义规则。

    对读/写权限所做的更改会传播到具有相同名称的数据库角色中。有关这些权限和规则的更多信息，请参见维度安全性。

  8. （可选）在"单元"选项卡中的"单元安全性策略"框中，选择下列三种策略之一：
    • 无限制读取

      角色可以查看所有的单元值。这是默认策略。

    • 无限制读/写

      角色可以查看和更新所有单元值。该策略只有在下列情况下可用：如果在第 1 步中选择的多维数据集是写启用的，或者在第 1 步中选择的虚拟多维数据集具有一个或多个写启用的组件多维数据集。

    • 高级

      角色只可以查看和更新您在"单元"选项卡的权限和规则中指定的单元值。

    • 允许用户提交回写更改

      此选项仅对使用高级单元安全性策略的写启用多维数据集可用。如果选定此选项，更改将永久记录在回写表中。如果未选定该选项，则更改仅应用于特殊分析并且是临时的。

  9. （可选）如果在前面的步骤中选择了"高级"策略，请为"单元"选项卡中显示的每种权限选择一个规则。（只有在下列情况下才显示读/写权限：如果在第 1 步中选择的多维数据集是写启用的，或者选择的虚拟多维数据集具有一个或多个写启用的组件多维数据集。）下表描述可用于每种权限的规则。
    权限 | 规则 | 规则描述
    读取 | 无限制 | 角色可以查看所有的单元值。这是默认规则。
    完全受限 | 根据读/写权限或读附随权限的限制，角色只可以查看在读/写权限或读附随权限中指定的单元值。有关读附随权限的限制的更多信息，请参见单元安全性。
    自定义 | 可以在"多维数据集单元安全性"对话框中指定可查看和不可查看的单元值。若要访问此对话框，请选择"自定义"选项，然后在"自定义设置"列中单击编辑（"..."）按钮。
    读附随 | 无限制 | 角色可以查看所有不是从其它单元中派生的单元值。如果某一单元值派生自其它单元，那么只有当所有其它单元都包括在读取或读/写权限中时，该单元值才可以查看。
    完全受限 | 角色只可以查看在读取权限或读/写权限中指定的单元值。这是默认规则。
    自定义 | 根据读附随权限的限制，可以指定可查看或不可查看的单元值。（有关读附随权限的限制的更多信息，请参见单元安全性。）为此，请使用"多维数据集单元安全性"对话框。若要访问此对话框，请选择"自定义"选项，然后在"自定义设置"列中单击编辑（"..."）按钮。
    读/写 | 无限制 | 角色可以更新所有单元值。
    完全受限 | 角色无法更新单元值。
    自定义 | 可以在"多维数据集单元安全性"对话框中指定可更新和不可更新的单元值。若要访问此对话框，请选择"自定义"选项，然后在"自定义设置"列中单击编辑（"..."）按钮。

    有关这些权限和规则的更多信息，请参见单元安全性。

  10. 在"多维数据集角色"对话框中单击"确定"按钮。

只有在维度保持写启用时，"维度"选项卡中的读/写权限才有效。有关更多信息，请参见写启用的维度。

只有在多维数据集保持写启用时，"单元"选项卡中的不受限制的读/写策略和读/写权限才有效。有关更多信息，请参见维护写启用多维数据集和回写数据。

请参见

创建多维数据集角色


如何创建挖掘模型角色和更改其默认值

创建挖掘模型角色并更改其默认值

  1. 在 Analysis Manager 树窗格中，右击要为其创建挖掘模型角色的挖掘模型，然后单击"管理角色"命令。

  2. 在挖掘模型角色管理器中，未选取的角色是没有访问该挖掘模型权限的数据库角色。已选取的角色是具有访问权限的挖掘模型角色。执行下列操作中的一种：
    • 若要通过授予某个数据库角色访问权限来创建新的挖掘模型角色，请选择该数据库角色旁边的复选框。本过程中余下的步骤是可选的。若要继续，请选择该挖掘模型角色，然后单击"编辑"按钮。

    • 若要使用现有的挖掘模型角色作为新挖掘模型角色的基础，请选择该现有的挖掘模型角色，然后单击"复制"按钮。（该操作还会创建一个与新挖掘模型角色同名的数据库角色。）在"复制角色"对话框中指定新角色的名称，该名称最多可有 50 个字符并以字母字符开始，然后单击"确定"按钮。选择该新角色，然后单击"编辑"按钮。

    • 若要不用其它角色的值来定义新的挖掘模型角色，请单击"新建"按钮。（该操作还会创建一个与该挖掘模型角色同名的数据库角色。）在"挖掘模型角色"对话框中的"角色名"框中键入值。输入的名称最长可以为 50 个字符，该名称必须以字母字符开始。
  3. （可选）在"挖掘模型角色"对话框中的"描述"框中键入值。

  4. 在"成员资格"选项卡中，指定角色中的用户和组。

    说明 在此选项卡上所做的更改将传播到与所编辑的挖掘模型角色同名的数据库角色和挖掘模型角色上。

    若要开始添加用户和组，请单击"添加"按钮，然后在"添加用户和组"对话框中：

    1. 在"列出的名称来自"列表中，单击要从中选择用户和组的域。

    2. 若要在"名称"下面显示用户，请单击"显示用户"按钮。

    3. 若要显示组的成员，请单击该组，然后单击"成员"按钮。

    4. 若要向角色中添加用户或组，请单击该用户或组，然后单击"添加"按钮。

    5. 在完成向角色添加用户和组后，单击"确定"按钮。

    若要从角色中删除用户或组，请在"成员资格"选项卡中选择该用户或组，然后单击"删除"按钮。

  5. 在"挖掘模型角色"对话框中单击"确定"按钮。

请参见

创建挖掘模型角色


如何在数据库角色中创建用于维度安全性的自定义规则

在数据库角色中创建维度安全的自定义规则

  1. 在 Analysis Manager 树窗格中，右击包含数据库角色的数据库，然后单击"管理角色"命令。

  2. 在数据库角色管理器中，选择要在其中创建自定义规则的数据库角色，然后单击"编辑"按钮。如果该数据库角色尚不存在，则必须在执行该过程之前创建它。有关更多信息，请参见创建数据库角色。

  3. 在"数据库角色"对话框中单击"维度"选项卡。

  4. 在显示要为其创建自定义规则的维度和权限的行中，在"规则"列中选择"自定义"选项。有关权限的更多信息，请参见维度安全性。

  5. 在同一行中，单击"自定义设置"列的编辑（"..."）按钮。

  6. （可选）在"自定义维度安全"对话框中的"描述"框中，键入自定义规则的描述。

  7. 如果要限制对级别或成员的访问，请决定是使用"基本"选项卡还是使用"高级"选项卡，您可以任选其一。"基本"选项卡较易使用并可以满足大多数需要。"高级"选项卡则更灵活，但您必须编写多维表达式 (MDX)。

  8. （可选）使用"基本"选项卡限制对级别或成员的访问：
    1. 单击"基本"选项卡。

    2. （可选）在"顶层"框中选择最高的可访问级别。

    3. （可选）在"底层"框中选择最低的可访问级别。

    4. 选择"选定所有成员"选项以选择"成员"框中的所有成员，或者选择"取消选定所有成员"选项以清除对"成员"框中所有成员的选择。

    5. （可选）在"成员"框中，选中成员旁边的复选框以允许对该成员进行访问。（该操作还会选择在"成员"框中可见的该成员的后代和祖先。）清除成员旁边的复选框即可拒绝对该成员的访问。（该操作还会清除在"成员"框中可见的该成员的后代和祖先。）

      重要 如果要限制对级别或成员的访问，请考虑在"公用"选项卡中选择"启用 — 显示可见总计"选项。如果不这样选择，而是使用直观合计的默认设置（即"禁用 — 不显示直观合计"），那么可能会产生安全漏洞。这些漏洞使角色中的最终用户得以推知他们本无权限访问的成员的值。有关更多信息，请参见维度安全性中的自定义规则中的示例 4、示例 6、示例 8 及示例 9。

  9. （可选）若要使用"高级"选项卡来限制对级别或成员的访问，请单击"高级"选项卡，然后使用下列的一个或多个框：
    • 在"顶层"框中，键入一个取值为级别的 MDX 表达式，该级别将为最高的可访问级别。

    • 在"底层"框中，键入一个取值为级别的 MDX 表达式，该级别将为最低的可访问级别。

    • 在"允许的成员"框中，键入可访问成员集的 MDX 表达式。除非这些成员的后代在底层的下面或者"拒绝的成员"框中的表达式拒绝对它们进行访问，否则也可以访问这些成员的后代。将在顶层级别看到所允许成员的祖先。

    • 在"拒绝的成员"框中，键入不可访问成员集的 MDX 表达式。这些成员的后代也不能被访问，除非"允许的成员"框中的表达式允许对它们的访问。

    有关更多信息，请参见维度安全性中的自定义规则。

    重要 如果要限制对级别或成员的访问，请考虑在"公用"选项卡中选择"启用 — 显示可见总计"选项。如果不这样选择，而是使用直观合计的默认设置（即"禁用 — 不显示直观合计"），那么可能会产生安全漏洞。这些漏洞使角色中的最终用户得以推知他们本无权限访问的成员的值。有关更多信息，请参见维度安全性中的自定义规则中的示例 4、示例 6、示例 8 及示例 9。

  10. （可选）若要控制直观合计，请单击"公用"选项卡，然后在"直观合计"区域中执行下列操作之一：
    • 若要启用所有可查看级别的可见合计，请选择"启用 — 显示可见合计"选项。

    • 若要禁用所有可查看级别的可见合计，请选择"禁用 — 不显示可见合计"选项。

    • 若要启用某个级别及其上面级别的可见合计而禁用其下面级别的可见合计，请选择"自定义 — 显示从下列级别开始向上的各个级别的可见合计"选项，并在它下面的框中键入该级别的 MDX 表达式。也可以不必键入，而是单击框旁边的编辑（"..."）按钮访问 MDX 生成器，可以在该生成器中的"数据"框内选择级别，然后将其拖到"MDX 表达式"框内。

    说明 不能为包含非重复计数度量值的多维数据集启用直观合计。有关更多信息，请参见使用聚合函数。

  11. （可选）若要选择默认成员，请单击"公用"选项卡，选择"定义默认成员并用 MDX 指定"选项，然后在它下面的框中键入该默认成员的 MDX 表达式。也可以不必键入，而是单击框旁边的编辑（"..."）按钮访问 MDX 生成器，可以在该生成器中的"数据"框内选择默认成员，然后将其拖到"MDX 表达式"框内。

  12. 单击"确定"按钮。

  13. 在"数据库角色"对话框中单击"确定"按钮。

请参见

定义维度安全性的自定义规则


如何在多维数据集角色中创建用于维度安全性的自定义规则

在多维数据集角色中创建维度安全的自定义规则

  1. 在 Analysis Manager 树窗格中，右击与要在其中创建自定义规则的多维数据集角色相关的多维数据集，然后单击"管理角色"命令。

  2. 在多维数据集角色管理器中，选择要在其中创建自定义规则的多维数据集角色，然后单击"编辑"按钮。如果该多维数据集角色尚不存在，则必须在执行本过程之前创建它。有关更多信息，请参见创建多维数据集角色。

  3. 在"多维数据集角色"对话框中单击"维度"选项卡。

  4. 在同一行中，单击"自定义设置"列的编辑（"..."）按钮。

  5. （可选）在"自定义维度安全"对话框中的"描述"框中，键入自定义规则的描述。

  6. 在显示要为其创建自定义规则的维度和权限的行中，在"规则"列中选择"自定义"选项。有关权限的更多信息，请参见维度安全性。

  7. 如果要限制对级别或成员的访问，请决定是使用"基本"选项卡还是使用"高级"选项卡，您可以任选其一。"基本"选项卡较易使用并可以满足大多数需要。"高级"选项卡则更灵活，但您必须编写多维表达式 (MDX) 表达式。

  8. （可选）使用"基本"选项卡限制对级别或成员的访问：
    1. 单击"基本"选项卡。

    2. （可选）在"顶层"框中选择最高的可访问级别。

    3. （可选）在"底层"框中选择最低的可访问级别。

    4. 选择"选定所有成员"选项以选择"成员"框中的所有成员，或者选择"取消选定所有成员"选项以清除对"成员"框中所有成员的选择。

    5. （可选）在"成员"框中，选中成员旁边的复选框以允许对该成员进行访问。（该操作还会选择在"成员"框中可见的该成员的后代和祖先。）清除成员旁边的复选框即可拒绝对该成员的访问。（该操作还会清除在"成员"框中可见的该成员的后代和祖先。）

      重要 如果要限制对级别或成员的访问，请考虑在"公用"选项卡中选择"启用 — 显示可见总计"选项。如果不这样选择，而是使用直观合计的默认设置（即"禁用 — 不显示直观合计"），那么可能会产生安全漏洞。这些漏洞使角色中的最终用户得以推知他们本无权限访问的成员的值。有关更多信息，请参见维度安全性中的自定义规则中的示例 4、示例 6、示例 8 及示例 9。

  9. （可选）若要使用"高级"选项卡来限制对级别或成员的访问，请单击"高级"选项卡，然后使用下列的一个或多个框：
    • 在"顶层"框中，键入一个取值为级别的 MDX 表达式，该级别将为最高的可访问级别。

    • 在"底层"框中，键入一个取值为级别的 MDX 表达式，该级别将为最低的可访问级别。

    • 在"允许的成员"框中，键入可访问成员集的 MDX 表达式。除非这些成员的后代在底层的下面或者"拒绝的成员"框中的表达式拒绝对它们进行访问，否则也可以访问这些成员的后代。将在顶层级别看到所允许成员的祖先。

    • 在"拒绝的成员"框中，键入不可访问成员集的 MDX 表达式。这些成员的后代也不能被访问，除非"允许的成员"框中的表达式允许对它们的访问。

    有关更多信息，请参见维度安全性中的自定义规则。

    重要 如果要限制对级别或成员的访问，请考虑在"公用"选项卡中选择"启用 — 显示可见总计"选项。如果不这样选择，而是使用直观合计的默认设置（即"禁用 — 不显示直观合计"），那么可能会产生安全漏洞。这些漏洞使角色中的最终用户得以推知他们本无权限访问的成员的值。有关更多信息，请参见维度安全性中的自定义规则中的示例 4、示例 6、示例 8 及示例 9。

  10. （可选）若要控制直观合计，请单击"公用"选项卡，然后在"直观合计"区域中执行下列操作之一：
    • 若要启用所有可查看级别的可见合计，请选择"启用 — 显示可见合计"选项。

    • 若要禁用所有可查看级别的可见合计，请选择"禁用 — 不显示可见合计"选项。

    • 若要启用某个级别及其上面级别的可见合计而禁用其下面级别的可见合计，请选择"自定义 — 显示从下列级别开始向上的各个级别的可见合计"选项，并在它下面的框中键入该级别的 MDX 表达式。也可以不必键入，而是单击框旁边的编辑（"..."）按钮访问 MDX 生成器，可以在该生成器中的"数据"框内选择级别，然后将其拖到"MDX 表达式"框内。

    说明 不能为包含非重复计数度量值的多维数据集启用直观合计。有关更多信息，请参见使用聚合函数。

  11. （可选）若要选择默认成员，请单击"公用"选项卡，选择"定义默认成员并用 MDX 指定"选项，然后在它下面的框中键入该默认成员的 MDX 表达式。也可以不必键入，而是单击框旁边的编辑（"..."）按钮访问 MDX 生成器，可以在该生成器中的"数据"框内选择默认成员，然后将其拖到"MDX 表达式"框内。

  12. 单击"确定"按钮。

  13. 在"多维数据集角色"对话框中单击"确定"按钮。

请参见

定义维度安全性的自定义规则


如何创建单元安全性的自定义规则

创建单元安全的自定义规则

  1. 在 Analysis Manager 树窗格中，右击与要在其中创建自定义规则的多维数据集角色相关的多维数据集，然后单击"管理角色"命令。

  2. 在多维数据集角色管理器中，选择要在其中创建自定义规则的多维数据集角色，然后单击"编辑"按钮。如果该多维数据集角色尚不存在，则必须在执行本过程之前创建它。有关更多信息，请参见创建多维数据集角色。

  3. 在"多维数据集角色"对话框中单击"单元"选项卡。

  4. 在"单元安全性策略"框中选择"高级"按钮。

  5. 在显示要为其创建自定义规则的权限的行中，在"规则"列中选择"自定义"选项。有关权限的更多信息，请参见单元安全性。

  6. 在同一行中，单击"自定义设置"列的编辑（"..."）按钮。

  7. （可选）在"多维数据集单元安全性"对话框中的"描述"框中，键入自定义规则的描述。

  8. 在"MDX"框中，键入多维表达式 (MDX) 表达式，以允许或拒绝对特定多维数据集单元进行访问。也可以不必键入，而单击该框旁边的编辑（"..."）按钮访问 MDX 生成器，在其中用拖放技术创建该表达式。有关更多信息，请参见自定义单元安全性规则。

  9. 单击"确定"按钮。

  10. 在"多维数据集角色"对话框中单击"确定"按钮。

请参见

定义单元安全性的自定义规则


管理多维数据集存储

下列主题描述管理多维数据集存储的过程：

  • 如何启动分区向导

  • 如何处理分区

  • 如何合并两个分区

  • 如何指定链接多维数据集的数据源

  • 如何创建链接多维数据集

  • 如何处理链接多维数据集

请参见

分区简介

分区向导

链接多维数据集


如何启动分区向导

启动分区向导

  1. 在 Analysis Manager 树窗格中，在要在其中创建分区的数据库的下面，展开"多维数据集"文件夹，然后展开要在其中创建分区的多维数据集。

  2. 右击"分区"文件夹，然后单击"新建分区"命令。

请参见

创建分区


如何处理分区

处理分区

  1. 在 Analysis Manager 树窗格中，在包含该分区的数据库下，展开"多维数据集"文件夹，展开包含该分区的多维数据集，然后展开"分区"文件夹。

  2. 右击该分区，然后单击"处理"命令。

  3. 在"处理"对话框中，等待该分区完成处理或者单击"停止"按钮以中断并取消处理。

在处理完成后，在关闭"处理"对话框之前，您可以查看用来处理该分区的 SQL 语句。

如何查看 SQL 语句

请参见

创建分区


如何合并两个分区

合并两个分区

  1. 在 Analysis Manager 树窗格中，在包含这两个分区的数据库下，展开"多维数据集"文件夹，展开包含这两个分区的多维数据集，然后展开"分区"文件夹。

  2. 右击源分区，然后单击"合并"命令。

  3. 在"合并分区"对话框中选择目标分区，然后单击"合并"按钮。

  4. 在"处理"对话框中，等待完成合并处理或者单击"停止"按钮以中断并取消处理。

请参见

合并分区


如何指定链接多维数据集的数据源

指定链接多维数据集的数据源

  1. 在 Analysis Manager 树窗格中，展开要在其中创建链接多维数据集的数据库。

  2. 右击"数据源"文件夹，然后单击"新建数据源"命令。

  3. 在"数据链接属性"对话框中的"提供程序"选项卡上，单击"用于 OLAP 服务 8.0 的 Microsoft OLE DB 提供程序"或其它遵守 1999 年 3 月发布的 OLE DB 规范 (2.6) 的 OLAP 部分的提供程序。

  4. 在"连接"选项卡上的"数据源"框中，键入在其中定义源多维数据集的分析服务器的名称。

  5. 在"输入要使用的初始目录"框中，键入在其中定义源多维数据集的数据库的名称。

  6. 若要判定数据源连接是否正确，请单击"测试连接"按钮。如果连接正确，则会收到信息说明测试连接成功。单击"确定"按钮清除该信息。

  7. 在"数据链接属性"对话框中单击"确定"按钮。

请参见

链接多维数据集


如何创建链接多维数据集

创建链接多维数据集

  1. 在 Analysis Manager 树窗格中，展开要在其中创建链接多维数据集的分析服务器和数据库。

    说明 分析服务器不能与链接多维数据集的数据源中的服务器是同一服务器。

  2. 右击"多维数据集"文件夹，然后单击"新建链接多维数据集"按钮。

  3. 在"链接多维数据集"对话框的"名称"框中，键入该链接多维数据集的名称。

  4. 在"源多维数据集"框中，展开包含源多维数据集的数据源，然后选择该源多维数据集。

  5. 如果想立即处理链接多维数据集，请选中"创建新多维数据集后进行处理"复选框。只有在对链接多维数据集进行处理之后，最终用户方可连接到它。

请参见

链接多维数据集


如何处理链接多维数据集

处理链接多维数据集

  1. 在 Analysis Manager 树窗格中，在包含链接多维数据集的数据库下，展开"多维数据集"文件夹。

  2. 右击该链接多维数据集，然后单击"处理"命令。

  3. 在"处理多维数据集"对话框中单击"处理"按钮，然后单击"确定"按钮。

  4. 在"处理"对话框中，等待该链接多维数据集完成处理，或者单击"停止"按钮以中断并取消处理。

说明 只有在最终用户重新连接到服务器计算机之后，他们才可以看到新处理的链接多维数据集。

请参见

链接多维数据集

管理链接多维数据集


增强维度

下列主题描述使用可选功能增强维度的过程：

  • 如何在共享维度中创建成员属性

  • 如何为共享维度创建自定义汇总运算符

  • 如何为专用维度创建自定义汇总运算符

  • 如何创建或选择存储自定义成员公式的列

  • 如何在写启用维度中创建自定义成员公式

  • 如何创建成员组

  • 如何在维度编辑器中创建具有多个层次结构的维度

  • 如何在维度向导中创建具有多个层次结构的维度

  • 如何向现有维度添加层次结构

请参见

用可选功能增强维度


如何在共享维度中创建成员属性

在共享维度中创建成员属性

  1. 在 Analysis Manager 树窗格中，展开包含该维度的数据库，然后展开"共享维度"文件夹。

  2. 右击要在其中创建成员属性的共享维度，然后单击"编辑"命令。

  3. 在维度编辑器中，右击要在其中创建成员属性的级别，然后单击"新建成员属性"命令。

  4. 在"插入成员属性"对话框中，单击存储该成员属性值的列，然后单击"确定"按钮。

请参见

创建成员属性


如何为共享维度创建自定义汇总运算符

为共享维度创建自定义汇总运算符

  1. 右击将包含自定义汇总运算符的维度以访问该维度，然后单击"编辑"命令。

  2. 在维度编辑器的树窗格内，单击级别来为其创建自定义汇总运算符。

  3. 如果属性窗格未展开，请单击树窗格下方的"属性"按钮以展开它。

  4. 在属性窗格中单击"高级"选项卡。

  5. 单击"一元运算符"旁的值，然后单击编辑（"..."）按钮。

  6. 在"定义一元运算符列"对话框中，选中"启用一元运算符"复选框，以为该级别启用自定义汇总运算符。

  7. 创建新列或选择一个现有列来存储自定义汇总运算符：
    • 若要在维度表中创建新列，请选择"创建新列"选项，然后在"新列名"框中键入新列的名称。

      维度表可有多个列（每个级别一列）来存储自定义汇总运算符。因此，建议新列名应标识存储成员的列（即在第 2 步中为级别选择的列），对这些成员将要应用自定义汇总运算符。例如，如果在第 2 步中选择了 Store Country 级别，并且它的成员存储在 store_country 列中，则可在"新列名"框中，键入：

      store_country_custom_rollup_operator

      说明 如果维度并非写启用，则必须使用维度编辑器或 Analysis Manager 之外的某种工具来向新列添加值。

    • 若要选择维度表中现有的列，请选择"使用现有的列"选项，然后在"现有列"框中选择该列。
  8. 在"定义一元运算符列"对话框中单击"确定"按钮。

  9. 在"文件"菜单上单击"保存"命令。

    在为某个级别执行一次本过程以后，只要存储该自定义汇总运算符的列保留在维度表中，就不必重复本过程。

  10. （可选）若要浏览自定义汇总运算符，请单击"数据"选项卡，然后展开维度成员窗格。自定义汇总运算符紧接着成员名加以指明。如果在第 7 步中创建了一个新的未填充的列，则默认汇总运算符加法运算符 (+) 将显示在成员名旁。

  11. （可选）若要编辑写启用父子维度中的自定义汇总运算符，请从维度成员窗格中选择一个维度成员，然后在成员属性窗格中的 UNARY_OPERATOR 旁边的列中选择一个运算符。
    • 编辑后，单击"文件"菜单上的"保存"命令将更改提交给维度表。

      说明 在编辑写启用维度以前，该维度必须包含于某个多维数据集中，并且接着必须处理该多维数据集。


如何为专用维度创建自定义汇总运算符

为专用维度创建自定义汇总运算符

  1. 右击具有将包含自定义汇总运算符的专用维度的多维数据集以访问该多维数据集，然后单击"编辑"命令。

  2. 在维度编辑器的树窗格内，单击级别来为其创建自定义汇总运算符。

  3. 如果属性窗格未展开，请单击树窗格下方的"属性"按钮以展开它。

  4. 在属性窗格中单击"高级"选项卡。

  5. 单击"一元运算符"旁的值，然后单击编辑（"..."）按钮。

  6. 在"定义一元运算符列"对话框中，选择"启用一元运算符"复选框，以为该级别启用自定义汇总运算符。

  7. 创建新列或选择一个现有列来存储自定义汇总运算符：
    • 若要在维度表中创建新列，请选择"创建新列"选项，然后在"新列名"框中键入新列的名称。

      维度表可有多个列（每个级别一列）来存储自定义汇总运算符。因此，建议新列名应标识存储成员的列（即在第 2 步中为级别选择的列），对这些成员将要应用自定义汇总运算符。例如，如果在第 2 步中选择了 Store Country 级别，并且它的成员存储在 store_country 列中，则可在"新列名"框中，键入：

      store_country_custom_rollup_operator

      说明 如果维度并非写启用，则必须使用维度编辑器或 Analysis Manager 之外的某种工具来向新列添加值。

    • 若要选择维度表中现有的列，请选择"使用现有的列"选项，然后在"现有列"框中选择该列。
  8. 在"定义一元运算符列"对话框中单击"确定"按钮。

  9. 在"文件"菜单上单击"保存"命令。

    在为某个级别执行一次本过程以后，只要存储该自定义汇总运算符的列保留在维度表中，就不必重复本过程。

  10. （可选）若要浏览存储于现有列中的自定义汇总运算符，请单击"架构"选项卡，右击包含所存储的运算符的维度表，然后单击"浏览数据"命令。于第 7 步中指定的各个列中指明前 1000 行数据的自定义汇总运算符。

  11. （可选）若要编辑写启用维度的自定义汇总运算符，请右击多维数据集编辑器树窗格中的维度，然后单击"浏览"命令以显示维度浏览器。在维度浏览器树窗格中，选择具有想要更改的自定义汇总运算符的维度成员。单击成员属性窗格中 UNARY_OPERATORS 旁边的值以修改所选成员的值。


如何创建或选择存储自定义成员公式的列

创建或选择存储自定义成员公式的列

  1. 访问将包含自定义成员公式的维度：
    • 如果维度是共享的，在 Analysis Manager 树窗格中右击维度，然后单击"编辑"命令。

    • 如果维度是专用的，在 Analysis Manager 树窗格中右击包含维度的多维数据集，然后单击"编辑"命令。在多维数据集编辑器树窗格中，展开该维度以显示它的级别。
  2. 在编辑器树窗格中，选择要为其创建自定义成员公式的级别。

  3. 如果属性窗格未展开，请单击树窗格下方的"属性"按钮以展开它。

  4. 在属性窗格中单击"高级"选项卡。

  5. 单击"自定义成员"旁边的值，然后单击编辑（"..."）编辑按钮。

  6. 在"定义自定义成员列"对话框中，选择"启用自定义成员"选项。

  7. 创建或选择存储自定义成员公式的列：
    • 若要在维度表中创建新列，请选择"创建新列"选项，然后在"新列名"框中键入新列的名称。

      维度表可以有多个存储自定义成员公式的列（每个级别一列）。因此，建议新列名应标识存储成员的列（即在第 2 步中为级别选择的列），对这些成员将要应用自定义成员公式。例如，如果在第 2 步中选择了 Store Country 级别，并且它的成员存储在 store_country 列中，则可在"新列名"框中，键入：

      store_country_custom_member_formula
    • 若要选择维度表中现有的列，请选择"使用现有的列"选项，然后在"现有列"框中选择该列。

      注意 如果选择现有列，则自定义成员公式将覆盖其原有内容。

  8. 在"自定义成员列"对话框中单击"确定"按钮。

  9. 在"文件"菜单上单击"保存"命令。

在为某个级别执行一次本过程以后，只要存储该自定义成员公式的列保留在维度表中，就不必重复本过程。

请参见

创建自定义成员公式


如何在写启用维度中创建自定义成员公式

在写启用的维度中创建自定义成员公式

  1. （只有父子维度才可以是写启用的。）访问将包含自定义成员公式的维度：
    • 如果维度是共享的，在 Analysis Manager 树窗格中右击维度，然后单击"编辑"命令。在维度编辑器中，在"视图"菜单上单击"数据"命令。

    • 如果维度是专用的，在 Analysis Manager 树窗格中右击包含维度的多维数据集，然后单击"编辑"命令。在多维数据集编辑器树窗格中，右击该维度，然后单击"浏览"命令。
  2. 在维度成员窗格中，选择要为其创建自定义成员公式的成员。

  3. 在自定义成员公式窗格中创建自定义成员公式。可以使用下列方法的任意组合：
    • 类型。

    • 单击算术运算符按钮和圆括号按钮。

    • 单击编辑（"..."）按钮打开 MDX 生成器，在该生成器中可用拖放技术来构造自定义成员公式。在 MDX 生成器中完成操作后单击"确定"按钮。
  4. 如果该维度是专用的，则在维度浏览器中单击"关闭"按钮。

  5. 在编辑器中，在"文件"菜单上单击"保存"命令。

请参见

创建自定义成员公式


如何创建成员组

创建成员组

  1. 访问将包含成员组的维度：
    • 如果维度是共享的，在 Analysis Manager 树窗格中右击维度，然后单击"编辑"命令。

    • 如果维度是专用的，在 Analysis Manager 树窗格中右击包含维度的多维数据集，然后单击"编辑"命令。在多维数据集编辑器树窗格中，展开该维度以显示它的级别。
  2. 创建所包含的成员将成为该成员组子代的级别的复本。在原级别的上一级创建该复本。为此，按以下步骤操作：
    1. 在编辑器树窗格中，选择要复制的级别。

    2. 如果属性窗格未展开，请单击树窗格下方的"属性"按钮以展开它。

    3. 在属性窗格中单击"基本"选项卡。

    4. 记录 Member Key Column 属性的值。

    5. 在"插入"菜单中单击"级别"命令。

    6. 在"选择列"对话框中选择在步骤 d 中记录的列，然后单击"确定"按钮。

    7. 选择新级别。

    8. 将新级别拖到原级别上一级的位置。

    9. 在属性窗格中，确保该新级别中除 Name 之外的所有属性值都与原级别相同。
  3. 在编辑器树窗格中，选择要在其中创建成员组的级别。（选择第 2 步中的新级别，而不是原级别。）

  4. 在属性窗格中单击"高级"选项卡。

  5. 对于 Grouping 属性选择 Automatic。

  6. 如果不想让最终用户看到包含该成员组的级别，请按照以下步骤进行操作：
    1. 在编辑器树窗格中，选择包含该成员组的级别。

    2. 在属性窗格中单击"高级"选项卡。

    3. 将 Visible 属性的值更改为 False。
  7. 在编辑器中，在"文件"菜单上单击"保存"命令。

请参见

创建成员组


如何在维度向导中创建具有多个层次结构的维度

使用维度向导创建具有单个已定义层次结构的维度

  1. 在 Analysis Manager 树窗格中，展开要在其中创建具有多个层次结构的维度的数据库。

  2. 右击"共享维度"文件夹，指向"新建维度"菜单，然后单击"向导"命令。

  3. 在向导的第二步选择"星型架构：单个维度表"选项或"雪花架构：多个相关性维度表"。

  4. 按照其余的向导步骤为维度定义级别和各个选项。

  5. 在向导的"完成"步骤中，在"维度名称"框内输入一个名称。

  6. 选择"创建维度的一个层次结构"框。

  7. 在"层次结构名称"框中输入一个名称。

  8. 单击"完成"按钮以完成向导。在完成该向导之后，即会显示维度编辑器以便进一步完善该维度。

  9. （可选）若要创建维度的其它层次结构，请从维度编辑器的"文件"菜单指向"新建维度"子菜单，然后单击"向导"命令。按照下一个过程"使用维度向导创建具有另外定义的层次结构的维度"中的步骤，从第 3 步开始操作。

使用维度向导创建具有另外定义的层次结构的维度

  1. 在 Analysis Manager 树窗格中，展开要在其中为至少具有一个命名层次结构的维度定义另外的层次结构的数据库。

  2. 右击"共享维度"文件夹，指向"新建维度"菜单，然后单击"向导"命令。

  3. 在维度向导的第二步选择"星型架构：单个维度表"选项或"雪花架构：多个相关性维度表"。

  4. 按照其余的向导步骤为维度定义级别和各个选项。

  5. 选择"创建维度的一个层次结构"框。

  6. 从"维度名称"框选择一个具有已定义层次结构的维度的名称。

  7. 在"层次结构名称"框中输入一个名称。

  8. 单击"完成"按钮以完成向导。在完成该向导之后，即会显示维度编辑器以便进一步完善该维度。

  9. （可选）若要创建维度的其它层次结构，请从维度编辑器的"文件"菜单指向"新建维度"子菜单，然后单击"向导"命令。重复第 3 步到第 8 步。

请参见

创建有多重层次结构的维度

维度层次结构


如何在维度编辑器中创建具有多个层次结构的维度

使用维度编辑器创建带有多层次结构的维度

  1. 在 Analysis Manager 树窗格中，展开要在其中创建具有多个层次结构的维度的数据库。

  2. 右击"共享维度"文件夹，指向"新建维度"菜单，然后单击"编辑器"命令。

    在"选择维度表"对话框中展开数据源，单击用于该维度的维度表，然后单击"确定"按钮。即会显示维度编辑器，维度表显示在"架构"选项卡中。

  3. 若要向该维度中添加更多的表，请在"插入"菜单上单击"表"命令，然后使用"选择表"对话框。

  4. 如果该维度包含多个表，则要确保每个表都与另一个表相联接。若要联接两列，请在"架构"选项卡中将其中一列拖到另一列上。

  5. 在维度中创建级别。首先创建最高、综合性最强的级别，然后逐步创建较低、较具体的级别，这种方法最方便。否则，如果启用成员计数，则会在每次添加级别时显示确认对话框。对于要创建的每个级别：
    1. 在"插入"菜单中单击"级别"命令。

    2. 在"插入级别"对话框中，选择该级别基于的列，然后单击"确定"按钮。在创建一个级别后，该级别即会显示在树窗格中。
  6. （可选）在属性窗格中，修改该维度及其级别的属性。有关这些属性的更多信息，请参见属性窗格（维度编辑器架构视图）。

  7. 若要保存该维度，请在"文件"菜单上单击"保存"命令，在"新维度名称"对话框中键入该维度的名称。若要定义维度的层次结构，该名称必须具有"维度名.层次结构名"的形式，这里维度名是唯一的（如果没有现有层次结构）或与另一个层次结构相同（如果它是维度的另一个层次结构）；而层次结构名对于每个定义的层次结构均是唯一的。单击"确定"按钮。

  8. （可选）若要创建其它层次结构，请重复第 2 步到第 8 步。

请参见

创建带有多层次结构的维度

维度层次结构


如何向现有维度添加层次结构

向具有一个先前标识的层次结构的维度添加层次结构

  1. 在 Analysis Manager 树窗格中，展开要在其中创建具有多个层次结构的维度的数据库，然后展开"共享维度"文件夹。

  2. 右击具有一个已标识层次结构的共享维度以向其添加层次结构，然后单击"编辑"命令。这种维度的名称中的句点用于分隔维度名部分和层次结构名部分。

  3. 在维度编辑器中，通过添加或删除级别或更改维度的架构来编辑维度。有关更多信息，请参见用编辑器创建共享维度

  4. 编辑了维度之后，若要保存具有新层次结构的维度，请在"文件"菜单上单击"另存为"命令以显示"维度：新名称"对话框。若要添加新层次结构，请更改"新名称"框中跟随在句点后面的名称的层次结构部分。（不要更改句点前的维度名称部分。）单击"确定"按钮。

    重要 当为维度创建另外的层次结构时，此名称的层次结构部分不能等于维度中任何当前或将来的级别名称或成员名称，因为使用该维度的查询可能不明确。

  5. （可选）若要创建其它层次结构，请重复第 2 步到第 5 步。

向不带先前标识的层次结构的维度添加层次结构

  1. 在 Analysis Manager 树窗格中，展开要在其中创建具有多个层次结构的维度的数据库，然后展开"共享维度"文件夹。

  2. 右击具有未标识的层次结构的共享维度以添加层次结构，然后单击"编辑"命令。具有未标识层次结构的维度的名称是那些不包含句点的名称。

  3. 在维度编辑器中，若要基于所选维度创建具有新层次结构的新维度，请在"文件"菜单上单击"另存为"命令以显示"维度：新名称"对话框。在"新名称"框内提供一个不同的维度名称，其后跟有句点和层次结构名称。单击"确定"按钮。

    重要 当创建具有多个层次结构的维度时，此名称的层次结构部分不能等于维度中任何当前或将来的级别名或成员名，因为使用该维度的查询可能不明确。

  4. （可选）在维度编辑器中，通过添加或删除级别或更改层次结构的架构来编辑维度的层次结构。有关更多信息，请参见用编辑器创建共享维度

  5. 编辑了维度及其层次结构之后，在"文件"菜单上单击"保存"命令以保存更改。

  6. （可选）若要为维度创建另外的层次结构，请在"文件"菜单上单击"另存为"命令以显示"维度：新名称"对话框。若要添加新层次结构，请更改"新名称"框中跟随在句点后面的名称的层次结构部分。（该情况下不要更改句点前面的维度名称部分。）单击"确定"按钮。

  7. 重复第 4 步到第 6 步编辑并保存新层次结构。

请参见

向现有维度添加层次结构

维度层次结构


使用可选功能增强多维数据集

下列主题描述使用可选功能增强多维数据集的过程。各个主题按照其所支持的功能进行分组。

  • 计算单元
    • 如何创建计算单元

    • 如何将计算单元导入到虚拟多维数据集内

    • 如何编辑计算单元定义
  • 计算成员
    • 如何重命名计算成员

    • 如何在常规多维数据集内创建计算成员

    • 如何将计算成员导入到虚拟多维数据集内

    • 如何在虚拟多维数据集内编辑计算成员

    • 如何在虚拟多维数据集内创建计算成员
  • 命名集
    • 如何创建常规多维数据集的命名集

    • 如何将命名集导入虚拟多维数据集

    • 如何编辑虚拟多维数据集的命名集

    • 如何创建虚拟多维数据集的命名集
  • 对策
    • 如何在常规多维数据集内创建对策

    • 如何将对策导入到虚拟多维数据集内

    • 如何在虚拟多维数据集内编辑对策

    • 如何在虚拟多维数据集内创建对策

    • 如何测试对策
  • 写启用多维数据集
    • 如何写启用多维数据集

    • 如何浏览多维数据集的回写数据

    • 如何删除多维数据集的回写数据并将其写禁用

    • 如何将多维数据集的回写数据转换为分区和写禁用该多维数据集
  • 钻取
    • 如何指定常规多维数据集的钻取选项

    • 如何指定虚拟多维数据集的钻取选项

    • 如何指定链接多维数据集的钻取选项

    • 如何指定分区的钻取选项

请参见

用可选功能增强多维数据集


如何创建计算单元

创建计算单元

  1. 在 Analysis Manager 树窗格中，在要将计算单元添加到的数据库下，展开"多维数据集"文件夹。

  2. 右击要将计算单元添加到其中的多维数据集或虚拟多维数据集，然后单击"编辑"按钮。

  3. 在多维数据集编辑器或虚拟多维数据集编辑器中，在"插入"菜单上单击"计算单元"命令。

  4. 遵循向导中的步骤。

完成后，新计算单元定义在多维数据集编辑器或虚拟多维数据集编辑器的树窗格中的计算单元下出现。

请参见

计算单元

如何编辑计算单元定义

如何将计算单元导入到虚拟多维数据集内


如何将计算单元导入到虚拟多维数据集内

将计算单元导入到虚拟多维数据集内

  1. 在 Analysis Manager 树窗格中，在包含计算单元的数据库下，展开"多维数据集"文件夹。

  5. 右击要将计算单元导入到其中的虚拟多维数据集，然后单击"编辑"。

  6. 在虚拟多维数据集编辑器中，右击"计算单元"文件夹，然后单击"导入计算单元"。

  7. 在"可用计算单元"下，选中要导入的计算单元定义旁的复选框。如果要导入多维数据集中的所有计算单元定义，请选择该多维数据集旁边的复选框。

    若要导入的计算单元定义不在虚拟多维数据集的组件多维数据集中，请清除"只显示源多维数据集"复选框。

完成之后，该导入的计算单元定义在虚拟多维数据集编辑器的树窗格中"计算单元"文件夹下出现。

请参见

计算单元

如何创建计算单元

如何编辑计算单元定义


如何编辑计算单元定义

编辑计算单元定义

  1. 在 Analysis Manager 树窗格中，在包含计算单元的数据库下，展开"多维数据集"文件夹。

  2. 右击包含计算单元定义的多维数据集或虚拟多维数据集，然后单击"编辑"。

  3. 在多维数据集编辑器或虚拟多维数据集编辑器的树窗格中，展开"计算单元"文件夹。

  4. 右击要编辑的计算单元定义，然后单击"编辑"。

  5. 按"计算单元向导"中的步骤对计算单元定义做出更改。

请参见

计算单元

如何创建计算单元

如何将计算单元导入到虚拟多维数据集内


如何重命名计算成员

重命名计算成员

  1. 在 Analysis Manager 树窗格中，在包含计算成员的数据库下展开"多维数据集"文件夹。

  2. 右击包含该计算成员的多维数据集，然后单击"编辑"命令。

  3. 在多维数据集编辑器树窗格中，右击该计算成员，然后单击"重命名"命令。

  4. 在该计算成员图标旁边的框中键入新名称，然后单击该框的外部。

请参见

创建计算成员


如何在常规多维数据集内创建计算成员

在常规多维数据集内创建计算成员

  1. 在 Analysis Manager 树窗格中，在要在其中创建计算成员的数据库下展开"多维数据集"文件夹。

  2. 右击要在其中创建计算成员的多维数据集，然后单击"编辑"命令。

  3. 在多维数据集编辑器中，在"插入"菜单上单击"计算成员"命令。

  4. 在计算成员生成器中，在"父维度"框中选择将包含该计算成员的维度或选择"度量值"选项。

  5. 在"父成员"框中指定要包含该计算成员的成员。单击"更改"按钮以选择所显示的成员之外的成员。（如果在步骤 4 中选择只有一个级别的维度或选择"度量值"选项，则无法使用"更改"按钮。）

  6. 在"成员名称"框中，键入该计算成员的名称。

  7. 在"值表达式"中，构造一个用于产生计算成员值的表达式。用下列方法的任意组合来向表达式中添加项目：
    • 从"数据"和"函数"框中拖动项目。

    • 单击"数据"和"函数"框中的项目，然后单击"插入"按钮。

    • 单击算术运算符和数字按钮。

    • 类型。从除 Microsoft® SQL Server™ 2000 Analysis Services 函数库之外的其它库中添加函数时，要求使用此方法。
  8. （可选）若要注册另外的函数库，请单击"注册"按钮。

  9. 若要关闭计算成员生成器，请单击"确定"按钮。

  10. 若要保存具有新计算成员的多维数据集，请在多维数据集编辑器中单击"文件"菜单上的"保存"命令。
示例

若要手工输入一个值表达式定义为 1 - (Store Cost/Store Sales) 的计算成员，查找各销售点 (Store) 的平均利润率 (Average Profit Margin)，则请执行下列步骤：

  1. 在"值表达式"框中键入 1-。

  2. 单击开始括号"("运算符按钮，然后在"值表达式"框中单击括号的紧右边以放置光标。

  3. 在"数据"框中展开"度量值"和"度量值级别"以显示各个度量值。

  4. 选择 Store Cost，然后单击"插入"。

  5. 在"值表达式"框中，将光标放到刚输入的短语的结尾处，然后键入斜线标记 (/)。

  6. 在"数据"框中，选择 Store Sales。

  7. 单击"插入"。

  8. 单击结束括号")"运算符按钮。

    下面的表达式出现在"值表达式"框中：

    1-([Measures].[Store Cost]/[Measures].[Store Sales])
  9. 在"成员名称"框中，键入 Average Store Margin，然后单击"确定"。

请参见

在常规多维数据集内创建计算成员


如何将计算成员导入到虚拟多维数据集内

将计算成员导入到虚拟多维数据集内

  1. 在 Analysis Manager 树窗格中，右击虚拟多维数据集，然后单击"编辑"命令。

  2. 在虚拟多维数据集编辑器中，在"编辑"菜单上指向"导入"子菜单，然后单击"计算成员"命令。

  3. 在"导入计算成员"对话框中，选择计算成员旁边的复选框，然后单击"确定"按钮。（若要选择多维数据集内所有的计算成员，请选择该多维数据集旁边的复选框。）

  4. 在虚拟多维数据集编辑器中，在"文件"菜单上单击"保存"命令。

请参见

将计算成员导入到虚拟多维数据集内


如何在虚拟多维数据集内编辑计算成员

在虚拟多维数据集内编辑计算成员

  1. 在 Analysis Manager 树窗格中，右击虚拟多维数据集，然后单击"编辑"命令。

  2. 在虚拟多维数据集编辑器树窗格中，右击该计算成员，然后单击"编辑"命令。

  3. 在计算成员生成器中，在"父维度"框中选择将包含该计算成员的维度或选择"度量值"选项。

  4. 在"父成员"框中指定要包含该计算成员的成员。单击"更改"按钮以选择所显示的成员之外的成员。（如果在步骤 3 中选择只有一个级别的维度或选择"度量值"选项，则无法使用"更改"按钮。）

  5. 在"值表达式"中，构造一个用于产生计算成员值的表达式。用下列方法的任意组合来向表达式中添加项目：
    • 从"数据"和"函数"框中拖动项目。

    • 单击"数据"和"函数"框中的项目，然后单击"插入"按钮。

    • 单击算术运算符和数字按钮。

    • 类型。
  6. （可选）若要注册另外的函数库，请单击"注册"按钮。

  7. 若要关闭计算成员生成器，请单击"确定"按钮。

  8. 若要保存该计算成员，请在虚拟多维数据集编辑器中单击"文件"菜单上的"保存"命令。

请参见

在虚拟多维数据集内编辑计算成员


如何在虚拟多维数据集内创建计算成员

在虚拟多维数据集内创建计算成员

  1. 在 Analysis Manager 树窗格中，右击虚拟多维数据集，然后单击"编辑"命令。

  2. 在虚拟多维数据集编辑器中，在"插入"菜单上单击"计算成员"命令。

  3. 在计算成员生成器中，在"父维度"框中选择将包含该计算成员的维度或选择"度量值"选项。

  4. 在"父成员"框中指定要包含该计算成员的成员。单击"更改"按钮以选择所显示的成员之外的成员。（如果在步骤 3 中选择只有一个级别的维度或选择"度量值"选项，则无法使用"更改"按钮。）

  5. 在"成员名称"框中，键入该计算成员的名称。

  6. 在"值表达式"中，构造一个用于产生计算成员值的表达式。用下列方法的任意组合来向表达式中添加项目：
    • 从"数据"和"函数"框中拖动项目。

    • 单击"数据"和"函数"框中的项目，然后单击"插入"按钮。

    • 单击算术运算符和数字按钮。

    • 类型。
  7. （可选）若要注册另外的函数库，请单击"注册"按钮。

  8. 若要关闭计算成员生成器，请单击"确定"按钮。

  9. 若要保存该计算成员，请在虚拟多维数据集编辑器中单击"文件"菜单上的"保存"命令。
示例

若要手工输入一个值表达式定义为 1 - (Store Cost/Store Sales) 的计算成员，查找各销售点 (Store) 的平均利润率 (Average Profit Margin)，则请执行下列步骤：

  1. 在"值表达式"框中键入 1-。

  2. 单击开始括号"("运算符按钮，然后在"值表达式"框中单击括号的紧右边以放置光标。

  3. 在"数据"框中展开"度量值"和"度量值级别"以显示各个度量值。

  4. 选择 Store Cost，然后单击"插入"。

  5. 在"值表达式"框中，将光标放到刚输入的短语的结尾处，然后键入斜线标记 (/)。

  6. 在"数据"框中，选择 Store Sales。

  7. 单击"插入"。

  8. 单击结束括号")"运算符按钮。

    下面的表达式出现在"值表达式"框中：

    1-([Measures].[Store Cost]/[Measures].[Store Sales])
  9. 在"成员名称"框中，键入 Average Store Margin，然后单击"确定"。

请参见

在虚拟多维数据集内创建计算成员


如何在常规多维数据集内创建命名集

在常规多维数据集内创建命名集

  1. 在 Analysis Manager 树窗格中，在要在其中创建命名集的数据库下展开"多维数据集"文件夹。

  2. 右击要在其中创建命名集的多维数据集，然后单击"编辑"命令。

  3. 在多维数据集编辑器中，在"插入"菜单上单击"命名集"命令。

  4. 在命名集生成器中，在"集合名称"框中键入该命名集的名称。

  5. 在"集合表达式"框中构造命名集的表达式。用下列方法的任意组合来向表达式中添加项目：
    • 从"数据"和"函数"框中拖动项目。

    • 单击"数据"和"函数"框中的项目，然后单击"插入"按钮。

    • 单击算术运算符和数字按钮。

    • 类型。

      说明 若要通过直接指定集合中成员的方式来创建集合表达式，请用花括号 ({}) 将成员列表括起来。

  6. （可选）若要注册另外的函数库，请单击"注册"按钮。

  7. 若要关闭命名集生成器，请单击"确定"按钮。

  8. 若要保存该命名集，请在多维数据集编辑器中，在"文件"菜单上单击"保存"命令。

请参见

创建常规多维数据集的命名集


如何将命名集导入到虚拟多维数据集内

将命名集导入到虚拟多维数据集内

  1. 在 Analysis Manager 树窗格中，右击虚拟多维数据集，然后单击"编辑"命令。

  2. 在虚拟多维数据集编辑器中，在"编辑"菜单上指向"导入"子菜单，然后单击"命名集"命令。

  3. 在"导入命名集"对话框中选择命名集旁边的复选框，然后单击"确定"按钮。（若要选择多维数据集内的所有命名集，请选择该多维数据集旁边的复选框。）

  4. 在虚拟多维数据集编辑器中，在"文件"菜单上单击"保存"命令。

请参见

将命名集导入虚拟多维数据集


如何在虚拟多维数据集内编辑命名集

在虚拟多维数据集内编辑命名集

  1. 在 Analysis Manager 树窗格中，右击虚拟多维数据集，然后单击"编辑"命令。

  2. 在虚拟多维数据集编辑器树窗格中，右击该命名集，然后单击"编辑"命令。

  3. 在命名集生成器中，在"集合表达式"框中构造命名集的表达式。用下列方法的任意组合来向表达式中添加项目：
    • 从"数据"和"函数"框中拖动项目。

    • 单击"数据"和"函数"框中的项目，然后单击"插入"按钮。

    • 单击算术运算符和数字按钮。

    • 类型。

      说明 若要通过直接指定集合中成员的方式来创建集合表达式，请用花括号 ({}) 将成员列表括起来。

  4. （可选）若要注册另外的函数库，请单击"注册"按钮。

  5. 若要关闭命名集生成器，请单击"确定"按钮。

  6. 若要保存该命名集，请在虚拟多维数据集编辑器中，在"文件"菜单上单击"保存"按钮。

请参见

编辑虚拟多维数据集的命名集


如何在虚拟多维数据集内创建命名集

在虚拟多维数据集内创建命名集

  1. 在 Analysis Manager 树窗格中，右击虚拟多维数据集，然后单击"编辑"命令。

  2. 在虚拟多维数据集编辑器中，在"插入"菜单上单击"命名集"命令。

  3. 在命名集生成器中，在"集合名称"框中键入该命名集的名称。

  4. 在"集合表达式"框中构造命名集的表达式。用下列方法的任意组合来向表达式中添加项目：
    • 从"数据"和"函数"框中拖动项目。

    • 单击"数据"和"函数"框中的项目，然后单击"插入"按钮。

    • 单击算术运算符和数字按钮。

    • 类型。

      说明 若要通过直接指定集合中成员的方式来创建集合表达式，请用花括号 ({}) 将成员列表括起来。

  5. （可选）若要注册另外的函数库，请单击"注册"按钮。

  6. 若要关闭命名集生成器，请单击"确定"按钮。

  7. 若要保存该命名集，请在虚拟多维数据集编辑器中，在"文件"菜单上单击"保存"按钮。

请参见

创建虚拟多维数据集的命名集


如何在常规多维数据集内创建对策

在常规多维数据集内创建对策

  1. 在 Analysis Manager 树窗格中，在要在其中创建对策的数据库下，展开"多维数据集"文件夹。

  2. 右击要在其中创建对策的多维数据集，然后单击"编辑"命令。

  3. 在多维数据集编辑器中，在"插入"菜单上单击"对策"命令。

  4. 在对策向导中的"欢迎"步骤中，单击"下一步"。

  5. 在"选择目标"步骤中选择对策要附加到的对象。一般情况下，在客户端应用程序中，当最终用户选中了目标对象后就会显示该对策；但是，最终用户的何种行为会导致对策的显示，取决于客户端应用程序。单击"下一步"按钮。

  6. 在"选择对策类型"步骤中，选择对策类型。该类型指明了对策要执行的工作类型。有关对策类型的更多信息，请参见创建对策。单击"下一步"按钮。

  7. 在"定义对策语法"步骤中，指定执行对策时要传递的参数。该语法必须取值为字符串。单击"下一步"按钮。

  8. 在"完成"步骤中指定对策的名称。单击"完成"按钮。

  9. 若要保存该对策，请在多维数据集编辑器中，在"文件"菜单上单击"保存"命令。

请参见

在常规多维数据集内创建对策

如何测试对策


如何将对策导入到虚拟多维数据集内

将对策导入到虚拟多维数据集内

  1. 在 Analysis Manager 树窗格中，右击虚拟多维数据集，然后单击"编辑"命令。

  2. 在虚拟多维数据集编辑器中，在"编辑"菜单上指向"导入"子菜单，然后单击"对策"命令。

  3. 在"导入对策"对话框中，选中该对策旁边的复选框，然后单击"确定"按钮。（若要选择多维数据集内的所有对策，请选择该多维数据集旁边的复选框。）

  4. 在虚拟多维数据集编辑器中，在"文件"菜单上单击"保存"命令。

请参见

将对策导入到虚拟多维数据集内

如何测试对策


如何在虚拟多维数据集内编辑对策

在虚拟多维数据集内编辑对策

  1. 在 Analysis Manager 树窗格中，右击虚拟多维数据集，然后单击"编辑"命令。

  2. 在虚拟多维数据集编辑器的树窗格中右击该对策，然后单击"编辑"命令。

  3. 在对策向导中，在"选择目标"步骤中选择对策要附加到的对象。一般情况下，在客户端应用程序中，当最终用户选中了目标对象后就会显示该对策；但是，最终用户的何种行为会导致对策的显示，取决于客户端应用程序。单击"下一步"按钮。

  4. 在"选择对策类型"步骤中，选择对策类型。该类型指明了对策要执行的工作类型。有关对策类型的更多信息，请参见创建对策。单击"下一步"按钮。

  5. 在"定义对策语法"步骤中，指定执行对策时要传递的参数。该语法必须取值为字符串。单击"下一步"按钮。

  6. 在"完成"步骤中指定对策的名称。单击"完成"按钮。

  7. 若要保存该对策，请在虚拟多维数据集编辑器中，在"文件"菜单上单击"保存"命令。

请参见

在虚拟多维数据集内编辑对策

如何测试对策


如何在虚拟多维数据集内创建对策

如何在虚拟多维数据集内创建对策

  1. 在 Analysis Manager 树窗格中，右击虚拟多维数据集，然后单击"编辑"命令。

  2. 在虚拟多维数据集编辑器中，在"插入"菜单上单击"对策"命令。

  3. 在对策向导中的"欢迎"步骤中，单击"下一步"。

  4. 在"选择目标"步骤中选择对策要附加到的对象。一般情况下，在客户端应用程序中，当最终用户选中了目标对象后就会显示该对策；但是，最终用户的何种行为会导致对策的显示，取决于客户端应用程序。单击"下一步"按钮。

  5. 在"选择对策类型"步骤中，选择对策类型。该类型指明了对策要执行的工作类型。有关对策类型的更多信息，请参见创建对策。单击"下一步"按钮。

  6. 在"定义对策语法"步骤中，指定执行对策时要传递的参数。该语法必须取值为字符串。单击"下一步"按钮。

  7. 在"完成"步骤中指定对策的名称。单击"完成"按钮。

  8. 若要保存该对策，请在虚拟多维数据集编辑器中，在"文件"菜单上单击"保存"命令。

请参见

在虚拟多维数据集内创建对策

如何测试对策


如何测试对策

在已处理的常规或虚拟多维数据集内测试对策

  1. 在 Analysis Manager 树窗格中，右击该多维数据集，然后单击"编辑"命令或"浏览数据"命令。如果单击"编辑"，请选择编辑器中的"数据"选项卡。

  2. 如果目标对象（例如维度）没有在数据查看窗格中以列标题或行标题的形式显示，请将其从数据切片窗格向下拖到数据查看窗格中。

  3. 在数据查看窗格中，右击与该对策的目标对象相对应的网格元素。
    • 对于多维数据集，请右击网格区域的外部来进行选择。

    • 如果目标是某个维度的成员，请右击与该维度的最高级别相对应的行标题或列标题下面的任何成员单元。

    • 如果目标是某个维度对象，请右击该维度最高级别的列标题或行标题来选择该维度。

    • 如果目标是某个级别的成员，请右击与该级别名称相对应的行或列标题下面的任何成员单元。

    • 如果目标是某个级别对象，请右击该级别的列标题或行标题。

    • 如果目标是多维数据集内的单元，请右击网格中的任意数据单元。
  4. 指向该对策运行它。

    说明 基于命名集的对策在多维数据集浏览器、多维数据集编辑器或虚拟多维数据集编辑器中无法执行。但是，在组件对象模型 (COM) 自动化语言（例如引用 Microsoft ActiveX® 数据对象（多维）(ADO MD) 的 Microsoft® Visual Basic®）中或者在 Microsoft Visual C++® 中使用 Microsoft SQL Server™ 2000 Analysis Services 库提供的 COM 接口生成的自定义应用程序，它们是可执行的。

请参见

对策

创建对策

多维数据集浏览器

数据选项卡（多维数据集编辑器数据视图）

PivotTable 服务


如何写启用多维数据集

写启用多维数据集

  1. 在 Analysis Manager 树窗格中，在包含多维数据集的数据库下展开"多维数据集"文件夹。

  74. 右击该多维数据集，然后单击"写启用"命令。

  75. 在"写启用"对话框中，在"表名"框中键入回写表的名称。

  76. 在"数据源"框中选择数据源名称。若要指定一个新数据源，请按照下列这些步骤执行：
    1. 单击"新建"按钮。

    2. 在"数据链接属性"对话框中指定新的数据源，然后单击"确定"按钮。有关更多信息，请参见指定数据源。
  77. 在"写启用"对话框中单击"确定"按钮。

请参见

写启用多维数据集


如何浏览多维数据集的回写数据

浏览多维数据集的回写数据

  1. 在 Analysis Manager 树窗格中，在包含多维数据集的数据库下展开"多维数据集"文件夹。

  78. 右击该多维数据集，指向"回写选项"子菜单，然后单击"浏览回写数据"命令。

请参见

浏览回写数据


如何删除多维数据集的回写数据并将其写禁用

删除多维数据集的回写数据和将其写禁用

  1. 在 Analysis Manager 树窗格中，在包含多维数据集的数据库下展开"多维数据集"文件夹。

  79. 右击该多维数据集，指向"回写选项"子菜单，然后单击"禁用回写"命令。

  80. 在"确认回写禁用"对话框中单击"是"按钮。

请参见

删除回写数据和写禁用多维数据集


如何将多维数据集的回写数据转换为分区并写禁用此多维数据集

将多维数据集的回写数据转换为分区和写禁用该多维数据集

  1. 在 Analysis Manager 树窗格中，在包含多维数据集的数据库下展开"多维数据集"文件夹。

  81. 右击该多维数据集，指向"回写选项"子菜单，然后单击"转换为分区"命令。

  82. 在"转换为分区"对话框中，在"分区名称"框中键入该分区的名称。

  83. 选择聚合设计选项：
    • 若要使用存储设计向导设计聚合，请单击"现在就设计分区的聚合"选项。有关更多信息，请参见设计存储选项和聚合。

    • 若要以后再进行聚合设计，请单击"以后再设计聚合"选项。

    • 若要复制现有分区的聚合设计，请单击"从现有的分区中复制聚合设计"选项，并从"从下列位置复制"列表中选择该分区的名称。如果将来有可能将新分区与另一个分区合并，那么请复制另一个分区的聚合设计。合并的分区必须具有相同的聚合设计。
  84. 若要指定筛选（WHERE 子句表达式）以限制从回写表选择的数据和添加到分区的数据，请单击"高级"按钮。有关更多信息，请参见分区筛选和增量更新筛选。

  85. 若要处理新的分区，请选择"完成时处理分区"复选框。处理可能要花费大量的时间，这取决于回写表的大小。

请参见

将回写数据转换为分区


如何指定常规多维数据集的钻取选项

指定常规多维数据集的钻取选项

  1. 在 Analysis Manager 树窗格中，在包含多维数据集的数据库下展开"多维数据集"文件夹。

  2. 右击该多维数据集，然后单击"编辑"命令。

  3. 在"工具"菜单上单击"钻取选项"命令。（如果该选项无法使用，则该多维数据集结构是无效的。您可以通过单击"工具"菜单上的"验证多维数据集结构"命令来设法判定该问题。）

  4. 在"钻取选项"对话框中，执行下列操作之一：
    • 若要启用钻取，请选中"启用钻取"复选框。

    • 若要禁用钻取，请清除"启用钻取"复选框。转到第 7 步。
  5. 在"列"选项卡中，选择在执行钻取时将显示的列。

    重要 如果选择了拒绝某个多维数据集角色对其进行访问的列，并且随后又授予该多维数据集角色进行钻取的能力，则会创建安全性曝光。（可以通过使用维度安全或单元安全来拒绝访问某列。有关更多信息，请参见维度安全性和单元安全性。）当多维数据集角色中的最终用户进行钻取时，他们会访问拒绝访问的列。

  6. （可选）在"筛选"选项卡中，指定筛选（WHERE 子句表达式）来限制通过钻取返回的结果集。不要包含 WHERE 关键字。例如，若要将结果集限制为第四季度的数据，请指定：
    "shipment_facts"."quarter"=4

    有关更多信息，请参见钻取筛选。

  7. 单击"确定"按钮。

  8. 在多维数据集编辑器中，在"文件"菜单上单击"保存"命令。

请参见

指定钻取选项


如何指定虚拟多维数据集的钻取选项

指定虚拟多维数据集的钻取选项

  1. 在 Analysis Manager 树窗格中，在包含虚拟多维数据集的数据库下，展开"多维数据集"文件夹。

  2. 右击虚拟多维数据集的某个源多维数据集，然后单击"编辑"命令。

  3. 在"工具"菜单上单击"钻取选项"命令。（如果该命令无法使用，则该多维数据集结构是无效的。您可以通过单击"工具"菜单上的"验证多维数据集结构"命令来设法判定该问题。）

  4. 在"钻取选项"对话框中，请确保已选中了"启用钻取"复选框。在可为虚拟多维数据集启用钻取之前，必须在源多维数据集上启用钻取。

  5. 在"列"选项卡中，选择在执行钻取时将显示的列。

    重要 如果选择了拒绝某个多维数据集角色对其进行访问的列，并且随后又授予该多维数据集角色进行钻取的能力，则会创建安全性曝光。（可以通过使用维度安全或单元安全来拒绝访问某列。有关更多信息，请参见维度安全性和单元安全性。）当多维数据集角色中的最终用户进行钻取时，他们会访问拒绝访问的列。

  6. （可选）在"筛选"选项卡中，指定筛选（WHERE 子句表达式）来限制通过钻取返回的结果集。不要包含 WHERE 关键字。例如，若要将结果集限制为第四季度的数据，请指定：
    "shipment_facts"."quarter"=4

    有关更多信息，请参见钻取筛选。

  7. （可选）如果在选择显示列后不想为源多维数据集启用钻取，请清除"启用钻取"复选框。本选项为用户提供在虚拟多维数据集中而不是在当前源多维数据集中钻取到所选列的功能。

  8. 单击"确定"按钮。

  9. 在多维数据集编辑器中，在"文件"菜单上单击"保存"命令。

  10. （可选）如果源多维数据集不止一个，则在多维数据集编辑器内从"多维数据集"框选择下一个源多维数据集的名称。根据需要为每个源多维数据集重复第 3 步到第 9 步。

  11. 关闭多维数据集编辑器。

  12. 在 Analysis Manager 树窗格中右击要为其启用钻取的虚拟多维数据集，然后单击"编辑"。如果虚拟多维数据集编辑器的属性窗格未展开，请单击树窗格下方的"属性"按钮以展开它。

  13. 单击属性窗格的"高级"选项卡，然后单击 Enable Drillthrough 属性旁边的值。

  14. 单击"True"为虚拟多维数据集启用钻取。

  15. 在虚拟多维数据集编辑器中，在"文件"菜单上单击"保存"命令。

请参见

多维数据集角色管理器

数据库角色管理器

指定钻取选项


如何指定链接多维数据集的钻取选项

指定基于常规多维数据集的链接多维数据集的钻取选项

  1. 在链接多维数据集的源多维数据集所宿主的发布服务器上，在 Analysis Manager 树窗格中包含源多维数据集的数据库下，展开"多维数据集"文件夹。

  2. 右击该源多维数据集，然后单击"编辑"命令。

  3. 在"工具"菜单上单击"钻取选项"命令。（如果该命令无法使用，则该多维数据集结构是无效的。您可以通过单击"工具"菜单上的"验证多维数据集结构"命令来设法判定该问题。）

  4. 在"钻取选项"对话框中，执行下列操作之一：
    • 若要启用钻取，请选中"启用钻取"复选框。转到第 5 步。

    • 若要禁用钻取，请清除"启用钻取"复选框。转到第 7 步。
  5. 在"列"选项卡中，选择最终用户从订阅服务器上的链接多维数据集钻取时要显示的列。

    重要 如果选择了拒绝某个多维数据集角色对其进行访问的列，并且随后又授予该多维数据集角色进行钻取的能力，则会创建安全性曝光。（可以通过使用维度安全或单元安全来拒绝访问某列。有关更多信息，请参见维度安全性和单元安全性。）当多维数据集角色中的最终用户进行钻取时，他们会访问拒绝访问的列。

  6. （可选）在"筛选"选项卡中，指定筛选（WHERE 子句表达式）来限制通过钻取返回的结果集。不要包含 WHERE 关键字。例如，若要将结果集限制为第四季度的数据，请指定：
    "shipment_facts"."quarter"=4

    有关更多信息，请参见钻取筛选。

  7. 单击"确定"按钮。

  8. 在多维数据集编辑器中，在"文件"菜单上单击"保存"命令。

  9. （可选）在订阅服务器上，从 Analysis Manager 浏览链接多维数据集以测试链接多维数据集的钻取设置。

指定基于虚拟多维数据集的链接多维数据集的钻取选项

  1. 在所宿主的虚拟多维数据集是链接多维数据集的源多维数据集的发布服务器上，在 Analysis Manager 树窗格中包含虚拟多维数据集的数据库下，展开"多维数据集"文件夹。

  2. 右击虚拟多维数据集的源多维数据集，然后单击"编辑"命令。

  3. 在"工具"菜单上单击"钻取选项"命令。（如果该命令无法使用，则该多维数据集结构是无效的。您可以通过单击"工具"菜单上的"验证多维数据集结构"命令来判定该问题。）

  4. 在"钻取选项"对话框中，选中"启用钻取"复选框。

  5. 在"列"选项卡中，选择当最终用户钻取订阅服务器上的链接多维数据集时要显示的列。

    重要 如果选择了拒绝某个多维数据集角色对其进行访问的列，并且随后又授予该多维数据集角色进行钻取的能力，则会创建安全性曝光。（可以通过使用维度安全或单元安全来拒绝访问某列。有关更多信息，请参见维度安全性和单元安全性。）当多维数据集角色中的最终用户进行钻取时，他们会访问拒绝访问的列。

  6. （可选）在"筛选"选项卡中，指定筛选（WHERE 子句表达式）来限制通过钻取返回的结果集。不要包含 WHERE 关键字。例如，若要将结果集限制为第四季度的数据，请指定：
    "shipment_facts"."quarter"=4

    有关更多信息，请参见钻取筛选。

  7. （可选）如果在选择显示列后不想为发布服务器上的源多维数据集启用钻取，请清除"启用钻取"复选框。该选项为用户提供通过发布服务器上的虚拟多维数据集和订阅服务器上的链接多维数据集钻取到所选列的能力，而不是通过当前源多维数据集钻取。

  8. 单击"确定"按钮。

  9. 在多维数据集编辑器中，在"文件"菜单上单击"保存"命令。

  10. （可选）如果发布服务器上的源多维数据集不止一个，则在多维数据集编辑器内从"多维数据集"框选择下一个源多维数据集的名称。根据需要为每个源多维数据集重复第 3 步到第 9 步。

  11. 关闭多维数据集编辑器。

  12. 在发布服务器上，右击 Analysis Manager 树窗格中的虚拟多维数据集（它是链接多维数据集的源多维数据集）以启用钻取，然后单击"编辑"。

  13. 如果虚拟多维数据集编辑器中的属性窗格未展开，请单击树窗格下方的"属性"按钮以展开它。

  14. 单击属性窗格的"高级"选项卡，然后单击 Enable Drillthrough 属性旁边的值。

  15. 单击"True"以为虚拟多维数据集启用钻取。

  16. 在虚拟多维数据集编辑器中，在"文件"菜单上单击"保存"命令。

  17. （可选）在订阅服务器上，从 Analysis Manager 浏览链接多维数据集以测试链接多维数据集的钻取设置。


如何指定分区的钻取选项

指定分区的钻取选项

  1. 在 Analysis Manager 树窗格中，在包含该分区的多维数据集下展开"分区"文件夹。

  2. 右击该分区，然后单击"编辑"命令。

  3. 按照分区向导提示向前操作到"完成"步骤，然后单击"高级"按钮。

  4. 在"高级设置"对话框中，单击"钻取"按钮。

  5. 在"列"选项卡中，选择在执行钻取时将显示的列。

    重要 如果选择了拒绝某个多维数据集角色对其进行访问的列，并且随后又授予该多维数据集角色进行钻取的能力，则会创建安全性曝光。（可以通过使用维度安全或单元安全来拒绝访问某列。有关更多信息，请参见维度安全性和单元安全性。）当多维数据集角色中的最终用户进行钻取时，他们会访问拒绝访问的列。

  6. （可选）在"筛选"选项卡中，指定筛选（WHERE 子句表达式）来限制通过钻取返回的结果集。不要包含 WHERE 关键字。例如，若要将结果集限制为第四季度的数据，请指定：
    "shipment_facts"."quarter"=4

    有关更多信息，请参见钻取筛选。

  7. 单击"确定"按钮。

  8. 在"高级设置"对话框中单击"确定"按钮。

  9. 在分区向导中单击"完成"按钮。

请参见

指定钻取选项


更新多维数据集和维度

下列主题描述更新多维数据集和维度的过程：

  • 如何增量更新多维数据集

  • 如何刷新多维数据集内的数据

  • 如何增量更新共享维度

  • 如何重建共享维度的结构

请参见

处理多维数据集

更新多维数据集和维度


如何增量更新多维数据集

增量更新多维数据集

注意 本过程可以更新分区。不正确地使用分区可导致多维数据集数据不准确。有关更多信息，请参见管理分区。

  1. 在 Analysis Manager 树窗格中，在包含多维数据集的数据库下展开"多维数据集"文件夹。

  2. 右击多维数据集，然后单击"处理"命令。

  3. 在"处理多维数据集"对话框中单击"增量更新"按钮。

  4. （可选）若要在处理期间增量更新包含于多维数据集中的共享维度，请选择"增量更新本多维数据集所使用的共享维度"选项。

  5. 单击"确定"按钮以显示增量更新向导。

  6. 在增量更新向导中：
    1. 在"欢迎"步骤中单击"下一步"按钮。

    2. 如果该多维数据集包含多个分区，则会出现"选择要更新的分区"步骤。在"分区"框中选择要更新的分区，然后单击"下一步"按钮。

    3. 在"数据源"框中，选择包含要添加到该分区的数据的数据源。既可以选择与该分区所使用数据源相同的数据源，也可以选择与之不同的数据源。默认情况下，最初显示该分区所使用的数据源。若要选择不同的数据源，请单击"更改"按钮，选择该数据源，然后单击"确定"按钮。如果选择不同的数据源，则该数据源必须包含一个事实数据表和一个维度表，该事实数据表的结构和列应与该分区的事实数据表相同，并且该维度表的结构和列应与该分区的维度表相同。

    4. 在"事实数据表"框中，选择包含要添加到该分区的数据的表。既可以选择该分区的事实数据表，也可以选择其它表。默认情况下，最初显示该分区的事实数据表。如果选择该表，则必须使用筛选（见下一步骤中的描述）以确保仅添加该分区中没有的数据。若要选择其它表，请单击"更改"按钮，选择该表，然后单击"确定"按钮。如果选择其它表，则它的结构和列必须与该分区的事实数据表相同。还必须在完成增量更新后手工将该表与该分区的事实数据表合并。有关更多信息，请参见合并分区时的事实数据表考虑事项。单击"下一步"按钮。

    5. 指定筛选（WHERE 子句表达式）以限制从事实数据表中选择和添加到分区中的数据。如果选择该分区的事实数据表作为增量更新的事实数据表（即选择默认的事实数据表），则必须使用筛选。有关更多信息，请参见分区筛选和增量更新筛选。单击"下一步"按钮。

    6. 单击"完成"按钮。
  7. 在"处理"对话框中，等待增量更新完成处理，或者单击"停止"按钮以中断并取消处理。

请参见

更新和刷新多维数据集数据


如何刷新多维数据集内的数据

刷新多维数据集内的数据

  1. 在 Analysis Manager 树窗格中，在包含多维数据集的数据库下展开"多维数据集"文件夹。

  2. 右击多维数据集，然后单击"处理"命令。

  3. 在"处理多维数据集"对话框中单击"刷新数据"按钮。

  4. （可选）若要在处理期间增量更新包含于多维数据集中的共享维度，请选择"增量更新本多维数据集所使用的共享维度"选项。

  5. 单击"确定"按钮。

  6. 在"处理"对话框中，等待数据刷新完成处理，或者单击"停止"按钮以中断并取消处理。

请参见

更新和刷新多维数据集数据


如何增量更新共享维度

增量更新共享维度

  1. 在 Analysis Manager 树窗格中，在包含该共享维度的数据库下，展开"共享维度"文件夹。

  2. 右击该共享维度，然后单击"处理"命令。

  3. 在"处理维度"对话框中单击"增量更新"选项，然后单击"确定"按钮。

  4. 在"处理"对话框中，等待增量更新完成处理，或者单击"停止"按钮以中断并取消处理。

请参见

更新和重建共享维度


如何重建共享维度的结构

重建共享维度的结构

  1. 在 Analysis Manager 树窗格中，在包含该共享维度的数据库下，展开"共享维度"文件夹。

  2. 右击该共享维度，然后单击"处理"命令。

  3. 在"处理维度"对话框中单击"重建维度结构"选项，然后单击"确定"按钮。

  4. 在"处理"对话框中，等待重建完成处理，或者单击"停止"按钮以中断并取消处理。

在用"重建维度结构"选项处理共享维度之后，必须处理所有包含此维度的多维数据集。有关更多信息，请参见处理多维数据集。

请参见

更新和重建共享维度


管理数据挖掘模型

以下主题描述管理数据挖掘模型的过程：

  • 如何启动挖掘模型向导

  • 如何启动关系挖掘模型编辑器

  • 如何启动 OLAP 挖掘模型编辑器

  • 如何处理数据挖掘模型

  • 如何启动挖掘模型角色管理器

  • 如何向数据挖掘模型添加角色

请参见

挖掘模型向导

关系挖掘模型编辑器

OLAP 挖掘模型编辑器

挖掘模型角色管理器


如何启动挖掘模型向导

启动挖掘模型向导

  • 在 Analysis Manager 树窗格中，在想要创建数据挖掘模型的数据库底下，右击挖掘模型文件夹，然后单击"新建挖掘模型"命令。

完成挖掘模型向导之后，将分别出现关系挖掘模型编辑器或 OLAP 挖掘模型编辑器，这有赖于创建的是关系数据挖掘模型还是 OLAP 数据挖掘模型。

请参见

挖掘模型向导

关系挖掘模型编辑器

OLAP 挖掘模型编辑器


如何启动关系挖掘模型编辑器

启动关系挖掘模型编辑器

  1. 在 Analysis Manager 树窗格中，在已有关系数据挖掘模型的数据库下面，展开挖掘模型文件夹。

  2. 右击要编辑的关系数据挖掘模型，然后单击"编辑"命令。

    说明 如果关系数据挖掘模型的结构已经改变，挖掘模型必须在挖掘模型内容可查看之前进行处理。

请参见

关系挖掘模型编辑器


如何启动 OLAP 挖掘模型编辑器

启动 OLAP 挖掘模型编辑器

  1. 在 Analysis Manager 树窗格中，在已有 OLAP 数据挖掘模型的数据库下面，展开挖掘模型文件夹。

  2. 右击要编辑的 OLAP 数据挖掘模型，然后单击"编辑"命令。

    说明 如果 OLAP 数据挖掘模型的结构已经改变，挖掘模型必须在挖掘模型内容可查看之前进行处理。

请参见

OLAP 挖掘模型编辑器


如何处理数据挖掘模型

从 Analysis Manager 处理数据挖掘模型

  1. 在 Analysis Manager 树窗格中，在已有关系或 OLAP 数据挖掘模型的数据库的下面，展开挖掘模型文件夹。

  2. 右击待处理的关系或 OLAP 数据挖掘模型，然后单击"处理"命令。

从关系挖掘模型编辑器处理数据挖掘模型

  1. 在 Analysis Manager 树窗格中，在已有关系数据挖掘模型的数据库下面，展开挖掘模型文件夹。

  2. 右击要编辑的关系数据挖掘模型，然后单击"编辑"命令。

  3. 在关系挖掘模型编辑器中，单击"工具"菜单，然后单击"处理挖掘模型"命令。

从 OLAP 挖掘模型编辑器处理数据挖掘模型

  1. 在 Analysis Manager 树窗格中，在已有 OLAP 数据挖掘模型的数据库下面，展开挖掘模型文件夹。

  2. 右击要编辑的 OLAP 数据挖掘模型，然后单击"编辑"命令。

  3. 在 OLAP 挖掘模型编辑器中，单击"工具"菜单，然后单击"处理挖掘模型"命令。

请参见

关系挖掘模型编辑器

OLAP 挖掘模型编辑器

处理挖掘模型对话框


如何启动挖掘模型角色管理器

启动挖掘模型角色管理器

  1. 在 Analysis Manager 树窗格中，在已有关系或 OLAP 数据挖掘模型的数据库的下面，展开挖掘模型文件夹。

  2. 右击要处理的关系或 OLAP 数据挖掘模型，然后单击"管理角色"命令。

请参见

挖掘模型角色管理器


如何向数据挖掘模型添加角色

向数据挖掘模型添加现有角色

  1. 在 Analysis Manager 树窗格中，在已有关系或 OLAP 数据挖掘模型的数据库的下面，展开挖掘模型文件夹。

  2. 右击要处理的关系或 OLAP 数据挖掘模型，然后单击"管理角色"命令。

  3. 选中要添加的角色名称旁边的复选框。

  4. 单击"确定"按钮。

向数据挖掘模型添加新角色

  1. 在 Analysis Manager 树窗格中，在已有关系或 OLAP 数据挖掘模型的数据库的下面，展开挖掘模型文件夹。

  2. 右击要处理的关系或 OLAP 数据挖掘模型，然后单击"管理角色"命令。

  3. 单击"新建"按钮显示"创建挖掘模型角色"对话框。

  4. 在"角色名称"框中键入新角色的名称。

  5. （可选）在"描述"框中键入新角色的描述。

  6. 在"成员资格"选项卡上，单击"添加"按钮显示"添加用户和组"对话框，可在此处将用户和组添加到新角色。

  7. 单击"确定"按钮返回到"挖掘模型角色管理器"。

  8. 单击"确定"按钮。

重要 对数据挖掘模型角色的任何更改都将传递到相应的数据库角色。

请参见

挖掘模型角色管理器

挖掘模型角色对话框


存档、还原和复制数据

下列主题描述对数据进行存档、还原和复制的过程：

  • 如何使用 Analysis Manager 将 Analysis Services 数据库存档

  • 如何使用 msmdarch 命令将 Analysis Services 数据库存档

  • 如何使用 Analysis Manager 还原 Analysis Services 数据库

  • 如何使用 msmdarch 命令还原 Analysis Services 数据库

  • 如何复制和粘贴对象

请参见

存档、还原和复制数据


如何使用 Analysis Manager 将 Analysis Services 数据库存档

使用 Analysis Manager 将 Microsoft® SQL Server™ 2000 Analysis Services 数据库存档

  1. 在 Analysis Manager 树窗格中右击某个数据库，然后单击"存档数据库"命令。

  2. 在"存档数据库"对话框中：
    1. 在"保存于"框中指定存档文件的文件名和路径。

    2. 在"临时文件夹"框中指定存档过程中可在其中创建临时文件的文件夹。

    3. 如果是在远程服务器上存档数据库，则会显示"远程路径"框。请为该数据库指定包含这些文件的 Data 目录的路径。

    4. 单击"存档"按钮。
  3. 在"数据库存档进度"对话框中，监视存档进程的进度。在存档进程开始后可以取消进程。也可以保存存档日志。

请参见

将 Analysis Services 数据库存档


如何使用 msmdarch 命令将 Analysis Services 数据库存档

使用 msmdarch 命令将 Microsoft® SQL Server™ 2000 Analysis Services 数据库存档

  1. 打开命令提示符。

  2. （可选）使用 cd 命令访问包含 msmdarch.exe 文件的目录。在默认情况下，该文件位于以下位置：

    C:\Program Files\Microsoft Analysis Services\Bin

  3. 键入带 /a 开关的有效 msmdarch 命令。在本主题的后面将给出完整的语法和示例。

  4. 按 ENTER 键。

说明 可使用 /? 开关显示包含开关语法的帮助窗口。

语法

["command-path]msmdarch["] /a Server "OLAPDataPath" "DatabaseName" "BackupFileName" ["LogFileName" ["TempDirectory"]]

command-path

msmdarch.exe 文件所在的路径。在默认情况下，该路径为：

C:\Program Files\Microsoft Analysis Services\Bin

Server

要存档数据库所在的服务器计算机名。

OLAPDataPath

要存档数据库的文件所在 Data 目录的路径。在默认情况下，该路径为：

C:\Program Files\Microsoft Analysis Services\Data

DatabaseName

要存档数据库的名称。

BackupFileName

存档文件的路径、文件名和 .cab 扩展名。

LogFileName

存档日志的路径、文件名和 .log 扩展名。如果指定现有的存档日志，则会将新的存档日志追加到该日志上。如果指定无效的路径或文件名，则存档日志将写入 DBArchive.log 文件中，它的默认位置是 C:\Program Files\Microsoft Analysis Services\Bin\DBArchive.log。

TempDirectory

用于处理空间的临时目录的指定路径。如果指定了 LogFileName，则必须指定该选项。

示例

下列命令可以将 Analysis Services 中所包括的示例数据库 FoodMart 2000 存档。

"\Program Files\Microsoft Analysis Services\Bin\msmdarch" /a myserver
"\Program Files\Microsoft Analysis Services\Data\" "FoodMart 2000"
"\My archives\server myserver\FoodMart 2000.cab"

请参见

将 Analysis Services 数据库存档


如何使用 Analysis Manager 还原 Analysis Services 数据库

使用 Analysis Manager 还原 Microsoft® SQL Server™ 2000 Analysis Services 数据库

  1. 在 Analysis Manager 树窗格中右击要在其上还原数据库的服务器，然后单击"还原数据库"命令。

  2. 如果是在远程服务器上还原数据库，则会出现"远程服务器数据目录"对话框。指定要在其中还原数据库的 Data 目录。在数据库还原完成后，该目录将包含该数据库的文件。单击"确定"按钮。

  3. 在"打开存档文件"对话框中指定存档文件的路径和文件名，然后单击"打开"按钮。

  4. 在"还原数据库"对话框中单击"还原"按钮。

  5. 在"还原数据库进度"对话框中监视还原的进度。在还原操作开始之后可以取消它。也可以保存还原日志。

请参见

还原 Analysis Services 数据库


如何使用 msmdarch 命令还原 Analysis Services 数据库

使用 msmdarch 命令还原 Microsoft® SQL Server™ 2000 Analysis Services 数据库

  1. 打开命令提示符。

  2. （可选）使用 cd 命令访问包含 msmdarch.exe 文件的目录。在默认情况下，该文件位于以下位置：

    C:\Program Files\Microsoft Analysis Services\Bin

  3. 键入带 /r 或 /rs 开关的有效 msmdarch 命令。在本主题的后面将给出完整的语法和示例。

  4. 按 ENTER 键。

说明 可使用 /? 开关显示包含开关语法的帮助窗口。

语法

["command-path]msmdarch["] switch Server "OLAPDataPath" "BackupFileName" ["LogFileName" ["TempDirectory"]]

command-path

（可选）msmdarch.exe 文件所在的路径。在默认情况下，该路径为：

C:\Program Files\Microsoft Analysis Services\Bin

switch

指定执行命令时要使用的选项。/r 开关用来指定常规还原，如果数据库存在则将其覆盖。仅当数据库已不存在时，才使用 /rs 开关从存档文件还原数据库。

Server

要在其上还原数据库的服务器计算机名。

OLAPDataPath

完成还原后将包含数据库文件的 Data 目录的路径。在默认情况下，该路径为：

C:\Program Files\Microsoft Analysis Services\Data

BackupFileName

存档文件的路径、文件名和 .cab 扩展名。

LogFileName

还原日志的路径、文件名和 .log 扩展名。如果指定现有的还原日志，则会将新的还原日志追加到该日志上。如果指定了无效的路径或文件名，则还原日志将写入 DBRestore.log 文件中，该文件的默认位置是 C:\Program Files\Microsoft Analysis Services\Bin\DBRestore.log。

TempDirectory

用于处理空间的临时目录的指定路径。如果指定了 LogFileName，则必须指定该选项。

示例

下列命令可以还原 Analysis Services 中的示例数据库 FoodMart 2000。

"\Program Files\Microsoft Analysis Services\Bin\msmdarch" /r myserver
"\Program Files\Microsoft Analysis Services\Data\"
"\My archives\server myserver\FoodMart 2000.cab"

请参见

还原 Analysis Services 数据库


如何复制和粘贴对象

复制和粘贴对象

  1. 在 Analysis Manager 树窗格中右击某个对象，然后单击"复制"命令。

  2. 右击新对象的目标位置，然后单击"粘贴"命令。

并非所有的对象类型都可以使用"复制"命令。如果对所复制的对象类型而言选择的目标位置无效，则无法使用"粘贴"命令。

请参见

复制及粘贴对象


分析和优化性能

下列主题描述分析和优化性能的过程：

  • 如何启动使用分析向导

  • 如何启动基于使用的优化向导

请参见

分析和优化性能


如何启动使用分析向导

启动使用分析向导

  1. 在 Analysis Manager 树窗格中，在要对其进行分析的多维数据集所在的数据库下，展开"多维数据集"文件夹。

  2. 右击要分析的多维数据集，然后单击"使用分析"命令。

请参见

分析使用模式


如何启动基于使用的优化向导

启动基于使用的优化向导

  1. 在 Analysis Manager 树窗格中，在要对其进行优化的多维数据集所在的数据库下，展开"多维数据集"文件夹。

  2. 右击要优化的多维数据集，然后单击"基于使用的优化"命令。

请参见

基于使用优化性能


自动化和调度管理任务

下列主题旨在描述自动处理和调度管理任务的过程：

  • 如何创建 Analysis Services 处理任务

  • 如何创建关系数据挖掘预测查询任务

请参见

自动处理和调度管理任务


如何创建 Analysis Services 处理任务

创建 Analysis Services 处理任务

  1. 打开 DTS 设计器：
    1. 在桌面上单击"开始"按钮，指向"程序"菜单，指向"Microsoft SQL Server"子菜单，然后单击"企业管理器"命令。

    2. 在控制台树中，展开要在其上创建数据转换服务 (DTS) 包（其中将包含 Analysis Services 处理任务）的服务器。

    3. 右击"数据转换服务"文件夹，然后单击"新包"命令。
  2. 在 DTS 设计器中，将 Analysis Services 处理任务的图标从"任务"工具栏拖到设计表中。下面就是这个图标。

  3. （可选）在"分析服务处理任务"对话框中，将任务描述输入到"描述"框中。

  4. （可选）若要将树上的对象限制为本地分析服务器上的对象，并且设置任务来处理存储该包的服务器计算机上的一个或多个对象，请选择"本地服务器"复选框。如果选择该选项，以后就可以将包移植到其它服务器上并执行它以处理该服务器上的一个或多个对象。这个处理过程要求其它服务器计算机存储已处理对象的元数据并要求对它们的数据源具有访问权限。通过使用 Analysis Manager 树窗格中的"复制"命令和"粘贴"命令，可以轻松地将元数据从一个服务器复制到另一个服务器。

  5. 在"Analysis Services 处理任务"对话框中展开服务器树，然后选择要处理的对象或文件夹。

  6. 选择一个处理选项。选择选项决定了 ProcessOption 属性的值，该值用于在 Microsoft® ActiveX® 脚本任务中修改 Analysis Services 处理任务中的处理选项。

    有关处理选项的更多信息，请参见处理多维数据集和维度处理。有关 ProcessOption 属性的有效值的更多信息，请参见更改 Analysis Services 处理任务的属性

  7. 如果已为分区或单个分区的多维数据集选择了"增量更新"选项，就可以：
    • 更改用于增量更新的数据源和事实数据表。单击"事实数据表"框旁的编辑（"..."）按钮，并使用"选择事实数据表"对话框。
      • 指定筛选以限制用于增量更新的事实数据表记录。单击"筛选"框旁的（"..."）按钮，并使用"筛选表达式"对话框。

    说明 如果选择默认的事实数据表则必须指定筛选。否则，多维数据集或分区将包含重复因而是不准确的数据。

    如果更改事实数据表，那么新的事实数据表必须与默认事实数据表有相同的结构和列。增量更新完毕后，还必须合并新事实数据表和默认事实数据表。有关更多信息，请参见合并分区时的事实数据表考虑事项。

  8. 单击"确定"按钮以完成任务的创建。若要在 DTS 设计器的 DTS 包中保存该任务，请单击"包"菜单上的"保存"命令。有关保存包的各种方式的信息，请参见保存 DTS 包。

请参见

ActiveX 脚本任务

使用 DTS 设计器创建包

创建 Analysis Services 处理任务

保存 DTS 包


如何创建关系数据挖掘预测查询任务

创建关系数据挖掘预测查询任务

  1. 启动 DTS 设计器：
    1. 在桌面上单击"开始"按钮，指向"程序"菜单，指向"Microsoft SQL Server"子菜单，然后单击"企业管理器"命令。

    2. 在控制台树中，展开要在其中创建包（其中将包含数据挖掘预测查询任务）的服务器。

    3. 右击"数据转换服务"文件夹，然后单击"新包"命令。
  2. 在 DTS 设计器中，将数据挖掘预测查询任务的图标从"任务"工具调色板中拖到 DTS 设计器设计表中。下面就是这个图标。

  3. （可选）在"数据挖掘预测查询任务"对话框中，在"名称"框中键入一个新名称来替换该任务的默认名称。

  4. （可选）在"描述"框中键入任务描述。本描述用于标识 DTS 设计器中的任务。

  5. 在"服务器"框中键入分析服务器的名称，该服务器包含要用作预测查询的源的数据挖掘模型。此服务器名与它在网络中的计算机名相同。不要使用 UNC 或网络路径。

  6. 从"数据库"列表选择包含要查询的挖掘模型的数据库。

  7. 如果要用于预测查询的挖掘模型在"挖掘模型"框中并未突出显示，则通过单击挖掘模型的名称或图标从本框中选择挖掘模型。可以在"详细信息"框中查看该挖掘模型的某些属性。

  8. 单击"查询"选项卡，然后在"输入数据源"框中键入有效的 ActiveX® 数据对象 (ADO) 连接字符串（该字符串连接到包含查询的输入和可预测列的事例表），或单击编辑（"�"）按钮以显示"数据链接属性"对话框，可在该对话框中生成连接字符串。

    在"预测查询"框中键入语法，或单击"新建查询"以显示预测查询生成器。预测查询语法必须符合 OLE DB 数据挖掘规范。有关数据挖掘 OLE DB 规范的更多信息，请参见位于 Microsoft Web 站点的 Microsoft OLE DB Web 页。

  9. （可选）在"输出表"框中键入输出表的新名称以替换默认名称。

  10. 单击"确定"按钮以完成任务的创建。若要在 DTS 设计器的 DTS 包中保存该任务，请单击"包"菜单上的"保存"命令。有关保存包的各种方式的信息，请参见保存 DTS 包。

请参见

ActiveX 脚本任务

使用 DTS 设计器创建包

保存 DTS 包