<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SQLBI - Marco Russo : Analysis Services</title><link>http://sqlblog.com/blogs/marco_russo/archive/tags/Analysis+Services/default.aspx</link><description>Tags: Analysis Services</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Microsoft doesn't play the (traditional) BI client game</title><link>http://sqlblog.com/blogs/marco_russo/archive/2010/01/05/microsoft-doesn-t-play-the-traditional-bi-client-game.aspx</link><pubDate>Mon, 04 Jan 2010 23:31:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:20512</guid><dc:creator>Marco Russo (SQLBI)</dc:creator><slash:comments>18</slash:comments><comments>http://sqlblog.com/blogs/marco_russo/comments/20512.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/marco_russo/commentrss.aspx?PostID=20512</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/marco_russo/rsscomments.aspx?PostID=20512</wfw:comment><description>I know, the title is provocative. It's intentional. I'd like to get feedback about my opinion. My point is simple (but not so short!). PowerPivot (which, you know, I like) and self-service BI are the new buzzwords for BI in Redmond. However, there are...(&lt;a href="http://sqlblog.com/blogs/marco_russo/archive/2010/01/05/microsoft-doesn-t-play-the-traditional-bi-client-game.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=20512" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Analysis+Services/default.aspx">Analysis Services</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Data+Mining/default.aspx">Data Mining</category></item><item><title>Gemini is now PowerPivot</title><link>http://sqlblog.com/blogs/marco_russo/archive/2009/10/23/gemini-is-now-powerpivot.aspx</link><pubDate>Fri, 23 Oct 2009 00:59:27 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:18171</guid><dc:creator>Marco Russo (SQLBI)</dc:creator><slash:comments>9</slash:comments><comments>http://sqlblog.com/blogs/marco_russo/comments/18171.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/marco_russo/commentrss.aspx?PostID=18171</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/marco_russo/rsscomments.aspx?PostID=18171</wfw:comment><description>The project codenamed Gemini has an official name now: PowerPivot . The complete name should be “PowerPivot for Excel 2010”, but PowerPivot is simpler. I didn’t like that name yesterday, but today it seems better. Microsoft announced this name at the...(&lt;a href="http://sqlblog.com/blogs/marco_russo/archive/2009/10/23/gemini-is-now-powerpivot.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=18171" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Analysis+Services/default.aspx">Analysis Services</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Excel/default.aspx">Excel</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/PivotTable/default.aspx">PivotTable</category></item><item><title>The reviews of Expert Cube Development book</title><link>http://sqlblog.com/blogs/marco_russo/archive/2009/09/12/the-reviews-of-expert-cube-development-book.aspx</link><pubDate>Fri, 11 Sep 2009 23:27:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:16729</guid><dc:creator>Marco Russo (SQLBI)</dc:creator><slash:comments>3</slash:comments><comments>http://sqlblog.com/blogs/marco_russo/comments/16729.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/marco_russo/commentrss.aspx?PostID=16729</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/marco_russo/rsscomments.aspx?PostID=16729</wfw:comment><description>I already talked about the Expert Cube Development with Microsoft SQL Server 2008 Analysis Services book I wrote with Chris and Alberto . We found several posts around the blogosphere and I'd like to keep track of them - I'll try to update this post whenever...(&lt;a href="http://sqlblog.com/blogs/marco_russo/archive/2009/09/12/the-reviews-of-expert-cube-development-book.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=16729" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/SSAS/default.aspx">SSAS</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Analysis+Services/default.aspx">Analysis Services</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Book/default.aspx">Book</category></item><item><title>Possible bug with DirectSlice and MeasureExpression</title><link>http://sqlblog.com/blogs/marco_russo/archive/2009/05/27/possible-bug-with-directslice-and-measureexpression.aspx</link><pubDate>Wed, 27 May 2009 07:41:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:14290</guid><dc:creator>Marco Russo (SQLBI)</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/marco_russo/comments/14290.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/marco_russo/commentrss.aspx?PostID=14290</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/marco_russo/rsscomments.aspx?PostID=14290</wfw:comment><description>&lt;P&gt;We (I found the issue, &lt;A href="http://cwebbbi.spaces.live.com/"&gt;Chris&lt;/A&gt; created the repro) detected a possible bug using DirectSlice and MeasureExpression.&lt;BR&gt;We just posted it here: &lt;A href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=455732"&gt;https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=455732&lt;/A&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;The issue could be very dangerous resulting in wrong query results on cells affected by DirectSlice property and MeasureExpression, depending on the order of the MDX query sent to Analysis Services. We included a complete repro to the bug posted. This behaviour has been tested on both SSAS 2008 and SSAS 2008 SP1.&lt;BR&gt;What I would like to understand is how to use DirectSlice without worrying about this issue... &lt;/P&gt;
&lt;P&gt;Please vote the bug if you agree it is dangerouse. I would like to get some feedback from MS too...&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;UPDATE October 16th, 2009: the bug is not a bug, it's by design - explanation on &lt;A href="http://sqlblog.com/blogs/marco_russo/archive/2009/10/16/directslice-and-measureexpression-the-bug-is-not-a-bug.aspx"&gt;this post&lt;/A&gt;.&lt;/P&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Possible bug with DirectSlice and MeasureExpression&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Possible bug with DirectSlice and MeasureExpression%0A%0Ahttp://sqlblog.com/blogs/marco_russo/archive/2009/05/27/possible-bug-with-directslice-and-measureexpression.aspx" target="_blank" title = "Email Possible bug with DirectSlice and MeasureExpression"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/marco_russo/archive/2009/05/27/possible-bug-with-directslice-and-measureexpression.aspx&amp;amp;title=Possible+bug+with+DirectSlice+and+MeasureExpression" target="_blank" title = "Submit Possible bug with DirectSlice and MeasureExpression to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2009/05/27/possible-bug-with-directslice-and-measureexpression.aspx&amp;amp;phase=2" target="_blank" title = "Submit Possible bug with DirectSlice and MeasureExpression to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2009/05/27/possible-bug-with-directslice-and-measureexpression.aspx&amp;amp;title=Possible+bug+with+DirectSlice+and+MeasureExpression" target="_blank" title = "Submit Possible bug with DirectSlice and MeasureExpression to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/marco_russo/archive/2009/05/27/possible-bug-with-directslice-and-measureexpression.aspx&amp;amp;title=Possible+bug+with+DirectSlice+and+MeasureExpression" target="_blank" title = "Submit Possible bug with DirectSlice and MeasureExpression to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/marco_russo/archive/2009/05/27/possible-bug-with-directslice-and-measureexpression.aspx&amp;amp;title=Possible+bug+with+DirectSlice+and+MeasureExpression&amp;amp;;top=1" target="_blank" title = "Add Possible bug with DirectSlice and MeasureExpression to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=14290" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Analysis+Services/default.aspx">Analysis Services</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/MDX/default.aspx">MDX</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Bug/default.aspx">Bug</category></item><item><title>I will be at European PASS Conference 2009</title><link>http://sqlblog.com/blogs/marco_russo/archive/2009/04/15/i-will-be-at-european-pass-conference-2009.aspx</link><pubDate>Wed, 15 Apr 2009 15:33:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:13305</guid><dc:creator>Marco Russo (SQLBI)</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/marco_russo/comments/13305.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/marco_russo/commentrss.aspx?PostID=13305</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/marco_russo/rsscomments.aspx?PostID=13305</wfw:comment><description>&lt;P&gt;Even this year I will be a speaker at the &lt;A href="http://www.european-pass-conference.com/"&gt;European PASS Conference 2009&lt;/A&gt; (April 22-24,&amp;nbsp;2009 - Neuss, Germany).&lt;/P&gt;
&lt;P&gt;Last year I had a session discussing the &lt;A href="http://www.sqlbi.com/manytomany.aspx"&gt;Many-to-Many Revolution &lt;/A&gt;paper.&lt;BR&gt;This year I'm excited to introduce the &lt;A href="http://www.sqlbi.com/sqlbimethodology.aspx"&gt;SQLBI Methodology &lt;/A&gt;joining &lt;A href="http://sqlblog.com/blogs/alberto_ferrari"&gt;Alberto Ferrari&lt;/A&gt; on the stage. We got a lot of feedback until now, but this is the first time we will have the opportunity to discuss it in front of a broader audience (we made the same presentation some weeks ago at the Italian &lt;A href="http://www.sqlconference.it/"&gt;Microsoft SQL Server &amp;amp; Business Intelligence Conference 2009&lt;/A&gt;).&lt;/P&gt;
&lt;P&gt;If you will attend the conference, stop us and say hello! It's always nice giving a face to a name. See you in Germany!&lt;/P&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=I will be at European PASS Conference 2009&amp;amp;body=Seen on SQLblog.com: %0A%0A%09I will be at European PASS Conference 2009%0A%0Ahttp://sqlblog.com/blogs/marco_russo/archive/2009/04/15/i-will-be-at-european-pass-conference-2009.aspx" target="_blank" title = "Email I will be at European PASS Conference 2009"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/marco_russo/archive/2009/04/15/i-will-be-at-european-pass-conference-2009.aspx&amp;amp;title=I+will+be+at+European+PASS+Conference+2009" target="_blank" title = "Submit I will be at European PASS Conference 2009 to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2009/04/15/i-will-be-at-european-pass-conference-2009.aspx&amp;amp;phase=2" target="_blank" title = "Submit I will be at European PASS Conference 2009 to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2009/04/15/i-will-be-at-european-pass-conference-2009.aspx&amp;amp;title=I+will+be+at+European+PASS+Conference+2009" target="_blank" title = "Submit I will be at European PASS Conference 2009 to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/marco_russo/archive/2009/04/15/i-will-be-at-european-pass-conference-2009.aspx&amp;amp;title=I+will+be+at+European+PASS+Conference+2009" target="_blank" title = "Submit I will be at European PASS Conference 2009 to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/marco_russo/archive/2009/04/15/i-will-be-at-european-pass-conference-2009.aspx&amp;amp;title=I+will+be+at+European+PASS+Conference+2009&amp;amp;;top=1" target="_blank" title = "Add I will be at European PASS Conference 2009 to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=13305" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Business+Intelligence/default.aspx">Business Intelligence</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/SSAS/default.aspx">SSAS</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Analysis+Services/default.aspx">Analysis Services</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/SSIS/default.aspx">SSIS</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Methodology/default.aspx">Methodology</category></item><item><title>Drillthrough improvements: call for feedback!</title><link>http://sqlblog.com/blogs/marco_russo/archive/2009/01/21/drillthrough-improvements-call-for-feedback.aspx</link><pubDate>Wed, 21 Jan 2009 10:34:38 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:11297</guid><dc:creator>Marco Russo (SQLBI)</dc:creator><slash:comments>2</slash:comments><comments>http://sqlblog.com/blogs/marco_russo/comments/11297.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/marco_russo/commentrss.aspx?PostID=11297</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/marco_russo/rsscomments.aspx?PostID=11297</wfw:comment><description>&lt;p&gt;We all like Analysis Services, but when it comes to drillthrough, there are a number of issue that we like to be fixed. I added them in a &lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=403083"&gt;feedback item on Connect&lt;/a&gt; – so please &lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=403083"&gt;vote it&lt;/a&gt; and give to drillthrough a chance to improve in future releases!&lt;/p&gt;  &lt;p&gt;Here is the list of the required improvements I would like to see:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Enable editing of drillthrough columns order.&lt;/b&gt; They can be arranged in any order you want inside the cube XML file, but editor in BIDS forces you to put all the attributes of a dimension near each other, without allowing to change the order of columns of the same dimension. Moreover, you cannot move dimensions up and down.&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Enable use of properties in drillthrough and don’t limit the drillthrough only to those attributes with AttributeHierarchyEnabled set to true&lt;/b&gt;. I don’t know if there is a structural problem, to me it seems more like a semantic one.&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Enable use of drillthrough on calculated members&lt;/b&gt;. In my opinion, who write calculated members has the knowledge to write a tuple describing the subset of the cube that you want to drillthrough. A dynamic MDX expression evaluated for each drillthrough request (just like the dynamic MDX caption) would be the best.&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Fix behavior of drillthrough with semi-additive measures (or offer a way to customize it &lt;/b&gt;- see drillthrough on calculated members). Drill-through on semi-additive measure returns rows that are not considered in the value displayed. For example, a LastNonEmpty of a year returns all the year rows instead of the last day/month available. Best option, in my opinion, is to customize drillthrough for each measure if required, just as suggested for calculated members.&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Optimize drillthrough on ROLAP dimension&lt;/b&gt;. If a drillthrough uses attributes from a ROLAP dimension, there is a SELECT DISTINCT over the whole dimension table if it has a regular relationship with the measure group, followed by a complex SQL statement which ends in filtering all the fact table. If the ROLAP dimension has a fact relationship (imagine a degenerate dimension with data as Order Number), the SELECT DISTINCT is not executed, but there is still a complex SQL query. When we have a surrogate key used as a primary key in the fact table (which is the case in most of data marts I’ve seen on SQL Server), it would be way faster getting the set of ID’s obtained by the MOLAP measure group and filtering the fact table with them.&lt;/li&gt; &lt;/ul&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Drillthrough improvements: call for feedback!&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Drillthrough improvements: call for feedback!%0A%0Ahttp://sqlblog.com/blogs/marco_russo/archive/2009/01/21/drillthrough-improvements-call-for-feedback.aspx" target="_blank" title = "Email Drillthrough improvements: call for feedback!"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/marco_russo/archive/2009/01/21/drillthrough-improvements-call-for-feedback.aspx&amp;amp;title=Drillthrough+improvements%3a+call+for+feedback!" target="_blank" title = "Submit Drillthrough improvements: call for feedback! to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2009/01/21/drillthrough-improvements-call-for-feedback.aspx&amp;amp;phase=2" target="_blank" title = "Submit Drillthrough improvements: call for feedback! to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2009/01/21/drillthrough-improvements-call-for-feedback.aspx&amp;amp;title=Drillthrough+improvements%3a+call+for+feedback!" target="_blank" title = "Submit Drillthrough improvements: call for feedback! to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/marco_russo/archive/2009/01/21/drillthrough-improvements-call-for-feedback.aspx&amp;amp;title=Drillthrough+improvements%3a+call+for+feedback!" target="_blank" title = "Submit Drillthrough improvements: call for feedback! to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/marco_russo/archive/2009/01/21/drillthrough-improvements-call-for-feedback.aspx&amp;amp;title=Drillthrough+improvements%3a+call+for+feedback!&amp;amp;;top=1" target="_blank" title = "Add Drillthrough improvements: call for feedback! to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=11297" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Analysis+Services/default.aspx">Analysis Services</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Drillthrough/default.aspx">Drillthrough</category></item><item><title>Issues executing a DRILLTHROUGH with a ROLAP dimension</title><link>http://sqlblog.com/blogs/marco_russo/archive/2009/01/17/issues-executing-a-drillthrough-with-a-rolap-dimension.aspx</link><pubDate>Sat, 17 Jan 2009 11:21:30 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:11154</guid><dc:creator>Marco Russo (SQLBI)</dc:creator><slash:comments>8</slash:comments><comments>http://sqlblog.com/blogs/marco_russo/comments/11154.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/marco_russo/commentrss.aspx?PostID=11154</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/marco_russo/rsscomments.aspx?PostID=11154</wfw:comment><description>&lt;p&gt;I recently encountered an issue using DRILLTHROUGH with ROLAP dimension and I wasn’t able to find any good information making searches about it, so I think it’s a good idea writing a few notes. Probably I will write a more complete on the DRILLTHROUGH issue later, but there is a specific issue (a &lt;strike&gt;bug &lt;/strike&gt;feature by design, probably…) that can be hard to resolve.&lt;/p&gt;  &lt;p&gt;Let’s start talking about DRILLTHROUGH. If you have some degenerate dimension (attributes in the fact table that are not measures) that you want to be part of a drillthrough action, you can add a dimension with these attributes, making it a fact dimension (or a regular one – a discussion of what is best in a future post). Now, when you process the database, this dimension is copied into the MOLAP storage, just because (by default) a dimension has the StorageMode property set to MOLAP. It works, but it requires some heavy SELECT DISTINCT on your fact table. Not a good idea with large volume of data.&lt;/p&gt;  &lt;p&gt;At this point, changing the StorageMode setting to ROLAP might seem a good idea. In SSAS 2005/8 you can define (with the Enterprise version) that a dimension can be ROLAP even if the measure groups are MOLAP. You should pay the cost of SELECTs to the fact table only when a drillthrough action is required.&lt;/p&gt;  &lt;p&gt;After changing the StorageMode setting, you have to reprocess the dimension and the cube. Making a drillthrough query, you might encounter an error. With Excel 2007, this error sounds like this message:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#ff0000"&gt;Errors in the OLAP storage engine: A duplicate attribute key has been found when processing: Table: ‘dbo_FactInternetSales’, Column: ‘SalesOrderNumber’, Value: ‘SO43697’. The attribute is ‘Sales Order Number’.&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The specific name of table, column value and attribute may very depending on the cube you are using. I’m getting this error with Adventure Works DW 2008 sample (with a modified setting, as you will read later).&lt;/p&gt;  &lt;p&gt;If you execute an equivalent drillthrough query in SQL Server Management Studio, like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff"&gt;DRILLTHROUGH&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Select&amp;#160; ([Measures].[Internet Order Quantity],[Date].[Calendar].[Calendar Quarter].&amp;amp;[2001]&amp;amp;[3])&amp;#160; on 0         &lt;br /&gt;From [Adventure Works]&lt;/font&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;you end up in the same error, even if the SSMS console only says in the messages panel:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font size="1"&gt;Executing the query ...&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#ff0000" size="1"&gt;Server: The operation has been cancelled.&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;However, you can see the same error displayed by Excel by tracing the analysis services activity using SQL Server Profiler.&lt;/p&gt;  &lt;p&gt;Well, what is this issue? The exactly same query, with the same data, works fine if the dimension storage is MOLAP. In reality, if you try the original Adventure Works DW 2008 sample, it works fine. The setting I had in a dimension of another project that produced the issue is the ErrorConfiguration/KeyDuplicate property of the dimension. If it is set to “Ignore”, like the original sample, the drillthrough works well in both ROLAP and MOLAP dimension storage setting. But if you set the ErrorConfiguration/KeyDuplicate property of the dimension to “ReportAndStop”, the drillthrough works well when it is set to MOLAP, but it fails with the error I described before when it is set to ROLAP.&lt;/p&gt;  &lt;p&gt;I posted this behavior on the Connect site with &lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=400702"&gt;FeedbackID 400702&lt;/a&gt;. But after several hours spent on this issue, I hope to save time to other developers who might encounter the same issue again.&lt;/p&gt;  &lt;p&gt;The obvious workaround is to set the ErrorConfiguration/KeyDuplicate dimension property to Ignore. However, I hope this will be explained in a better way by MS.&lt;/p&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Issues executing a DRILLTHROUGH with a ROLAP dimension&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Issues executing a DRILLTHROUGH with a ROLAP dimension%0A%0Ahttp://sqlblog.com/blogs/marco_russo/archive/2009/01/17/issues-executing-a-drillthrough-with-a-rolap-dimension.aspx" target="_blank" title = "Email Issues executing a DRILLTHROUGH with a ROLAP dimension"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/marco_russo/archive/2009/01/17/issues-executing-a-drillthrough-with-a-rolap-dimension.aspx&amp;amp;title=Issues+executing+a+DRILLTHROUGH+with+a+ROLAP+dimension" target="_blank" title = "Submit Issues executing a DRILLTHROUGH with a ROLAP dimension to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2009/01/17/issues-executing-a-drillthrough-with-a-rolap-dimension.aspx&amp;amp;phase=2" target="_blank" title = "Submit Issues executing a DRILLTHROUGH with a ROLAP dimension to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2009/01/17/issues-executing-a-drillthrough-with-a-rolap-dimension.aspx&amp;amp;title=Issues+executing+a+DRILLTHROUGH+with+a+ROLAP+dimension" target="_blank" title = "Submit Issues executing a DRILLTHROUGH with a ROLAP dimension to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/marco_russo/archive/2009/01/17/issues-executing-a-drillthrough-with-a-rolap-dimension.aspx&amp;amp;title=Issues+executing+a+DRILLTHROUGH+with+a+ROLAP+dimension" target="_blank" title = "Submit Issues executing a DRILLTHROUGH with a ROLAP dimension to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/marco_russo/archive/2009/01/17/issues-executing-a-drillthrough-with-a-rolap-dimension.aspx&amp;amp;title=Issues+executing+a+DRILLTHROUGH+with+a+ROLAP+dimension&amp;amp;;top=1" target="_blank" title = "Add Issues executing a DRILLTHROUGH with a ROLAP dimension to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=11154" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Analysis+Services/default.aspx">Analysis Services</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/MDX/default.aspx">MDX</category></item><item><title>Gemini and SSAS explained</title><link>http://sqlblog.com/blogs/marco_russo/archive/2008/10/07/gemini-and-ssas-explained.aspx</link><pubDate>Mon, 06 Oct 2008 22:20:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:9300</guid><dc:creator>Marco Russo (SQLBI)</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/marco_russo/comments/9300.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/marco_russo/commentrss.aspx?PostID=9300</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/marco_russo/rsscomments.aspx?PostID=9300</wfw:comment><description>&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri size=3&gt;I got some more information about Gemini. As &lt;/FONT&gt;&lt;A class="" href="http://sqlblog.com/blogs/mosha/archive/2008/10/06/so-what-is-exactly-project-gemini.aspx"&gt;&lt;FONT face=Calibri size=3&gt;Mosha said&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;, it is Analysis Services. As you know, SSAS has always been available also as a client tool, using the same engine of the server product to create local cubes. The Kilimanjaro release will add several features to this engine that, integrated with the client part of Gemini (which allows end users to define their own model), will give high speed performance to cubes which are stored in-memory and without any pre-calculated aggregation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;&lt;FONT face=Calibri size=3&gt;According to &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/ashvinis/"&gt;&lt;FONT face=Calibri size=3&gt;Ashvini Sharma&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;, these new features might not be available to traditional SSAS developers in the Kilimanjaro release. However, cubes created from end-users will expose all SSAS metadata as usual. For this reason, these cubes will be immediately available to any SSAS-enabled client.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Now, it is questionable to call these entities cubes, since (but this is my speculation) they could have a design very unusual if compared to traditional cubes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Anyway, in the long term, all these new features (which have still not be disclosed in detail) will be available at any level. Just in the first release, the server instance of SSAS will be used by Excel Services. When you create a model into Excel, the local engine will be used. When the same spreadsheet will be published to SharePoint, the Excel Services engine will use an instance of SSAS (but may be more than one instance on more servers) to make the calculation on these data.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Unfortunately, not all information about internal details can be disclosed now. However, it seems that SSAS will have a bright future.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Gemini and SSAS explained&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Gemini and SSAS explained%0A%0Ahttp://sqlblog.com/blogs/marco_russo/archive/2008/10/07/gemini-and-ssas-explained.aspx" target="_blank" title = "Email Gemini and SSAS explained"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/marco_russo/archive/2008/10/07/gemini-and-ssas-explained.aspx&amp;amp;title=Gemini+and+SSAS+explained" target="_blank" title = "Submit Gemini and SSAS explained to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2008/10/07/gemini-and-ssas-explained.aspx&amp;amp;phase=2" target="_blank" title = "Submit Gemini and SSAS explained to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2008/10/07/gemini-and-ssas-explained.aspx&amp;amp;title=Gemini+and+SSAS+explained" target="_blank" title = "Submit Gemini and SSAS explained to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/marco_russo/archive/2008/10/07/gemini-and-ssas-explained.aspx&amp;amp;title=Gemini+and+SSAS+explained" target="_blank" title = "Submit Gemini and SSAS explained to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/marco_russo/archive/2008/10/07/gemini-and-ssas-explained.aspx&amp;amp;title=Gemini+and+SSAS+explained&amp;amp;;top=1" target="_blank" title = "Add Gemini and SSAS explained to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=9300" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Analysis+Services/default.aspx">Analysis Services</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Gemini/default.aspx">Gemini</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Kilimanjaro/default.aspx">Kilimanjaro</category></item><item><title>MDX best practices analysis using MDX Studio</title><link>http://sqlblog.com/blogs/marco_russo/archive/2008/07/20/mdx-best-practices-analysis-using-mdx-studio.aspx</link><pubDate>Sun, 20 Jul 2008 10:19:05 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7825</guid><dc:creator>Marco Russo (SQLBI)</dc:creator><slash:comments>2</slash:comments><comments>http://sqlblog.com/blogs/marco_russo/comments/7825.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/marco_russo/commentrss.aspx?PostID=7825</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/marco_russo/rsscomments.aspx?PostID=7825</wfw:comment><description>&lt;p&gt;Mosha &lt;a href="http://sqlblog.com/blogs/mosha/archive/2008/07/13/analyze-mdx-with-mdx-studio.aspx"&gt;released&lt;/a&gt; a new version of &lt;a href="http://cid-74f04d1ea28ece4e.skydrive.live.com/browse.aspx/MDXStudio/v0.4.0"&gt;MDX Studio (0.4)&lt;/a&gt;, which offers an "MDX Analysis" function that suggest best practices for a given MDX query.&lt;/p&gt; &lt;p&gt;I tried the tool with some MDX query and it offers very good suggestion (when possible with link to further information about the issue) for both the MDX beginner and the MDX veteran. Sometime, the suggestion cannot be applied because you really want to make a particular "slow" calculation, but in general the approach is pretty good. A further step would the a "pluggable" architecture to extend best practices rules, just as FxCop does. However, chances are that not so many peopla have the time to implement additional rules, so it could be a useless effort and Mosha's time would be better spent on extending existing rules in the future.&lt;/p&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=MDX best practices analysis using MDX Studio&amp;amp;body=Seen on SQLblog.com: %0A%0A%09MDX best practices analysis using MDX Studio%0A%0Ahttp://sqlblog.com/blogs/marco_russo/archive/2008/07/20/mdx-best-practices-analysis-using-mdx-studio.aspx" target="_blank" title = "Email MDX best practices analysis using MDX Studio"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/marco_russo/archive/2008/07/20/mdx-best-practices-analysis-using-mdx-studio.aspx&amp;amp;title=MDX+best+practices+analysis+using+MDX+Studio" target="_blank" title = "Submit MDX best practices analysis using MDX Studio to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2008/07/20/mdx-best-practices-analysis-using-mdx-studio.aspx&amp;amp;phase=2" target="_blank" title = "Submit MDX best practices analysis using MDX Studio to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2008/07/20/mdx-best-practices-analysis-using-mdx-studio.aspx&amp;amp;title=MDX+best+practices+analysis+using+MDX+Studio" target="_blank" title = "Submit MDX best practices analysis using MDX Studio to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/marco_russo/archive/2008/07/20/mdx-best-practices-analysis-using-mdx-studio.aspx&amp;amp;title=MDX+best+practices+analysis+using+MDX+Studio" target="_blank" title = "Submit MDX best practices analysis using MDX Studio to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/marco_russo/archive/2008/07/20/mdx-best-practices-analysis-using-mdx-studio.aspx&amp;amp;title=MDX+best+practices+analysis+using+MDX+Studio&amp;amp;;top=1" target="_blank" title = "Add MDX best practices analysis using MDX Studio to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=7825" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Analysis+Services/default.aspx">Analysis Services</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/MDX/default.aspx">MDX</category></item><item><title>Many-to-Many Dimensions: Query Performance Optimization Techniques</title><link>http://sqlblog.com/blogs/marco_russo/archive/2007/12/22/many-to-many-dimensions-query-performance-optimization-techniques.aspx</link><pubDate>Sat, 22 Dec 2007 14:51:02 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:4155</guid><dc:creator>Marco Russo (SQLBI)</dc:creator><slash:comments>3</slash:comments><comments>http://sqlblog.com/blogs/marco_russo/comments/4155.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/marco_russo/commentrss.aspx?PostID=4155</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/marco_russo/rsscomments.aspx?PostID=4155</wfw:comment><description>&lt;p&gt;More than one year ago I published a &lt;a href="http://www.sqlbi.eu/manytomany.aspx"&gt;paper about design patterns for many-to-many dimension relationships&lt;/a&gt;. Since then, I built other models and I got more experience about possible performance optimizations. Unfortunately, I still hadn't time to write about it and this topic requires verbose document and analysis to be reproducible and understandable by everyone. Luckily, now there is a white paper (&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=3494E712-C90B-4A4E-AD45-01009C15C665&amp;amp;displaylang=en#filelist"&gt;Analysis Services Many-to-Many Dimensions: Query Performance Optimization Techniques&lt;/a&gt;) downloadable from Microsoft site that explore this world and offers an interesting set of scenarios and possible optimizations, with numbers that explain when, what and how you can expect to optimize a model based on one or more many-to-many dimension relationships.&lt;/p&gt; &lt;p&gt;I already read the document and it is pretty good. Unfortunately, in the real world there are still complex scenarios that cannot be optimized with the techniques used here. I hope that in future versions the SSAS engine will provide some more advanced optimizations for similar cases. One of the first step could be simply automating the optimizations made "by hand" like the Matrix Relationship Optimization shown in the paper. Another would be the simplification for defining efficient aggregations when many-to-many relationships are involved (now you could create a lot of aggregations that are unused when M2M are involved, and sometimes users query a cube only using M2M relationships - you have to tune the aggregations manually).&lt;/p&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Many-to-Many Dimensions: Query Performance Optimization Techniques&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Many-to-Many Dimensions: Query Performance Optimization Techniques%0A%0Ahttp://sqlblog.com/blogs/marco_russo/archive/2007/12/22/many-to-many-dimensions-query-performance-optimization-techniques.aspx" target="_blank" title = "Email Many-to-Many Dimensions: Query Performance Optimization Techniques"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/marco_russo/archive/2007/12/22/many-to-many-dimensions-query-performance-optimization-techniques.aspx&amp;amp;title=Many-to-Many+Dimensions%3a+Query+Performance+Optimization+Techniques" target="_blank" title = "Submit Many-to-Many Dimensions: Query Performance Optimization Techniques to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2007/12/22/many-to-many-dimensions-query-performance-optimization-techniques.aspx&amp;amp;phase=2" target="_blank" title = "Submit Many-to-Many Dimensions: Query Performance Optimization Techniques to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2007/12/22/many-to-many-dimensions-query-performance-optimization-techniques.aspx&amp;amp;title=Many-to-Many+Dimensions%3a+Query+Performance+Optimization+Techniques" target="_blank" title = "Submit Many-to-Many Dimensions: Query Performance Optimization Techniques to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/marco_russo/archive/2007/12/22/many-to-many-dimensions-query-performance-optimization-techniques.aspx&amp;amp;title=Many-to-Many+Dimensions%3a+Query+Performance+Optimization+Techniques" target="_blank" title = "Submit Many-to-Many Dimensions: Query Performance Optimization Techniques to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/marco_russo/archive/2007/12/22/many-to-many-dimensions-query-performance-optimization-techniques.aspx&amp;amp;title=Many-to-Many+Dimensions%3a+Query+Performance+Optimization+Techniques&amp;amp;;top=1" target="_blank" title = "Add Many-to-Many Dimensions: Query Performance Optimization Techniques to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=4155" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/M2M/default.aspx">M2M</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Analysis+Services/default.aspx">Analysis Services</category></item><item><title>DefaultMember, subcubes and non-aggregatable attributes</title><link>http://sqlblog.com/blogs/marco_russo/archive/2007/10/02/defaultmember-subcubes-and-non-aggregatable-attributes.aspx</link><pubDate>Mon, 01 Oct 2007 21:35:41 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:2819</guid><dc:creator>Marco Russo (SQLBI)</dc:creator><slash:comments>2</slash:comments><comments>http://sqlblog.com/blogs/marco_russo/comments/2819.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/marco_russo/commentrss.aspx?PostID=2819</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/marco_russo/rsscomments.aspx?PostID=2819</wfw:comment><description>&lt;p&gt;Today I discovered that DefaultMember might result in a member other thant the default dimension member.&lt;/p&gt; &lt;p&gt;Reading &lt;a href="http://technet.microsoft.com/en-us/library/ms146050.aspx"&gt;documentation&lt;/a&gt;, I got the idea that DefaultMember would be always the default member defined for a dimension into a cube. In reality, the default member could change into a subcube that excludes the original default member from a calculation. This is important because writing MDX Scripts you cannot anticipate any possible use of your cube... and you should carefully consider when DefaultMember is the real appropriate syntax on a case-by-case basis. You have to be particularly careful whenever you use DefaultMember on a non-aggregatable attribute.&lt;/p&gt; &lt;p&gt;Let's look an example.&lt;/p&gt; &lt;p&gt;In Adventure Works you can write the following query.&lt;/p&gt; &lt;p&gt;&lt;pre&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;WITH&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;MEMBER&lt;/span&gt;&lt;span style="color:#000000;"&gt; Measures.DiffActual 
     &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;AS&lt;/span&gt;&lt;span style="color:#000000;"&gt; (Scenario.Scenario.&lt;/span&gt;&lt;span style="color:#800000;"&gt;CurrentMember&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Measures.Amount) 
        - (Scenario.Scenario.&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;DefaultMember&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Measures.Amount)
