动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   Xml → 阅读文章

 XML for Analysis 规范 (一)

作者来源: 
阅读 1232 人次 , 2006-3-29 3:14:00 

综合摘要

XML for Analysis 是一种基于简单对象访问协议 (Simple Object Access Protocol, SOAP) 的 XML API,按照设计,专门用于对在 Web 上工作的客户端应用程序和数据提供程序之间的数据访问交互进行标准化处理。

当前,在传统数据访问技术(如 OLE DB 和 ODBC)条件下,客户端计算机上必须安装与数据提供程序服务器紧密耦合在一起的客户端组件,才能使应用程序能够访问来自数据提供程序的数据。紧密耦合的客户端组件可以基于以下内容建立相关性:特定的硬件平台、特定的操作系统、特定的接口模型、特定的编程语言以及客户端和服务器组件版本的特定匹配。

对安装客户端组件的要求和与紧密耦合结构相关的相关性不适合 Internet 环境,因为该环境是松散结合的、无状态的、跨平台的且与语言无关。要提供对 Web 应用程序的可靠数据访问,Internet、移动设备和跨平台的桌面系统需要一种标准方法,该方法并不要求将组件下载到客户端上。

可扩展标记语言 (XML) 是一种通用的且可以随处访问的语言。如果您不必调用专用的客户端组件接口就可以在不借助客户端组件的情况下调用方法并通过 XML HTTP 消息传递数据,会怎么样?如果应用程序开发人员可以在不考虑与服务器组件或应用程序的紧密耦合的情况下构建客户端组件,会怎么样? 如果利用任何编程语言编写的且可运行在任何平台上的应用程序都可以从 Web 上的任何位置访问数据,而不必考虑具体的平台支持,甚至不用考虑特定的提供程序版本,则情况会怎样呢?本规范将通过 XML for Analysis 回答这些问题。

XML for Analysis 扩展了 OLE DB 的概念,它提供了对 Web 上所有标准数据源的标准化通用数据访问,而无需对提供 COM 接口的客户端组件进行部署。XML for Analysis 专门为 Web 进行了优化,因为它极大地减少了到服务器的往复并且专门针对使用无状态的客户端请求,从而极大地提高了数据源的可伸缩性和强壮性。

本规范定义了两种方法:DiscoverExecute,这两种方法使用并发送 XML,以发现并控制无状态数据。

本规范建立在 HTTP、XML 和 SOAP 等开放式 Internet 标准之上,不受任何具体语言或技术的限制。本规范中也讨论了 OLE DB,使已经熟悉 OLE DB 的应用程序开发人员可以了解 XML for Analysis 的映射和实现方法。这些涉及的内容还为本规范扩展出来的 OLE DB 定义提供背景信息。

读者

本规范的目标读者是应用程序开发人员,并认为他们已熟悉以下内容:

  • XML 知识

  • SOAP 知识

  • 理解联机分析处理 (OLAP) 和数据挖掘

  • 具有使用 OLE DB 和 OLE DB for OLAP 的经验

有关这些知识面的详细信息,请参见附录 E

设计目的

本规范的主要目的包括:

  • 为远程数据访问提供程序(可通用于 Internet 或 Intranet,提供多维数据)提供标准数据访问 API

  • 优化无状态结构,不要求 Web 客户端组件,往返调用最少

  • 支持使用任何工具、编程语言、技术、硬件平台或设备的、与技术无关的实现过程

  • 建立在开放式 Internet 标准(如 SOAP、XML 和 HTTP)之上

  • 利用并重复使用成功的 OLE DB 设计概念,使 OLE DB for OLAP 应用程序和 OLE DB 提供程序可轻松采用 XML for Analysis

  • 高效使用标准数据源(如关系型 OLAP 和数据挖掘)

设计摘要

设计以基于 XML 通信的 API 为中心,该 API 称为 XML for Analysis,它定义两种通常可访问的方法:DiscoverExecute。由于 XML 考虑到松散耦合的客户端和服务器结构,所以两种方法都以 XML 格式处理传入和传出的信息。该 API 为 Internet 进行了优化,在 Internet 中,对服务器的往返调用在时间上和资源上都是成本昂贵的,而且对数据的有状态连接将限制服务器上的用户连接数。

Discover 用于从 Web 服务获取信息和元数据。该信息可以包括一系列可用数据源和有关特定数据源的提供程序的数据。属性用于定义并描述获取哪些数据。客户端应用程序可能需要多种类型的信息,而 Discover 使您可以通过常规方式来指定这些信息。属性的这种通用接口及使用允许扩展,而不必重写现有函数。

Execute 用于针对特定的 XML for Analysis 数据源执行多维表达式 (MDX) 或其它提供程序特定的命令。下图例展示了 n 层应用程序的一种可能的实现过程。

在获得驻留 Web 服务的服务器的 URL 之后,客户端将使用 SOAP 和 HTTP 协议向服务器发出 DiscoverExecute 调用。服务器将 XML for Analysis 提供程序实例化,用于处理 DiscoverExecute 调用。XML for Analysis 提供程序提取数据,将其打包到 XML 中,然后将所请求的数据作为 XML 发送到客户端。

DiscoverExecute 方法使用户可以确定在特定服务器上可以查询的内容,并据此提交要执行的命令。下例演示了 Internet 应用程序或 Web 服务如何使用这些方法。

第一部分 - XML for Analysis

XML for Analysis 简介

XML for Analysis 指定基于 SOAP 的 XML 通信 API,它支持在任何平台上使用任何语言在客户端和服务器之间进行分析数据交换。

方法

以下方法为 XML 应用程序访问服务器上的基本信息提供了一种标准方式。由于这些方法是使用 SOAP 协议调用的,所以它们以 XML 格式接受输入并发送输出。默认情况下,这些方法是无状态的,所以服务器上下文将在任何命令结束时终止。有关如何发出有状态调用的信息,请参见 XML for Analysis 中对有状态的支持

简化接口模型具有两种方法。Discover 方法获取信息,而 Execute 方法将操作请求发送到服务器。这些方法的 XML 名称空间为 "urn:schemas-microsoft-com:xml-analysis".

在每次方法调用中,连接信息都通过连接属性提供。

Discover

Discover 方法可以用于检索信息,如服务器上的可用数据源列表或有关特定数据源的详细信息。利用 Discover 方法检索到的数据取决于传递给它的参数值。

名称空间

urn:schemas-microsoft-com:xml-analysis

SOAP 操作

"urn:schemas-microsoft-com:xml-analysis:Discover"

语法

Discover (
   [in] RequestType As EnumString,
   [in] Restrictions As Restrictions,
   [in] Properties As Properties,
   [out] Result As Rowset)

参数

RequestType [in]

该参数是必需的,它由 RequestTypes 枚举值组成,决定要返回的信息的类型。Discover 方法使用 RequestTypes 枚举决定 Result 参数中所返回行集的结构和内容。Restrictions 参数的格式以及生成的 XML 结果集也取决于在该参数中指定的值。可以对该枚举进行扩展,以支持提供程序特定的枚举字符串。

每个 RequestTypes 枚举值都与一个返回行集相对应。有关行集定义,请参见 XML for Analysis 行集。需要对以下明确命名的 RequestTypes 枚举值进行支持。

