XML for Analysis 规范 (一)
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 进行了优化,因为它极大地减少了到服务器的往复并且专门针对使用无状态的客户端请求,从而极大地提高了数据源的可伸缩性和强壮性。,这两种方法使用并发送 XML,以发现并控制无状态数据。本规范建立在 HTTP、XML 和 SOAP 等开放式 Internet 标准之上,不受任何具体语言或技术的限制。本规范中也讨论了 OLE DB,使已经熟悉 OLE DB 的应用程序开发人员可以了解 XML for Analysis 的映射和实现方法。这些涉及的内容还为本规范扩展出来的 OLE DB 定义提供背景信息。本规范的目标读者是应用程序开发人员,并认为他们已熟悉以下内容:有关这些知识面的详细信息,请参见。为远程数据访问提供程序(可通用于 Internet 或 Intranet,提供多维数据)提供标准数据访问 API
优化无状态结构,不要求 Web 客户端组件,往返调用最少
利用并重复使用成功的 OLE DB 设计概念,使 OLE DB for OLAP 应用程序和 OLE DB 提供程序可轻松采用 XML for Analysis
设计以基于 XML 通信的 API 为中心,该 API 称为 XML for Analysis,它定义两种通常可访问的方法:Discover。由于 XML 考虑到松散耦合的客户端和服务器结构,所以两种方法都以 XML 格式处理传入和传出的信息。该 API 为 Internet 进行了优化,在 Internet 中,对服务器的往返调用在时间上和资源上都是成本昂贵的,而且对数据的有状态连接将限制服务器上的用户连接数。用于从 Web 服务获取信息和元数据。该信息可以包括一系列可用数据源和有关特定数据源的提供程序的数据。属性用于定义并描述获取哪些数据。客户端应用程序可能需要多种类型的信息,而Discover使您可以通过常规方式来指定这些信息。属性的这种通用接口及使用允许扩展,而不必重写现有函数。用于针对特定的 XML for Analysis 数据源执行多维表达式 (MDX) 或其它提供程序特定的命令。下图例展示了n层应用程序的一种可能的实现过程。在获得驻留 Web 服务的服务器的 URL 之后,客户端将使用 SOAP 和 HTTP 协议向服务器发出Discover调用。服务器将 XML for Analysis 提供程序实例化,用于处理Discover调用。XML for Analysis 提供程序提取数据,将其打包到 XML 中,然后将所请求的数据作为 XML 发送到客户端。方法使用户可以确定在特定服务器上可以查询的内容,并据此提交要执行的命令。下例演示了 Internet 应用程序或 Web 服务如何使用这些方法。XML for Analysis 指定基于 SOAP 的 XML 通信 API,它支持在任何平台上使用任何语言在客户端和服务器之间进行分析数据交换。以下方法为 XML 应用程序访问服务器上的基本信息提供了一种标准方式。由于这些方法是使用 SOAP 协议调用的,所以它们以 XML 格式接受输入并发送输出。默认情况下,这些方法是无状态的,所以服务器上下文将在任何命令结束时终止。有关如何发出有状态调用的信息,请参见。简化接口模型具有两种方法。Discover方法获取信息,而Execute方法将操作请求发送到服务器。这些方法的 XML 名称空间为"urn:schemas-microsoft-com:xml-analysis"在每次方法调用中,连接信息都通过连接属性提供。方法可以用于检索信息,如服务器上的可用数据源列表或有关特定数据源的详细信息。利用Discover方法检索到的数据取决于传递给它的参数值。该参数是必需的,它由 RequestTypes 枚举值组成,决定要返回的信息的类型。Discover参数中所返回行集的结构和内容。Restrictions参数的格式以及生成的 XML 结果集也取决于在该参数中指定的值。可以对该枚举进行扩展,以支持提供程序特定的枚举字符串。每个 RequestTypes 枚举值都与一个返回行集相对应。有关行集定义,请参见。需要对以下明确命名的 RequestTypes 枚举值进行支持。返回服务器或 Web 服务上可用的 XML for Analysis 数据源列表。(有关其发布方法的示例,请参见。)返回有关所请求属性的信息和值的列表,这些被请求的属性受指定的数据源(提供程序)支持。返回所有受支持的 RequestTypes 枚举值(包括在这里列出的值)的名称、值和其它信息,以及任何其它提供程序特定的枚举值。返回特定数据源提供程序所支持的名称、数据类型和枚举器的枚举值的列表。返回包含提供程序所保留关键字列表的行集。返回数据源提供程序所支持的直接量的信息。在给定与 OLE DB 所定义的架构行集名称之一相对应的常量(如 MDSCHEMA_CUBES)的情况下,返回 XML 格式的 OLE DB 架构行集。注意:提供程序也可能通过提供其它提供程序特定的架构行集来扩展 OLEDB。表格数据提供程序 (TDP) 和多维数据提供程序 (MDP) 应支持的架构行集列在一节中。该参数属于 Restrictions 数据类型,它使用户可以限制Result中返回的数据。Result参数中指定的行集定义的。某些Result列可以用于筛选所返回的行。有关这些列以及可以被限制的列的信息,请参见中的行集表。要获取提供程序特定的架构行集的限制信息,请使用 DISCOVER_SCHEMA_ROWSETS 请求类型。该参数必须包含在内,但可以为空。该参数属于 Properties 数据类型,它由 XML for Analysis 属性的集合构成。每个属性都可以使用户控制Discover方法的某一方面,如指定结果集、超时的返回格式,以及指定数据格式的区域设置。要获取可用属性及其值,可以用Discover方法并使用 DISCOVER_PROPERTIES 请求类型。标准 XML for Analysis 属性的详细信息将在中介绍。参数中的属性没有顺序要求。该参数必须包含在内,但可以为空。该参数是必需的,它包含提供程序作为Rowset对象返回的结果集。参数中指定的值决定。所返回结果集的列布局也由在RequestType中指定的值决定。有关与各RequestType值相对应的行集布局的详细信息,请参见。有关 Rowset 数据类型的详细信息,请参见。在下面的示例中,客户端发出 XMLDiscover调用,向FoodMart 2000<?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>
方法用于向服务器发出操作请求。其中包括涉及数据传输的请求,如检索或更新服务器上的数据。该参数是必需的,它属于 Command 数据类型,由要执行的提供程序特定的语句组成。XML for Analysis 多维提供程序必须支持 mdXML 语言,但也可以根据需要支持其它命令。该参数属于 Properties 数据类型,它由 XML for Analysis 属性的集合组成。每个属性都允许用户控制Execute方法的某一方面,如定义连接所要求的信息、指定结果集的返回格式或指定数据格式的区域设置。要获取可用属性及其值,可以用Discover方法并使用 DISCOVER_PROPERTIES 请求类型。标准 XML for Analysis 属性的详细信息将在中介绍。参数中的属性没有顺序要求。该参数必须包含在内,但可以为空。结果。Command参数中的值将定义结果集的形状。如果没有传递任何形状定义属性,XML for Analysis 提供程序将使用默认形状。本规范所定义的两种结果集格式为表格式 (Tabular) 和多维式 (Multidimensional),符合客户端通过 Format 属性指定的格式。OLAP 数据使用多维格式(虽然也可以使用表格格式)。提供程序可能还支持其它行集类型,了解这些特殊类型的客户端可以对它们进行请求。方法调用的示例,其<Statement><?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 数据类型的数据类型进行了标注。有关 XML 架构类型的详细信息,请参见。Boolean 型使用标准 XML 布尔型数据类型。XML 布尔型数据类型用 1 表示 True(真),用 0 表示 False(假)。本文所述的 Decimal 型使用标准 XML 十进制数据类型。本文所述的 Integer 型是指标准 XML 整数数据类型。EnumString 数据类型为给定的枚举器 (enum) 定义一组已命名常量。EnumString 使用标准 XML 字符串数据类型。每个已命名常量的具体值都是用枚举器定义指定的。参数可以返回的格式之一。该格式用于多维数据。用 XML 表示 OLAP 数据要求针对 OLAP 的行集(或数据集),本文对其进行了说明。MDDataSet 数据类型的 XML 名称空间为"urn:schemas-microsoft-com:xml-analysis:mddataset"有关 OLE DB for OLAP 数据集结构的基本信息,请参见。有关 MDDataSet 的完整 XML 架构定义 (XSD) 的示例,请参见。本规范为 OLAP 结果定义以下 XML 结构。MDDataSet 由三个主要部分组成:OLAPInfo:定义结果的结构,列出并说明将使用的坐标轴和单元格
提供程序只要不更改这里所定义架构的行为和含义,就可以在结构中添加其它批注。这种开放式内容架构模型允许从其它名称空间添加新元素和特性,但不允许更改所定义的元素和特性的语义。为了定义结构,<OlapInfo>元素(注意是复数形式 Axes)来定义坐标轴。坐标轴由一组<AxisInfo>元素(注意是单数形式 Axis)组成,这些元素的别名是序列化的,如name="Axis0"。然后,维层次结构连同其属性定义一起列出。在随后的示例中,标准成员属性用<HierarchyInfo>元素进行表示,包括 UName、Caption、LName 和 LNum,以及非标准 DisplayInfo 元素。对于 Store 层次结构,附加的(非标准)带空格字符的成员属性用 [Store].[Store SQFT] 进行说明。OLAPInfo 结构定义的最后一项内容是单元格的属性(列定义)。这使单元格可以包含其它属性。本示例中的属性为 Value、FmtValue 和自定义的属性 FormatString。元素所要求的元素。MDSCHEMA 引用是指 OLE DB for OLAP 架构定义。元素的标准元素。特定查询是否能够返回这些标准元素则取决于查询本身。提供程序可以选择性地为 AxisInfo 或 CellInfo 部分中的单个成员或单元格属性指定默认值。如果同一属性总是具有或常常具有相同的值,可减小结果的大小。元素指定为某个成员属性元素或单元格属性元素的子元素,用以表示该属性的默认值。例如,如果提供程序要为 Store SQFT 指定默认值,可以这样来指定:元素的输出,则<Store_x0020_SQFT>如果元素存在,但没有值,这表示空字符串结果 (""),如下例所示:通常,如果属性为 NULL,将被忽略。但如果已经为属性定义了默认值,则如要为属性指定 NULL 值,应使用 XML 架构规范中的空特性,如下所示:在 Axes 下,Axis 项将从零开始,按照它们在数据集中的顺序列出。AxisFormat属性设置决定各 Axis 元素的格式。所有 XML for Analysis 提供程序都必须支持属性 AxisFormat 的以下值:提供程序可以选择性地支持将 CustomFormat 值作为单独的格式。如果客户端请求 CustomFormat,提供程序可以根据判断选择返回 TupleFormat 和 ClusterFormat 格式之一。虽然提供程序必须支持上述全部三种值,但客户端可以请求其需要的格式;所以客户端可以选择不使用所有这三种可用的格式。AxisFormat 属性的 TupleFormat 和 ClusterFormat 设置提供两种不同的表示元组的方法。MDDataset 定义赋予提供程序两种指定元组的方法:将其指定为多维元组或将其指定为笛卡尔乘积。这使客户端应用程序可以在简单性和降低空间要求之间进行选择。坐标轴表示一个元组集,该集中的所有元组都具有相同的维数。可以用不同的方法表示该集,不同的方法有不同的优点。例如,下面的四元组集可以表示为二维元组集合或两个一维集的笛卡尔乘积。两种表示方法各具优缺点。二维元组易于客户端工具使用。一维集的笛卡尔乘积占用的空间较小,并且保留了集的多维本质。下表列出了可以用于定义和描述坐标轴结构和成员的操作。根据前面的示例,这些操作将把二维元组和一维集的笛卡尔乘积转换为如下形式。?? : <Member>membe
[1] [2] 下一页
进入问吧