admin管理员组文章数量:1594583
原著:Jeffrey Hasan、Kenneth Tu 原文出处:MSDN Magazine Oct 2003 (OLAP) 原代码下载:OLAP.exe (373KB) 本文假设读者熟悉 ASP.NET 和 SQL Server。 摘要 越来越多的公司使用在线分析处理(OLAP)和数据钻取技术来处理它们复杂的数据。OLAP是专门用于处理多维数据集的技术,这些数据间的模式和关系并不清晰。Microsoft® SQL Server 2000 Analysis Services 因其与 SQL SERVER 2000 的紧密集成并且与 SQL Server 后续版本的更紧密的集成,正在成为一种被广泛采纳的 OLAP 处理和数据钻取的选择。
Provider=MSOLAP;user id=Domain/Username;password=Password;Data Source=https://ServerName;Initial Catalog=OLAPDataSourceName 更详细的信息参见知识库文章(Knowledge Base )Q279489:“How to Connect to Analysis Server 2000 By Using HTTP Connection”. <appSettings> <add key="OLAPConnectionString" value="Provider=MSOLAP.2"; Data Source=https://ServerName;Initial Catalog=Foodmart 2000> </appSettings>注意这个连接串没有包含安全信任(如 User ID 和 password),只有在 Analysis Server 中实现了安全规则时才需要这些信任, 如前所述,我们鼓励你添加安全规则。一旦你准备就绪,只要简单地将此信任加到连接串的尾部即可。 为了让该连接串工作,不要忘了配置用 HTTP 可以存取 Analysis Server。配置步骤在本文前面也有描述。项目初始设置使用 http://localhost/olap 作为其数据源,因此,你需要在默认的 Web 站点下 创建一个名为 olap 的虚拟目录,并将 msolap.asp 文件拷贝到该虚拟目录下。简单一点,你可以用你的机器名替代 Data Source 的值,省略前导 https:// 部分。这将允许到标准 OLAP 数据源的连接,而不是 HTTP 连接。如果出于示范目的,这样做是可以的。 但是如果你不启用 HTTP 存取,你就无法将 Analysis Server 暴露给网络域外的用户。 最后,在你继续网下做之前,需要在 OLAPReport 项目中设置到 OWC10 COM 组件的引用(通常,Setup 项目会负责此事,但知道这个步骤总是很有用的)。其设置步骤如下:打开 Solution Explorer,鼠标右键点击项目图标,从弹出菜单中选择 Add Reference。出现对话框后,切换到 COM 标签,查找名为 Microsoft Office XP Web Components (OWC10.DLL) 的组件。点击 Select 按钮,然后 OK 按钮。Visual Studio .NET 自动产生一系列该组件的包装文件并添加 OWC10 的项目引用。 连接控件和数据源 现在依次实现应用程序的三个特性。第一,讨论 Pathway 1 —— 如何在客户端的 OWC 控件和OLAP 数据源间建立连接。使用用户界面上的 Set Connection 按钮实现本功能。此按钮调用JavaScript 函数 initializePivotTable 并使用多维数据集名作为参数。本例中使用 Sales 多维数据集。 JavaScript 继而调用 InitializePivotTableXML Web 方法(在名为 InitializePivotTableXML Web 的 DHTML 行为中实现,参见本文前述内容)。此 Web 方法连接到 OLAP 数据源并且产生PivotTable 控件的 XMLData,其输出由一个 JavaScript 函数 onInitializePivotTableResult 处理。Figure 8 是 JavaScript 的代码,而 Figure 9 是 Web方法的代码。这两个例子中的代码好就好在不仅很简单,而且还可以重用。通过简单的步骤,我们就可以使用这些函数在 Web 服务器上产生定制的 XMLData 并将其传到客户端的 PivotTable 去。 第二,在建立连接的过程中,我们有效地使用 Sales 多维数据集的空白报表初始化 OWC 控件。空白报表使用多维数据集中的字段信息和度量值填充 Field List,通过拖放字段进 Row 和 Column域,将 Measures 拖拽到 Totals 域,用户可以在 PivotTable 中创建定制的报表。每次用户拖放字段到 PivotTable 去,后者向数据源发送查询请求,然后得到数据源的更多的查询结果。数据交换 是由 Web Service 单独管理的,只有在控件与数据源建立初始化连接时才使用它。Figure 2 中显示了数据交换的通道 Pathway 2。 动态产生定制的 PivotTable 报表 现在让我们通过编程实现一个定制的报表来深入 PivotTable 对象模型。我们想要新建的定制报表允许用户选择两个城市,并且比较 Drinks Product Family 的 Store Sales。我们使用和 Pathway 1 一样的方法,这意味着我们调用 Web 方法以便产生描述报表的 XMLData。然后我们将 Web 方法返回的 XMLData 赋值给控件的 XMLData 属性。界面提供了两个下拉式的城市列表和一个 Load Custom Report 按钮(参见 Figure 7)。此按钮激活一个名为 LoadCustomReport 的 JavaScript函数,该函数接受来自 Web 表单的两个城市作为输入参数,继而调用 LoadCustomPivotTableReport Web 方法,该方法为定制报表产生 XMLData。最后,一个 JavaScript 处理函数从 Web 方法中接受 XMLData 并赋值给内嵌的 PivotControl 的 XMLData 属性。Figure 10 是 Web 方法的代码。 LoadCustomPivotTableReport 方法使用了大量的 PivotTable 的属性(参见 Figure 5)。请务必牢记以下几点: 保存和获取定制的报表 function SaveReport() { // Purpose: Call Web Service method to save the report var strReportXMLData = frm1.PivotTable1.XMLData; var iCallID = service.sVCOLAP.callService(onSaveReportResult, ''SaveReport'', strReportXMLData, ''OLAPReport1.xml } 此 Web 方法紧接着将 XMLData 写入一个文件。Load Saved Report 按钮则调用一个 JavaScript函数完成反向的工作,如 Figure 11 所示。此函数调用一个 Web 方法打开文本文件,获取 XMLData,然后回传用以绑定 PivotTable 控件。 Sub <ObjectName>_<EventName>JavaScript 中的语法如下: <script language="javascript" event="EventName" for="ObjectName">例子程序中演示了如何捕捉 Query 和 CommandExecute 事件。事件处理代码参见 Figure 12。当Query 事件被激活时,程序在 Web 页的左边文本框中填写事件日志。CommandExecute 事件被激活后,我们首先检查是否它是个刷新命令。如是,程序在文本框中填写事件的日期和事件日志。 绑定图表到 PivotTable 控件 在多数情况下,图形化的数据表示对用户试非常有价值的。幸运的是,OWC 提供了 ChartSpace 控件,后者提供了图形化的函数。为了改进定制报表,我们使用条形图来表示数据。虽然这似乎是项艰巨的工作,但 ChartSpace 控件可极大地帮助我们解决这个难题。ChartSpace 控件有用的特征之一是它能将另外控件, 如 PivotTable 绑定为它的数据源,其还可以以图形格式显示当前的 PivotTable 视图。最终的结果是 PivotTable 视图的变化会自动地显示在 ChartSpace 控件中。 在例子中,当产生了定制的 PivotTable 报表后,我们只需将 PivotTable 赋值到 ChartSpace 控件的 DataSource 属性去即可。 frm1.ChartSpace1.Clear(); frm1.ChartSpace1.DataSource = frm1.PivotTable1; // Set the chart type to 3DBar。 frm1.ChartSpace1.Charts(0).Type = 50;在为 DataSource 属性赋值前需要调用 Clear 方法以清除以前图表的实例。ChartSpace 控件提供了许多定制的属性,包括Type属性,其接受一个 ChartChartTypeEnum 值以定义图表的格式。 创建定制分组 最后,让我们一起去看一下 OWC 10 最重要的新特性——新建定制分组的功能。当前我们的报表按照 Time 字段来分组 sales 度量值。在此例子中,时间依照年/月/日顺序分组。如果我们在定制的报表中不想使用多维数据集中定义好的分组模式,我们可以使用 OWC 10 控件中的定制分组功能。Apply Custom Grouping 按钮调用一个 JavaScript 函数,后者调用 ApplyCustomGrouping Web方法。输入参数为当前加载的项目的 XMLData。此 Web 方法将加载一个 PivotTable 控件并调用AddCustomGroupField 方法定义定制分组,例子中使用半年时间来分组。代码见 Figure 13。 注意我们添加一个有两个成员("1stHalf" 和 "2ndHalf")的定制分组("CustomGroup1")以涵盖整年。调用 AddCustomGroupMember 方法以添加上述的定制成员。当 Web 页面上的函数执行时,ChartSpace 控件可以自动将定制分组功能反映到条形图表中——这也是使用 Office Web Components 10 的优点。 还有一个与定制分组有关的问题。XMLData 不保存与定制分组名相关的数据。如果保存 XMLData (如前面 Save Report 函数所执行的)后,再将保存的 XMLData 加载到 PivotTable,定制分组的标题栏("1stHalf", "2ndHalf")以 GUIDs 形式显示。尽管如此,OWC 10 组件与以前版本相比,有了大的改进,并因此成为基于 Web 的 OLAP 报表设计的非常有效的工具。 对 HTTP 客户端要求 既然我们已经构建了我们基于 Web 的 OLAP 报表设计程序,为了使用该程序,每个 Web 用户必须进行如下配置。第一、每个 Web 用户须安装 Office XP 到自己计算机上。或者,他必须有权访问一个服务器上授权的 Office XP,因为 OWC 组件是与 Office XP一起发行的。 第二、每个 Web 用户必须使用 Internet Explorer 5.0 或更高版本。因为 Web 程序使用了 Web Service DHTML 行为,需要 Internet Explorer 5.0 或更高版本的支持。此外,客户端的 OWC 组件是 Microsoft COM 组件,只能在微软的浏览器下运行。(我们也知道其它一些浏览器也提供了支持客户端 COM 控件的插件,但我们没有在这些浏览器下测试过 OWC)。 第三、每个 Web 用户必须正确安装了 OLE DB 供应者,尤其是 Microsoft OLE DB Provider for OLAP Services 8.0 或更高版本。该供应者与分布式的 PivotTable Services 一起安装,后者包括一组 DLL 文件并且需要 Microsoft Data Access Components (MDAC)的支持。PivotTable Service 可以从 SQL Server 2000 CD-ROM 的/Msolap/Install/Pts 目录下安装。可以选择安装 PtsLite.exe 或 PtsFull.exe,后者安装 PivotTable Service 和 MDAC,而前者仅安装 PivotTable Service。如果你不能确定你需要哪种版本,安装 PtsFull.exe 即可。因为只有 Microsoft Analysis Services 能自动安装服务,所以你还需在每个 Web 客户机上安装 PivotTable Service。你可以使用 Excel PivotTable 向导去检测 Web客户机上是否已经安装了 PivotTable Service。 第四、每个 Web 客户必须将应用程序的 Web 域添加到其 IE 的受信站点清单中去。因为应用程序驻留在不同于客户机的域上,因此 OWC PivotTable 控件每次必须跨域去访问 OLAP 数据源。所以,程序的 Web 域必须置于客户机受信任的站点内。具体配置方法如下:打开IE——点击 Tools| Options——选择 Security 标签——点击 Trusted 图标——点击 Sites 按钮。 你也可以采取另外一种办法:为客户提供一个注册文件以自动更新客户的受信站点。以下是一个注册键的例子: [HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings/ZoneMap/Domains/mycompany] "https"=dword:00000002注意,注册文件对同一客户机上的不同用户必须分别运行,因为其只更新 HKEY_CURRENT_USER下的注册键值。例如,如果两个域用户共享同一机子,那末他们必须以各自的账号登陆后分别运行注册文件。 结论 基于 Web 的 OLAP 报表解决方案提供了诱人的技术挑战,因为其设计多项复杂的技术,包括 SQL Server 2000 Analysis Services、Office Web Components、XML和 ASP.NET。在本文中搭建的体系是为了最大限度地发挥各项技术的特点。相信将来 肯定会有更多此类体系架构以解决不同的问题。 |
作者简介 Jeffrey Hasan 是专门使用微软技术进行企业应用开发的技术架构师和软件开发者。他是数本书籍和文章的合著者。更多的信息请访问:http://www.asptechnology。 Jeff 的 E-mail:jeff@asptechnology Kenneth Tu 是专攻微软技术的软件开发者,在 Windows 和 基于 Web 的企业应用方面有着广泛的经验。他和 Jeffrey 合著有《Performance Tuning and Optimizing ASP.NET Applications》(APress, 2003)。 E-mail:ken@asptechnology |
本文出自 MSDN Magazine 的 October 2003 期刊,可通过当地 报摊获得,或者最好是 订阅 |
本文由 VCKBASE MTT 翻译
版权声明:本文标题:在 ASP.NET 中使用 SQL Server 2000 Analysis Services 和 Office XP构造 OLAP 报表设计程序 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1728196415a1149269.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论