MDX Essentials: Logical Functions: The IsEmpty() Function
November 1, 2004
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 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 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 reporting.
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.
ISEMPTY() will likely 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: