About the Series ...
This is the twenty-fifth article 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
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 the 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
introduce a function that assists us in the handling of empty cells. In
multidimensional data sets, we are often confronted with empty cells - data is
often sparse in these sets by their very physical nature. Because, as a simple
example, every product might not be sold at every store in every time period
(to cite an instance from the FoodMart2000 sample environment), we will
see empty cells in abundance in a data set that contains intersects of these
dimensions. (Particularly in working with crossjoins of any magnitude, we will
encounter many empty cells, as a general rule.) Empty cells mean nulls,
and nulls can mean incorrect results in using MDX to support analysis in
A logical function, ISEMPTY()
returns true the expression to which it is applied evaluates to an empty cell.
As we will see in the practice example we undertake in this article, ISEMPTY()
works ideally with IIF(), a conditional function, to check cells for
empty or not-empty status.
We will consider
elementary uses of the ISEMPTY() function in this article, and then call
it into service in subsequent articles where we require it as a tool to perform
just this sort of check. In keeping with the objectives of the MDX
Essentials series, we will seek to build a foundation in the rudiments
of the function, from which we can expand to more sophisticated uses in other
articles. As a part of building our basis in the ISEMPTY() function, we
will also take a preliminary look at the IIF() function, which we will
take up in subsequent articles that we devote to it especially.
become a valued member in the toolset of any practitioner that relies heavily
upon MDX to supply solutions to the organizations they support. We will
introduce the function, commenting upon its operation and touching upon uses at
a general level, and then we will:
Examine the syntax surrounding the function;
Undertake an illustrative example of the use of the function, in a
multi-step practice exercise;
Briefly discuss the results datasets we obtain in the practice