枚举值 说明
DISCOVER_DATASOURCES 返回服务器或 Web 服务上可用的 XML for Analysis 数据源列表。(有关其发布方法的示例,请参见 XML for Analysis 实现过程分步说明。)
DISCOVER_PROPERTIES 返回有关所请求属性的信息和值的列表,这些被请求的属性受指定的数据源(提供程序)支持。
DISCOVER_SCHEMA_ROWSETS 返回所有受支持的 RequestTypes 枚举值(包括在这里列出的值)的名称、值和其它信息,以及任何其它提供程序特定的枚举值。
DISCOVER_ENUMERATORS 返回特定数据源提供程序所支持的名称、数据类型和枚举器的枚举值的列表。
DISCOVER_KEYWORDS 返回包含提供程序所保留关键字列表的行集。
DISCOVER_LITERALS 返回数据源提供程序所支持的直接量的信息。
Schema Rowset Constant 在给定与 OLE DB 所定义的架构行集名称之一相对应的常量(如 MDSCHEMA_CUBES)的情况下,返回 XML 格式的 OLE DB 架构行集。注意:提供程序也可能通过提供其它提供程序特定的架构行集来扩展 OLEDB。表格数据提供程序 (TDP) 和多维数据提供程序 (MDP) 应支持的架构行集列在 DISCOVER_SCHEMA_ROWSETS 行集一节中。

Restrictions [in]

该参数属于 Restrictions 数据类型,它使用户可以限制 Result 中返回的数据。Result 列是由 RequestType 参数中指定的行集定义的。某些 Result 列可以用于筛选所返回的行。有关这些列以及可以被限制的列的信息,请参见 XML for Analysis 行集中的行集表。要获取提供程序特定的架构行集的限制信息,请使用 DISCOVER_SCHEMA_ROWSETS 请求类型。

该参数必须包含在内,但可以为空。

Properties [in]

该参数属于 Properties 数据类型,它由 XML for Analysis 属性的集合构成。每个属性都可以使用户控制 Discover 方法的某一方面,如指定结果集、超时的返回格式,以及指定数据格式的区域设置。

要获取可用属性及其值,可以用 Discover 方法并使用 DISCOVER_PROPERTIES 请求类型。标准 XML for Analysis 属性的详细信息将在 XML for Analysis 属性中介绍。

列在 Properties 参数中的属性没有顺序要求。该参数必须包含在内,但可以为空。

Result [out]

该参数是必需的,它包含提供程序作为 Rowset 对象返回的结果集。

结果集的列和内容由在 RequestTypeRestrictions 参数中指定的值决定。所返回结果集的列布局也由在 RequestType 中指定的值决定。有关与各 RequestType 值相对应的行集布局的详细信息,请参见 XML for Analysis 行集

有关 Rowset 数据类型的详细信息,请参见 XML for Analysis 中使用的数据类型

示例

在下面的示例中,客户端发出 XML Discover 调用,向 FoodMart 2000 目录请求多维数据集列表:

  <Discover xmlns="urn:schemas-microsoft-com:xml-analysis" 
  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
   <RequestType>MDSCHEMA_CUBES</RequestType>
   <Restrictions>
    <RestrictionList>
     <CATALOG_NAME>
      FoodMart 2000
     </CATALOG_NAME>
    </RestrictionList>
   </Restrictions>
   <Properties>
    <PropertyList>
     <DataSourceInfo>
      Provider=MSOLAP;Data Source=local;
     </DataSourceInfo>
     <Catalog>
      Foodmart 2000
     </Catalog>
     <Format>
      Tabular
     </Format>
    </PropertyList>
   </Properties>
  </Discover>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

提供程序把以下结果返回到客户端:

<?xml version="1.0">
<SOAP-ENV:Envelope
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
 <SOAP-ENV:Body>
  <DiscoverResponse xmlns="urn:schemas-microsoft-com:xml-analysis">
   <return>
    <root>
     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <!-- 结果的 XML 架构定义出现在这里 -->
      ...
     </xsd:schema>
     <row>
      <CATALOG_NAME>FoodMart 2000</CATALOG_NAME>
      <CUBE_NAME>Sales</CUBE_NAME>
      ...
     </row>
     <row>
      <CATALOG_NAME>FoodMart 2000</CATALOG_NAME>
      <CUBE_NAME>Warehouse</CUBE_NAME>
      ...
     </row>
     ...
    </root>
   </return>
  </DiscoverResponse>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Execute

