您的位置:首页 > 其它

XML for Analysis(XMLA)开发详解-(5)XMLA请求的格式及实例示意

2008-11-06 21:22 746 查看


目录

1、综述(简要回顾一下Olap开发接口)
2、XMLA概念(基本来自联机手册,介绍一些概念,如果熟悉概念可以略过)
3、XMLA配置(针对各个版本的SSAS、IIS的配置说明)
4、XMLAoverTCP/IP(说明一下为什么SSAS内置的XMLAoverTCP/IP在开发时行不通)
5、XMLforAnalysis(XMLA)开发详解-(5)XMLA请求的格式及实例示意
6、元数据访问接口Discover方法(获取目标OLAP服务的结构性信息及属性信息)
7、数据查询接口Execute方法(执行MDX语句查询)及全文总结

本文将不断根据情况更新(最近更新请通过http://www.jbean.cn获取)。

XMLA请求的数据结构

XMLA请求由多层封包组成,总体结构如下图所示,可对照MSDN了解详情(http://technet.microsoft.com/zh-cn/library/ms186656.aspx):




其中,HTML封包是SOAP所依赖的传输协议,与XMLA之间相隔了SOAP一层,因此HTML封包与XMLA没有任何逻辑关系(实事上如本系列第四篇所述,微软自用的传输协议是TCP/IP之,还进一步的对SOAP封包进行了压缩及加密)。



SOAP封包与XMLA相邻,并被XMLA用来寄存维护会话的SESSION标头命令(四个命令)。没有指定SESSION标头的每一个命令都是一个独立的短暂会话,对于客户端保持原子化的事务特性。

XMLA方法的组成及结构

在XMLA介绍一节我们知道XMLA具有两种方法,分别是Discover、Execute。

其中,Discover方法用于从SSAS服务器及指定多维数据库实例检索结构性的信息,包括获取服务器的多维数据库Cube列表、Catalog、DataSource、Dimensions、Levels等。DisCover方法的结构如下:

<Discover>

<RequestType>...</RequestType>

<Restrictions>...</Restrictions>

<Properties>...</Properties>

</Discover>

Execute方法则携带Command参数,从指定的多维数据集获取查询数据。最常用Command是执行MDX语句查询的Statement命令(<Statement>MDXQueryClause</Statement>):

<Execute>

<Command>...</Command>

<Properties>...</Properties>

<Parameters>...</Parameters>
</Execute>

XMLASOAP请求实例(已去掉HTTP封包)

下表是一个完整的获取数据源列表的XMLADiscover请求,表的第一列各行分割了XMLA封包的各部分,第二列对应行说明了各部分的含义。

<?xmlversion="1.0"encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
soap表头
<Discoverxmlns="urn:schemas-microsoft-com:xml-analysis"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<RequestType>DISCOVER_DATASOURCES</RequestType>
<Restrictions>
<RestrictionList>
</RestrictionList>
</Restrictions>
<Properties>
<PropertyList>
<Content>Data</Content>
</PropertyList>
</Properties>
</Discover>
XMLA方法
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
soap
需要特别注意的是XMLA访问SSAS2000/2005/2008时存在着细微差异,高版本的SSAS对SOAP封包的属性要求更加严格,而在低版本中却可以做适当忽略。因此,如果在低版本的SSAS下可以运行的XMLA程序在高版本下无法获取结果的话,应该仔细查阅文档并跟踪比较,看看是否由于这个原因导致。



关于返回结果

如果知道完成特定任务的请求序列,关于结果的描述信息可以通过查找MSDN或XMLASPEC可以轻松的获取。因此,本系列不打算对XMLA的返回结果进行描述。




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