&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt;&lt;span style="color:#000000;"&gt; 
{ [Scenario].[Scenario].[Forecast], 
  [Scenario].[Scenario].[Budget] } &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;COLUMNS&lt;/span&gt;&lt;span style="color:#000000;"&gt;,
{ Measures.Amount, Measures.DiffActual } &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ROWS
FROM&lt;/span&gt;&lt;span style="color:#000000;"&gt; [Adventure Works]&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;This query provides this result:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/DefaultMembersubcubesandnonaggregatablea_85E/image.png"&gt;&lt;img alt="image" src="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/DefaultMembersubcubesandnonaggregatablea_85E/image_thumb.png" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I'm not interested in the real meaning of this query. This is only an excuse to see the &lt;em&gt;DefaultMember&lt;/em&gt; in action against a non-aggregatable attribute. The &lt;em&gt;DiffActual&lt;/em&gt; calculated member has a formula that use &lt;em&gt;Scenario.Scenario.DefaultMember&lt;/em&gt;. The default member for Scenario.Scenario attribute is Actual. The DiffActual row shows the difference between the scenario in column and the Actual scenario.&lt;/p&gt;
&lt;p&gt;Now, if we encapsulate the previous query into a subquery that apparently should return the same members, we can write this query.&lt;/p&gt;
&lt;p&gt;&lt;pre&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;WITH&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;MEMBER&lt;/span&gt;&lt;span style="color:#000000;"&gt; Measures.DiffActual 
     &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;AS&lt;/span&gt;&lt;span style="color:#000000;"&gt; (Scenario.Scenario.&lt;/span&gt;&lt;span style="color:#800000;"&gt;CurrentMember&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Measures.Amount) 
        - (Scenario.Scenario.&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;strong&gt;DefaultMember&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Measures.Amount)