Execute 方法用于向服务器发出操作请求。其中包括涉及数据传输的请求,如检索或更新服务器上的数据。

名称空间

urn:schemas-microsoft-com:xml-analysis 

SOAP 操作

"urn:schemas-microsoft-com:xml-analysis:Execute"

语法

Execute (
   [in] Command As Command,
   [in] Properties As Properties,
   [out] Result As Resultset)

参数

Command [in]

该参数是必需的,它属于 Command 数据类型,由要执行的提供程序特定的语句组成。XML for Analysis 多维提供程序必须支持 mdXML 语言,但也可以根据需要支持其它命令。

Properties [in]

该参数属于 Properties 数据类型,它由 XML for Analysis 属性的集合组成。每个属性都允许用户控制 Execute 方法的某一方面,如定义连接所要求的信息、指定结果集的返回格式或指定数据格式的区域设置。

要获取可用属性及其值,可以用 Discover 方法并使用 DISCOVER_PROPERTIES 请求类型。标准 XML for Analysis 属性的详细信息将在 XML for Analysis 属性中介绍。

列在 Properties 参数中的属性没有顺序要求。该参数必须包含在内,但可以为空。

Result [out]

该参数包含提供程序所返回的 Resultset 结果。Command 参数和 Properties 参数中的值将定义结果集的形状。如果没有传递任何形状定义属性,XML for Analysis 提供程序将使用默认形状。

本规范所定义的两种结果集格式为表格式 (Tabular) 和多维式 (Multidimensional),符合客户端通过 Format 属性指定的格式。OLAP 数据使用多维格式(虽然也可以使用表格格式)。提供程序可能还支持其它行集类型,了解这些特殊类型的客户端可以对它们进行请求。

示例

以下是一个 Execute 方法调用的示例,其 <Statement> 设置为 OLAP MDX SELECT 语句:

  <Execute xmlns="urn:schemas-microsoft-com:xml-analysis" 
  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
   <Command>
    <Statement>
     select [Measures].members on Columns from Sales
    </Statement>
   <Command>
   <Properties>
    <PropertyList>
     <DataSourceInfo>
Provider=Essbase;Data Source=local;
     </DataSourceInfo>
     <Catalog>Foodmart 2000</Catalog>
     <Format>Multidimensional</Format>
     <AxisFormat>ClusterFormat</AxisFormat>
    </PropertyList>
   </Properties>
  </Execute>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

这是对前述方法调用的简要响应:

<?xml version="1.0">
<SOAP-ENV:Envelope xmlns:
 SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
 SOAP-ENV:encodingStyle=
 "http://schemas.xmlsoap.org/soap/encoding/"> 
  <SOAP-ENV:Body>  
  <m:ExecuteResponse 
  xmlns:m="urn:schemas-microsoft-com:xml-analysis">  
  <m:return  SOAP-ENV:encodingStyle=
  "http://schemas.xmlsoap.org/soap/encoding/">
    <root>    
      <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      xmlns:xars="urn:schemas-microsoft-com:xars">
        ...<!—数据的架构出现在这里。-- >
      </xsd:schema>
        ... <!—MDDataSet 格式的数据出现在这里。-- >
    </root>  
  </m:return>  
  </m:ExecuteResponse> 
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

XML for Analysis 中使用的数据类型

以下按字母顺序排列的列表对 XML for Analysis 数据类型进行了说明并对使用标准 XML 数据类型的数据类型进行了标注。有关 XML 架构类型的详细信息,请参见 http://www.w3.org/TR/xmlschema-2/

Boolean

Boolean 型使用标准 XML 布尔型数据类型。

XML 布尔型数据类型用 1 表示 True(真),用 0 表示 False(假)。

Decimal

本文所述的 Decimal 型使用标准 XML 十进制数据类型。

Integer

本文所述的 Integer 型是指标准 XML 整数数据类型。

EnumString

