About the Series ...

This is the fifth tutorial article of the series, MDX in Analysis Services. The series is designed to provide hands-on application of the fundamentals of MDX from the perspective of MS SQL Server 2000 Analysis Services ("Analysis Services,"); our primary focus is the manipulation of multidimensional data sources, using MDX expressions in a variety of scenarios designed to meet real-world business intelligence needs.

For more information on the series, as well as the hardware / software requirements to prepare for the tutorials we will undertake, please see Tutorial 1: MDX Concepts and Navigation.

Note: At the time of writing, Service Pack 3 updates are assumed for MSSQL Server 2000, MSSQL Server 2000 Analysis Services, and the related Books Online and Samples.


In our last tutorial, we exposed the use of the MDX LookupCube function within Analysis Services, as a means of retrieving values from multiple cubes simultaneously. We discussed how this offers us the often-useful option of accessing multiple OLAP data sources together for analysis and reporting, presenting an example real-world scenario where this option would be valuable. In addition to exploring the retrieval of data from multiple cubes, we demonstrated how we could compute a per-unit average, based upon values retrieved from two separate OLAP data sources, while further exploring and practicing the use of calculated members as part of the process.

In this lesson, we will explore the use of MDX functions that incorporate the concept of time into the analysis product that we wish to create, within the context of expression design. We will practice adding support for time-based analysis, such as the quantification of change in values over time, with MDX functions that are ideally suited for that purpose. Moreover, we will perform exercises to reinforce these concepts within the context of our OLAP data sources.

In this article, we will examine the roles that MDX can play in helping us to support the time-based analysis needs of information consumers, as well as increase our general knowledge of MDX in Analysis Services, by:

  • Building the concept of time into our expression designs;
  • Incorporating support for time-based analysis with MDX functions;
  • Performing additional practice with the "from scratch" creation of calculated members
  • Handling "divide-by-zero" scenarios in calculated members;
  • Generating variance calculations.