The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".
The following errata were submitted by our customers and approved as valid errors by the author or editor.
Version |
Location |
Description |
Submitted By |
Date submitted |
Date corrected |
Printed, PDF, ePub, Mobi, , Other Digital Version |
Page 9
6th paragraph |
In the sentence "[...] when a requirement for so-called real-time BI HOLAP is almost never used" is a dot missing between BI and HOLAP.
These probably should be two sentences.
Note from the Author or Editor: There is a missing period between "BI" and "HOLAP" in the sixth paragraph. The paragraph should be:
MOLAP storage is used in the vast majority of implementations, although ROLAP is sometimes
used when a requirement for so-called real-time BI. HOLAP is almost never used.
|
Sam Jost |
Sep 13, 2013 |
|
Printed, PDF, ePub, Mobi, , Other Digital Version |
Page 21
end of 2nd paragraph |
This last part of the second paragraph:
in contrast, there are, as we shall soon see, several good reasons for putting the workspace database server on the same machine as your development database.
Should be replaced by:
in contrast, there are, as we shall soon see, several good reasons for putting the workspace database server on the same machine as your development workstation.
|
Marco Russo |
Nov 14, 2012 |
|
Printed |
Page 37
Figure 2-16 |
The diagram of the Options box within SSDT shows "Analysis Services -> Data Modelling" as the route on the left hand side to get to the specific options shown e.g. "Default workspace server".
However, my SSDT doesn't look anything like the diagram, and in my SSDT I find these same options via the left side path "Analysis Services Tabular Designers -> Workspace Database".
Is this perhaps because the screenshot is based on a CTP version of SSDT as opposed to the RTM version perhaps?
Note from the Author or Editor: The Figure 2-16 should be updated because latest updates of SSDT changed the user interface.
On the left side, instead of "Analysis Services -> Data Modelling" you will find the settings in path "Analysis Services Tabular Designers -> Workspace Database".
|
Andy Hogg |
Aug 02, 2013 |
|
Printed, PDF |
Page 40
4th paragraph |
the link doesn't work:
http://sqlblog.com/blogs/alberto_ferrari/archive/2011/09/27/creating-a-copy-of-a-bismtabular-
project.asp
it shoud be
.. .aspx
Note from the Author or Editor: The correct link at page 40 in the 4th paragraph should be changed to:
http://sqlblog.com/blogs/alberto_ferrari/archive/2011/09/27/creating-a-copy-of-a-bismtabular-project.aspx
|
Anonymous |
Nov 14, 2012 |
|
Printed, PDF, |
Page 52
1st Paragraph |
First paragraph says:
"...and drag the EnglishDescription column down to below the new Color level to create the bottom level, as shown in Figure 2-32."
But, in Figure 2-32, the screenshot shows EnglishProductName as the bottom level of the hierarchy.
Note from the Author or Editor: Correct - the text should be EnglishProductName instead of EnglishDescription, like you can see in the Figure 2-32.
|
Ron Pihlgren |
Aug 02, 2012 |
Nov 02, 2012 |
Printed |
Page 132, 133
Pg132 / Table 4-2, Pg133 / Examples for Blank() - after paragraph 6 |
Pg132 / Table 4-2
Result for "0 / 0" has been mentioned as Infinity however when I am trying the same in local installation of SSAS Tabular, I am getting "NaN" as result
Pg133 / Examples for Blank() - after paragraph 6
Result for "Blank() || Blank()" has been mentioned as Blank() however when I am trying the same in local installation of SSAS Tabular, I am getting "False" as result
Result for "Blank() && Blank()" has been mentioned as Blank() however when I am trying the same in local installation of SSAS Tabular, I am getting "False" as result
--------------------------------------------------------
Tabular Instance Version - Microsoft Analysis Server 11.0.2100.60
Note from the Author or Editor: You are correct for both pages.
Page 132 / Table 4-2
The third row has "0 / 0" in Expression column must have "NaN" value in Result column (instead of current "Infinity")
Page 133
The last two examples at the bottom of the page have to be replaced with the following:
BLANK() || BLANK() = FALSE
BLANK() && BLANK() = FALSE
|
Pranav |
Aug 17, 2012 |
Nov 02, 2012 |
Printed, PDF |
Page 139
Figure 4.10 |
Figure 4.10 has a column called "ISO" which, unlike all the other columns in the figure is not mentioned or described in the text. Is that intentional?
Note from the Author or Editor: It is not really intentional. There is another rounding function that should be added to the list before FIGURE 4-10 in order to match with the figure
ISO = ISO.CEILING( Tests[Value], 0.01 )
|
Ron Pihlgren |
Aug 03, 2012 |
Nov 02, 2012 |
Printed |
Page 158
The third expression from the top of the page |
The expression listed in the text: "CalcAmountB := SUMX( FILTER( Orders, Orders[Quantity] > 1 ), Orders[Amount] )" Doesn't match with the descirption a few paragraphs later which says "the Filter function skips just the <Internet, Green, Small> row from the table you saw in Figure 5-12 (which has a price of 1 and is excluded by the filter condition)."
I believe the second argument to the Filter function in the formula should be "Orders[Price] > 1" rather than "Orders[Quantity] > 1"
Note from the Author or Editor: You are right, the condition of FILTER should be Orders[Price] > 1 instaed of Orders[Quantity]. Thanks for reportin this.
|
Ron Pihlgren |
Aug 05, 2012 |
Nov 02, 2012 |
Printed, PDF |
Page 161
Important-box: 3rd CALCULATE statement |
Missing characters ("] * ") in the SUMX expression, that probably should read:
SUMX( Orders, Orders[Quantity] * Orders[Price] ),
Note from the Author or Editor: The third calculate in the Important box at page 161 should be fixed in this way:
CALCULATE(
SUMX( Orders, Orders[Quantity] * Orders[Price] ),
ALL( Orders[Channel] )
)
|
Erik Sørensen |
Feb 07, 2013 |
|
Printed, PDF, ePub |
Page 164
First partial paragraph |
The function EARLIEST does not accept negative numbers for the second parameter. Your text suggests that passing -1 as the second argument can be used instead of the function EARLIER.
From MSDN page on EARLIER
(http://msdn.microsoft.com/en-us/library/ee634551.aspx)
num
(Optional) A positive number to the outer evaluation pass.
The next evaluation level out is represented by 1; two levels out is represented by 2 and so on.
When omitted default value is 1.
Note from the Author or Editor: The sentence "You can get the same result of EARLIEST by passing -1 to the second parameter of EARLIER." must be removed.
The -1 argument was possible in a previous version but now is no longer allowed.
|
Marc Temkin |
Jul 02, 2013 |
|
Printed, PDF, ePub, Mobi, , Other Digital Version |
Page 198
Table at the bottom of the page |
Column header of the second column should be "Product Category[Product Category Name]" instead of "Product Category[Category Name]"
Note from the Author or Editor: In the second table of this page, the column header of the second column should be "Product Category[Product Category Name]" instead of "Product Category[Category Name]"
|
Vinod Jain |
Oct 08, 2013 |
|
Printed, PDF, ePub |
Page 201-202
Bottom through following page |
The formulas refer to Date Id as in Due Date Id and Ship Date Id when I think you mean Due Date or Ship Date. There are no columns named Due Date Id or Ship Date Id in the Adventure Works DW Tabular model.
Note from the Author or Editor: In page 201 and 202 these names should be replaced in both text and code samples:
Due Date Id --> Due Date
Ship Date Id --> Ship Date
|
Marc Temkin |
Jul 18, 2013 |
|
Printed, PDF, ePub, Mobi, , Other Digital Version |
Page 296
Section "Handling Wrong or Missing Dates" |
The technique described in the section "Handling Wrong or Missing Dates" generates a Date table that is not compatible with the Time Intelligence functions in DAX. The Date column cannot contain NULL if used in the "Mark as Date Table" feature. A clarification about possible alternative approaches is described in this article: http://www.sqlbi.com/articles/handling-wrong-or-missing-dates-in-tabular
|
Marco Russo |
Sep 12, 2013 |
|
Printed |
Page 413
2nd Paragraph |
The paragraph indicates that there is a location to find the scripts for creating the required tables but the location is missing and the paragraph just ends
"you can find the script that adds the required tables here."
and then nothing else.
What is the location?
|
Derek Venus |
May 31, 2013 |
|
Printed, PDF, ePub, Mobi, , Other Digital Version |
Page 414
Bottom of page, figure 12-11 |
With the formula given at page 414 I get a different number than in figure 12-11.
The numbers I get are:
Christmas Leaflet 15,498,019.44
Christmas TV Spot 17,937,205.26
Easter Leflet 13,770,306.66
Easter TV Spot 20,335,288.02
Note from the Author or Editor: The numbers produced are different because the screenshot published has been taken using a different set of sample data.
The query that populates the tables uses random numbers, so every user will probably see different results, this does not affect the technique, just the numbers shown.
|
Steini Jonsson |
Jun 17, 2013 |
|
PDF |
Page 531
The note area after the 2nd paragraph |
The text reads: "Note: The Process Recalc operation that is performed within Process Full of a table automatically
refreshes all calculated columns in other tables that depend on the table that has
been processed. For this reason, Process Full over tables does not depend on the order
in which it is executed in different transactions, distinguishing it from the Process Defrag
operation."
I was wondering whether instead of refering to 'Process Defrag', the intention was actually to refer to Process Default', as this would make more sense base on the explanation of 'Process Default' earlier on in the section.
Note from the Author or Editor: In the note box the term "Process Defrag" has to be changed to "Process Default" - the correct complete box becomes:
Note The Process Recalc operation that is performed within Process Full of a table automatically refreshes all calculated columns in other tables that depend on the table that has been processed. For this reason, Process Full over tables does not depend on the order in which it is executed in different transactions, distinguishing it from the Process Default operation.
|
Michael Amadi |
Jan 17, 2013 |
|
Printed, PDF, ePub |
Page 5939
Chapter 7, section "'Using ALLSELECTED for VisualTotals" |
I only have the "Kindle" version of the book, so the page number provided is the "location".
There is a problem with the large DAX query listed after this sentence: "Instead you must use a special DAX function called ALLSELECTED".
When ran the query against AdventureWorksDW it produces the following error:
Query (21, 9) The value for column 'Product Category Name' in table 'Product Category' cannot be determined in the current context. Check that all columns referenced in the calculation expression exist, and that there are no circular dependencies.
Based on my understanding, the problem is caused by this FILTER condition:
FILTER(
'Product Category'[Product Category Name],
'Product Category'[Product Category Name] = "Accessories" || 'Product Category'[Product Category Name] = "Clothing"
)
changing it to:
('Product Category'[Product Category Name] = "Accessories" || 'Product Category'[Product Category Name] = "Clothing" )
fixes the issue and the query returns correct results.
Note from the Author or Editor: You're right. This is at page 255 in the printed book.
This part of the query at page 255:
FILTER(
'Product Category'[Product Category Name],
'Product Category'[Product Category Name] = "Accessories"
|| 'Product Category'[Product Category Name] = "Clothing"
)
must be replaced by:
('Product Category'[Product Category Name] = "Accessories"
|| 'Product Category'[Product Category Name] = "Clothing"
)
|
Michael Neymit |
Apr 28, 2013 |
|