EnumString 数据类型为给定的枚举器 (enum) 定义一组已命名常量。EnumString 使用标准 XML 字符串数据类型。每个已命名常量的具体值都是用枚举器定义指定的。

MDDataSet

MDDataSet 格式是 Execute 方法的 Result 参数可以返回的格式之一。该格式用于多维数据。用 XML 表示 OLAP 数据要求针对 OLAP 的行集(或数据集),本文对其进行了说明。MDDataSet 数据类型的 XML 名称空间为 "urn:schemas-microsoft-com:xml-analysis:mddataset".

有关 OLE DB for OLAP 数据集结构的基本信息,请参见 MDDataset 数据类型到 OLE DB 的映射。有关 MDDataSet 的完整 XML 架构定义 (XSD) 的示例,请参见附录 D

本规范为 OLAP 结果定义以下 XML 结构。MDDataSet 由三个主要部分组成:

  • OLAPInfo:定义结果的结构,列出并说明将使用的坐标轴和单元格

  • Axes:包含在 OLAPInfo 结构中定义的坐标轴的数据

  • CellData:包含在 OLAPInfo 结构中定义的单元格的数据

提供程序只要不更改这里所定义架构的行为和含义,就可以在结构中添加其它批注。这种开放式内容架构模型允许从其它名称空间添加新元素和特性,但不允许更改所定义的元素和特性的语义。

OLAPInfo

为了定义结构,<OlapInfo> 首先使用 <AxesInfo> 元素(注意是复数形式 Axes)来定义坐标轴。坐标轴由一组 <AxisInfo> 元素(注意是单数形式 Axis)组成,这些元素的别名是序列化的,如 name="Axis0"。然后,维层次结构连同其属性定义一起列出。在随后的示例中,标准成员属性用 <HierarchyInfo> 元素进行表示,包括 UName、Caption、LName 和 LNum,以及非标准 DisplayInfo 元素。对于 Store 层次结构,附加的(非标准)带空格字符的成员属性用 [Store].[Store SQFT] 进行说明。

<OlapInfo>
   <AxesInfo>
      <AxisInfo name="Axis0">
         <HierarchyInfo name="Measures">
            <UName name="[Measures].[MEMBER_UNIQUE_NAME]"></UName>
               <Caption name="[Measures].[MEMBER_CAPTION]"></Caption>
                  <LName name="[Measures].[LEVEL_UNIQUE_NAME]"></LName>
                     <LNum name="[Measures].[LEVEL_NUMBER]"></LNum>
                        <DisplayInfo name="[Measures].[DISPLAY_INFO]"></DisplayInfo>
                  </HierarchyInfo>
               </AxisInfo> 
                  <AxisInfo name="Axis1">
                     <HierarchyInfo name="Store">
                            <UName name="[Store].[MEMBER_UNIQUE_NAME]"></UName>
                           <Caption name="[Store].[MEMBER_CAPTION]"></Caption>
                           <LName name="[Store].[LEVEL_UNIQUE_NAME]"></LName>
                           <LNum name="[Store].[LEVEL_NUMBER]"></LNum>
                           <DisplayInfo name="[Store].[DISPLAY_INFO]"></DisplayInfo>
                           <Store_x0020_SQFT name="[Store].[Store Name].[Store SQFT]">
			   </Store_x0020_SQFT>
                     </HierarchyInfo>
                     <HierarchyInfo name="Time">
                           <UName name="[Time].[MEMBER_UNIQUE_NAME]"></UName>
                           <Caption name="[Time].[MEMBER_CAPTION]"></Caption>
                           <LName name="[Time].[LEVEL_UNIQUE_NAME]"></LName>
                           <LNum name="[Time].[LEVEL_NUMBER]"></LNum>
                           <DisplayInfo name="[Time].[DISPLAY_INFO]"></DisplayInfo>
                     </HierarchyInfo>
                   </AxisInfo>