&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt;&lt;span style="color:#000000;"&gt; 
{ [Scenario].[Scenario].[Forecast], 
  [Scenario].[Scenario].[Budget] } &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;COLUMNS&lt;/span&gt;&lt;span style="color:#000000;"&gt;,
{ Measures.Amount, Measures.DiffActual } &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ROWS
FROM&lt;/span&gt;&lt;span style="color:#000000;"&gt; 
  (&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt;&lt;span style="color:#000000;"&gt; 
    { [Scenario].[Scenario].[Forecast], 
      [Scenario].[Scenario].[Budget] } &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;COLUMNS
FROM&lt;/span&gt;&lt;span style="color:#000000;"&gt; [Adventure Works])
&lt;p&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;/pre&gt;
&lt;p&gt;Before executing this query, what is the expected result? First time I thought "it should be the same", but in reality it is different, like shown here:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/DefaultMembersubcubesandnonaggregatablea_85E/image_2.png"&gt;&lt;img alt="image" src="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/DefaultMembersubcubesandnonaggregatablea_85E/image_thumb_2.png" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;What happened? Simply, the SSAS calculation engine needs a default member included in the "context"&amp;nbsp;- when you use a subquery, you are defining a subset of the cube space that must have an existing&amp;nbsp;default member for each attribute -&amp;nbsp;if a default&amp;nbsp;member is outside of the&amp;nbsp;subcube, it is replaced by another member of the same attribute.&lt;/p&gt;
&lt;p&gt;In&amp;nbsp;the case we are&amp;nbsp;exmining, the default member of the subcube becomes Forecast.&amp;nbsp;This default member depends on the order of members of the same attribute used in the subcube. If we invert Forecast and Budget members only in the subcube, the default member becomes Forecast instead of Budget, changing the calculated member result (based on DefaultMember syntax).&lt;/p&gt;
&lt;p&gt;&lt;pre&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;WITH&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;MEMBER&lt;/span&gt;&lt;span style="color:#000000;"&gt; Measures.DiffActual 
     &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;AS&lt;/span&gt;&lt;span style="color:#000000;"&gt; (Scenario.Scenario.&lt;/span&gt;&lt;span style="color:#800000;"&gt;CurrentMember&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Measures.Amount) 
        - (Scenario.Scenario.&lt;/span&gt;&lt;span style="color:#800000;"&gt;DefaultMember&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Measures.Amount)
