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

目录

1、综述(简要回顾一下Olap开发接口)

2、XMLA概念(基本来自联机手册,介绍一些概念,如果熟悉概念可以略过)

3、XMLA配置(针对各个版本的SSAS、IIS的配置说明)

4、XMLA over TCP/IP(说明一下为什么SSAS内置的XMLA over TCP/IP在开发时行不通)

5、 XML for Analysis(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):

image

其中,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>MDX Query Clause</Statement>)

<Execute>  

<Command>...</Command>

<Properties>...</Properties>

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

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

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

<?xml version="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表头

    <Discover xmlns="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访问SSAS 2000/2005/2008时存在着细微差异,高版本的SSAS对SOAP封包的属性要求更加严格,而在低版本中却可以做适当忽略。因此,如果在低版本的SSAS下可以运行的XMLA程序在高版本下无法获取结果的话,应该仔细查阅文档并跟踪比较,看看是否由于这个原因导致。

 

关于返回结果

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

 

 

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值