利用 SQL Server 2000 Analysis Services 和 Office XP 在 ASP.NET 中构建 OLAP 报告应用程序
发布日期:
本文假定您熟悉 ASP.NET 与 SQL Server
下载本文的代码:OLAP.exe (373KB)
摘要
许多公司都利用在线分析处理 (OLAP) 技术来分析它们的关键业务数据。基于 OLAP 的数据挖掘提供了一种查询多维数据集的方法,并向下追溯到查找模式的数据。ASP.NET 和 Microsoft Office Web Components (OWC) 可以启用基于 Web 的 OLAP 报告。OWC 控件包括 PivotTable 和 Chart 组件,这些组件可以嵌入在 Web 页中,并可以由编程人员编写脚本。在本篇文章中,作者利用 ASP.NET、OWC 和 SQL Server 2000 Analysis Services 构建了一种基于 Web 的 OLAP 报告应用程序,以说明这个构建过程。
越来越多的公司利用在线分析处理 (OLAP) 技术和数据挖掘技术来对它们的复杂数据集进行分析。OLAP 是专门为分析多维数据集而设计的,这些数据集中数据之间的模式与关系不是特别明确。Microsoft® SQL Server™ 2000 Analysis Services 是一种用来进行 OLAP 处理与数据挖掘的普遍选择,因为它与 SQL Server 2000 集成紧密,并且将与新发行的每版 SQL Server 集成得更加紧密。
随着 OLAP 技术的普及,要求开发人员创建依赖基于 OLAP 多维数据源的自定义报告解决方案的要求日益增长。这是一种错综复杂的尝试,因为基于 OLAP 的报告,或者数据挖掘,需要灵活性和高水平的交互性。根据定义,数据挖掘不是静态的。相反,在基础多维数据集构造方式的约束内,用户必须能够构造任意的数据视图。这与传统的关系型数据库管理系统 (RDBMS) 查询方式相比较,后者受成员表之间紧密定义的关系约束。RDBMS 查询当然可以获得创造力,但仅限于一定程度而已。利用基于 OLAP 的数据结构,查询内容可以灵活得多。传统的静态、固定报告在帮助您查看和理解基于 OLAP 的数据方面没有增添什么价值。
在要求软件开发人员创建基于 OLAP 的自定义报告解决方案时,他们面临四重挑战。第一,这种解决方案必须能够和多维数据源进行连接并能够查询。第二,这种方案必须允许用户轻松、灵活地向下追溯数据。第三,这种方案必须可以使用户保存自定义的向下追溯报告,因为您无法预测用户发现的什么数据视图是重要的。第四,这种解决方案必须提供一个包含图表的可读界面,因为当报告可见时,它会更加有效。
请允许我添加可选的第五条要求:这种基于 OLAP 的报告解决方案应当是基于 Web 的,也就是说,它应当被实现成为一个基于服务器(位于 Internet 或者 intranet 之上)的 Web 应用程序,并可以从 Web 浏览器进行访问。对于这五条苛刻要求,软件开发人员该如何应对呢?
正如其结果一样,Microsoft 提供了一组被称为 Office Web Components (OWC) 的组件,这套组件可以帮助您为 Web 构建复杂的、用户友好的、基于 OLAP 的、自定义报告解决方案。这些 OWC 组件是一组用于向 Web 发布电子数据表、数据透视表和图表的 COM 控件。和 Microsoft Excel 一样,它们可以为用户提供丰富的交互体验。OWC 组件还公开了丰富的编程接口,该接口具有高度的功能性和灵活性,据此可以构建自定义解决方案。图 1 所示为 OWC PivotTable® 组件,它可以使您连接到一个 OLAP 数据源,并利用一个便利的拖放界面对数据源进行查询。
图 1 OWC PivotTable 组件
本文的目的是讨论利用 ASP.NET 和 Office Web Components 来为 Web 开发基于 OLAP 报告的自定义解决方案的开发人员所需要的内容。我们将介绍一种应用程序体系结构,这种结构包括了基于 XML 的 Web 服务,并且我们将为您说明如何构建它以及如何配置 OLAP 数据源从而通过 HTTP 访问它。另外,我们还将说明如何将解决方案部署给用户。大多数 Web 应用程序都是完全安装到 Web 服务器上的,并且不需要在部署过程中与客户端进行交互。但是,OLAP 与 OWC 对想要使用自定义解决方案的客户端有特殊的要求。
重要术语与概念
OLAP 技术中充斥的专用术语可能是理解其真正优势的障碍。本文假设您对 OLAP 有一般的了解,并特别熟悉 SQL Server 2000 Analysis Services。即使这样,在进行之前我们还是要澄清本文中以及更广泛的 OLAP 与数据挖掘领域中非常重要的术语和概念。
首先,区分 OLAP 技术与数据挖掘技术非常重要。基于 OLAP 的数据源或者知识库可以细分为一个或更多的多维数据集,这是多维数据结构并可以利用 MDX 进行查询。一个多维数据集包含一组被称为维的属性,除了还包含一组分层的级别之外,它们大致对应于数据库字段。例如,年时间维可以细分为季度、月和周等级别。多维数据集还包括一个度量集合,它们是真正的数据值,而且一般情况下是数值型的。例如,零售多维数据集允许您根据商店位置(维)和时间(维)来查看单位销售额(度量)。
SQL Server 2000 Analysis Services 允许您执行 OLAP 处理(由称为 Analysis Manager 的 Microsoft 管理控制台 (MMC) 管理单元提供)。这只是一个被集成在 Analysis Services 中的数据透视表界面。基于 OLAP 的数据通常利用一个数据透视表来查看,这种表允许您将多个维和度量拖放到类似电子数据表的布局中。PivotTable 控件将这种拖放操作转换成 MDX 查询,并传递给 OLAP 数据源,反过来,再接收一个结果集。
Analysis Manager 将 PivotTable 服务安装在数据库服务器上,其中包括一个允许连接到 OLAP 数据源上的 OLE DB 提供程序。该提供程序被命名为 Microsoft OLE DB Provider for OLAP Services 8.0。没有它,要连接到 OLAP 数据源就不可能。该提供程序的连接字符串包括表示知识库名称的 DataSource 属性和表示要连接到的多维数据集名称的 DataMember 属性。PivotTable 服务还必须安装在客户端机器上;否则,客户端的 PivotTable 控件将不能和 OLAP 数据源进行通信。
基于 Web 的 OLAP 报告应用程序体系结构
图 2 说明了我们的基于 Web 的 OLAP 报告应用程序的高级体系结构。该报告应用程序的体系结构包括三条路径,这些路径的编码和应用程序工作流程的顺序相匹配。它们共同提供下面的功能集:
|
• |
在 HTTP 上通过 XML Web 服务实现客户端的 PivotTable 控件和 OLAP 数据源之间的连接。 |
|
• |
直接从客户端的 PivotTable 控件动态查询 OLAP 数据源(没有任何中间组件)。 |
|
• |
通过 XML Web 服务,能够将自定义的 PivotTable 报告保存和检索到标准的关系型数据库结构中。 |
图 2 OLAP 体系结构
在这种应用程序体系结构中,XML 是主要的参与者。 OWC PivotTable 组件在本地将其内容序列化成 XML。您不但可以将数据写成 XML,而且还可以给 PivotTable 组件加载 XML 数据,只要这些数据符合 Excel 中定义的 XML 架构。这种属性允许 ASP.NET 开发人员创建可以和OWC PivotTable 控件进行双向通信的基于 XML 的 Web 服务。一个 Web 方法可以生成格式化 XML,以填充 PivotTable 控件 (Pathway 1),而另一个方法可以从 PivotTable 控件接受序列化的输出,并将它保存到诸如数据库或文件等持久性媒体上 (Pathway 3)。
一旦在 PivotTable 控件和 OLAP 数据源之间建立了连接,之后用户就可以开始利用 PivotTable 控件的拖放 UI 自由地组合自定义的数据视图。每次更新该控件时,它都会动态地创建一个多维的表达式 (MDX) 查询,并通过 HTTP 网关 (Pathway 2) 直接将请求发送给 OLAP 数据源。这种通信的发生与 Web 服务器无关;Web 页直接与数据库进行对话。在这种体系结构中,Web 服务器的作用是建立 PivotTable 控件和 OLAP 数据源之间的初始连接,并支持保存和检索自定义的 PivotTable 报告。
Office Web 组件
OWC 版本 10 提供了即装即用的功能,不但功能强大,而且用户尽人皆知。因此,对于已经熟悉和乐于使用 Excel 的用户可以较快地接受您的自定义解决方案。图 3 总结了 Office XP 配备的 OWC 组件(版本 10)。注意,Office 2000 配备了前一版(版本 9)的 OWC,它提供的编程接口和用户接口的数量与版本 10 相比非常有限。尽管早期的版本并不支持我们讨论的所有内容,但我们对 OWC 版本 10 的许多讨论也适用于版本 9。
ASP.NET 开发人员几乎没有什么资源可以将 OWC 组件合并到 Web 项目中。大多数在线代码示例都假定您是利用客户端脚本语言(例如 VBScript)来与 OWC 组件进行交互。虽然这种方法非常有用,但它忽视了一种 ASP.NET 可以使用的更强大的方法。也就是,可以创建一个服务器端 OWC 组件实例,建立连接,设置属性,然后利用该实例为一个单独的客户端 PivotTable 组件实例生成 XML 数据。这种编程逻辑包含在体系结构图 Pathway 1 中的 OLAP Data Access Objects 部分(参见图 2)。然后,可以利用基于 XML 的 Web 服务将 XML 传输给客户端组件,同样显示在 Pathway 1 中。
图 4 总结了本文中我们将要使用的 OWC 组件 — 即 PivotTable 与 Chart 组件。这里不包括 Spreadsheet 与 DataSource 控件,因为我们讨论的体系结构中不包含这些控件。图 5 与图 6 分别总结了 PivotTable 与 Chart 组件的编程接口。
PivotTable 组件的接口复杂,但要切记的最重要的一点是 XMLData 属性。这是用 XML 来表示 PivotTable 的全部内容,包括连接到 OLAP 数据源的信息。XMLData 还存储了当前视图中的维数和度量以及使用的格式。可以设置和检索 XMLData 属性,这是一种动态自定义 PivotTable 组件的重要方法。
配置 HTTP 访问的 OLAP 源
在我们开始构建基于 Web 的 OLAP 报告应用程序之前,我们必须配置由 Microsoft Internet 信息服务 (IIS) 访问的 Analysis Services 数据源。IIS Web 站点必须安装在安装 Analysis Services 的同一个服务器上,并且它还必须包含一个称为 msolap.asp 的单独文件。该文件是来自 HTTP 端口上的请求与 Analysis Services 数据源之间的桥梁。该文件位于 \Program Files\Microsoft Analysis Services\bin 路径之下。我们建议您利用安全套接字层 (SSL) 证书在安全连接 (HTTPS) 上配置访问的数据源。该步骤要求您购买 Analysis Services 服务器的 SSL 证书。还可以利用不安全的 (HTTP) 连接来访问数据源,但我们不推荐使用这种方法。
一旦在 Analysis Services 服务器上安装了 IIS,就可以为 HTTPS 访问配置新的 Web 站点。首先在默认的 Web 根目录 (\Inetpub\wwwroot\) 之外创建一个新的 Web 站点目录。出于安全的目的,我们建议您停用默认的 Web 站点。另外,一旦安装了 SSL 证书,就应当关闭防火墙的 80 端口并为 HTTPS 访问打开 443 端口。
将 msolap.asp 文件从 \Program Files\Microsoft Analysis Services\bin 目录复制到新的 Web 站点目录中,并利用 IIS Manager 将新的 Web 站点目录配置为 Web Application 并为 Web 站点添加一个 Host Header Name(例如,olap.mycompany.com)。
购买并在服务器上安装 SSL 证书。在购买验证的过程中,通过 80 端口一定已经可以访问 Web 站点。一旦安装了证书,就可以关闭防火墙的 80 端口并打开 443 端口。利用 IIS Manager 设置 Directory Security,这样可以禁用 Anonymous Access 而启用 Basic Authentication。最后,重新设置 IIS 以应用这些更改。
一旦建立了 HTTPS 访问,必须更新指向 OLAP 数据源的 OLE DB 连接字符串。连接字符串的格式如下:
Provider=MSOLAP;user id=Domain\Username;password=Password;Data
Source=https://ServerName;Initial Catalog=OLAPDataSourceName
有关更多信息,请参考知识库中的文章 279489“How to Connect to Analysis Server 2000 By Using HTTP Connection”。
OLAP 安全访问
一旦可以通过 HTTPS 访问 OLAP 数据源,安全凭据是必需的,因为现在任何可以浏览您的 Web 站点的人都可以使用您的数据源。例如,某个远程用户只要为 Analysis Server 提供 URL 并提供 Initial Catalog 的名称,就可以打开 Excel 并将 PivotTable 连接到您的 OLAP 数据源。
Analysis Services 根据 Windows NT® 用户帐户实现多维数据集的安全角色。本质上,您在服务器上创建一个或多个本地 Windows NT 用户帐户并将它们分配给一个 SQL Server 数据库角色。然后将该数据库角色分配给多维数据集角色,并将该多维数据集角色分配给特定的多维数据集。多维数据集角色本质上继承了 Windows NT 用户 ID 与密码凭据。然后您可以将用户 ID 与密码凭据添加到 OLAP 数据源连接字符串中。
注意,一个 OLAP 数据源可能包含多个多维数据集。通过将 OWC PivotTable 控件的 <DataMember> XML 标记值设置为有效的多维数据集名称,可以连接到特定的多维数据集(下一节将对此进行解释)。给该多维数据集分配的角色必须对应于 OLAP