&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt;&lt;span style="color:#000000;"&gt; 
{ [Scenario].[Scenario].[Forecast], 
  [Scenario].[Scenario].[Budget] } &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;COLUMNS&lt;/span&gt;&lt;span style="color:#000000;"&gt;,
{ Measures.Amount, Measures.DiffActual } &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ROWS
FROM&lt;/span&gt;&lt;span style="color:#000000;"&gt; 
  (&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt;&lt;span style="color:#000000;"&gt; 
    { &lt;strong&gt;[Scenario].[Scenario].[Budget], 
      [Scenario].[Scenario].[Forecast]&lt;/strong&gt; } &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;COLUMNS
FROM&lt;/span&gt;&lt;span style="color:#000000;"&gt; [Adventure Works])
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;This is the result for the query above:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;a href="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/DefaultMembersubcubesandnonaggregatablea_85E/image_3.png"&gt;&lt;img alt="image" src="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/DefaultMembersubcubesandnonaggregatablea_85E/image_thumb_3.png" border="0"&gt;&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000000;"&gt;To avoid this issue you can use a specific member instead of the keyword DefaultMember. In our example, the solution is:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;WITH&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;MEMBER&lt;/span&gt;&lt;span style="color:#000000;"&gt; Measures.DiffActual 
     &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;AS&lt;/span&gt;&lt;span style="color:#000000;"&gt; (Scenario.Scenario.&lt;/span&gt;&lt;span style="color:#800000;"&gt;CurrentMember&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Measures.Amount) 
        - (&lt;strong&gt;Scenario.Scenario.[Actual], &lt;/strong&gt;Measures.Amount)
