I am strongly against judging a book by its sample queries only. It's unfair!
If you are trying to learn MDX from the MDX solutions book, you will get lost and frustrated and curse all the time.
Now save yourself from those uncivil moment and enter the wonderful land of "practical mdx queries", which gently guides you through the treacherous land of MDX.
FastTrack MDX is another good book for beginners, but that book is awfully outdated.
The most important thing about learning MDX is that you must get firm understanding of the basics of dimensions, hierarchies, levels and members, which are causally covered by the other books, assuming you have already mastered those concepts.
The other books also use the shorthand notation of members without elaborating it, assuming that you are a genius or magician or someone with a lot of knowledge about MDX already.
Sure, you can't master MDX by just reading one book. But this book will get you to a concrete start without pulling off all your remaining hairs or beating yourself to a pulp.
The best part compared with other MDX book is that it sticks with the AdventureWorks sample while other books invent and re-invent the wheel by their own half-baked database.
Here is a summary of the content:
Chapter 1: Hello World: Easy Yet Effective Queries
This is a short chapter to get you started. It has a few queries so you get a flavor of
the power and elegance of the MDX language.
Chapter 2: Astrophysical: Playing with Dimensions
This chapter shows you how to work with dimensions, hierarchies, levels, and
members. It's quite possibly the most difficult chapter in the whole book--especially
if you are not familiar yet with the concepts of dimensions and hierarchies.
Understanding them is vital if you want to write meaningful and powerful MDX.
Chapter 3: Families and Friends:
Here we explore moving up, down, and across dimensions and hierarchies. The
general term for doing this is navigation. MDX allows you to navigate both
horizontally and vertically. MDX (unlike SQL) is positionally aware--it knows
where you are in the cube and can help you in your navigation.
Chapter 4: Bringing Order: Sorting Results
This chapter introduces various ways of sorting the results of your queries.
Business intelligence reports often have a requirement to put the information in
some kind of order--whether numeric or alphabetic. This chapter shows you how
to do this.
Chapter 5: Slice, Dice, and Filter:
Using Where and Filter
Often, you will want only a subset of your dimension members and measure
values. This can be achieved by slicing and dicing with a Where clause. An
alternative approach involves using criteria with a Filter function. The MDX Where
clause is not the same as an SQL one--hopefully, by the end of the chapter you will
be proficient at using it in MDX.
Chapter 6: Using the Abacus:
Introduction to Calculations
In general, the measures in your cube are based directly or indirectly on the
columns in your fact table in your star schema. However, it's likely your reports
will need further metrics. These are often based on the existing measures in some
way. One way to devise these new measures is to use MDX query calculations.
Here we explore how to do this. In addition, we take a look at creating nonmeasure
members and creating our own sets of data.
Chapter 7: Is Time a Dimension? Working with
Dates and Times
Nearly every cube in the world has a date or time dimension. MDX provides
many rich features that help you to analyze your data across history. In this
chapter, you are introduced to lots of functions for manipulating dates and times.
These will help you produce brilliant business intelligence reports!
Chapter 8: Clockwork: Calculations Using
Dates and Times
The previous chapter introduces the MDX to extract and manipulate dates. This
chapter combines the MDX you learn there with aggregate and other functions.
Here you get to use these aggregate and other functions to produce totals, subtotals,
and changes across time. This is a big part of business intelligence reporting.
Chapter 9: Venn Diagrams: Visualizing and
Here's a wide-ranging chapter on working with sets and members of sets. By the
end of the chapter, you'll be able to create, visualize, and manipulate sets.
Chapter 10: Views on Cubes: Working with Subcubes
If you are familiar with SQL, you may use views. One use of a view on a relational
table is to present only a part of the table. Often, you will want to work on only a
part of a cube. The SSAS versions of SQL views are called perspectives, subselects,
and subcubes. Here we get to exploit those perspectives, subselects, and subcubes.
Chapter 11: Not All There: Dealing with Empty Cells
Cubes are often pretty big. They contain lots and lots of data. However, there will
also be many gaps. For example, it's unlikely that every customer bought every
product on every single day. There will be missing or null data. Sometimes, you
want to see null values--maybe zero sales are of interest. Sometimes, the null
values are a distraction and you will want to hide them. This chapter concentrates
on displaying and hiding empty cells.
Chapter 12: Smiley Faces: Working with Key
Performance Indicators (KPIs)
Key performance indicators (KPIs) are a vital part of business intelligence. At a
glance, you can see how well you are doing without having to dig down and analyze
individual metrics. They are a high-level overview of results--and of results against
targets. Here we explore using, modifying, formatting, and creating KPIs in MDX.
Chapter 13: Hodgepodge: A Chapter
of Miscellaneous Techniques
This is a catchall chapter for topics that do not fit easily into earlier chapters.
Formatting and conditional formatting are investigated. There are also queries to
drill through and drill down on the cube.