XML for Analysis
XML for Analysis (XMLA) is an industry standard designed to facilitate data access within analytical systems, including online analytical processing (OLAP) and data mining applications. Rooted in established web technologies such as XML, SOAP and HTTP, XMLA offers a platform-independent mechanism for querying and managing multidimensional data. Its governance lies with the XMLA Council, whose founding members include Microsoft, Oracle, Hyperion and the SAS Institute.
Background and Development
The emergence of XMLA arose from the need for a streamlined and interoperable analytical data access protocol capable of replacing earlier proprietary interfaces. Microsoft initially proposed the XMLA specification in April 2000 as the intended successor to OLE DB for OLAP, a widely used but platform-dependent technology.
By January 2001, Hyperion Solutions Corporation endorsed the proposal, marking a significant shift towards broader industry collaboration. The first formal release, version 1.0, was issued in April 2001. September of the same year saw the establishment of the XMLA Council, an industry consortium tasked with governing and extending the standard. In April 2002, the SAS Institute joined Microsoft and Hyperion as founding members, reinforcing XMLA’s recognition within the analytics domain.
Over time, more than 25 organisations lent support to the standard, confirming XMLA’s position as a leading protocol for analytical data interchange.
Core Architecture and API Structure
XMLA’s design is intentionally minimalistic, centred around two core SOAP methods—Execute and Discover. Both methods are invoked through platform-neutral web service calls, ensuring flexibility and compatibility across diverse analytical tools and environments.
The protocol is engineered to reduce implementation complexity while maintaining the expressive power required for multidimensional and data mining operations.
Execute Method
The Execute method is used to process analytical commands. It accepts two primary parameters:
-
Command: Represents the operation to be executed. Supported command languages include:
- Multidimensional Expressions (MDX)
- Data Mining Extensions (DMX)
- SQL, where supported by the underlying provider
-
Properties: A structured XML list specifying execution options such as:
- Timeout values
- Catalog or database name
- Other provider-specific attributes
The output of an Execute request may take one of the following forms:
- A Multidimensional Dataset, typically representing OLAP cube data
- A Tabular Rowset, resembling relational query output
This flexibility allows XMLA to interact seamlessly with multidimensional engines, data mining models and hybrid analytical environments.
Discover Method
The Discover method is employed for metadata retrieval and system exploration. It models the extensive discovery capabilities previously available through OLE DB, enabling applications to query:
- Schema rowsets
- Provider properties
- Supported keywords and capabilities
Users may specify both the information required and any restrictions or filters. The output is always a structured rowset, allowing consistent metadata handling across tools and platforms.
Query Language: MDXML
XMLA defines MDXML as its formal query language. In version 1.1, MDXML essentially encapsulates an MDX statement within a <Statement> element. This permits XML-structured transmission of queries while relying on the established MDX syntax for multidimensional analysis.
Typical analytical queries expressed through MDXML enable operations such as slicing, dicing, aggregating and navigating OLAP cube structures.
Example Use Case
A standard XMLA Execute request embeds an MDX expression within the Command element. Although implementations vary across vendors, the structure typically includes:
- A SOAP envelope and body
- The Execute operation
- A Command block containing the MDX query
- Optional PropertyList elements defining execution context
Such requests allow client applications—including BI dashboards, reporting tools and custom analytical software—to retrieve cube data remotely over HTTP.
Session Management in XMLA
XMLA provides a session management model to support transactional or stateful interactions. This is achieved through predefined SOAP headers:
- BeginSession – initiates a new session and returns a SessionId
- UseSession – attaches subsequent requests to an existing session via the SessionId
- EndSession – terminates the session and releases associated resources
Significance and Applications
XMLA’s significance lies in its ability to unify access to analytical data sources through open standards. Its adoption facilitated the development of interoperable business intelligence ecosystems, enabling:
- Cross-platform analytical applications
- Web-based OLAP browsing
- Standardised metadata discovery
- Remote execution of complex multidimensional queries