&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt;&lt;span style="color:#000000;"&gt; 
{ [Scenario].[Scenario].[Forecast], 
  [Scenario].[Scenario].[Budget] } &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;COLUMNS&lt;/span&gt;&lt;span style="color:#000000;"&gt;,
{ Measures.Amount, Measures.DiffActual } &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ON&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ROWS
FROM&lt;/span&gt;&lt;span style="color:#000000;"&gt; [Adventure Works]
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;With this syntax, any use of this query as a subcube in another query will not have the side effects we have seen before.&lt;/p&gt;
&lt;p&gt;Why this is so important? Simply because Excel 2007, often used as a client by end users, makes heavy use of subqueries in MDX generated by PivotTable. I had to substitute all DefaultMember in MDX Scripts with well-known member names (this also affects my &lt;a href="http://sqlblog.com/blogs/marco_russo/archive/2007/09/02/datetool-dimension-an-alternative-time-intelligence-implementation.aspx"&gt;DateTool&lt;/a&gt; dimension, which I will update soon with this and other improvements).&lt;/p&gt;
&lt;p&gt;Final note: a special thanks to &lt;a href="http://sqlblog.com/blogs/mosha/"&gt;Mosha Pasumansky&lt;/a&gt;&amp;nbsp;for illuminating me on hidden secrets of DefaultMember. Mosha also said that using the member name of default member (instead of DefaultMember keyword) improves query performance.&lt;span style="color:#000000;"&gt;&lt;/p&gt;&lt;/span&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=DefaultMember, subcubes and non-aggregatable attributes&amp;amp;body=Seen on SQLblog.com: %0A%0A%09DefaultMember, subcubes and non-aggregatable attributes%0A%0Ahttp://sqlblog.com/blogs/marco_russo/archive/2007/10/02/defaultmember-subcubes-and-non-aggregatable-attributes.aspx" target="_blank" title = "Email DefaultMember, subcubes and non-aggregatable attributes"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/marco_russo/archive/2007/10/02/defaultmember-subcubes-and-non-aggregatable-attributes.aspx&amp;amp;title=DefaultMember%2c+subcubes+and+non-aggregatable+attributes" target="_blank" title = "Submit DefaultMember, subcubes and non-aggregatable attributes to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2007/10/02/defaultmember-subcubes-and-non-aggregatable-attributes.aspx&amp;amp;phase=2" target="_blank" title = "Submit DefaultMember, subcubes and non-aggregatable attributes to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2007/10/02/defaultmember-subcubes-and-non-aggregatable-attributes.aspx&amp;amp;title=DefaultMember%2c+subcubes+and+non-aggregatable+attributes" target="_blank" title = "Submit DefaultMember, subcubes and non-aggregatable attributes to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/marco_russo/archive/2007/10/02/defaultmember-subcubes-and-non-aggregatable-attributes.aspx&amp;amp;title=DefaultMember%2c+subcubes+and+non-aggregatable+attributes" target="_blank" title = "Submit DefaultMember, subcubes and non-aggregatable attributes to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/marco_russo/archive/2007/10/02/defaultmember-subcubes-and-non-aggregatable-attributes.aspx&amp;amp;title=DefaultMember%2c+subcubes+and+non-aggregatable+attributes&amp;amp;;top=1" target="_blank" title = "Add DefaultMember, subcubes and non-aggregatable attributes to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=2819" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Analysis+Services/default.aspx">Analysis Services</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/MDX/default.aspx">MDX</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Excel+2007/default.aspx">Excel 2007</category></item><item><title>DateTool dimension: an alternative Time Intelligence implementation</title><link>http://sqlblog.com/blogs/marco_russo/archive/2007/09/02/datetool-dimension-an-alternative-time-intelligence-implementation.aspx</link><pubDate>Sun, 02 Sep 2007 13:41:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:2421</guid><dc:creator>Marco Russo (SQLBI)</dc:creator><slash:comments>79</slash:comments><comments>http://sqlblog.com/blogs/marco_russo/comments/2421.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/marco_russo/commentrss.aspx?PostID=2421</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/marco_russo/rsscomments.aspx?PostID=2421</wfw:comment><description>&lt;P&gt;Year-To-Date and Difference-Over-Previos-Year (or Year-Over-Year Growth) are among the most required features of any user. Some OLAP client (like ProClarity) offers features that try to solve this problem client-side, but I don’t like this approach given that you might have a server-side feature doing that (so you don’t discriminate Excel users). 
&lt;P&gt;One trivial approach is creating a calculated measure for each combination of measure and date-calculation. While this works, it results in a multiplication of the number of measures, making the cube hard to use. Analysis Services offers a feature called Time Intelligence Wizard that creates some calculated members on dedicated Date attributes. This works in MDX but has several limitations: 
&lt;P&gt;· It limits the measures on which the calculation are applied (each time you add a new measure, you need to update the wizard-generated MDX scripts) 
&lt;P&gt;· It only applies to selected hierarchies – it doesn’t work, for example, if you cross Month and Years on rows and columns. 
&lt;P&gt;· It doesn’t work well with Excel 2007 after you install Analysis Services 2005 SP2 – see my rants &lt;A href="http://sqlblog.com/blogs/marco_russo/archive/2007/05/26/is-microsoft-serious-about-bi.aspx"&gt;here&lt;/A&gt;. 
&lt;P&gt;While the first two issues can be solved by using the same architectural approach of Time Intelligence Wizard, simply writing a different MDX Scripts, solving the third issue (Excel 2007 compatibility) requires a different architecture. For the sake of Google/MSN Live desperate users, I’m going to describe “&lt;STRONG&gt;how to make calculated members working on non-measures dimension with Analysis Services 2005 SP2 and Excel 2007&lt;/STRONG&gt;”. I hope that Microsoft will consider a similar approach on a future version of Time Intelligence Wizard… 
&lt;P&gt;You can download the solution I'm going to describe on SQLBI.EU web site, under &lt;A href="http://www.sqlbi.eu/datetool.aspx"&gt;DateTool Project&lt;/A&gt;. 
&lt;H3&gt;The issue&lt;/H3&gt;
&lt;P&gt;Let’s start describing the Excel 2007 SP2 issue. I created a small subset of Adventure Works sample cube. Calendar Date Calculations is the wizard-generated attribute. With BIDS browser (built using OWC 11) you can put this dimension on the columns of a pivot table with Calendar hierarchy placed on rows, and you can select any set of members from the Calendar Date Calculations attribute. In this example I unchecked one of the members generated by Time Intelligence Wizard. 
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG01%20-%20Calendar%20Date%20PivotTable%20OWC11.png"&gt;&lt;IMG height=450 alt="FIG01 - Calendar Date PivotTable OWC11" src="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG01%20-%20Calendar%20Date%20PivotTable%20OWC11_thumb.png" width=862 border=0&gt;&lt;/A&gt; 
&lt;P&gt;With Excel 2007 the same cube is usable only if you enable the “Show calculated members from OLAP server” on the PivotTable Options dialog box (it’s unchecked by default). 
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG02%20-%20PivotTable%20options%20for%20Show%20Calculated%20Members.png"&gt;&lt;IMG alt="FIG02 - PivotTable options for Show Calculated Members" src="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG02%20-%20PivotTable%20options%20for%20Show%20Calculated%20Members_thumb.png" border=0&gt;&lt;/A&gt; 
&lt;P&gt;Now we can generate a PivotTable similar to the one generated with BIDS browser. 
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG03%20-%20Excel%202007%20PivotTable%20Time%20Intelligence%20Wizard.png"&gt;&lt;IMG height=279 alt="FIG03 - Excel 2007 PivotTable Time Intelligence Wizard" src="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG03%20-%20Excel%202007%20PivotTable%20Time%20Intelligence%20Wizard_thumb.png" width=736 border=0&gt;&lt;/A&gt; 
&lt;P&gt;Unfortunately, we cannot select single members from the Calendar Date Calculations attribute. We only have an “all or nothing” option based on the PivotTable Options settings we’ve seen above. This is the resulting Excel 2007 PivotTable. 
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG04%20-%20Excel%202007%20calculated%20members%20cannot%20be%20unchecked.png"&gt;&lt;IMG alt="FIG04 - Excel 2007 calculated members cannot be unchecked" src="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG04%20-%20Excel%202007%20calculated%20members%20cannot%20be%20unchecked_thumb.png" border=0&gt;&lt;/A&gt; 
&lt;H3&gt;The solution&lt;/H3&gt;
&lt;P&gt;I defined a dedicated dimension for time-related calculated members. Each formula has its own “real” members, instead of calculated ones. This solves the Excel 2007 issue at the price to require a dimension process instead of a simple MDX deployment (changing MDX Scripts for new calculated members wouldn’t require cube reprocessing). Since I don’t want a cube space growth, I simply put the dimension in the cube without a relationship with any measure group. 
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG05%20-%20Dimension%20Usage%20for%20DateTool%20dimension.png"&gt;&lt;IMG height=318 alt="FIG05 - Dimension Usage for DateTool dimension" src="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG05%20-%20Dimension%20Usage%20for%20DateTool%20dimension_thumb.png" width=376 border=0&gt;&lt;/A&gt; 
&lt;P&gt;This is the real tricky and most non-intuitive part of the game. The DateTool dimension is seen as a regular dimension by any client, but it can be changed and reprocessed without any need to reprocess any measure group (because it has no relationship!). 
&lt;P&gt;The DateTool dimension could contain a single attribute with all time-related calculated members. However, I prefer an approach that uses two sets of different calculated members, which are orthogonal and might be crossed together. For example, I would put Year-To-Date calculation in one attribute and Year-Over-Year Growth in another one, so that I can obtain the Year-Over-Year Growth of a Year-To-Date calculation without the need to create a dedicated calculated member. In other words, I use these two sets to separate &lt;I&gt;aggregations&lt;/I&gt; from &lt;I&gt;comparisons&lt;/I&gt; formulas. 
&lt;P&gt;In practice, I would need two independent dimensions, and I do that from a relational point of view. I define two views in a separate schema on my data source (I could also use a separate Data Source View with self-contained named queries, but I prefer using relational views as a general way to decouple relational schema from multidimensional one – reasons for this would fill a whole dedicated article). &lt;PRE&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;CREATE&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;SCHEMA&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; DateTool
GO

&lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;CREATE&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;VIEW&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; [DateTool]&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt;[DateAggregation] &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS
SELECT&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; 0 &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; ID_Aggregation&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#ff0000;"&gt;'Regular'&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; Aggregation
&lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;UNION ALL
SELECT&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; 1 &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; ID_Aggregation&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#ff0000;"&gt;'Year To Date'&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; Aggregation
&lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;UNION ALL
SELECT&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; 2 &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; ID_Aggregation&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#ff0000;"&gt;'Last 12 Months'&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; Aggregation
&lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;UNION ALL
SELECT&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; 3 &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; ID_Aggregation&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#ff0000;"&gt;'Total Current Year'&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; Aggregation
GO

&lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;CREATE&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;VIEW&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; [DateTool]&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt;[DateComparison] &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS
SELECT&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; 0 &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; ID_Comparison&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#ff0000;"&gt;'Regular'&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; Comparison
&lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;UNION ALL
SELECT&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; 1 &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; ID_Comparison&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#ff0000;"&gt;'Previous Year'&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; Comparison
&lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;UNION ALL
SELECT&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; 2 &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; ID_Comparison&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#ff0000;"&gt;'Diff. Over Previous Year'&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; Comparison
&lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;UNION ALL
SELECT&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; 3 &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; ID_Comparison&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#ff0000;"&gt;'Diff. % Over Previous Year'&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; Comparison
GO

