Analyzing the
Effects of Time with MDX Expressions
MDX
provides for the analysis of values over time with a large and robust
group of functions that are well suited to the purpose. In this section, we
will explore the ways we can use these functions to achieve our time-based analysis
objectives.
Let's
first look at a common scenario: the calculation of change over a period of
time. As the basis of our study, we will use the calculated members we have
created in the immediately foregoing section to expose the handling of this basic
time consideration.
Analyzing Change
in Values from a Prior Measurement Period
Near and dear to
virtually any participant in business, but to a perhaps unnatural
extreme to those in Accounting and Finance (just kidding - I'm a recovering CPA
myself) is the concept of analyzing change over the prior operating period,
particularly over the prior month. MDX handles time like any other dimension -
within the familiar structure of the hierarchies and members that it handles so
effectively. Let's add a time consideration to our existing project, and get a
feel for the ease with which MDX enables the support of the time-based analysis
needs of our information consumers.
At this point, we will
use our new calculated members within an exploration of the ways we can use MDX
time functions to achieve our time-based analysis objectives. After first
making adjustments to help them to perform in a more adaptive manner, we will
explore the steps required to build in time-based analysis features.
1.
Double-click
the USA member of the Store Country
level (Rows axis), once again, to contract the USA Store
State view, and to "drill up" to USA only.
The Data
Viewing pane should appear as shown in Illustration 12.
Illustration 12: The
Results in the Data Viewing Pane
2.
Drag the Time dimension from the top pane down
to replace the dimension in the Rows axis. The heading will appear as Year,
with the levels 1997 and 1998 appearing just underneath.
3.
Expand (by double-clicking) the
1997 and Q4 levels in the Row axis.
Compare
the result set to that shown in Illustration 13.
Illustration 13: The Results in the Data Viewing Pane
We see immediately that, while
the Amount measure
changes to reflect our "slice and dice" operation, the Units Sold calculated
member remains fixed - for all rows. We need to adjust our Units Sold calculation to
reflect the new dimensions of our display. The Avg Total Cost Per Unit measure should, of course, adjust
itself automatically, subsequent to our modifications to the Units Sold calculation; it
is
merely derived from the Units Sold measure and
the Amount measure, after
all.
4.
Right-click
the Units Sold calculated member, once again.
5.
Select Edit
to open the Calculated Member Builder again.
6.
Change the Value Expression
for the calculated member to the following:
LookupCube("Sales","([Unit Sales],"+[Time].CurrentMember.UniqueName +")")
7.
Click OK to apply the
new expression.
The new dataset is
returned, and appears as shown in Illustration 14.
Illustration
14: The Results in the Data Viewing Pane with Unit Sales Modified Expression
We have simply replaced the [Store] dimension with the [Time]
dimension in the expression to make our results "dimension -sensitive,"
as it were, and causing them to behave as expected for the different Time
levels and members in the respective rows of the display.
Now let's add a calculated member that uses a time function - and
presents a measure that is the equivalent of the existing Amount measure, with
which it can be compared side-by-side to illustrate its nature.
8.
Select All
Account in the filter field for the Account dimension.
9.
Select Insert
--> Calculated Member
The Calculated
Member Builder appears.
10.
Type Prior
Amount into the Member Name box.
11.
In the Functions
tree, expand the Member folder.
The
present view within the Calculated Member Builder should appear as shown
in Illustration 15.
Illustration 15:
Preparing to Add the Expression (Compressed View)
12.
Double-click
the PrevMember function within the Member folder.
13.
Single-click
the <<Member>> token, within the Value Expression box,
to select it.
The <<Member>>
token should highlight to indicate selection, as partially shown in Illustration
16.
Illustration 16: Select
the <<Member>> Token
14.
Double-click
the CurrentMember function within the Member folder.
15.
In the Value
Expression box, single-click the newly appearing <<Dimension>>
token to select it.
The <<Dimension>>
token should highlight to indicate selection, as partially shown in Illustration
17.
Illustration 17: Select
the <<Dimension>> Token
16.
Double-click
the Time dimension within the Data tree.
The Value
Expression box of the Calculated Member Builder now appears as shown
in Illustration 18.
Illustration 18: The
Expression Takes Form
NOTE: We explore the .PrevMember
and .CurrentMember functions, as well as other concepts that we have
encountered in this series, in depth in the sister DatabaseJournal
series, MDX
Essentials.
Please see the appropriate article in the series for an explanation of the
respective MDX function(s).