OLAPInfo 结构定义的最后一项内容是单元格的属性(列定义)。这使单元格可以包含其它属性。本示例中的属性为 Value、FmtValue 和自定义的属性 FormatString。

<OlapInfo>
 ...
            <CellInfo>
                  <Value name="VALUE"></Value>
                  <FmtValue name="FORMATTED_VALUE"></FmtValue>
                  <FormatString name="FORMAT_STRING"></FormatString>
            </CellInfo>

HierarchyInfo 标准元素

以下标准元素是 <HierarchyInfo> 元素所要求的元素。MDSCHEMA 引用是指 OLE DB for OLAP 架构定义。

元素 说明
UName 来自 OLE DB 坐标轴行集的 MEMBER_UNIQUE_NAME 属性
Caption 来自 OLE DB 坐标轴行集的 MEMBER_CAPTION 属性
LName 来自 OLE DB 坐标轴行集的 LEVEL_UNIQUE_NAME 属性
LNum 来自 OLE DB 坐标轴行集的 LEVEL_NUMBER 属性

CellInfo 标准元素

以下是 <CellInfo> 元素的标准元素。特定查询是否能够返回这些标准元素则取决于查询本身。

元素 说明
Value 来自 OLE DB 单元格属性的 VALUE 属性
FmtValue 来自 OLE DB 单元格属性的 FORMATTED_VALUE 属性
ForeColor 来自 OLE DB 单元格属性的 FORE_COLOR 属性
BackColor 来自 OLE DB 单元格属性的 BACK_COLOR 属性

在 CellInfo 和 AxisInfo 中使用默认值

提供程序可以选择性地为 AxisInfo 或 CellInfo 部分中的单个成员或单元格属性指定默认值。如果同一属性总是具有或常常具有相同的值,可减小结果的大小。

可以选择性地将 <Default> 元素指定为某个成员属性元素或单元格属性元素的子元素,用以表示该属性的默认值。例如,如果提供程序要为 Store SQFT 指定默认值,可以这样来指定:

<Store_x0020_SQFT name="Store SQFT">
 <Default>5000</Default>
</Store_x0020_SQFT>

这样,如果结果中没有某个成员属性或单元格属性,则表示该成员属性或单元格属性的值为所声明的默认值。在以下结果中,完全没有 <Store_x0020_SQFT> 元素的输出,则 <Store_x0020_SQFT> 的值为 5000(以上所定义的默认值):

<Member Hierarchy="Store">
      <UName>[Store].[CA]</UName>
      <Caption>CA</Caption>
      <LName>[Store].[State]</LName>
      <LNum>2</LNum>
</Member>

如果元素存在,但没有值,这表示空字符串结果 (""),如下例所示:

<Store_x0020_SQFT />

通常,如果属性为 NULL,将被忽略。但如果已经为属性定义了默认值,则如要为属性指定 NULL 值,应使用 XML 架构规范中的空特性,如下所示:

<Store_x0020_SQFT xsi:null='true' />

Axes

在 Axes 下,Axis 项将从零开始,按照它们在数据集中的顺序列出。AxisFormat 属性设置决定各 Axis 元素的格式。所有 XML for Analysis 提供程序都必须支持属性 AxisFormat 的以下值:

  • ClusterFormat

  • TupleFormat

  • CustomFormat

提供程序可以选择性地支持将 CustomFormat 值作为单独的格式。如果客户端请求 CustomFormat,提供程序可以根据判断选择返回 TupleFormat 和 ClusterFormat 格式之一。虽然提供程序必须支持上述全部三种值,但客户端可以请求其需要的格式;所以客户端可以选择不使用所有这三种可用的格式。

为什么会有不同的格式?

AxisFormat 属性的 TupleFormat 和 ClusterFormat 设置提供两种不同的表示元组的方法。MDDataset 定义赋予提供程序两种指定元组的方法:将其指定为多维元组或将其指定为笛卡尔乘积。这使客户端应用程序可以在简单性和降低空间要求之间进行选择。

