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: Current updates are assumed for MSSQL
Server, MSSQL Server Analysis Services, and the related Books
Online and Samples.
In this article, we will continue the examination of the TopCount()
function that we began in the previous article of the MDX Essentials
Set Functions: The TopCount() Function, Part I. Before getting "hands-on"
our last session, we introduced the function, stating that its highest value lies in the fact
that we can use it as a means for isolating best performers from among potentially
large populations of fellow members. We emphasized that this ranking
capability is a critical need in many data analysis and decision support
scenarios, where we often seek to report upon best performers for various
We learned that TopCount() facilitates this ranking
capability, allowing us to sort on the numeric value expression upon
which we wish to focus our analysis. We can direct the function to retrieve
the exact number of "top" members we wish to isolate (say, the "top
ten," or the "top twenty"), for a "custom-fit" approach,
that precisely matches the analysis needs of our own environments.
this article, we will extend our examination of the TopCount() function
to include somewhat more sophisticated uses. We will dive right into a couple
of practical scenarios, where we will further evolve our understanding of the
operation of TopCount() through:
Defining illustrative business needs as posed to us by
hypothetical groups of information consumers;
Discuss the needs from the perspective of MDX in general, and the
TopCount() function in particular;
Construct queries to meet the expressed requirements using
combinations of TopCount() and other MDX functions we have explored in
articles of the series;
Discuss the syntax contained within the solutions we construct
for the information consumers;
Briefly discuss the results datasets we obtain in executing the
MDX queries we construct.
To review an introduction to the TopCount() function
before beginning this article, together with examples of its use in basic
scenarios, see my article Basic Set Functions:
The TopCount() Function, Part I, a member of the MDX
Essentials series at Database Journal.
Combining TopCount() with other MDX Functions to Add Sophistication
In our introductory article, we
examined the syntax for the TopCount() function, and then looked at its
behavior, based upon arguments we provided to achieve our ends. We learned
that TopCount() sorts a set we specify by another expression we provide
within the function, thus breaking the natural hierarchy of the set. In
returning "a specified number of items from the topmost members of a
specified set, optionally ordering the set first," we noted, the TopCount()
function is an excellent example of the potential power of MDX.
We learned that we specify
three parameters to TopCount(), a set, a count, and a measure, and that
we can return the number of top performers (or "top anything," in
effect), based upon our input, using the syntax shown in the following string:
TopCount(<< Set >>, << Count >> [,<< Numeric Expression >>])
Sophisticated results can be generated using TopCount()
when we supply well-considered parameters to the <<Set>> and <<Numeric Expression>>
arguments, as we shall see in the practice exercises that follow.