&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;Since I want to build a single dimension with two attributes, I create another view to build a junk dimension with the desired cardinality. &lt;PRE&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;CREATE&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;VIEW&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; [DateTool]&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt;[DateTool] &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS
SELECT&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; 
    a&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt;ID_Aggregation&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; 
    s&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt;ID_Comparison&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; 
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:#ff00ff;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; ID_Comparison &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;VARCHAR&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;)&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;+&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#ff0000;"&gt;' - '&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;+&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#ff00ff;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; ID_Aggregation &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;VARCHAR&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;)&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#0000ff;"&gt;Description
FROM&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; DateTool&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt;DateAggregation a
&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;CROSS&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;JOIN&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt; DateTool&lt;/SPAN&gt;&lt;SPAN style="COLOR:#808080;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:#000000;"&gt;DateComparison s
GO
&lt;/PRE&gt;
&lt;P&gt;&lt;/SPAN&gt;At this point I can import these views in the Data Source View. I specify Primary Keys and Relationships manually because they can’t be inferred by relational metadata (they don’t exist at that level). &lt;/P&gt;
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG06%20-%20DateTool%20Data%20Source%20View.png"&gt;&lt;IMG alt="FIG06 - DateTool Data Source View" src="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG06%20-%20DateTool%20Data%20Source%20View_thumb.png" border=0&gt;&lt;/A&gt; 
&lt;P&gt;The resulting DateTool dimension is very simple. 
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG07%20-%20DateTool%20Data%20Dimension.png"&gt;&lt;IMG alt="FIG07 - DateTool Data Dimension" src="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG07%20-%20DateTool%20Data%20Dimension_thumb.png" border=0&gt;&lt;/A&gt; 
&lt;P&gt;At this point there is the necessary MDX Script that solves all DateTool members. This single part would require another post or two and I don’t have time to explain that now, but you can see the complete AdventureWorks based solution downloading it from SQLBI.EU. 
&lt;P&gt;The interesting part is the result provided by Excel 2007 with this solution. Here is an example of the Calendar hierarchy crossed with a selection of the calculated members available in the Aggregation attribute of the DataTool dimension. 
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG08%20-%20Excel%202007%20DataTool.Aggregation%20sample.png"&gt;&lt;IMG alt="FIG08 - Excel 2007 DataTool.Aggregation sample" src="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG08%20-%20Excel%202007%20DataTool.Aggregation%20sample_thumb.png" border=0&gt;&lt;/A&gt; 
&lt;P&gt;With this dimension, there are no limitations like those involved by calculated members (see the previous example made using Time Intelligence Wizard). In the previous PivotTable there is a member unchecked, like you can see in the following picture. 
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG09%20-%20Excel%202007%20DataTool.Aggregation%20selection.png"&gt;&lt;IMG alt="FIG09 - Excel 2007 DataTool.Aggregation selection" src="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG09%20-%20Excel%202007%20DataTool.Aggregation%20selection_thumb.png" border=0&gt;&lt;/A&gt; 
&lt;P&gt;Just using this technique you could translate each calculated measure generated by Time Intelligence Wizard into a “regular” dimension fully usable by Excel 2007 users. The presence of two independent attributes makes the user able to build more complex PivotTables like the following one: the highlighted column displays the Year Over Year Growth over the Year To Date value. 
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG10%20-%20Excel%202007%20DataTool.Aggregation%20cross%20YTD-grow_1.png"&gt;&lt;IMG height=639 alt="FIG10 - Excel 2007 DataTool.Aggregation cross YTD-grow" src="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG10%20-%20Excel%202007%20DataTool.Aggregation%20cross%20YTD-grow_thumb_1.png" width=628 border=0&gt;&lt;/A&gt; 
&lt;P&gt;Undoubtedly, such a feature is comfortable more to advanced users that to inexperienced one, since often a rename of the resulting report is required to better describe query results. 
&lt;P&gt;Finally, one of the limitations of Time Intelligence Wizard is that generated formulas work on a limited part of the cube: only one time hierarchy and only a selected set of measures. With the MDX Scripts I used, there are no similar constraints, making the cube easier to navigate. In the following example, I put years on columns and months on rows, displaying the Year-To-Date value and the difference with the previous year for selected data. 
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG11%20-%20Excel%202007%20Year%20cross%20months.png"&gt;&lt;IMG alt="FIG11 - Excel 2007 Year cross months" src="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/a51869fd5812_E5C0/FIG11%20-%20Excel%202007%20Year%20cross%20months_thumb.png" border=0&gt;&lt;/A&gt; 
&lt;P&gt;Unfortunately, with this approach we lose compatibility with other clients, like the Browser provided by BIDS and SQL Server Management Studio. A PivotTable like the previous one would not display any data: the different way Excel 2007 and OWC 11 manage dimensions metadata produces this discrepancy between results obtained by difference OLAP clients. I am not sure if this can be solved just changing MDX Scripts definition – I made many tests until now and I described the best compromise I obtained until now, but I’d like to get feedback about issues, possible improvements and eventually alternative architectural solutions. 
&lt;P&gt;If you have time to &lt;A href="http://www.sqlbi.eu/datetool.aspx"&gt;take a look at the solution&lt;/A&gt;, please send me your feedback and/or any other comments at marco.russo (at) sqlbi.eu or using the comments for this post.&lt;/P&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=DateTool dimension: an alternative Time Intelligence implementation&amp;amp;body=Seen on SQLblog.com: %0A%0A%09DateTool dimension: an alternative Time Intelligence implementation%0A%0Ahttp://sqlblog.com/blogs/marco_russo/archive/2007/09/02/datetool-dimension-an-alternative-time-intelligence-implementation.aspx" target="_blank" title = "Email DateTool dimension: an alternative Time Intelligence implementation"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/marco_russo/archive/2007/09/02/datetool-dimension-an-alternative-time-intelligence-implementation.aspx&amp;amp;title=DateTool+dimension%3a+an+alternative+Time+Intelligence+implementation" target="_blank" title = "Submit DateTool dimension: an alternative Time Intelligence implementation to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2007/09/02/datetool-dimension-an-alternative-time-intelligence-implementation.aspx&amp;amp;phase=2" target="_blank" title = "Submit DateTool dimension: an alternative Time Intelligence implementation to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2007/09/02/datetool-dimension-an-alternative-time-intelligence-implementation.aspx&amp;amp;title=DateTool+dimension%3a+an+alternative+Time+Intelligence+implementation" target="_blank" title = "Submit DateTool dimension: an alternative Time Intelligence implementation to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/marco_russo/archive/2007/09/02/datetool-dimension-an-alternative-time-intelligence-implementation.aspx&amp;amp;title=DateTool+dimension%3a+an+alternative+Time+Intelligence+implementation" target="_blank" title = "Submit DateTool dimension: an alternative Time Intelligence implementation to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/marco_russo/archive/2007/09/02/datetool-dimension-an-alternative-time-intelligence-implementation.aspx&amp;amp;title=DateTool+dimension%3a+an+alternative+Time+Intelligence+implementation&amp;amp;;top=1" target="_blank" title = "Add DateTool dimension: an alternative Time Intelligence implementation to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=2421" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Analysis+Services/default.aspx">Analysis Services</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/MDX/default.aspx">MDX</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Excel+PivotTable+_2600_quot_3B00_Analysis+Services_2600_quot_3B00_/default.aspx">Excel PivotTable &amp;quot;Analysis Services&amp;quot;</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Excel+2007/default.aspx">Excel 2007</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/BIDS/default.aspx">BIDS</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/BI+Developer+Studio/default.aspx">BI Developer Studio</category></item><item><title>Red color for negative numbers in Analysis Services 2005</title><link>http://sqlblog.com/blogs/marco_russo/archive/2007/07/28/red-color-for-negative-numbers-in-analysis-services-2005.aspx</link><pubDate>Sat, 28 Jul 2007 14:03:35 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:1965</guid><dc:creator>Marco Russo (SQLBI)</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/marco_russo/comments/1965.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/marco_russo/commentrss.aspx?PostID=1965</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/marco_russo/rsscomments.aspx?PostID=1965</wfw:comment><description>&lt;p&gt;Sometimes there is a simple way to solve an issue. For example, if you want to color all measures (including calculated measures) in red when the value is negative, you can simply write:&lt;/p&gt; &lt;p&gt;&lt;pre&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;SCOPE&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;( Measures.&lt;/span&gt;&lt;span style="color:#008000;"&gt;AllMembers&lt;/span&gt;&lt;span style="color:#0000ff;"&gt; );
    &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;FORE_COLOR&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;THIS&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;) = &lt;/span&gt;&lt;span style="color:#008000;"&gt;IIF&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;( Measures.&lt;/span&gt;&lt;span style="color:#008000;"&gt;CurrentMember&lt;/span&gt;&lt;span style="color:#0000ff;"&gt; &amp;lt; 0, 255, 0);  &lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;// 255 = RED
