<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3770061010532212896</id><updated>2011-10-28T00:50:04.127-07:00</updated><category term='Attribute Relationship'/><category term='Performance'/><category term='ETL'/><category term='BIDS'/><category term='Enterprise Edition'/><category term='Partitions'/><category term='Measure'/><category term='2007'/><category term='Attribute'/><category term='Oracle'/><category term='SQL-Server'/><category term='2005'/><category term='Set'/><category term='SSMS'/><category term='Hierarchy'/><category term='Administration'/><category term='Dimension'/><category term='Name'/><category term='Editions'/><category term='Scope'/><category term='Perspectives'/><category term='Collation'/><category term='DMV'/><category term='SSAS'/><category term='Processing'/><category term='Tools'/><category term='Data Source'/><category term='Methodology'/><category term='Member'/><category term='Drillthrough'/><category term='Order'/><category term='Key'/><category term='Data View'/><category term='MDX'/><category term='2008'/><category term='Visibility'/><category term='Excel'/><title type='text'>SSAS Musings</title><subtitle type='html'>MDX-Adventures from the Wildlife</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Doc Schorsch</name><uri>http://www.blogger.com/profile/07956181040487046784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_0yj5v1IOuP8/SwO0yBV7vzI/AAAAAAAAAJI/PM0uF_YWIWM/S220/cgj.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-3005776021778880795</id><published>2011-01-11T23:54:00.000-08:00</published><updated>2011-01-11T23:54:08.444-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><title type='text'>new SSAS blog</title><content type='html'>Jeffrey Wang has started &lt;a href="http://mdxdax.blogspot.com/"&gt;blogging&lt;/a&gt; - and the first entry looks very promising.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-3005776021778880795?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/3005776021778880795/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2011/01/new-ssas-blog.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/3005776021778880795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/3005776021778880795'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2011/01/new-ssas-blog.html' title='new SSAS blog'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-2407550744229587841</id><published>2010-12-31T13:17:00.000-08:00</published><updated>2010-12-31T13:17:10.794-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><title type='text'>Impersonation</title><content type='html'>Vincent Rainardi wrote an interesting &lt;a href="http://dwbi1.wordpress.com/2010/12/27/qa-on-impersonation/"&gt;Q&amp;A article on impersonation&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-2407550744229587841?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/2407550744229587841/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/12/impersonation.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/2407550744229587841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/2407550744229587841'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/12/impersonation.html' title='Impersonation'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-1175004621961222875</id><published>2010-11-19T00:20:00.000-08:00</published><updated>2010-11-19T00:24:58.078-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MDX'/><title type='text'>Implicit Recursion</title><content type='html'>Darren Gosbell advises not to use &lt;a href="http://geekswithblogs.net/darrengosbell/archive/2010/11/06/mdx-implicit-recursion.aspx"&gt;Implicit Recursion&lt;/a&gt; in MDX.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-1175004621961222875?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/1175004621961222875/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/11/implicit-recursion.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/1175004621961222875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/1175004621961222875'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/11/implicit-recursion.html' title='Implicit Recursion'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-4891256008338052063</id><published>2010-10-20T11:21:00.000-07:00</published><updated>2010-10-20T11:21:26.528-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MDX'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><title type='text'>Currency Conversion</title><content type='html'>Boyan Penev writes in his Blog about &lt;a href="http://www.bp-msbi.com/2010/10/a-guide-to-currency-conversions-in-ssas/"&gt;Currency Conversion in SSAS&lt;/a&gt;. He provides a lot of interesting links and includes also practical examples. His Blog is absolutly worth reading (and is now included into the link section of this page).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-4891256008338052063?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/4891256008338052063/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/10/currency-conversion.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/4891256008338052063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/4891256008338052063'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/10/currency-conversion.html' title='Currency Conversion'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-1631611616605471771</id><published>2010-09-29T02:22:00.000-07:00</published><updated>2010-11-19T00:23:27.097-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DMV'/><title type='text'>Cube documentation with DMV data</title><content type='html'>The FrogBlog shows how to generate a SSRS documentation for a cube by using DMVs via LinkedServer access:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.purplefrogsystems.com/blog/index.php/2010/09/olap-cube-documentation-in-ssrs-part-1/"&gt;http://www.purplefrogsystems.com/blog/index.php/2010/09/olap-cube-documentation-in-ssrs-part-1/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.purplefrogsystems.com/blog/index.php/2010/09/olap-cube-documentation-in-ssrs-part-2/"&gt;http://www.purplefrogsystems.com/blog/index.php/2010/09/olap-cube-documentation-in-ssrs-part-2/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.purplefrogsystems.com/blog/2010/09/olap-cube-documentation-in-ssrs-part-3/"&gt;http://www.purplefrogsystems.com/blog/2010/09/olap-cube-documentation-in-ssrs-part-3/&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-1631611616605471771?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/1631611616605471771/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/09/cube-documentation-with-dmv-data.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/1631611616605471771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/1631611616605471771'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/09/cube-documentation-with-dmv-data.html' title='Cube documentation with DMV data'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-8012663766415176278</id><published>2010-09-08T02:41:00.000-07:00</published><updated>2010-09-08T02:41:21.477-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><title type='text'>Linked Cubes</title><content type='html'>Again only a link ...&lt;br /&gt;Chris Webb wrote in his &lt;a href="http://cwebbbi.spaces.live.com/Blog/cns%217B84B0F2C239489A%217728.entry?wa=wsignin1.0&amp;amp;sa=729050489"&gt;Blog&lt;/a&gt; about the question:&lt;br /&gt;&lt;blockquote&gt;&lt;span id="ctl00_MainContentPlaceholder_ctl01_ctl00_lblEntry"&gt;whether, if  you have multiple fact tables, you should create one big cube with  multiple measure groups or multiple cubes each with a single measure  group.&lt;/span&gt;&lt;/blockquote&gt;&lt;span id="ctl00_MainContentPlaceholder_ctl01_ctl00_lblEntry"&gt;Wenn he says that "&lt;/span&gt;&lt;span id="ctl00_MainContentPlaceholder_ctl01_ctl00_lblEntry"&gt;Linked measure groups are a pain to manage" I have to agree...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-8012663766415176278?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/8012663766415176278/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/09/linked-cubes.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/8012663766415176278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/8012663766415176278'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/09/linked-cubes.html' title='Linked Cubes'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-667992269165804049</id><published>2010-06-18T03:55:00.000-07:00</published><updated>2010-06-18T03:55:42.953-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><title type='text'>Dynamic Sets with SQL Server 2008 R2 and Excel 2010</title><content type='html'>Thomas Ivarsson shows in his &lt;a href="http://thomasianalytics.spaces.live.com/Blog/cns%21B6B6A40B93AE1393%211008.entry?wa=wsignin1.0&amp;amp;sa=324006043"&gt;Blog&lt;/a&gt; that the use of dynamic sets is much improved for the combination of SQL Server 2008 R2 and Excel 2010.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-667992269165804049?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/667992269165804049/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/06/dynamic-sets-with-sql-server-2008-r2.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/667992269165804049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/667992269165804049'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/06/dynamic-sets-with-sql-server-2008-r2.html' title='Dynamic Sets with SQL Server 2008 R2 and Excel 2010'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-6760828396227347364</id><published>2010-06-02T00:53:00.000-07:00</published><updated>2010-06-02T00:53:56.272-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Processing'/><category scheme='http://www.blogger.com/atom/ns#' term='Partitions'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>Partitioning</title><content type='html'>Teo Lachev writes in his &lt;a href="http://prologika.com/CS/blogs/blog/archive/2010/05/21/to-partition-or-not-this-is-the-question.aspx"&gt;Blog&lt;/a&gt; about the rules for the definition of partitions. For him partitioning is mainly a feature to improve the manageability of cubes and not to improve query performance - and I guess he's right.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-6760828396227347364?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/6760828396227347364/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/06/partitioning.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/6760828396227347364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/6760828396227347364'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/06/partitioning.html' title='Partitioning'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-910433964246870199</id><published>2010-05-14T03:01:00.000-07:00</published><updated>2010-05-14T14:20:20.883-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Processing'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><title type='text'>Process Update</title><content type='html'>In his &lt;a href="http://cwebbbi.spaces.live.com/Blog/cns%217B84B0F2C239489A%216854.entry?wa=wsignin1.0&amp;amp;sa=35289515"&gt;Blog&lt;/a&gt; Chris Webb has published a short explanation of the consequences of ProcessUpdate on a dimension for the aggregations on related partitions. To make it even shorter: It seems to be a good idea to do a ProcessIndex on those partitions after the ProcessUpdate for the dimension.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-910433964246870199?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/910433964246870199/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/05/process-update.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/910433964246870199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/910433964246870199'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/05/process-update.html' title='Process Update'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-1452831387437529340</id><published>2010-04-14T06:46:00.000-07:00</published><updated>2010-04-14T06:46:46.440-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>I/O Performance</title><content type='html'>Theo Lachev explains in his &lt;a href="http://prologika.com/CS/blogs/blog/archive/2010/04/13/analysis-services-i-o-time.aspx"&gt;Blog&lt;/a&gt; why the SQL Profiler does not tell you the truth about I/O waits in SSAS: it's "because the &lt;em&gt;Started/Finished reading data from the partition&lt;/em&gt;  events include also the time spent in &lt;strong&gt;aggregating&lt;/strong&gt; data  and this time may be significant". He suggests to use the Xperf tool from the Windows Performance Toolkit instead and provides links to some short introductions that show how to use the tool.&lt;br /&gt;&lt;br /&gt;Apart from this he also suggests to use solid state disks (SSD) when the storage engines spends a lot of time reading data (but "There needs no Ghost, my lord, come from the grave&lt;code&gt;/&lt;a href="" name="126"&gt;&lt;/a&gt;&lt;/code&gt;To tell us this.")&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-1452831387437529340?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/1452831387437529340/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/04/io-performance.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/1452831387437529340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/1452831387437529340'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/04/io-performance.html' title='I/O Performance'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-1115633707160592583</id><published>2010-03-18T08:51:00.000-07:00</published><updated>2010-03-18T08:51:12.966-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Edition'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>Save your day with ProcessIncremental</title><content type='html'>Who claims not to have too long processing times in real-world analytic databases either is a lyer ...&lt;br /&gt;&lt;br /&gt;... or he has the SSAS Enterprise Edition installed with the great "ProcessIncremental" processing mode. In principal, this is a clever usage of the "Partition Merge" option in that it allows to feed a tiny data set that is disjunct from the last processing slice into a temporary partition which is then merged with an existing partition that is to be extended.&lt;br /&gt;&lt;br /&gt;In our current project, where we tried to setup a "ProcessUpdate" szenario, the complexity of dimension, partition changes and ProcessIndex calls had summed up to a period that was nearly as long as a full "Process" (~2h for 5GB/2 years of business data).&lt;br /&gt;&lt;br /&gt;Now it seems that we will come down to around 10-20min which should give us a nice slap to our backs unless I did oversee something stupid, here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-1115633707160592583?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/1115633707160592583/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/03/save-your-day-with-processincremental.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/1115633707160592583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/1115633707160592583'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/03/save-your-day-with-processincremental.html' title='Save your day with ProcessIncremental'/><author><name>Doc Schorsch</name><uri>http://www.blogger.com/profile/07956181040487046784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_0yj5v1IOuP8/SwO0yBV7vzI/AAAAAAAAAJI/PM0uF_YWIWM/S220/cgj.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-2272231077860349061</id><published>2010-03-16T00:41:00.000-07:00</published><updated>2010-03-16T00:41:45.480-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ETL'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><title type='text'>Data Quality</title><content type='html'>Hilmar Buchta mentions in his &lt;a href="http://ms-olap.blogspot.com/2010/03/data-quality-in-bi-projects.html"&gt;Blog&lt;/a&gt; an new codeplex project with a (NUnit-based) testing suite to monitor the data quality in BI solutions. Seems to be quite useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-2272231077860349061?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/2272231077860349061/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/03/data-quality.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/2272231077860349061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/2272231077860349061'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/03/data-quality.html' title='Data Quality'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-8783843017973396696</id><published>2010-03-08T05:17:00.000-08:00</published><updated>2010-03-08T05:17:44.895-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Attribute'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>Setting Locale-Specific Naming Size Information</title><content type='html'>In SSAS 2008, there is the possibility to translate a key-only attribute just on a locale-specific basis: The name in the default attribute properties is left empty and the individual name columns are associated on a per-attribute/locale basis in the translation tab. &lt;br /&gt;&lt;br /&gt;When the size of those columns changes, there is now the need to adapt it also in the name mapping. The place to to this is not quite obvious since the name property of the attribute is now empty: When selecting the attribute in the translation tab, go to the properties view and unfold the "CaptionColumn" property. Here you will find the important mapping information that you need to manipulate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-8783843017973396696?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/8783843017973396696/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/03/setting-locale-specific-naming-size.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/8783843017973396696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/8783843017973396696'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/03/setting-locale-specific-naming-size.html' title='Setting Locale-Specific Naming Size Information'/><author><name>Doc Schorsch</name><uri>http://www.blogger.com/profile/07956181040487046784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_0yj5v1IOuP8/SwO0yBV7vzI/AAAAAAAAAJI/PM0uF_YWIWM/S220/cgj.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-7408432888027762151</id><published>2010-03-08T03:33:00.000-08:00</published><updated>2010-03-08T03:33:44.368-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dimension'/><category scheme='http://www.blogger.com/atom/ns#' term='Visibility'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='Member'/><category scheme='http://www.blogger.com/atom/ns#' term='Hierarchy'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='2007'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>Various (Non-)Ways for Hiding Trivial Members in Hierarchies</title><content type='html'>This is a link-collection that Martin has been doing when investigating, how and why the auto-hide-member of trivial members (they show a single child with the same semantics and are mostly artificially introduced to render unbalanced parent-child tress into balanced md-trees) does not work with Excel 2007 and SSAS 2008.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms365406.aspx"&gt;The Microsoft Documentation for the HideMemberIf-Property&lt;/a&gt; mentions the MDX Compatibility-Level of connections.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sqlanalysisservices/thread/2a36d561-fdea-4b78-8d5f-3d383ed6d6a1/"&gt;Chris Webb and Mark Russo&lt;/a&gt; describe how Excel 2007 overwrites the property value no matter what you specified.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa256070.aspx"&gt;There was a time&lt;/a&gt; when you could set the level in the registry back with SSAS 2000.&lt;br /&gt;http://social.msdn.microsoft.com/forums/en-US/sqlanalysisservices/thread/aeca1ce0-e6aa-4fdc-b604-cc0e27b7ab5a/&lt;br /&gt;--&gt; in 2005 + 2008 ist der Registry-Eintrag nicht vorgesehen&lt;br /&gt;&lt;br /&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sqlanalysisservices/thread/2a36d561-fdea-4b78-8d5f-3d383ed6d6a1/"&gt;Greg Galloway&lt;/a&gt; hacks Excel to be content overwriting only a first fake property:&lt;br /&gt;Extended Properties="MDX Compatibility=2";MDX Compatibility=2;&lt;br /&gt;&lt;br /&gt;However, in our experiments, this rendered the whole subbranch invisible.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sqlanalysisservices/thread/b36aee6d-9f4b-438c-9a09-56e77509c43b/"&gt;Oh no&lt;/a&gt;, we do not sacrifice so much for that functionality.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-7408432888027762151?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/7408432888027762151/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/03/various-non-ways-for-hiding-trivial.html#comment-form' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/7408432888027762151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/7408432888027762151'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/03/various-non-ways-for-hiding-trivial.html' title='Various (Non-)Ways for Hiding Trivial Members in Hierarchies'/><author><name>Doc Schorsch</name><uri>http://www.blogger.com/profile/07956181040487046784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_0yj5v1IOuP8/SwO0yBV7vzI/AAAAAAAAAJI/PM0uF_YWIWM/S220/cgj.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-7006284117226073896</id><published>2010-02-19T10:24:00.000-08:00</published><updated>2010-02-19T10:25:59.405-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Processing'/><category scheme='http://www.blogger.com/atom/ns#' term='Collation'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><title type='text'>Collation</title><content type='html'>Jamie Thomson discusses in his &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2010/02/15/mind-that-collation-ssas.aspx?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+jamiet+%28Jamie+Thomson%29&amp;amp;utm_content=Google+Reader"&gt;Blog&lt;/a&gt; a problem with different collations in SQL Server and SSAS that results in the following error:&lt;br /&gt;&lt;blockquote&gt;&lt;i style="color: black;"&gt;Errors in the OLAP storage engine: &lt;/i&gt;&lt;i style="color: black;"&gt;The attribute key cannot be found when processing.&lt;/i&gt;&lt;/blockquote&gt;The problem is closely related to the problems we described &lt;a href="http://ssas-musings.blogspot.com/2010/01/difference-between-names-and.html"&gt;here&lt;/a&gt; and &lt;a href="http://ssas-musings.blogspot.com/2009/11/duplicate-key-error.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-7006284117226073896?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/7006284117226073896/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/02/collation.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/7006284117226073896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/7006284117226073896'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/02/collation.html' title='Collation'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-7326261004314755224</id><published>2010-02-11T07:04:00.000-08:00</published><updated>2010-02-11T07:04:55.732-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><title type='text'>Demo Data</title><content type='html'>Ella Maschiach provides a list of free Datasets, Data Warehouse and OLAP Databases in her &lt;a href="http://blogs.microsoft.co.il/blogs/barbaro/archive/2010/02/10/free-data-warehouse-olap-databases-datasets-dw-db.aspx?utm_source=fe"&gt;Blog&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-7326261004314755224?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/7326261004314755224/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/02/demo-data.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/7326261004314755224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/7326261004314755224'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/02/demo-data.html' title='Demo Data'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-4828283448468076656</id><published>2010-01-29T00:43:00.000-08:00</published><updated>2010-01-29T00:43:28.380-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Key'/><category scheme='http://www.blogger.com/atom/ns#' term='Order'/><category scheme='http://www.blogger.com/atom/ns#' term='Attribute'/><category scheme='http://www.blogger.com/atom/ns#' term='Name'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>The difference between Order By Name and Order By Key in trivial attributes</title><content type='html'>This is a straigthforward follow-up to the last post. &lt;br /&gt;&lt;br /&gt;Suppose you have a trivial attribute, i.e., its key is mapped to a single column of a relational data source. Its name and value has been ommitted, i.e., corresponds to a representation of the key.&lt;br /&gt;&lt;br /&gt;Now Order By Name (which should be the default) will lead to a lexicographic order based on the representation while only Order By Key will use the natural ordering of the underlying data type.&lt;br /&gt;&lt;br /&gt;I´m sure you or the various books of your choices did know this already. But I didn´t.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-4828283448468076656?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/4828283448468076656/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/01/difference-between-order-by-name-and.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/4828283448468076656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/4828283448468076656'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/01/difference-between-order-by-name-and.html' title='The difference between Order By Name and Order By Key in trivial attributes'/><author><name>Doc Schorsch</name><uri>http://www.blogger.com/profile/07956181040487046784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_0yj5v1IOuP8/SwO0yBV7vzI/AAAAAAAAAJI/PM0uF_YWIWM/S220/cgj.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-8530002371964691219</id><published>2010-01-26T01:26:00.000-08:00</published><updated>2010-02-19T10:26:28.785-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Key'/><category scheme='http://www.blogger.com/atom/ns#' term='Collation'/><category scheme='http://www.blogger.com/atom/ns#' term='Attribute'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='Name'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>The difference between Names and descriptive Attributes</title><content type='html'>Depending on the configuration of your SSAS landscape (DB/OS/Locale of the data source, OS/Server Locale and Column Collation of the SSAS machine/cluster), you can get very strange processing errors in your dimensions especially related to character-based attributes/names.&lt;br /&gt;&lt;br /&gt;For example, the default collation settings in SSAS (ignore whitespaces, case-insensitivity) will usually unify more (European/German-rooted) strings than a "distinct" selection in the database of your choice. NULL entries which SSAS cannot stand at all in dimension processing are also a constant cause of problems in that respect ...&lt;br /&gt;&lt;br /&gt;If you now wonder, why this leads to processing errors in certain attributes (duplicate key error) and not in others, please remind the setup of each attribute into a key and a name column (the latter pointing to the former in the standard-case). &lt;br /&gt;&lt;br /&gt;One of the fundamental differences between the two is that a "select distinct" of the key columns MUST NOT have two rows which will be unified by SSAS collation processing while this is not necessarily true for name columns in which case an arbitrary value is taken as the representative.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-8530002371964691219?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/8530002371964691219/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/01/difference-between-names-and.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/8530002371964691219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/8530002371964691219'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/01/difference-between-names-and.html' title='The difference between Names and descriptive Attributes'/><author><name>Doc Schorsch</name><uri>http://www.blogger.com/profile/07956181040487046784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_0yj5v1IOuP8/SwO0yBV7vzI/AAAAAAAAAJI/PM0uF_YWIWM/S220/cgj.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-1766283163623501141</id><published>2010-01-26T01:14:00.000-08:00</published><updated>2010-01-26T01:14:44.373-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MDX'/><category scheme='http://www.blogger.com/atom/ns#' term='Set'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>Quasi-Cursor-Reading of Large Cellsets</title><content type='html'>One annoyance especially when batch-testing Cubes/Dimensions against the relational data source is that the MDX/XMLA-Architecture has no concept of continuation or open-cursor-reading.&lt;br /&gt;&lt;br /&gt;And we all know how soon SSMS or MDX Studio present an OutOfMemoryException!&lt;br /&gt;&lt;br /&gt;One particularly useful construct in that regard is the &lt;blockquote&gt;SubSet(Set,Position,Length)&lt;/blockquote&gt;MDX-function which can be easily used to technically partition large result spaces into manageable junks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-1766283163623501141?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/1766283163623501141/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/01/quasi-cursor-reading-of-large-cellsets.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/1766283163623501141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/1766283163623501141'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/01/quasi-cursor-reading-of-large-cellsets.html' title='Quasi-Cursor-Reading of Large Cellsets'/><author><name>Doc Schorsch</name><uri>http://www.blogger.com/profile/07956181040487046784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_0yj5v1IOuP8/SwO0yBV7vzI/AAAAAAAAAJI/PM0uF_YWIWM/S220/cgj.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-5234865431694812045</id><published>2010-01-25T06:35:00.000-08:00</published><updated>2010-01-25T06:35:29.052-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MDX'/><category scheme='http://www.blogger.com/atom/ns#' term='2005'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>Grouping in SQL and MDX</title><content type='html'>In his Blog &lt;a href="http://geekswithblogs.net/darrengosbell/archive/2009/01/28/mdx-equivalent-of-a-filtered-group-by-in-sql.aspx"&gt;MDX equivalent of a filtered GROUP BY in SQL&lt;/a&gt; Darren Gosbell shows how to translate a SQL query (with a restriction in the WHERE-clause and a GROUP BY aggregating elements of a higher hierarchy level) into a corresponding MDX query. Although MDX looks like SQL it's something completly different, so every translation is beneficial.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-5234865431694812045?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/5234865431694812045/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/01/grouping-in-sql-and-mdx.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/5234865431694812045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/5234865431694812045'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/01/grouping-in-sql-and-mdx.html' title='Grouping in SQL and MDX'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-2904997215564414522</id><published>2010-01-22T00:45:00.000-08:00</published><updated>2010-01-22T00:50:01.354-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Perspectives'/><title type='text'>Strange Perspectives</title><content type='html'>In SSAS Persepctives are a very useful tool to control the visibility of objects (dimesions, measures, hierarchies etc.). They represent subsets of cubes and define Views with the relevant data for a specific audience. In the Perspectives tab of the cube designer in BIDS I can exclude objects, that I want to hide from my users. But obviously sometimes SSAS does not believe that I know what I do:&lt;br /&gt;&lt;br /&gt;In the following example I defined a simple cube with only one measure group and some dimensions. In addition I created a calculation &lt;i&gt;TestQuantity&lt;/i&gt;. In the Perspectives tab I choosed to include all the measures and the additional calculation:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_I6BfbqYVXaM/S1lZNu1mZ3I/AAAAAAAAAM0/UcekC-Jb2xM/s1600-h/Perspective_Measures_included.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_I6BfbqYVXaM/S1lZNu1mZ3I/AAAAAAAAAM0/UcekC-Jb2xM/s320/Perspective_Measures_included.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the browser we see the expected elements:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_I6BfbqYVXaM/S1lf2tob0VI/AAAAAAAAANk/hy5M2o4XZJE/s1600-h/Perspective_Measures_included_result.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_I6BfbqYVXaM/S1lf2tob0VI/AAAAAAAAANk/hy5M2o4XZJE/s320/Perspective_Measures_included_result.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now I exclude some of my measures from the Perspective:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_I6BfbqYVXaM/S1lemHQAwEI/AAAAAAAAANM/LWRpQCxs3NA/s1600-h/Perspective_1Measure_included.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_I6BfbqYVXaM/S1lemHQAwEI/AAAAAAAAANM/LWRpQCxs3NA/s320/Perspective_1Measure_included.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And again I get the expected selection:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_I6BfbqYVXaM/S1lgXWAf_yI/AAAAAAAAANs/n4Fa6pqZ4v8/s1600-h/Perspective_1Measure_included_result.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_I6BfbqYVXaM/S1lgXWAf_yI/AAAAAAAAANs/n4Fa6pqZ4v8/s320/Perspective_1Measure_included_result.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But when I exclude all the basic measures and want to include only my calculation, SSAS apparently starts to question my accountability:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_I6BfbqYVXaM/S1lhUKbO1wI/AAAAAAAAAN0/ypsYnTyKbUA/s1600-h/Perspective_noMeasures_included.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_I6BfbqYVXaM/S1lhUKbO1wI/AAAAAAAAAN0/ypsYnTyKbUA/s320/Perspective_noMeasures_included.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The result again contains all the measures of the group, I wanted to exclude:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_I6BfbqYVXaM/S1lf2tob0VI/AAAAAAAAANk/hy5M2o4XZJE/s1600-h/Perspective_Measures_included_result.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_I6BfbqYVXaM/S1lf2tob0VI/AAAAAAAAANk/hy5M2o4XZJE/s320/Perspective_Measures_included_result.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Perhaps SSAS believes that a cube (or a cube view) without measures is not very beneficial, but since the calculation &lt;i&gt;TestQuantity&lt;/i&gt; was not excluded, I see no reason for this implicit addition of objects.&lt;br /&gt;&lt;br /&gt;For the sake of completeness a link to William Pearson's article on Perspectives in the &lt;a href="http://www.databasejournal.com/features/mssql/article.php/3625546/Other-MDX-Entities-Perspectives.htm"&gt;Database Journal&lt;/a&gt; and another one to &lt;a href="http://technet.microsoft.com/en-us/library/ms175338.aspx"&gt;the (books online) documentation.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-2904997215564414522?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/2904997215564414522/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/01/strange-perspectives.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/2904997215564414522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/2904997215564414522'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/01/strange-perspectives.html' title='Strange Perspectives'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_I6BfbqYVXaM/S1lZNu1mZ3I/AAAAAAAAAM0/UcekC-Jb2xM/s72-c/Perspective_Measures_included.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-3937378712946427062</id><published>2010-01-20T04:31:00.000-08:00</published><updated>2010-01-20T04:31:59.453-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL-Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>Official release date for SQL Server 2008 R2</title><content type='html'>According to the Data Platform Insider &lt;a href="http://blogs.technet.com/dataplatforminsider/archive/2010/01/19/sql-server-2008-r2-gets-an-official-date.aspx "&gt;Blog&lt;/a&gt; ''SQL Server 2008 R2'' received an official release date and will be available by May 2010.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-3937378712946427062?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/3937378712946427062/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/01/official-release-date-for-sql-server.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/3937378712946427062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/3937378712946427062'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/01/official-release-date-for-sql-server.html' title='Official release date for SQL Server 2008 R2'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-4854982121335370051</id><published>2010-01-10T02:04:00.000-08:00</published><updated>2010-01-10T02:10:02.081-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administration'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='DMV'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>Dynamic Management Views (DMV) in SSAS</title><content type='html'>Vincent Rainardi wrote in his Blog &lt;a href="http://dwbi1.wordpress.com/2010/01/01/ssas-dmv-dynamic-management-view/"&gt;SSAS DMV (Dynamic Management View)&lt;/a&gt; on a topic we tried already to cover &lt;a href="http://ssas-musings.blogspot.com/2009/12/monitoring-current-ssas-acitivities.html"&gt;here&lt;/a&gt; some weeks ago. The article provides some interesting links to Blogs that explain who to join the results of different DMVs together.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-4854982121335370051?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/4854982121335370051/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/01/dynamic-management-views-dmv-in-ssas.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/4854982121335370051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/4854982121335370051'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/01/dynamic-management-views-dmv-in-ssas.html' title='Dynamic Management Views (DMV) in SSAS'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-8498060390105284343</id><published>2010-01-06T04:32:00.000-08:00</published><updated>2010-01-06T04:36:16.268-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dimension'/><category scheme='http://www.blogger.com/atom/ns#' term='Processing'/><category scheme='http://www.blogger.com/atom/ns#' term='Attribute Relationship'/><title type='text'>Debugging Attribute Relationships in the ROLAP Basis</title><content type='html'>I guess that this is quite obvious and could as well be published &lt;a href="http://rolap-musings.blogspot.com/"&gt;in our ROLAP blog&lt;/a&gt;, but just for the sake of completeness: &lt;br /&gt;&lt;br /&gt;The following SQL-Statement lists all values of a source attribute &lt;blockquote&gt;src&lt;/blockquote&gt;in your dimension source table/view &lt;blockquote&gt;dim&lt;/blockquote&gt;which violate an attribute relationship (path) to a destination attribute &lt;blockquote&gt;dest&lt;/blockquote&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;select src from dim group by src having count(distinct dest)&gt;1&lt;/blockquote&gt;&lt;br /&gt;Extending this a bit delivers all the bad rows:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;select * from dim where src in (select src from dim group by src having count(distinct dest)&gt;1)&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-8498060390105284343?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/8498060390105284343/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/01/debugging-attribute-relationships-in.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/8498060390105284343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/8498060390105284343'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/01/debugging-attribute-relationships-in.html' title='Debugging Attribute Relationships in the ROLAP Basis'/><author><name>Doc Schorsch</name><uri>http://www.blogger.com/profile/07956181040487046784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_0yj5v1IOuP8/SwO0yBV7vzI/AAAAAAAAAJI/PM0uF_YWIWM/S220/cgj.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-7489934768900492399</id><published>2010-01-05T23:57:00.000-08:00</published><updated>2010-01-06T08:41:23.740-08:00</updated><title type='text'>Excel and MDX multiselect problems revisited</title><content type='html'>Multiselect problems ins SSAS 2005 ff come in several forms. Today, I want to take a look at several forms of multiselect problems, how they interact with Excel as a MDX client and how they can be avoided. Let's first look a problem that can be easily detected.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;The current coordinate is a set&lt;/h2&gt;&lt;br /&gt;In his blog article&lt;a href="http://sqlblog.com/blogs/mosha/archive/2007/01/13/multiselect-friendly-mdx-for-calculations-looking-at-current-coordinate.aspx"&gt; &lt;/a&gt;&lt;a href="http://sqlblog.com/blogs/mosha/archive/2007/01/13/multiselect-friendly-mdx-for-calculations-looking-at-current-coordinate.aspx"&gt;Multiselect friendly MDX for calculations looking at current coordinate &lt;/a&gt;&lt;br /&gt;Mosha Pasumansky explains how multiselect problems that use a set in the current coordinate occur and how they can be avoided. Let's show an example for the classical Adventure Works Cube. I use SSAS 2008 and Excel 2007. Let's define the sales amount for the year before as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;create member [Measures].[Prior Year Sales Amount] as&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;([Measures].[Sales Amount],ParallelPeriod([Date].[Calendar].[Calendar Year],1,[Date].[Calendar].CurrentMember))&lt;/span&gt;&lt;span style="font-size:85%;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let's look at a simple example in Excel 2008:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_KBRYykrI-cw/S0RNsktmVZI/AAAAAAAAAlg/9bTfnCGs5zk/s1600-h/blog1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 75px;" src="http://3.bp.blogspot.com/_KBRYykrI-cw/S0RNsktmVZI/AAAAAAAAAlg/9bTfnCGs5zk/s320/blog1.jpg" alt="" id="BLOGGER_PHOTO_ID_5423545279425435026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So far, it works fine, now let's filter on the dates, first on calendar year 2002.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_KBRYykrI-cw/S0RQJO2kytI/AAAAAAAAAlw/fbAyWQzOZZs/s1600-h/blog2.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 149px;" src="http://3.bp.blogspot.com/_KBRYykrI-cw/S0RQJO2kytI/AAAAAAAAAlw/fbAyWQzOZZs/s320/blog2.jpg" alt="" id="BLOGGER_PHOTO_ID_5423547970796964562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It still works fine. Now let's filter on two months, say May and June 2002. Here's the result.&lt;br /&gt;It doesn't work anymore because now, the current coordinate  is a set. Here's the query:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:times new roman;"&gt;SELECT {[Measures].[Sales &lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_KBRYykrI-cw/S0RWgaF2YtI/AAAAAAAAAmI/g7laJrEBhkU/s1600-h/blog3.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 133px;" src="http://2.bp.blogspot.com/_KBRYykrI-cw/S0RWgaF2YtI/AAAAAAAAAmI/g7laJrEBhkU/s320/blog3.jpg" alt="" id="BLOGGER_PHOTO_ID_5423554966020580050" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:times new roman;"&gt;Amount],[Measures].[Prior Year Sales Amount]}  ON COLUMNS , NON EMPTY &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:times new roman;"&gt;Hierarchize({DrilldownLevel({[Product].&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:times new roman;"&gt;[Product Categories].[All Products]})})  ON ROWS  FROM (SELECT ({[Date].[Calendar].[Month].&amp;amp;[2002]&amp;amp;[5],[Date].[Calendar].[Month].&amp;amp;[2002]&amp;amp;[6]}) ON COLUMNS  FR&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:times new roman;"&gt;OM [Adventure Works]) &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The set occurs in the subselect that Excel 2007 uses to implement the filter. If we do the same in Excel 2003, we get a similar result. it doesn't work but we get a least an error.&lt;br /&gt;&lt;br /&gt;Now, the query us&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_KBRYykrI-cw/S0RWOawnfnI/AAAAAAAAAmA/rxBxJ64AQr0/s1600-h/blog4.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 148px;" src="http://3.bp.blogspot.com/_KBRYykrI-cw/S0RWOawnfnI/AAAAAAAAAmA/rxBxJ64AQr0/s320/blog4.jpg" alt="" id="BLOGGER_PHOTO_ID_5423554656962313842" border="0" /&gt;&lt;/a&gt;es a where clause and a calculated member to represent the set. Here's the query:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:times new roman;"&gt;WITH &lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;MEMBER [Date].[Calendar].[XL_QZX] AS 'Aggregate({[Date].[&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:times new roman;"&gt;Calendar].[Month].&amp;amp;[2002]&amp;amp;[6],[Date].[Calendar].[Month].&amp;amp;[2002]&amp;amp;[5]})' SELECT {[Measures].[Sales Amount],[Measures].[Prior Year Sales Amount]} ON COLUMNS , NON EMPTY Hierarchize(AddCalculatedMembers({DrilldownLevel({[Product].[Product Categories].[All Products]})}))  ON ROWS  FROM [Adventure Works] WHERE ([Date].[Calendar].[XL_QZX]) &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The error basically states the the CurrentMember function, which is used inside the ParallelPeriods function of our calculated measure [Prior Year Sales Amount] now contains a set.&lt;br /&gt;A simple try of the same in Excel 2010 beta also shows that is currently does not work (even if you use the new SSAS 2008 R2 CTP).&lt;br /&gt;&lt;br /&gt;Let's summarize: Calculations that use CurrentMember (or functions that use CurrentMember) are not multiselect-safe in Excel 2003, 2007 and ,at least up to now, in Excel 2010.&lt;br /&gt;&lt;br /&gt;A possible workaround is described in &lt;a href="http://www.ixto.de/blog/sql-server-2005/mdx-2005/korrekte-mdx-berechnungen-mit-den-analysis-services-trotz-multiselect/"&gt;Korrekte MDX-Berechnungen mit den Analysis Services trotz multiselect&lt;/a&gt;. The idea is to add a named calcuation in the data source view and to scope this calculation later on. Alternatively, you can just live with it, you just get no result or an error.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;subselects and the current coordinate´problem&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;While the first problem can be easily detected Excel(you get no results or an error), the following problem is more subtle and cannot easily be detected. It occurs in Excel version 2007 (at up to now in 2010 beta). Let us again show an example in the adventure works cube. We define&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"  style="margin: 0cm 0cm 0pt; line-height: normal; color: rgb(0, 0, 0);font-family:times new roman;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="" lang="EN-US"&gt;c&lt;span style="color: rgb(0, 0, 0);"&gt;reate&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);" lang="EN-US"&gt; member [Measures].[Number of Products] &lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p class="MsoNormal"  style="margin: 0cm 0cm 0pt; line-height: normal; color: rgb(0, 0, 0);font-family:times new roman;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="" lang="EN-US"&gt;as&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p class="MsoNormal"  style="margin: 0cm 0cm 0pt; line-height: normal; color: rgb(0, 0, 0);font-family:times new roman;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="" lang="EN-US"&gt;Count(Existing([Product].[Product].[Product].MEMBERS));&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Here is a simple excel 2007 example:&lt;br /&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; color: rgb(0, 0, 0);"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_KBRYykrI-cw/S0SMYemlQoI/AAAAAAAAAmQ/esBcDrjK744/s1600-h/blog5.jpg"&gt;&lt;img style="cursor: pointer; width: 273px; height: 122px;" src="http://1.bp.blogspot.com/_KBRYykrI-cw/S0SMYemlQoI/AAAAAAAAAmQ/esBcDrjK744/s320/blog5.jpg" alt="" id="BLOGGER_PHOTO_ID_5423614203420557954" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Let's now filter on the products dimension.We restrict to Accessories and Bikes and also leave out the touring bikes. Here's the result:&lt;p&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_KBRYykrI-cw/S0SOGKQIWTI/AAAAAAAAAmY/LLR3KNeQ6iY/s1600-h/blog6.jpg"&gt;&lt;img style="cursor: pointer; width: 274px; height: 125px;" src="http://3.bp.blogspot.com/_KBRYykrI-cw/S0SOGKQIWTI/AAAAAAAAAmY/LLR3KNeQ6iY/s320/blog6.jpg" alt="" id="BLOGGER_PHOTO_ID_5423616087743289650" border="0" /&gt;&lt;/a&gt;&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;span  lang="EN-US" style="font-family:'Courier New';"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;Well nice try, but unfortunately a wrong result. The visual totals are wrong, the sum of bikes should be 103 and the total 138. Let's look at the query:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;SELECT NON EMPTY&lt;br /&gt;Hierarchize(DrilldownMember({{DrilldownLevel({[Product].[Product Categories].[All Products]})}}, {[Product].[Product Categories].[Category].&amp;amp;[1]})) DIMENSION PROPERTIES PARENT_UNIQUE_NAME,[Product].[Product Categories].[Subcategory].[Category] ON COLUMNS&lt;br /&gt;FROM&lt;br /&gt;(SELECT ({[Product].[Product Categories].[Subcategory].&amp;amp;[2], [Product].[Product Categories].[Subcategory].&amp;amp;[1],&lt;br /&gt;            [Product].[Product Categories].[Category].&amp;amp;[4]}) ON COLUMNS&lt;br /&gt;FROM [Adventure Works]) WHERE ([Measures].[Number of Products]&lt;br /&gt;) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The filter step in Excel 2007 is implemented by a subselect. Unfortunately, the subselect does not change the current coordinate and thus the query execution context is the [All] member of the product dimension. And indead, the totals and subtotals are those for an unfiltered query.&lt;br /&gt;&lt;br /&gt;A solution is to rely on a feature of SSAS2008, dynamic sets. The following solves the problem for SSAS 2008 and Excel 2007 and 2010.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:times new roman;"&gt;create dynamic set Products as [Product].[Product].[Product];&lt;/span&gt; &lt;span style="font-family:times new roman;"&gt;create member[Measures].[Number of Products]&lt;br /&gt;as&lt;/span&gt; &lt;span style="font-family:times new roman;"&gt;count(existing(Products));&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;Here's the result:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_KBRYykrI-cw/S0SWF-MeGHI/AAAAAAAAAmg/o7jmU-pvHlU/s1600-h/blog7.jpg"&gt;&lt;img style="cursor: pointer; width: 315px; height: 142px;" src="http://4.bp.blogspot.com/_KBRYykrI-cw/S0SWF-MeGHI/AAAAAAAAAmg/o7jmU-pvHlU/s320/blog7.jpg" alt="" id="BLOGGER_PHOTO_ID_5423624880599734386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Although Excel 2003 doesn't have subselect problems (it does not generate queries that use subselect), this solution does not work for Excel 2003 (the generated query does not benefit from the dynamic set, i.e., the results are still wrong.&lt;br /&gt;&lt;br /&gt;Additionally, the problem still exists if we use different measures like Adventure Works&lt;br /&gt;[Measures].[Ratio to Parent Product] because here, dynamic sets cannot help to solve the problem. Let's show this in the next example:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_KBRYykrI-cw/S0SfBx2PmVI/AAAAAAAAAmo/gzXd9Z9BYTo/s1600-h/blog8.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 118px;" src="http://1.bp.blogspot.com/_KBRYykrI-cw/S0SfBx2PmVI/AAAAAAAAAmo/gzXd9Z9BYTo/s320/blog8.jpg" alt="" id="BLOGGER_PHOTO_ID_5423634704170457426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now let's filter again:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_KBRYykrI-cw/S0SzAWAiVSI/AAAAAAAAAmw/5LI3PJmrbVk/s1600-h/blog9.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 91px;" src="http://2.bp.blogspot.com/_KBRYykrI-cw/S0SzAWAiVSI/AAAAAAAAAmw/5LI3PJmrbVk/s320/blog9.jpg" alt="" id="BLOGGER_PHOTO_ID_5423656669750121762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Wow, amazing, all ratio to parent values are wrong, column real ratio gives you the correct values. Again, this is the effect of the subselect, that implements the filter. The current coordinate does not change, thus you see values of the form sum of filtered bikes / unfiltered parent of bikes, i.e. the 73,15% in the bikes row is equal to $80.324,94 / $109.809.274,20 (unfiltered total). The real ratios are in column "real ratio".&lt;br /&gt;&lt;br /&gt;This also does not work in Excel 2010, but Excel 2003 computes correct values:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_KBRYykrI-cw/S0S0mVHj3NI/AAAAAAAAAm4/3wVePEdpGww/s1600-h/blog10.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 96px;" src="http://3.bp.blogspot.com/_KBRYykrI-cw/S0S0mVHj3NI/AAAAAAAAAm4/3wVePEdpGww/s320/blog10.jpg" alt="" id="BLOGGER_PHOTO_ID_5423658421857803474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A solution to solve this problem in Excel 2007 and 2010 uses the same idea above, adding a hard measure (named calculation) together with scoping.&lt;br /&gt;&lt;br /&gt;Let's summarize our results:&lt;br /&gt;&lt;br /&gt;"&lt;span style="font-style: italic;"&gt;The current coordinate is a set&lt;/span&gt;"-problem occurs in Excel versions 2003, 2007 and 2010 beta. You can either live with it (your get no result or an error) or you have to define a hard measure and scope it.&lt;br /&gt;&lt;br /&gt;The "&lt;span style="font-style: italic;"&gt;subselect and current coordinate&lt;/span&gt;"-problem occurs only in Excel versions 2007 and 2010 beta as these Excel versions rely on subselect to implement filters.  Sometimes this problem can be circumvented by the use of dynamic sets (if your calculated measures relies on dynamically counting a set). In other cases, you have to define a hard measure and scope it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-7489934768900492399?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/7489934768900492399/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2010/01/excel-and-mdx-multiselect-problems.html#comment-form' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/7489934768900492399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/7489934768900492399'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2010/01/excel-and-mdx-multiselect-problems.html' title='Excel and MDX multiselect problems revisited'/><author><name>DocFour</name><uri>http://www.blogger.com/profile/10348533615017166957</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_KBRYykrI-cw/S0RNsktmVZI/AAAAAAAAAlg/9bTfnCGs5zk/s72-c/blog1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-3320363299779971389</id><published>2009-12-21T04:11:00.000-08:00</published><updated>2009-12-23T03:00:31.966-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MDX'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>Changing results with IIF hints</title><content type='html'>Recently we saw some strange effects with calculations using a conditional IIF-logic: the calculation should show the difference between two measures if the first measure is greater than 0:&lt;br /&gt;&lt;pre&gt;IIF([Measures].[FirstMeasure]=0,NULL,&lt;br /&gt;        ([Measures].[FirstMeasure]-[Measures].[SecondMeasure])&lt;br /&gt;&lt;/pre&gt;A query using the calculation returned the expected results for the [All]-node of a given hierarchy but wrong results for other levels. Since the given measures are involved in some scoped assignments we assumed an error in our logic, and were quite suprised when we discovered that a CASE-block returned the correct results:&lt;br /&gt;&lt;pre&gt;CASE [Measures].[FirstMeasure] &lt;br /&gt;         WHEN 0 THEN NULL&lt;br /&gt;         ELSE [Measures].[FirstMeasure]-[Measures].[SecondMeasure]&lt;br /&gt;    END&lt;br /&gt;&lt;/pre&gt;Further research showed that IIF also brought the correct results when we used the &lt;i&gt;eager hint&lt;/i&gt; in the calculation. The hint is a new feature in SSAS 2008 and documented &lt;a href="http://technet.microsoft.com/en-us/library/bb934106.aspx"&gt;here&lt;/a&gt;. The SQLCAT team explains the hint in the blog &lt;a href="http://blogs.msdn.com/sqlcat/archive/2008/09/04/iif-function-query-hints-in-sql-server-analysis-services-2008.aspx"&gt;IIF Function Query Hints in SQL Server Analysis Services 2008&lt;/a&gt;: &lt;blockquote&gt;the IIF mdx function is a commonly used expression that can be very costly to evaluate. It takes 3 arguments:&lt;br /&gt;&lt;br /&gt;iif(&lt; condition &gt;, &lt; then branch &gt;, &lt; else branch &gt;)&lt;br /&gt;&lt;br /&gt;Where the condition evaluates to true, the value from the “then branch” is used otherwise the “else branch” expression is used.&lt;br /&gt;&lt;br /&gt;Note the term “used” – one or both branches may be evaluated even if its value is not used.  It may be cheaper for the engine to evaluate the expression over the entire space and use it when needed (termed an eager plan) rather than chop up the space into a potentially enormous number of fragments and evaluate only where needed (a strict plan).&lt;/blockquote&gt;&lt;br /&gt;Apparently the different execution pathes can bring different results - and that is something I would not expect...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-3320363299779971389?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/3320363299779971389/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2009/12/changing-results-with-iif-hints.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/3320363299779971389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/3320363299779971389'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2009/12/changing-results-with-iif-hints.html' title='Changing results with IIF hints'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-2297014411367809625</id><published>2009-12-18T07:01:00.000-08:00</published><updated>2009-12-18T07:01:46.149-08:00</updated><title type='text'>Subtotals for Named Sets</title><content type='html'>Although still in its infancy, named sets could really help you to satisfy your numerous customers ad-hoc aggregation requirements ...&lt;br /&gt;&lt;br /&gt;... if they only would show sub-totals in excel and if you only could mount non-disjunct instances of those beasts one after the other. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://prologika.com/CS/blogs/blog/archive/2009/01/27/named-set-subtotals-in-excel.aspx"&gt;Here&lt;/a&gt; is a tip that makes use of the implicit property of named sets to represent intersections when confronted with members of different levels from a common hierarchy. &lt;br /&gt;&lt;br /&gt;In its extreme application, adding the [All] member to a set will deliver you a sub-total that is at the same time correctly named "Gesamtergebnis" or "Total" when displayed in excel.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-2297014411367809625?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/2297014411367809625/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2009/12/subtotals-for-named-sets.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/2297014411367809625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/2297014411367809625'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2009/12/subtotals-for-named-sets.html' title='Subtotals for Named Sets'/><author><name>Doc Schorsch</name><uri>http://www.blogger.com/profile/07956181040487046784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_0yj5v1IOuP8/SwO0yBV7vzI/AAAAAAAAAJI/PM0uF_YWIWM/S220/cgj.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-2654568460554837838</id><published>2009-12-18T06:27:00.000-08:00</published><updated>2009-12-18T06:27:28.871-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSMS'/><category scheme='http://www.blogger.com/atom/ns#' term='BIDS'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='Attribute Relationship'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>Do not call a dimension attribute "DESCRIPTION"!</title><content type='html'>At least the Office Web Components (OWC) browser integrated into BI Development Studio and Management Studio will not show the values as a member property when the attribute (Name, not key nor translation) is called "DESCRIPTION".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-2654568460554837838?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/2654568460554837838/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2009/12/do-not-call-dimension-attribute.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/2654568460554837838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/2654568460554837838'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2009/12/do-not-call-dimension-attribute.html' title='Do not call a dimension attribute &quot;DESCRIPTION&quot;!'/><author><name>Doc Schorsch</name><uri>http://www.blogger.com/profile/07956181040487046784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_0yj5v1IOuP8/SwO0yBV7vzI/AAAAAAAAAJI/PM0uF_YWIWM/S220/cgj.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-5683959197022734381</id><published>2009-12-17T08:42:00.000-08:00</published><updated>2009-12-17T08:42:11.663-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data View'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL-Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Source'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>Federating a Secondary SQL Server Data Source into a Primary-Oracle Data View</title><content type='html'>It is a common, though tricky, thing to host &lt;a href="http://rolap-musings.blogspot.com/2009/12/maintaining-analyto-operative-data.html"&gt;some, but not all of your analytical data&lt;/a&gt; that is to be fed into the cubeware of your trust in the nearby, type-consistent and easy-to-maintain SQL Server instance.&lt;br /&gt;&lt;br /&gt;This methodology has also the nice side-effect that it will not give the .. say Oracle-minded ... datawarehouse people much to reason about such they will not get distracted from their ... um ... daily slee.., ah, work was the political correct term.&lt;br /&gt;&lt;br /&gt;The idea will however bite you the first time you notice that you cannot mix dimensions and facts between two seperate Oracle/SQL Server data views. So you will read &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sqlanalysisservices/thread/a5a497e8-5e74-4fb2-8573-90605df9b322"&gt;diverse blog entries&lt;/a&gt; trying to mix the two data sources within a single view. &lt;br /&gt;&lt;br /&gt;Oracle will be your &lt;b&gt;primary data source&lt;/b&gt;. "Add table"  in the view allows you weel to choose a registered SQL Server as a &lt;b&gt;secondary data source&lt;/b&gt;, but the table chooser stays empty!&lt;br /&gt;&lt;br /&gt;If you read above-mentioned thread to its end, there will be the definitive hint, which is "Add Named Query" and .... here you are ... nearly.&lt;br /&gt;&lt;br /&gt;Be aware that this will operate on some "Remote view" feature of the Oracle ODBC driver. For example, Oracle tends to lower-case only the key columns, which can fool you when switching an existing dimension from a seperate data view to the now merged view.&lt;br /&gt;&lt;br /&gt;I would not recommend trying it the other way round (Oracle secondary, SQL Server primary data source) unless your primary data source will become bigger than the secondary one ... ok, we still hope that ... since it is to expect that using this kind of federation for practical  volumes of fact data will not be funny.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-5683959197022734381?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/5683959197022734381/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2009/12/federating-secondary-sql-server-data.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/5683959197022734381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/5683959197022734381'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2009/12/federating-secondary-sql-server-data.html' title='Federating a Secondary SQL Server Data Source into a Primary-Oracle Data View'/><author><name>Doc Schorsch</name><uri>http://www.blogger.com/profile/07956181040487046784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_0yj5v1IOuP8/SwO0yBV7vzI/AAAAAAAAAJI/PM0uF_YWIWM/S220/cgj.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-8593878987251535393</id><published>2009-12-09T04:08:00.000-08:00</published><updated>2009-12-09T07:45:24.086-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dimension'/><category scheme='http://www.blogger.com/atom/ns#' term='Member'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>How to translate the [All] member</title><content type='html'>I was always hesitating on that issue because I did not want to affect a thousand lines of MDX-Code in which [Dimension].[Hierarchy].[All] is a common construct, e.g., to exclude unwanted detail-calculations from a calculation scope.&lt;br /&gt;&lt;br /&gt;But per default, there is no translation row in the dimension editor that allows one to override the display name of that ubiquitous and ugly (though, comprehensible) node.   &lt;br /&gt;&lt;br /&gt;Here comes the (straightforward) step: Simly set the property "AttributeAllMemberName" of the relevant dimensions explicitely to the default value "All" and - voilà - you have the translation rows for your pleasure without having to reinterpret your scripts.&lt;br /&gt;&lt;br /&gt;Please be aware that the member must be also (re-)translated for all the hierarchies (these rows will also automatically appear). Similarly, you can treat the "UnknownMemberName" ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-8593878987251535393?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/8593878987251535393/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2009/12/how-to-translate-all-member.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/8593878987251535393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/8593878987251535393'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2009/12/how-to-translate-all-member.html' title='How to translate the [All] member'/><author><name>Doc Schorsch</name><uri>http://www.blogger.com/profile/07956181040487046784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_0yj5v1IOuP8/SwO0yBV7vzI/AAAAAAAAAJI/PM0uF_YWIWM/S220/cgj.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-2787874415523384865</id><published>2009-12-07T08:46:00.000-08:00</published><updated>2010-03-08T03:46:18.761-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='2007'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Drillthrough'/><title type='text'>Non-Pivot-Friendly MDX through Excel 2007 [Updated]</title><content type='html'>I am sooooo glad for Greg Galloway´s tiny little comment to &lt;a href="http://social.msdn.microsoft.com/Forums/en/sqlanalysisservices/thread/37b2b2fc-0f3b-4087-8086-db2b15503b77"&gt;this post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Because we were looking for a solution to integrate MDX queries into Excel which are not very pivot-table friendly.&lt;br /&gt;&lt;br /&gt;Why do you ever want to do something esoteric like that? Suppose you want to compare very specific data-points in your tuple-space with each other (a monthly real margin from one year in  one store with a daily plan margin from a region in a completely different year). Then, your pivot table will necessarily cross-join all the individual coordinate components (year/month/day(s) of both years, affected region/store(s), plan &amp; real measures)  and come with a solution set that is orders of magnitude too large and cannot be reasonably filtered without going nuts.&lt;br /&gt;&lt;br /&gt;That is where you should rather build up a small (remember: SMALL in the sense of aggregated fact data) pivot table, do a drill-though and then save the resulting query table as a nice template for your future experiments. &lt;br /&gt;&lt;br /&gt;I have not been able to create that query table by any other means in Excel 2007!&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;&lt;br /&gt;There is &lt;a href="http://ms-olap.blogspot.com/2008/10/returning-mdx-query-results-in-excel.html"&gt;another way for executing and displaying mdx&lt;/a&gt; described by Hilmar Buchta which might be more useful when you need full (VBA) control over the connection/command behaviour, e.g., when you first need to check whether the result is empty (and hence would destroy the layouted table structure).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-2787874415523384865?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/2787874415523384865/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2009/12/non-pivot-friendly-mdx-through-excel.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/2787874415523384865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/2787874415523384865'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2009/12/non-pivot-friendly-mdx-through-excel.html' title='Non-Pivot-Friendly MDX through Excel 2007 [Updated]'/><author><name>Doc Schorsch</name><uri>http://www.blogger.com/profile/07956181040487046784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_0yj5v1IOuP8/SwO0yBV7vzI/AAAAAAAAAJI/PM0uF_YWIWM/S220/cgj.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-1519620917132521730</id><published>2009-12-04T05:25:00.000-08:00</published><updated>2010-01-10T02:05:36.805-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administration'/><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='DMV'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>Monitoring current SSAS acitivities</title><content type='html'>A question DBA's are always interested in is: who is connected to my database and what are they doing? For SSAS 2008 there are some Dynamic Management Views (DMV) to answer this question(s) (and many others). The query:&lt;br /&gt;&lt;pre&gt;SELECT TABLE_NAME&lt;br /&gt;  FROM $system.dbschema_tables&lt;br /&gt; WHERE TABLE_SCHEMA = '$SYSTEM'&lt;br /&gt;   AND LEFT(TABLE_NAME,8) = 'DISCOVER'&lt;br /&gt; ORDER BY table_name&lt;br /&gt;&lt;/pre&gt;provides the following list of tables (I added links to and descriptions from the documentation; some of the linked pages are not very extensive):&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/bb934100.aspx"&gt;DISCOVER_COMMAND_OBJECTS&lt;/a&gt;: Provides resource usage and activity information about the objects in use by the referenced command.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/bb934103.aspx"&gt;DISCOVER_COMMANDS&lt;/a&gt;: Provides resource usage and activity information about the currently executing or last executed commands in the opened connections on the server.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/bb934105.aspx"&gt;DISCOVER_CONNECTIONS&lt;/a&gt;: Provides resource usage and activity information about the currently opened connections on the server.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/bb934096.aspx"&gt;DISCOVER_DB_CONNECTIONS&lt;/a&gt;: Provides resource usage and activity information about the currently opened connections from the server to a database.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee320284.aspx"&gt;DISCOVER_DIMENSION_STAT&lt;/a&gt;: This schema rowset returns statistics on the specified dimension.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ms126315.aspx"&gt;DISCOVER_ENUMERATORS&lt;/a&gt;: Returns a list of names, data types, and enumeration values of enumerators supported by the Microsoft XML for Analysis (XMLA) provider for a specific data source.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ms126228.aspx"&gt;DISCOVER_INSTANCES&lt;/a&gt;: Describes the instances on the server.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/bb934102.aspx"&gt;DISCOVER_JOBS&lt;/a&gt;: Provides information about the active jobs executing on the server.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/de-de/library/ms126063%28SQL.90%29.aspx"&gt;DISCOVER_KEYWORDS&lt;/a&gt;: Returns information about keywords reserved by the Microsoft XML for Analysis (XMLA) provider.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ms126236.aspx"&gt;DISCOVER_LITERALS&lt;/a&gt;: Returns information about literals, including data types and values, supported by the Microsoft XML for Analysis (XMLA) provider.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/bb934104.aspx"&gt;DISCOVER_LOCKS&lt;/a&gt;: Provides information about the current standing locks on the server.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee301825.aspx"&gt;DISCOVER_MASTER_KEY&lt;/a&gt;: This schema rowset returns the server's master encryption key (the key that is used by the server to encrypt sensitive data on disk).&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee320945.aspx"&gt;DISCOVER_MEMORYGRANT&lt;/a&gt;: This rowset returns a list of internal memory quota grants that are taken by jobs that are currently running on the server.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee320910.aspx"&gt;DISCOVER_MEMORYUSAGE&lt;/a&gt;: This schema rowset returns the DISCOVER_MEMORYUSAGE statistics for various objects allocated by the server.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee320661.aspx"&gt;DISCOVER_OBJECT_ACTIVITY&lt;/a&gt;: This schema rowset provides resource usage per object since the start of the service. Some further information on this view can be found in Vidas Matelis' &lt;a href="http://www.ssas-info.com/VidasMatelisBlog/43_ssas-2008-ctp6-new-dmv-systemdiscover_object_activity"&gt;Blog&lt;/a&gt;.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/bb934098.aspx"&gt;DISCOVER_OBJECT_MEMORY_USAGE&lt;/a&gt;: Provides information about memory resources used by objects.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee320268.aspx"&gt;DISCOVER_PARTITION_DIMENSION_STAT&lt;/a&gt;: This schema rowset returns statistics on the dimension associated with a partition.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee320483.aspx"&gt;DISCOVER_PARTITION_STAT&lt;/a&gt;: This schema rowset returns statistics on aggregations in a particular partition.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee320809.aspx"&gt;DISCOVER_PERFORMANCE_COUNTERS&lt;/a&gt;: This schema rowset returns the value of one or more specified performance counters.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ms126045.aspx"&gt;DISCOVER_PROPERTIES&lt;/a&gt;: Returns a list of information and values about the standard and provider-specific properties that are supported by the Microsoft XML for Analysis (XMLA) provider for the specified data source.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ms126280.aspx"&gt;DISCOVER_SCHEMA_ROWSETS&lt;/a&gt;: Returns the names, restrictions, description, and other information for all enumeration values and any additional provider-specific enumeration values supported by the Microsoft XML for Analysis (XMLA) provider.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/bb934101.aspx"&gt;DISCOVER_SESSIONS&lt;/a&gt;: Provides resource usage and activity information about the currently opened sessions on the server.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee301342.aspx"&gt;DISCOVER_TRACE_COLUMNS&lt;/a&gt;: This schema rowset contains the DISCOVER_TRACE_COLUMNS schema rowset.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee301827.aspx"&gt;DISCOVER_TRACE_DEFINITION_PROVIDERINFO&lt;/a&gt;: This schema rowset returns basic information about the trace provider, such as its name and description.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee320442.aspx"&gt;DISCOVER_TRACE_EVENT_CATEGORIES&lt;/a&gt;: This schema rowset contains the DISCOVER_TRACE_EVENT_CATEGORIES schema rowset.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee301643.aspx"&gt;DISCOVER_TRACES&lt;/a&gt;: This schema rowset contains the DISCOVER_TRACES schema rowset.&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee301363.aspx"&gt;DISCOVER_TRANSACTIONS&lt;/a&gt;: This schema rowset returns the current set of pending transactions on the system.&lt;br /&gt;&lt;br /&gt;Some of these views have to be queried with the function SYSTEMRESTRICTSCHEMA to query restricted schema rowsets - you find some examples for the use of this function in Vidas Matelis' &lt;a href="http://www.ssas-info.com/VidasMatelisBlog/67_ssas-2008-rc0-new-function-systemrestrictschema-for-restricted-schema-rowsets-dmvs"&gt;Blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To answer the initial question - who is on my db? - you could use the (simple) query&lt;br /&gt;&lt;pre&gt;SELECT *&lt;br /&gt;  FROM $system.DISCOVER_SESSIONS&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Another option to get these information is to use the small GUI-application Activity Viewer (download from &lt;a href="http://asactivityviewer2008.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=15786#ReleaseFiles"&gt;codeplex&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-1519620917132521730?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/1519620917132521730/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2009/12/monitoring-current-ssas-acitivities.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/1519620917132521730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/1519620917132521730'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2009/12/monitoring-current-ssas-acitivities.html' title='Monitoring current SSAS acitivities'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-6085617554597121084</id><published>2009-12-01T01:28:00.000-08:00</published><updated>2009-12-01T01:29:40.765-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Editions'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>Editions</title><content type='html'>The msdn site &lt;a href="http://msdn.microsoft.com/en-us/library/cc645993.aspx"&gt;Features Supported by the Editions of SQL Server 2008&lt;/a&gt; shows the differences between the SQL Server editions. Regarding SSAS the Standard Edition (SE) misses the following features compared to the Enterprise Edition (EE):&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Data Warehouse Scale and Performance&lt;/b&gt;&lt;br /&gt;- Auto parallel partition processing&lt;br /&gt;- Partitioned cubes&lt;br /&gt;- Distributed partitioned cubes&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Multi-Dimensional Analytics&lt;/b&gt;&lt;br /&gt;- Financial aggregations&lt;br /&gt;- Custom rollups&lt;br /&gt;- Semi-additive measures&lt;br /&gt;- Writeback dimensions&lt;br /&gt;- Linked measures and dimensions&lt;br /&gt;- Binary and compressed XML transport&lt;br /&gt;- Account intelligence&lt;br /&gt;- Perspectives&lt;br /&gt;- Analysis Services shared, scalable databases&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Data Mining&lt;/b&gt; (in this category SE is quite weak)&lt;br /&gt;- Cross validation&lt;br /&gt;- Models on filtered subsets of mining structure data&lt;br /&gt;- Time series: custom blending between ARTXP and ARIMA models&lt;br /&gt;- Time series: prediction with new data&lt;br /&gt;- Unlimited concurrent data mining queries&lt;br /&gt;- Advanced configuration and tuning for algorithms&lt;br /&gt;- Algorithm plug-in API&lt;br /&gt;- Parallel model processing&lt;br /&gt;- Time series: cross-series prediction&lt;br /&gt;- Unlimited attributes for association rules&lt;br /&gt;- Sequence prediction&lt;br /&gt;- Multiple prediction targets for naïve Bayes, neural network, and logistic regression&lt;br /&gt;&lt;br /&gt;Of course you can build cubes without these features but they are very helpful in many situations. On the other side there's of course a difference in the licence fees... - here are some additional links to licence and pricing information:&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/pricing.aspx"&gt;SQL Server 2008 Pricing&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/licensing-faq.aspx"&gt;SQL Server 2008 Licensing FAQ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-6085617554597121084?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/6085617554597121084/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2009/12/editions.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/6085617554597121084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/6085617554597121084'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2009/12/editions.html' title='Editions'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-8135681510065688458</id><published>2009-11-30T05:02:00.000-08:00</published><updated>2010-02-19T10:26:28.787-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Processing'/><category scheme='http://www.blogger.com/atom/ns#' term='Collation'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><title type='text'>duplicate key error</title><content type='html'>Hilmar Buchta explains in his Blog &lt;a href="http://ms-olap.blogspot.com/2009/11/duplicate-attribute-key-has-been-found.html"&gt;A duplicate attribute key has been found when processing…&lt;/a&gt; some common reasons for &lt;i&gt;duplicate key&lt;/i&gt; errors in processing error messages. The most likely reasons are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;NULL values in the attribute key column.&lt;/li&gt;&lt;li&gt;data that violates the attribute relationships defined in the dimension.&lt;/li&gt;&lt;li&gt;A third reason is that there are separate key and name source fields for an attribute, so there is more than one name corresponding to a key.&lt;/li&gt;&lt;li&gt;A related issue results from collation effects: distinct string values from an oracle source are considered as duplicates by SSAS because they only differ in capitalization (upper/lower case), trimming or some strange characters (as the german "ß" that will be replaced by "ss" or "ä", "ü", "ö" etc.).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-8135681510065688458?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/8135681510065688458/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2009/11/duplicate-key-error.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/8135681510065688458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/8135681510065688458'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2009/11/duplicate-key-error.html' title='duplicate key error'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-7127948041177265460</id><published>2009-11-20T05:04:00.001-08:00</published><updated>2009-12-04T06:29:10.588-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MDX'/><category scheme='http://www.blogger.com/atom/ns#' term='2005'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>MDX Query Performance in SSAS</title><content type='html'>there are a few documents you should know if you want to optimize the performance of the MDX queries on your SSAS cubes:&lt;br /&gt;&lt;br /&gt;The document &lt;span style="font-weight:bold;"&gt;SQL Server 2008: Analysis Services Performance Guide&lt;/span&gt; &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=3be0488d-e7aa-4078-a050-ae39912d2e43&amp;displaylang=en"&gt;(download here)&lt;/a&gt; provides information on the tuning of server resources and shows strategies to enhance the performance of cube processing and query access.&lt;br /&gt;&lt;br /&gt;The paper &lt;span style="font-weight:bold;"&gt;Identifying and Resolving MDX Query Performance Bottlenecks in SQL Server 2005 Analysis Services&lt;/span&gt; &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=975C5BB2-8207-4B4E-BE7C-06AC86E24C13&amp;displaylang=en"&gt;(download here)&lt;/a&gt; discusses the troubleshooting tools integrated into Microsoft Windows and SQL Server and shows how to use these tools to identify and resolve MDX query performance bottlenecks with individual MDX queries. Most of the given advices are still true for SSAS 2008 (as far as I can see...)&lt;br /&gt;&lt;br /&gt;Some interesting papers and articles can be found at the web site of the &lt;a href="http://blogs.msdn.com/sqlcat/archive/tags/analysis+services/Performance+and+Scalability/default.aspx"&gt;Microsoft SQL Server Development Customer Advisory Team&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Unfortunatly there are many advices which were of interest in SSAS 2005 but are no longer relevant in SSAS 2008 - so you have to be very careful when adopting the strategies shown in various blogs and newsgroups in the Net.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-7127948041177265460?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/7127948041177265460/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2009/11/mdx-query-performance-in-ssas.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/7127948041177265460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/7127948041177265460'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2009/11/mdx-query-performance-in-ssas.html' title='MDX Query Performance in SSAS'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-8540016065895009184</id><published>2009-11-19T07:56:00.000-08:00</published><updated>2009-11-19T07:56:49.719-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MDX'/><category scheme='http://www.blogger.com/atom/ns#' term='2005'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='Measure'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>Centrally Managing Formatting Properties in MDX Scripts</title><content type='html'>This is a quite current goody already sketched by &lt;a href="http://sqlblog.com/blogs/marco_russo/archive/2007/07/28/red-color-for-negative-numbers-in-analysis-services-2005.aspx"&gt;Marc Russo&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;Formatting is indeed in the twilight zone between server/analytic logic and client display issues. Originally you would want your cube to be agnostic of all that representational stuff which may change with the eye of the beholder. &lt;br /&gt;&lt;br /&gt;On the other hand, it is unbearable to walk through the conditinal formatting result of ~100 affected measures * 30 affected reports once a formatting rule changes.&lt;br /&gt;&lt;br /&gt;A good compromise between the "this-is-client-stuff" and the "incorporate-it-in-each-and-every-measure' is using the power of MDX scripting. The scoping approach that Marc Russo describes (and from which I learned the invaluable [Measure].CurrentMember trick) will not work, as soon as&lt;br /&gt;you need to address targetted measures (such as "all currencies" or "all indexes") across calculated and real measures (an explicit measure set in a scope may only contain non-calculated measures).&lt;br /&gt;&lt;br /&gt;So here is how it works in these cases (and similar for FORE_COLOR, BACK_COLOR, etc):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;FORMAT_STRING({&lt;br /&gt; [Measures].[REAL_MEASURE_1]&lt;br /&gt; ,[Measures].[CALCULATED_MEASURE_2]&lt;br /&gt; ,...&lt;br /&gt; })=// YOUR MDX CALCULATION using [Measures].CurrentMember and returning a format string&lt;br /&gt; ;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-8540016065895009184?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/8540016065895009184/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2009/11/centrally-managing-formatting.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/8540016065895009184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/8540016065895009184'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2009/11/centrally-managing-formatting.html' title='Centrally Managing Formatting Properties in MDX Scripts'/><author><name>Doc Schorsch</name><uri>http://www.blogger.com/profile/07956181040487046784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_0yj5v1IOuP8/SwO0yBV7vzI/AAAAAAAAAJI/PM0uF_YWIWM/S220/cgj.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-3920793048982811953</id><published>2009-11-19T01:51:00.000-08:00</published><updated>2009-11-19T01:51:51.654-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='Scope'/><category scheme='http://www.blogger.com/atom/ns#' term='Attribute Relationship'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>When the Scoping gets tough ...</title><content type='html'>... the tough gets scoped.&lt;br /&gt;&lt;br /&gt;There is a hairy observation to make that I would usually classify under the catgory "bug".&lt;br /&gt;&lt;br /&gt;In arrogant ignorance of Microsofts issue tracking systems and even more, in absence of enough terminological background to even state a reasonable issue search query, we currently file it under "phenomenon with a workaround".&lt;br /&gt;&lt;br /&gt;Imagine that you have developed an elaborate date hierarchy with two "branching" hierarchies, one for calendar weeks and one for months, quarters, years andsoforth. Branching means that from the point of view of attribute relationships, there are two outgoing relation branches, one in the attributes of the week hierarchy and one into the attributes of the month hierarchy.&lt;br /&gt;&lt;br /&gt;From our experiments, calculations specified "purely" for the month scope will nevertheless also hit the week level of the parallel hierarchy just like if SSAS would rather parse the statement as "operate on (all) successor members of date".&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;SCOPE([DIM_DATE].[HIER_YQM].[LVL_MONTH].Members);&lt;br /&gt; // Do the usual nasty overrides and calculations&lt;br /&gt;END SCOPE;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;To get the behaviour right, we are now used to rather write such temporal scopes as&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;SCOPE([DIM_DATE].[HIER_YQM].[LVL_MONTH].Members,&lt;br /&gt;      [DIM_DATE].[HIER_WEEK].[LVL_WEEK].[All],&lt;br /&gt;      [DIM_DATE].[HIER_WEEK].[LVL_WEEK_YEAR].[All]);&lt;br /&gt; // Do the usual nasty overrides and calculations&lt;br /&gt;END SCOPE;&lt;br /&gt;&lt;/pre&gt; &lt;br /&gt;where it is interesting that leaving the second all restriction away would reinforce the overrides at the calender year level nevertheless.&lt;br /&gt;&lt;br /&gt;Still the behaviour (under the many strange behaviours of SSAS) leaves us puzzled. But I´m sure that there is a tough explanation for this in some other universe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-3920793048982811953?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/3920793048982811953/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2009/11/when-scoping-gets-tough.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/3920793048982811953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/3920793048982811953'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2009/11/when-scoping-gets-tough.html' title='When the Scoping gets tough ...'/><author><name>Doc Schorsch</name><uri>http://www.blogger.com/profile/07956181040487046784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_0yj5v1IOuP8/SwO0yBV7vzI/AAAAAAAAAJI/PM0uF_YWIWM/S220/cgj.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-7376910038093456157</id><published>2009-11-18T07:14:00.000-08:00</published><updated>2009-11-18T07:45:27.885-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Methodology'/><title type='text'>BI Methodology</title><content type='html'>Marco Russo and Alberto Ferrari have written an interesting paper presenting their Methodology for Microsoft BI (September 2008) which can be downloaded from &lt;a href="http://sqlbi.com/Default.aspx?tabid=88"&gt;here&lt;/a&gt;. In the paper they discuss their approach in the context of the methodologies of Bill Inmon and Ralf Kimball and draw a picture of the interaction of OLTP database, Data Warehouse and OLAP Cube.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-7376910038093456157?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/7376910038093456157/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2009/11/bi-methodology.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/7376910038093456157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/7376910038093456157'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2009/11/bi-methodology.html' title='BI Methodology'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-1045105019279118456</id><published>2009-11-18T01:45:00.000-08:00</published><updated>2009-11-18T07:54:24.294-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MDX'/><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='2005'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>MDX Studio</title><content type='html'>As &lt;a href="http://www.mosha.com/msolap/mdxstudio.htm"&gt;Mosha Pasumansky&lt;/a&gt; states MDX Studio is a &lt;br /&gt;&lt;blockquote&gt;tool which helps users of Microsoft Analysis Services to analyze complex MDX expressions, monitor performance characteristics of MDX queries and get insight into how MDX interacts with other UDM features such as attribute relationships. MDX Studio provides unique visualization representation of MDX expression and allows the user to interact with different stages of MDX execution.&lt;/blockquote&gt; It's indeed an extremly useful tool: it shows valuable information that is not included in profiler traces such as the number of cache hits, calculated cells, memory usage etc. Another important feature is the ability to show a hierarchical tree of execution steps (which Mosha describes &lt;a href="http://sqlblog.com/blogs/mosha/archive/2008/09/21/hierarchical-trace-profiling-with-mdx-studio.aspx"&gt;here&lt;/a&gt;). Very helpful is also the ANALYZE option that (- it's not a surprise -) analyzes a given query or mdx script, shows possible issues, and provides links to wider explanations (mainly from &lt;a href="http://sqlblog.com/blogs/mosha/archive/2008/07/29/product-volatility-optimizing-mdx-with-mdx-studio.aspx"&gt;Moshas Blog&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;The current version of the tool (a work in progress) can be downloaded from &lt;a href="http://cid-74f04d1ea28ece4e.skydrive.live.com/browse.aspx/MDXStudio"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-1045105019279118456?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/1045105019279118456/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2009/11/mdx-studio.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/1045105019279118456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/1045105019279118456'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2009/11/mdx-studio.html' title='MDX Studio'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-3289573649564638028</id><published>2009-11-17T23:52:00.000-08:00</published><updated>2009-11-18T01:24:02.147-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MDX'/><category scheme='http://www.blogger.com/atom/ns#' term='2005'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>EXISTING keyword</title><content type='html'>As the &lt;a href="http://msdn.microsoft.com/en-us/library/ms145541.aspx"&gt;documentation&lt;/a&gt; states the EXISTING keyword forces a specified set to be evaluated within the current context instead of being evaluated within the context of the cube that contains the members of the set. &lt;a href="http://sqlblog.com/blogs/mosha/archive/2005/11/18/writing-multiselect-friendly-mdx-calculations.aspx"&gt;Mosha Pasumasky&lt;/a&gt; declares "that Exists function and EXISTING operator are generalization of hierarchy related functions such as Descendants. Indeed, the process of building an hierarchy is nothing more then applying Exists between attributes which build individual levels of that hierarchy." So EXISTING shows only elements that are actually relevant in the given context.&lt;br /&gt;&lt;br /&gt;If we are looking for the number of cities in each country in the Adventure Works Cube and use the following query:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;WITH&lt;br /&gt;  MEMBER [CITY_COUNT] AS COUNT([GEOGRAPHY].[CITY].[CITY].MEMBERS)&lt;br /&gt;SELECT {[CITY_COUNT]} ON 0&lt;br /&gt;       ,[GEOGRAPHY].[GEOGRAPHY].[COUNTRY].MEMBERS ON 1&lt;br /&gt;  FROM [ADVENTURE WORKS]  &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;we do not get the intended result:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;                CITY_COUNT&lt;br /&gt;Australia              587&lt;br /&gt;Canada                 587&lt;br /&gt;France                 587&lt;br /&gt;Germany                587&lt;br /&gt;United Kingdom         587&lt;br /&gt;United States          587&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;That's the total count of cities for every country - apparently the evaluation took place in the context of the cube and not in the current context. With EXISTING we get what we want:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;WITH&lt;br /&gt;  MEMBER [CITY_COUNT] AS COUNT(EXISTING([GEOGRAPHY].[CITY].[CITY].MEMBERS))&lt;br /&gt;SELECT {[CITY_COUNT]} ON 0&lt;br /&gt;       ,[GEOGRAPHY].[GEOGRAPHY].[COUNTRY].MEMBERS ON 1&lt;br /&gt;  FROM [ADVENTURE WORKS]  &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;provides the result:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;                CITY_COUNT&lt;br /&gt;Australia               40&lt;br /&gt;Canada                  50&lt;br /&gt;France                  36&lt;br /&gt;Germany                 51&lt;br /&gt;United Kingdom          35&lt;br /&gt;United States          375&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;As already mentioned &lt;a href="http://ssas-musings.blogspot.com/2009/11/multiselect.html"&gt;here&lt;/a&gt; EXISTING can also be used to solve some problems with multiselects.&lt;br /&gt;&lt;br /&gt;In his Blog &lt;a href="http://cwebbbi.spaces.live.com/Blog/cns!7B84B0F2C239489A!4457.entry"&gt;Chris Webb&lt;/a&gt; wrote about the performance of EXISTING in combination with NONEMPTY and stated "if you are using NonEmpty and Existing together, do the NonEmpty first and then the Existing" - but admitted that he has no sound explanation for the observed effect.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-3289573649564638028?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/3289573649564638028/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2009/11/existing-keyword.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/3289573649564638028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/3289573649564638028'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2009/11/existing-keyword.html' title='EXISTING keyword'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-8650741848197083281</id><published>2009-11-17T07:43:00.000-08:00</published><updated>2009-11-18T01:25:19.892-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MDX'/><category scheme='http://www.blogger.com/atom/ns#' term='2005'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>Multiselect</title><content type='html'>Multiselects are a source of constant discomfort in SSAS 2005 ff. When there are multiple members in the slice of a MDX query the currentmember function no longer defines a single element and that's the reason for many problems with calculated members. Some of these problems can be solved by the use of special syntax elements (most notably the EXISTING function) but client tools like Excel 2007 generate their own queries so the developer can not control the design (and Excel makes things even worse by using subselects which bring even more annoyance than simple where-clause multiselects).&lt;br /&gt;&lt;br /&gt;At least there are some solutions to avoid the most unpleasent consequences - and most of these solutions come from Mosha Pasumansky:&lt;br /&gt;&lt;br /&gt;In his blog articles &lt;a href="http://sqlblog.com/blogs/mosha/archive/2005/11/18/writing-multiselect-friendly-mdx-calculations.aspx"&gt;Writing multiselect friendly MDX calculations&lt;/a&gt; and &lt;a href="http://sqlblog.com/blogs/mosha/archive/2007/01/13/multiselect-friendly-mdx-for-calculations-looking-at-current-coordinate.aspx"&gt;Multiselect friendly MDX for calculations looking at current coordinate&lt;/a&gt; Mosha Pasumansky shows a way to avoid the multiselect problems by using the function EXISTING and sum up the results. Another solution (using a stored procedure) is shown in &lt;a href="http://sqlblog.com/blogs/mosha/archive/2007/09/26/how-to-detect-subselect-inside-mdx-calculations-aka-multiselect-in-excel-2007.aspx"&gt;How to detect subselect inside MDX calculations (aka Multiselect in Excel 2007)&lt;/a&gt; - but Mosha warns "that the solution is neither elegant nor efficient, and probably is mostly of the theoretical interest." In his article &lt;a href="http://sqlblog.com/blogs/mosha/archive/2007/05/23/i-need-your-help-or-how-to-make-multiselect-work-seamlessly-in-mdx.aspx"&gt;I need your help or how to make multiselect work seamlessly in MDX&lt;/a&gt; Mosha suggests a solution for all multiselect problems - but it seems he kept that secret...&lt;br /&gt;&lt;br /&gt;The blog &lt;a href="http://www.ixto.de/blog/sql-server-2005/mdx-2005/korrekte-mdx-berechnungen-mit-den-analysis-services-trotz-multiselect/"&gt;Korrekte MDX-Berechnungen mit den Analysis Services trotz Multiselect&lt;/a&gt; makes the suggestion to define "empty" measures (initially filled with NULL values) and then to overwrite them with scoped assignments on every relevant level - so correct values can be aggregated for higher levels.&lt;br /&gt;&lt;br /&gt;All these solutions have an impact on performance, so Mosha writes: "Therefore, it is certainly a choice of cube designer - keep the simpler and more performance friendly expression, but accept that multiselect on the Time dimension will cause errors, or allow more functionality and enable multiselects on Time, but be prepared for slower performance in all cases."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-8650741848197083281?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/8650741848197083281/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2009/11/multiselect.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/8650741848197083281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/8650741848197083281'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2009/11/multiselect.html' title='Multiselect'/><author><name>Martin Preiss</name><uri>http://www.blogger.com/profile/06388592214305009761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-LEox1RIpC6A/TiB1cr8YlkI/AAAAAAAAAWE/8Jl0Hrspfyk/s220/MP3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3770061010532212896.post-781086276932421715</id><published>2009-11-17T03:54:00.000-08:00</published><updated>2009-11-18T04:13:03.428-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MDX'/><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='Scope'/><category scheme='http://www.blogger.com/atom/ns#' term='Attribute Relationship'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>Nested Scopes and Attribute Relationships</title><content type='html'>Nested Scopes are a convenient syntax to structure subcube/crossjoin calculations in your MDX scripts. Most often,&amp;nbsp;you would want to use more than one attribute from the same dimension in such a context and, in addition, navigate the associated hierarchies in the scoped calculations:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;SCOPE({[DIMENSION].[HIERARCHY_1].[LEVEL_OR_ATTRIBUTE_1].&amp;[KEY_1]},...);&lt;br /&gt;   SCOPE({[DIMENSION].[HIERARCHY_2].[LEVEL_OR_ATTRIBUTE_2].&amp;[KEY_2]},...);&lt;br /&gt;        // Your calculation involving [DIMENSION].[HIERARCHY_1].CurrentMember&lt;br /&gt;        // will result in navigating [DIMENSION].[ATTRIBUTE_1].[All]!&lt;br /&gt;   END SCOPE;&lt;br /&gt;END SCOPE;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;However, with nested scopes it seems that similar overriding rules than with concatenating ordinary tuples apply: Suppose the attribute ATTRIBUTE_2 associated with the LEVEL_OR_ATTRIBUTE_2 level is related to the attribute ATTRIBUTE_1 (i.e., KEY_2 is unique for KEY_1, in contrast to the related from relationship where KEY_1 is unique for KEY_2), the example calculation context above would result to the All member of ATTRIBUTE_1. Duh. &lt;br /&gt;&lt;br /&gt;Writing the nesting the other way round (which would seem semantically equivalent from only superficially reading the specs, as we usually do) the delivers the expected result&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;SCOPE({[DIMENSION].[HIERARCHY_2].[LEVEL_OR_ATTRIBUTE_2].&amp;[KEY_2]},...);&lt;br /&gt;    SCOPE({[DIMENSION].[HIERARCHY_1].[LEVEL_OR_ATTRIBUTE_1].&amp;[KEY_1]},...);&lt;br /&gt;        // Your calculation involving [DIMENSION].[HIERARCHY_1].CurrentMember&lt;br /&gt;        // will finally navigate [DIMENSION].[ATTRIBUTE_1].&amp;[KEY_1]!&lt;br /&gt;    END SCOPE;&lt;br /&gt;END SCOPE;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3770061010532212896-781086276932421715?l=ssas-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssas-musings.blogspot.com/feeds/781086276932421715/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssas-musings.blogspot.com/2009/11/nested-scopes-and-attribute.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/781086276932421715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3770061010532212896/posts/default/781086276932421715'/><link rel='alternate' type='text/html' href='http://ssas-musings.blogspot.com/2009/11/nested-scopes-and-attribute.html' title='Nested Scopes and Attribute Relationships'/><author><name>Doc Schorsch</name><uri>http://www.blogger.com/profile/07956181040487046784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_0yj5v1IOuP8/SwO0yBV7vzI/AAAAAAAAAJI/PM0uF_YWIWM/S220/cgj.jpg'/></author><thr:total>0</thr:total></entry></feed>
