XML for Analysis
XML for Analysis (abbreviated as XMLA) is an industry standard for data access in analytical systems, such as OLAP and data mining. XMLA is based on other industry standards such as XML, SOAP and HTTP. XMLA is maintained by XMLA Council with Microsoft, Hyperion (acquired by Oracle Corporation) and SAS being the official XMLA Council founder members.
History
The XMLA specification was first proposed by Microsoft as a successor for OLE DB for OLAP in April 2000. By January 2001 it was joined by Hyperion endorsing XMLA. The 1.0 version of the standard was released in April 2001, and in September 2001 the XMLA Council was formed. In April 2002 SAS joined Microsoft and Hyperion as founding member of XMLA Council.[1] With time, more than 25 companies joined with their support for the standard.
API
XMLA consists of only two SOAP methods.[2] It was designed in such a way to preserve simplicity.
- Execute
- Discover
Execute
Execute method has two parameters:
- Command - command to be executed. It can be MDX, DMX or SQL.
- Properties - XML list of command properties such as Timeout, Catalog name, etc.
The result of Execute command could be Multidimensional Dataset or Tabular Rowset.
Discover
Discover method was designed to model all the discovery methods possible in OLEDB including various schema rowset, properties, keywords, etc. Discover method allows users to specify both what needs to be discovered and the possible restrictions or properties. The result of Discover method is a rowset.
Query language
XMLA specifies MDXML as the query language. In the XMLA 1.1 version, the only construct in MDXML is an MDX statement enclosed in the <Statement> tag.[3]
Example
Below is an example of XMLA Execute request with MDX query in command.
<soap:Envelope>
<soap:Body>
<Execute xmlns="urn:schemas-microsoft-com:xml-analysis">
<Command>
<Statement>SELECT Measures.MEMBERS ON COLUMNS FROM Sales</Statement>
</Command>
<Properties>
<PropertyList>
<DataSourceInfo/>
<Catalog>FoodMart</Catalog>
<Format>Multidimensional</Format>
<AxisFormat>TupleFormat</AxisFormat>
</PropertyList>
</Properties>
</Execute>
</soap:Body>
</soap:Envelope>
Session management
XMLA has a notion of session state. It is maintained through predefined SOAP headers
- BeginSession - to begin a new session
- EndSession - to end existing session
- UseSession - to use existing session. SessionId attribute previously returned for BeginSession should be used.
Software
Software which support XMLA fall into three categories:
- XMLA Providers - these products provide XMLA service. Typically these are server or middle tier products
- XMLA Consumers - these products can connect to XMLA Providers and consume XMLA. Typically these are client/UI products
- XMLA Libraries - libraries implementing XMLA protocol (client side), allowing to develop XMLA Consumers without taking care of XMLA protocol details.
Providers
- ActivePivot
- Hyperion Essbase
- IBM Infosphere Warehouse Cubing Services [4]
- icCube OLAP Server
- Infor PM OLAP Server - formerly known as MIS Alea
- InterSystems DeepSee
- Jedox
- Microsoft Analysis Services
- Mondrian OLAP server
- Simba Technologies SimbaProvider XMLA SDK
- SAP NetWeaver Business Intelligence SAP BW MDX Syntax
- Olaper: XML/A server for SQL databases
Libraries
- ADOMD.NET - .NET client library for XMLA
- icCube - Java XMLA Client Library (LGPL license)
- olap4j - Java OLAP API with a XML/A client implementation[5]
- SSAS Entity Framework Provider - .NET LINQ client library for XMLA on top of ADOMD.NET
- xmla4js - Open source (apache 2.0) Javascript XML/A client implementation for webbrowser- or nodejs-based applications
- xmlaPlSQL - Pl-SQL client implementation for XML/A
- Ruby XML/A client gem
References
- ↑ "XML for Analysis gathers steam". Archived from the original on May 28, 2008.
- ↑ "XML for Analysis Specification".
- ↑ "MDX / mdXML". Archived from the original on September 7, 2008.
- ↑ "Infosphere Warehouse Cubing Services XMLA".
- ↑ "OLAP4J - Online Analytical Processing for Java".