用于开发人员的OLAP

来源:互联网 发布:软件集成测试报告 编辑:程序博客网 时间:2024/04/30 18:52
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

2000AnalysisServices支持许多用于OLAP的新的结构功能、功能和管理功能选项—包括链接的多维数据集、计算的单元、命名集和分布式分区的多维数据集。AnalysisServices还包含一些用于开发人员的新功能,例如,通过钻取浏览明细数据行的功能,以及允许用户通过使用操作来作用于多维数据集内的单元的功能。在这两种情况下,这些特性所提供的功能在过去即使能够实现,那么在实现时也是非常困难的。RussWhitney在MasteringOLAP专栏的"AnalysisServicesDrillthrough"(2000年6月发表,InstantDocID85301)一文和"AnalysisServicesActions"(2000年7月发表,InstantDocID8758)一文中,讨论了如何将这些功能用于ADOMD。在本文中,我将说明开发人员如何通过添加钻取支持和实现操作,来利用用于Web应用程序的AnalysisServices。

实现钻取

在Microsoft发布了SQLServer7.0OLAP服务后,用户使用最频繁的功能就是检索用于计算特定单元的值的基础数据的功能。举例来说,如果您需要知道某个单元包括哪些客户或哪些产品,该功能就显得非常有用。就其本质而言,OLAP在实现聚合事实数据表的行的功能(这是它的关键优势)的同时也对明细数据行进行了抽象化,并因此使明细数据行的查找变得很困难。在发布AnalysisServices之前,面临这种挑战的开发人员不得不在多维数据集成员和关系之间实现元数据映射层(它包含星型架构或雪花型架构)。访问单元时,代码既要读取多维数据集成员信息,又要读取应用于查询的任何筛选器。然后,代码必须生成SQL查询,以便联接关系数据库中的多个表、执行查询并返回结果集。编写可正确地以这种方式访问单元的代码并不轻松。但有了AnalysisServices以后,您根本就无需编写或维护这种代码。

AnalysisServices包含了用来实现钻取的代码;第38页的图1显示了AnalysisServices如何完成钻取的高级视图。客户端应用程序执行从本地透视表服务传递到OLAP服务器的MDX语句。请记住,透视表服务是OLEDB提供程序,它提供缓存、本地多维数据表处理以及到Analysis(OLAP)服务器的连接。然后,OLAP服务器使用多维数据集中的配置选项和安全设置来创建SQL语句,并将它发送到保存明细数据的关系数据库。SQL语句再通过OLAP服务器和透视表服务将返回的OLEDB行集发回到客户端应用程序。通常,客户端通过ADORecordset对象访问数据。

要实现钻取功能,您必须既要执行管理任务,又要执行应用程序特定的任务。从管理员的角度来说,第一个任务是启用多维数据集的钻取功能。管理员控制多维数据集钻取功能的启用是至关重要的,因为单元常常包含来自数千行甚至数百万行的数据,因此让所有用户不受限制地查询此数据可能导致网络瓶颈。要对多维数据集启用钻取功能,请启动“多维数据集编辑器”,然后依次选择“工具”和“钻取选项”。在得到的“多维数据集钻取选项”对话框中,只需选中“启用钻取”复选框,如图2所示。AnalysisServices支持常规多维数据集、虚拟多维数据集或链接多维数据集的钻取,但AnalysisServices不允许您对某类单元使用钻取,这类单元具有基于计算的成员单元或自定义成员公式的值。

请注意,在图2所示的情况中,您必须启用钻取,并且要使列的列表包含来自架构中的事实数据表和维数表的所有列。在此示例中,多维数据集的名称是Enrollment,利用该多维数据集,可以针对Quilogy技术培训课程中的学生注册情况生成报表。根据您在该对话框中所选择的列,AnalysisServices会在查询基础数据时联接适当的表。图2中的对话框还包含“筛选”选项卡,该选项卡可包含用于限制结果集中的行数的WHERE子句。但是,由钻取动态生成的WHERE子句除外。

1

<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>