MDX Essentials: String / Numeric Functions: More on the IIF() Function

January 3, 2005

About the Series ...

This article is a member of the series, MDX Essentials. The series is designed to provide hands-on application of the fundamentals of the Multidimensional Expressions (MDX) language, with each tutorial progressively adding features designed to meet specific real-world needs.

For more information about the series in general, as well as the software and systems requirements for getting the most out of the lessons included, please see my first article, MDX at First Glance: Introduction to MDX Essentials.

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


In this lesson, we will continue our examination of the IIF() function, which we began in my article String / Numeric Functions: Introducing the IIF() Function. In that introductory session, we explored the IIF() function, discussing its primary purpose, and touching upon its many capabilities, particularly when used in conjunction with other MDX functions. We discussed generalities about the use of the function, and then undertook practice examples that focused on two basic uses of IIF() to meet hypothetical business requirements that mirrored needs we might find in the "real world." If you are joining the series with this article, please consider reading String / Numeric Functions: Introducing the IIF() Function to gain a general overview of the function before you delve into the multi-step exercise in sections below.

In this article, we will continue our examination of the IIF() function, focusing on more evolved uses of the function, within a more involved practice scenario. We will not rehash the introduction, discussion or syntax sections that we provided in our last article, except in situations where we wish to emphasize points from those sections in the context of our current activities. Our focus here will be to provide another hands-on illustration, where we can experience firsthand the capabilities that the function can offer, and to expose a sequential set of steps aimed at getting to a specific outcome in the support of a set of hypothetical business requirements.

As has been the case with most of my articles, we will introduce a business requirement as requested by a group of information consumers. After we discuss their needs in detail, we will begin a multi-step exercise that builds to a successful end result. Along with the introduction of the expressed business needs, this lesson will include:

  • Creation of a core query, upon which we will build our end solution;
  • Creation of interdependent calculated members, to provide requested measures that do not exist "natively" in the cube structure;
  • Use of the IIF() function, in conjunction with a member property to achieve intended behavior within a calculated member;
  • Addition of the VBA VAL() function, to convert the member property to a usable data type;
  • Addition of the FILTER() and ORDER() functions, to render a presentation that meets the needs of the intended audience;
  • A brief discussion of the results DataSets we obtain in each of the steps of the practice example.