&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;END&lt;/span&gt;&lt;span style="color:#0000ff;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;SCOPE&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;MDX Script is so better than classical properties for each measure in these cases...&lt;/p&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Red color for negative numbers in Analysis Services 2005&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Red color for negative numbers in Analysis Services 2005%0A%0Ahttp://sqlblog.com/blogs/marco_russo/archive/2007/07/28/red-color-for-negative-numbers-in-analysis-services-2005.aspx" target="_blank" title = "Email Red color for negative numbers in Analysis Services 2005"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/marco_russo/archive/2007/07/28/red-color-for-negative-numbers-in-analysis-services-2005.aspx&amp;amp;title=Red+color+for+negative+numbers+in+Analysis+Services+2005" target="_blank" title = "Submit Red color for negative numbers in Analysis Services 2005 to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2007/07/28/red-color-for-negative-numbers-in-analysis-services-2005.aspx&amp;amp;phase=2" target="_blank" title = "Submit Red color for negative numbers in Analysis Services 2005 to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2007/07/28/red-color-for-negative-numbers-in-analysis-services-2005.aspx&amp;amp;title=Red+color+for+negative+numbers+in+Analysis+Services+2005" target="_blank" title = "Submit Red color for negative numbers in Analysis Services 2005 to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/marco_russo/archive/2007/07/28/red-color-for-negative-numbers-in-analysis-services-2005.aspx&amp;amp;title=Red+color+for+negative+numbers+in+Analysis+Services+2005" target="_blank" title = "Submit Red color for negative numbers in Analysis Services 2005 to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/marco_russo/archive/2007/07/28/red-color-for-negative-numbers-in-analysis-services-2005.aspx&amp;amp;title=Red+color+for+negative+numbers+in+Analysis+Services+2005&amp;amp;;top=1" target="_blank" title = "Add Red color for negative numbers in Analysis Services 2005 to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=1965" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Analysis+Services/default.aspx">Analysis Services</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/MDX/default.aspx">MDX</category></item><item><title>Beware changing the Attribute Key</title><link>http://sqlblog.com/blogs/marco_russo/archive/2007/07/16/beware-changing-the-attribute-key.aspx</link><pubDate>Mon, 16 Jul 2007 12:58:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:1743</guid><dc:creator>Marco Russo (SQLBI)</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/marco_russo/comments/1743.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/marco_russo/commentrss.aspx?PostID=1743</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/marco_russo/rsscomments.aspx?PostID=1743</wfw:comment><description>&lt;P&gt;BI Developer Studio does a lot of automatic changes when you change something. Each dimension is stored in a separate file, but many of the dimension informations are copied into cube files. When you modify a dimension which is already used by one or more cubes in the same project, the editor automatically updates many of these informations.&lt;/P&gt;
&lt;P&gt;Each automatic behavior has a cost. In this case, the issue is when you want to change the Attribute Key of a dimension. In reality it shouldn't be a common practice, but if you want to hide surrogate keys from the end users (see &lt;A href="http://sqlblog.com/blogs/marco_russo/archive/2007/07/03/surrogate-key-issues-with-analysis-services.aspx"&gt;this previous post&lt;/A&gt;) then you might go in the wrong direction. After many tests, the most confortable way to do this is the following (we assume a Product dimension with an attribute key named Product):&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Rename the current Attribute Key, giving an attribute name which will be hidden to end user (i.e. ProductKey)&lt;/LI&gt;
&lt;LI&gt;Create the new Attribute with the desired application key (drag-and-drop it - suppose we have a ProductCode field).&lt;/LI&gt;
&lt;LI&gt;Rename the created Attribute (i.e. ProductCode -&amp;gt; Product)&lt;/LI&gt;
&lt;LI&gt;(optional) if the ProductKey attribute has a NameColumn defined, copy this definition in the new Product attribute (for the NameColumn property)&lt;/LI&gt;
&lt;LI&gt;(optional) set the NameColumn property of ProductKey attribute to None&lt;/LI&gt;
&lt;LI&gt;Move all the attribute relationships from ProductKey attribute to Product attribute, except the relationship between ProductKey and Product&lt;/LI&gt;
&lt;LI&gt;Change the Cardinality property of the Product relationship (under ProductKey attribute) to One (if your application key has the same cardinality as the surrogate key - this is not true in Slowly Changing Dimensions, for example)&lt;/LI&gt;
&lt;LI&gt;If you have user defined hierarchies, change the SourceAttribute from ProductKey to Product where necessary&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;At this point the attribute key is not changed - you only renamed it, but its internal key is the same and all references from the cube are still valid. If you try other routes (for example, I tried creating a new attribute for the surrogate key only, assigning to it the Attribute Key role in Usage property), related cubes might require&amp;nbsp;a manual correction.&lt;/P&gt;
&lt;P&gt;I'll be happy to get feedback on better ways to get this job done.&lt;/P&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Beware changing the Attribute Key&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Beware changing the Attribute Key%0A%0Ahttp://sqlblog.com/blogs/marco_russo/archive/2007/07/16/beware-changing-the-attribute-key.aspx" target="_blank" title = "Email Beware changing the Attribute Key"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/marco_russo/archive/2007/07/16/beware-changing-the-attribute-key.aspx&amp;amp;title=Beware+changing+the+Attribute+Key" target="_blank" title = "Submit Beware changing the Attribute Key to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2007/07/16/beware-changing-the-attribute-key.aspx&amp;amp;phase=2" target="_blank" title = "Submit Beware changing the Attribute Key to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2007/07/16/beware-changing-the-attribute-key.aspx&amp;amp;title=Beware+changing+the+Attribute+Key" target="_blank" title = "Submit Beware changing the Attribute Key to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/marco_russo/archive/2007/07/16/beware-changing-the-attribute-key.aspx&amp;amp;title=Beware+changing+the+Attribute+Key" target="_blank" title = "Submit Beware changing the Attribute Key to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/marco_russo/archive/2007/07/16/beware-changing-the-attribute-key.aspx&amp;amp;title=Beware+changing+the+Attribute+Key&amp;amp;;top=1" target="_blank" title = "Add Beware changing the Attribute Key to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=1743" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/SSAS/default.aspx">SSAS</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Analysis+Services/default.aspx">Analysis Services</category></item><item><title>Strange behavior with KEY0, KEY1, KEYn in SSAS</title><link>http://sqlblog.com/blogs/marco_russo/archive/2007/07/04/strange-behavior-with-key0-key1-keyn-in-ssas.aspx</link><pubDate>Wed, 04 Jul 2007 11:26:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:1577</guid><dc:creator>Marco Russo (SQLBI)</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/marco_russo/comments/1577.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/marco_russo/commentrss.aspx?PostID=1577</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/marco_russo/rsscomments.aspx?PostID=1577</wfw:comment><description>&lt;P&gt;I just found that this query has different behavior (with breaking differences in result) with different builds of Analysis Services 2005.&lt;/P&gt;
&lt;P&gt;This is the query (I used a bitmap because this query throws an error when I try to put it in text in Community Server blog&amp;nbsp;- if someone want to check this other issue...):&lt;/P&gt;
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/StrangebehaviorwithKEY0KEY1KEYninSSAS_C81E/image_2.png"&gt;&lt;IMG height=187 alt=image src="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/StrangebehaviorwithKEY0KEY1KEYninSSAS_C81E/image_thumb_2.png" width=487 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR:#808080;"&gt;&lt;FONT color=#000000&gt;With Analysis Services 2005 SP1 (build 9.00.2047) we get the expected result:&lt;/FONT&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/StrangebehaviorwithKEY0KEY1KEYninSSAS_C81E/image.png"&gt;&lt;IMG alt=image src="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/StrangebehaviorwithKEY0KEY1KEYninSSAS_C81E/image_thumb.png" border=0&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When we move to Analysis Services 2005 SP2 (I tested with builds 9.00.3050, 9.00.3054, 9.00.3152) you get a different number of columns: the KEY0 keyword returns one column for each field that is part of a composite key, instead of only the required part.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/StrangebehaviorwithKEY0KEY1KEYninSSAS_C81E/image_1.png"&gt;&lt;IMG alt=image src="http://sqlblog.com/blogs/marco_russo/WindowsLiveWriter/StrangebehaviorwithKEY0KEY1KEYninSSAS_C81E/image_thumb_1.png" border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;The good news is that the build 9.00.3175 (that you can obtain asking to PSS) returns to the right behavior of build 9.00.2047.&lt;/P&gt;
&lt;P&gt;I looked for other information about this bug on the web but I haven't found anything. &lt;A href="http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=260636"&gt;This feedback&lt;/A&gt; seems very similar but it still doesn't work with build 9.00.3175, thus it isn't the same.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;UPDATE: this issue is described in &lt;/STRONG&gt;&lt;A class="" href="http://support.microsoft.com/kb/938585"&gt;&lt;STRONG&gt;KB938585&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; that is part of &lt;/STRONG&gt;&lt;A class="" href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;936305"&gt;&lt;STRONG&gt;KB936305&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; (that refers to build 3175). Thanks to Andrea for pointing me to the existing articles.&lt;/STRONG&gt;&lt;/P&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Strange behavior with KEY0, KEY1, KEYn in SSAS&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Strange behavior with KEY0, KEY1, KEYn in SSAS%0A%0Ahttp://sqlblog.com/blogs/marco_russo/archive/2007/07/04/strange-behavior-with-key0-key1-keyn-in-ssas.aspx" target="_blank" title = "Email Strange behavior with KEY0, KEY1, KEYn in SSAS"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/marco_russo/archive/2007/07/04/strange-behavior-with-key0-key1-keyn-in-ssas.aspx&amp;amp;title=Strange+behavior+with+KEY0%2c+KEY1%2c+KEYn+in+SSAS" target="_blank" title = "Submit Strange behavior with KEY0, KEY1, KEYn in SSAS to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2007/07/04/strange-behavior-with-key0-key1-keyn-in-ssas.aspx&amp;amp;phase=2" target="_blank" title = "Submit Strange behavior with KEY0, KEY1, KEYn in SSAS to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/marco_russo/archive/2007/07/04/strange-behavior-with-key0-key1-keyn-in-ssas.aspx&amp;amp;title=Strange+behavior+with+KEY0%2c+KEY1%2c+KEYn+in+SSAS" target="_blank" title = "Submit Strange behavior with KEY0, KEY1, KEYn in SSAS to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/marco_russo/archive/2007/07/04/strange-behavior-with-key0-key1-keyn-in-ssas.aspx&amp;amp;title=Strange+behavior+with+KEY0%2c+KEY1%2c+KEYn+in+SSAS" target="_blank" title = "Submit Strange behavior with KEY0, KEY1, KEYn in SSAS to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/marco_russo/archive/2007/07/04/strange-behavior-with-key0-key1-keyn-in-ssas.aspx&amp;amp;title=Strange+behavior+with+KEY0%2c+KEY1%2c+KEYn+in+SSAS&amp;amp;;top=1" target="_blank" title = "Add Strange behavior with KEY0, KEY1, KEYn in SSAS to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=1577" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/Analysis+Services/default.aspx">Analysis Services</category><category domain="http://sqlblog.com/blogs/marco_russo/archive/tags/MDX/default.aspx">MDX</category></item></channel></rss>