FAST TRACK TO MDX
We
are always very pleased to hear from anyone who spots any error
(email details to mark@penguinsoft.co.uk).
Thanks for reported typos/errata are kindly acknowledged
to:
Mary Whitehorn, Francesco De Chirico, Jim Croghan
First printing
P. 58. Third paragraph, first sentence:
“Calculated measures enable you…”
should read:
“Calculated members enable you…”
Also on P. 58. Fourth paragraph, line one:
“Operationally, calculated measures are
computed…”
should read:
“Operationally, calculated members are computed…”
P. 64. Three-quarters of the way down the page.
“To go back three levels on the
Time dimension we say:”
should read:
“To go back three members on the Time dimension
we say:”
P. 79. Table
ParallelPeriod |
Level, numeric expression, member |
Set |
should read:
ParallelPeriod |
Level, numeric expression, member |
Member |
P. 95. About one third of the way down the page:
"Having scaled the heights and plumbed the depths
of a hierarchy with the Ancestor and Descendants functions, we’ll
finish by introducing a further two close relations: Sibling
and Cousin."
should read:
"Having scaled the heights and plumbed the depths of a hierarchy
with the Ancestor and Descendants functions, we’ll finish
by introducing a further two close relations: Siblings
and Cousin."
P. 96. About one third of the way down the page:
For example:
Cousin([Time].[1998].[Q1].[1], [Q2])
returns [Time].[1998].[Q2].[4]
because January’s cousin in Q2 is April.
In fact, the expression returns [Time].[1997].[Q2].[4].
This is because the member supplied after the comma in the original
expression (i.e. [Q2]) is not specific enough. The text should read
as:
For example:
Cousin([Time].[1998].[Q1].[1], [Time].[1998].[Q2])
returns [Time].[1998].[Q2].[4]
because January’s cousin in Q2 is April.
In practice, the original expression can even be shortened to:
Cousin([Time].[1998].[Q1].[1], [1998].[Q2])
P. 102. The sentence in the middle of the page:
"… and the CurrentMember must be at the month
level, …"
should read:
"… and the Descendants of the CurrentMember
must be at the month level, …"
P. 106. Top of the page, first line:
"so we want Index to pick up..."
should read:
"so we want Item to pick up..."
P. 107. Top of the page:
"The OpeningBalance function works in the
same way except it returns..."
should read:
"The OpeningPeriod function works in the
same way except it returns..."
P. 109. Table
OpeningBalance |
Level, member |
Member |
ClosingBalance |
Level, member |
Member |
should read:
OpeningPeriod |
Level, member |
Member |
ClosingPeriod |
Level, member |
Member |
P. 112. Paragraph two, lines 3-4.
“Happily Lag has some further versatility that we
can use here: it can be teamed with a range operator”
should read:
“Happily Lag returns a member. This is very handy because
a member is exactly what a ‘range operator’ needs; and
we can use a range operator to give us our series of cells.”
The first version isn't really incorrect, but is fractionally too
restrictive because it could be read as implying that only
Lag can be teamed up with a range operator; whereas all functions
that return members can potentially be used with a range operator.
P. 135.
Text added the following to the bottom of the page as a
comment in italics:
“To be slightly more accurate, this expression finds the
last month that appears in the fact table, rather than the last
month which has values for any or all measures. To illustrate what
we mean, suppose we add to this fact table a single row for 1st.
Dec. 1998 that has null values for all of the measures. As far as
our expression is concerned, there IS now a value in the fact table
for December 1998, so that becomes the default member for the time
dimension; even though there are no values for any of the measures
in December 1998.”
Again, the information already in the book isn't incorrect but
we think that this extra information is worth having!
P. 142. A quarter of the way down the page:
"As before, we use the Member function
to find all stores:"
should read:
"As before, we use the Members function to
find all stores:"
P. 210. Second paragraph:
"So, we've got our literal HTTP string and we've got
the name of the store, and we concatenated the
two using +"
should read:
"So, we've got our literal HTTP string and we've got the name
of the city, and we concatenated the two using
+"
P. 212. Resources.
Completed sample database – FoodMart2000_EndChap17
should read:
Completed sample database – ColoringSample_EndChap17
|