坐标轴表示一个元组集,该集中的所有元组都具有相同的维数。可以用不同的方法表示该集,不同的方法有不同的优点。例如,下面的四元组集可以表示为二维元组集合或两个一维集的笛卡尔乘积。

1999 1999 2000 2000
Actual Budget Actual Budget

下面的行将四元组集表示为二维元组集合:

{ ( 1999, Actual), ( 1999, Budget), ( 2000, Actual), ( 2000, Budget) }

下面的行将四元组集表示为两个一维集的笛卡尔乘积:

{ 1999, 2000 } x {Actual, Budget}

两种表示方法各具优缺点。二维元组易于客户端工具使用。一维集的笛卡尔乘积占用的空间较小,并且保留了集的多维本质。

下表列出了可以用于定义和描述坐标轴结构和成员的操作。

操作 说明
Member 表示维层次结构成员的坐标轴的最小单位
Tuple 来自不同维层次结构的成员向量
Members 来自同一维层次结构的成员对象集
Tuples 具有相同维数的元组对象集合
Union 集联合
CrossProduct 集的笛卡尔乘积

根据前面的示例,这些操作将把二维元组和一维集的笛卡尔乘积转换为如下形式。

二维元组

Tuples ( 
Tuple( Member(1999), Member(Actual) ), 
Tuple( Member(1999), Member(Budget) ), 
Tuple( Member(2000), Member(Actual) ), 
Tuple( Member(2000), Member(Budget) ) 
)

一维集的笛卡尔乘积

CrossProduct ( 
Members (Member(1999), Member(2000) ), 
Members (Member(Actual), Member(Budget) 
)

这些操作的 XML 表示法遵循这些规则(其中 member_properties 值是指在相应的 AxisInfo 部分所定义的成员属性列表):

member ?? : <Member> member_properties </Member>

tuple ??????? : <Tuple> member_list </Tuple>

set ?????????? : <Members> member_list </Members>

set ?????????? : <Tuples> tuple_list </Tuples>

set ?????????? : <CrossProduct> set_list </CrossProduct>

set ?????????? : <Union> set_list </Union>

member_list : member [ member ... ]

tuple_list ??? : tuple [ tuple ... ]

set_list ?????? : set [ set ... ]

如上所示,使用不同的操作,相同的集可以有不同的表示方法。客户端可以使用 AxisFormat 属性请求具体的表示方法。

TupleFormat

在 TupleFormat 中,坐标轴表示为元组集。下列操作必须按指定的顺序使用:

<Axis>
      <Tuples>
            <Tuple>
                  <Member Hierarchy="name">

另外,<Member> 元素必须具有指定成员层次结构名称的 Hierarchy 特性。

下例说明 TupleFormat。

1999 1999 2000
Actual Budget Budget

<Axes>
 <Axis name="Axis0">   
  <Tuples>
   <Tuple>
    <Member Hierarchy="Time">
     <UName>[Time].[1999]</UName>
     </Member>
    <Member Hierarchy="Category">
     <UName>[Scenario].[Actual]</UName>
     </Member>
   </Tuple>
   <Tuple>
    <Member Hierarchy="Time">
     <UName>[Time].[1999]</UName>
     </Member>
    <Member Hierarchy="Category">
     <UName>[Scenario].[Budget]</UName>
     </Member>
   </Tuple>
   <Tuple>
    <Member Hierarchy="Time">
     <UName>[Time].[2000]</UName>
     </Member>
    <Member Hierarchy="Category">
     <UName>[Scenario].[Budget]</UName>
     </Member>
   </Tuple>
  </Tuples>
 </Axis>
 ...
</Axes>

ClusterFormat

在 ClusterFormat 中,坐标轴表示为一组群集。每个群集都表示一个来自不同维层次结构成员的交叉乘积。提供程序将定义自己特定的群集算法。以下操作必须按指定的顺序使用:

<Axis>
 <CrossProduct Size="size">
  <Members Hierarchy="name">
   <Member>

要将对象表示为群集,<CrossProduct> 元素必须具有 Size 特性,该特性表示 CrossProduct 中单个 Member 集乘积生成的元组数。而 <Members> 元素必须具有 Hierarchy 特性,该特性指定集中所有成员的维层次结构的名称。

交叉乘积可能包含来自单个维层次结构的成员。

以下示例对两个群集进行了说明:

1999 1999 2000 2000 2001
Actual Budget Actual Budget Budget
cluster 1 cluster 2

<Axes>
 <Axis name="Axis0">
  <CrossProduct Size = "4">
   <Members Hierarchy="Time">
    <Member>
     <UName>[Time].[1999]</UName>
     </Member>
    <Member>
     <UName>[Time].[2000]</UName>
     </Member>
   </Members>
   <Members Hierarchy="Category">
    <Member>
     <UName>[Scenario].[Actual]</UName>
     </Member>
    <Member>
     <UName>[Scenario].[Budget]</UName>
     </Member>
   </Members>
  </CrossProduct>
  <CrossProduct Size = "1">
   <Members Hierarchy="Time">
    <Member>
     <UName>[Time].[2001]</UName>
     </Member>
   </Members>
   <Members Hierarchy="Category">
    <Member>
     <UName>[Scenario].[Budget]</UName>
     </Member>
   </Members>
  </CrossProduct>
 </Axis>
 </Axes>

CustomFormat

CustomFormat 允许提供程序以任何以上各节中所定义的操作的有效组合来生成坐标轴,但有如下限制:

  • 只有 <Union><CrossProduct><Members><Tuples> 元素才能作为坐标轴的第一个子项出现。

  • <Tuple> 元素下的 <Member> 元素必须包含 Hierarchy 特性,表示成员所属层次结构的名称。

  • <Members> 元素必须包含 Hierarchy 特性,表示集中所有成员的层次结构名称。

CustomFormat 最大限度地加强了提供程序的灵活性和功能,从而最优表示坐标轴。

本节是一个示例,演示提供程序将为 CustomFormat 选择返回的内容。

WA WA CA CA
Umbrella(雨伞) Umbrella(雨伞) Sunglasses(太阳眼镜) Sunglasses(太阳眼镜)
Actual Budget Actual Budget

提供程序可以选择为 CustomFormat 结果生成以下表示法。在此例中,元组集与成员集交叉相乘。

CrossProduct( 
Tuples ( 
Tuple ( Member(WA), Member(Umbrella) ), 
Tuple ( Member(CA), Member(Sunglasses) ) ), 
     Members ( Member(Actual), Member(Budget) ) 
)

上面的理论公式可以用 XML 表示成如下形式:

<Axis name="Axis0">
 <CrossProduct>
  <Tuples>
   <Tuple>
    <Member Hierarchy="Store">
<UName>[Store].[WA]</UName>
...
</Member>
    <Member Hierarchy="Product">
<UName>[Product].[Umbrella]</UName>
...
</Member>
   </Tuple>
   <Tuple>
    <Member Hierarchy="Store">
<UName>[Store].[CA]</UName>
...
</Member>
    <Member Hierarchy="Product">
<UName>[Product].[Sunglasses]</UName>
...
</Member>
   </Tuple>
  </Tuples>
  <Members Hierarchy="Category">
  <Member>
  <UName>[Category].[Actual]</UName>
  ...
  </Member>
  <Member>
  <UName>[Category].[Budget]</UName>
  ...
  </Member>
  </Members>
 </CrossProduct>
</Axis>
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:XML for Analysis 规范 (二)
· 下一篇:XML 中的常见问题
· Web设计中如何使用XML数据2
· 利用XML不离开页面刷新数据
· 利用ASP + XML 架设在线考试系统
· XSL-FO 学习笔记
· XML简明教程第6课 使用XML Schema


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077