<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;C0ANRXw7fSp7ImA9WhVTEU0.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184</id><updated>2012-02-24T11:43:14.205-05:00</updated><category term="Personal" /><category term="Book / Tool / Software Reviews" /><category term="Denali" /><category term="PowerPivot" /><category term="Interview Questions" /><category term="Power View" /><category term="Activities / Whitepapers / Events" /><category term="MDX" /><category term="My Sessions" /><category term="SSAS" /><category term="SQL Server" /><category term="SSRS" /><title>Some Random Thoughts</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://road-blogs.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>76</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/Jason" /><feedburner:info uri="blogspot/jason" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/3.0/" /><feedburner:emailServiceId>blogspot/Jason</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;DUcHQ3c5fCp7ImA9WhRaGE8.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-5185524140749301956</id><published>2012-02-21T07:23:00.001-05:00</published><updated>2012-02-21T07:23:52.924-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-21T07:23:52.924-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Book / Tool / Software Reviews" /><category scheme="http://www.blogger.com/atom/ns#" term="SSRS" /><title>Review: OfficeWriter v8</title><content type="html">&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;As a BI consultant specializing in SSRS, I have had lots of frustrations and hard times because of Excel. Every now and then, I have some or other business user coming up to me and asking for some feature which is there in Excel but not in SSRS. If you have been following my blog, you would already know that I am more of a work-around man, trying to find some alternative for features which are not supported out of the box. But when it comes to Excel related features, most of my attempts end in disappointment. So naturally, my ears perked up when I was asked to review a plugin which claimed to build SSRS reports using excel and word.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-dd8CuNzEpI8/T0GXxk1cdxI/AAAAAAAAC0s/kVmmSnWYMU8/s1600-h/reporting-services-diagram%25255B2%25255D.gif"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="reporting-services-diagram" border="0" alt="reporting-services-diagram" src="http://lh5.ggpht.com/-UfV3FG1OoEs/T0GXyQGuBvI/AAAAAAAAC00/KVKT38dzSAo/reporting-services-diagram_thumb.gif?imgmax=800" width="504" height="172"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;So I downloaded OfficeWriter v8 and spent close to a week playing around with it. Even though I encountered some minor quirks (v8.0 doesn’t run on the 64 bit version of Office 2010 yet – luckily I had a home pc with a 32 bit version of Office; got some minor issues when editing and deploying an existing SSRS report with shared data sources – got around it by setting the data sources once again from the report manager), overall I have been very pleased and of course, excited at the different prospects that this plugin opens up. You can quickly have a look at one of the reports created with OfficeWriter by clicking on the image below.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a title="Open Sample Report" href="https://skydrive.live.com/redir.aspx?cid=d7a8c1dab8e16e1d&amp;amp;resid=D7A8C1DAB8E16E1D!232&amp;amp;parid=undefined" target="_blank"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="OW Sample Report" border="0" alt="OW Sample Report" src="http://lh3.ggpht.com/-c3d7jQ5lk6c/T0OM2NYfcMI/AAAAAAAAC8U/xepjXDR2DUI/OW%252520Sample%252520Report%25255B5%25255D.jpg?imgmax=800" width="504" height="275"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Let me note down quickly what I thought of it:-&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;strong&gt;&lt;u&gt;Advantages&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;1) &lt;strong&gt;XLSX support&lt;/strong&gt; – Right now, xlsx support is available only for SQL 2012, but with OfficeWriter, you can take advantage of all the features including overcoming the 65,326 row limit (listed here) in your current version of SSRS.&lt;br&gt;2)&lt;strong&gt; Full excel features support&lt;/strong&gt; including charts and pivot tables – Since excel is fully supported, you can make use of all the charts, macros and other features which are there in Excel but not in SSRS.&lt;br&gt;3) Ability to have &lt;strong&gt;2 views for a report&lt;/strong&gt; -&amp;nbsp; If we are editing a report with OfficeWriter from an existing report made through BIDS, then we will have 2 views for it – one which is displayed in report manager and other would be when exported to Excel. It can be helpful in scenarios where you view a fixed report and want to drill down and play around with the data further, in which case you can export to excel and then use a pivot table.&lt;br&gt;4) Charts are &lt;strong&gt;not rendered as images&lt;/strong&gt; when exported to excel. The export to Excel feature in SSRS will return images rendered as a static image. However, with OfficeWriter, you get the chart exactly as you designed in Excel with all the the interactivity and even tooltips.&lt;br&gt;5) Can enable &lt;strong&gt;subscriptions, security&lt;/strong&gt; – The tight integration with SSRS ensures that we can use subscriptions and other security features available in SSRS for the OfficeWriter reports.&lt;br&gt;6) &lt;strong&gt;Workbook Protection&lt;/strong&gt; – You can password protect your workbook or lock your cells for edit, which is an often requested feature by SSRS power users for subscription.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;strong&gt;&lt;u&gt;Limitations &lt;/u&gt;&lt;/strong&gt;&lt;br&gt;1) Can’t build MDX queries in OfficeWriter, will have to make in BIDS and then use them.&lt;br&gt;2) Will not work on the 64 bit version of Office, as of now.&lt;br&gt;3) This is not a limitation actually and is by design, but I couldn't help wishing if only the charts and data designed through OfficeWriter in excel would display properly in SSRS also.&lt;/font&gt; &lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Even though OfficeWriter has more features including integration with Word and SharePoint, I have reviewed &lt;strong&gt;&lt;u&gt;only&lt;/u&gt;&lt;/strong&gt; the integration with SSRS for Excel part. For folks who are further interested in this, I will show you how to create a sample report using OfficeWriter and post some useful links below it.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;strong&gt;&lt;u&gt;Creating / Editing&amp;nbsp; a sample report&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;For the demo purpose, I am using OfficeWriter v8.0, the 32 bit version of Excel 2010 and SQL Server 2008 R2. Once the installation of OfficeWriter is done, you can find a new toolbar like shown below in the Add-Ins tab of Excel.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/-Enj-2TIJpdE/T0GXy54nOSI/AAAAAAAAC08/x1zQ3wdAI84/s1600-h/1%252520OfficeWriter%252520Toolbar%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="1 OfficeWriter Toolbar" border="0" alt="1 OfficeWriter Toolbar" src="http://lh5.ggpht.com/-V1LytetEXg4/T0GXzl9pa4I/AAAAAAAAC1E/4hWLOP-5o20/1%252520OfficeWriter%252520Toolbar_thumb.jpg?imgmax=800" width="504" height="78"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Now, there are two ways in which you can proceed from here - &lt;br&gt;I) Create a new report in Excel with OfficeWriter&lt;br&gt;II) Edit an existing report created with BIDS (Business Intelligence Development Studio) and deployed to the server&lt;/font&gt; &lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The steps to create a new report is shown below:-&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;1) Click on Add Query in the OfficeWriter toolbar and enter a name for your query.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/--xGScQ2hmIA/T0GXzyw9rHI/AAAAAAAAC1M/DBN9i4eX2Is/s1600-h/2%252520Add%252520Query%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="2 Add Query" border="0" alt="2 Add Query" src="http://lh4.ggpht.com/-WdYHa5mw6dE/T0GX0gW45mI/AAAAAAAAC1U/D2grY5E5qag/2%252520Add%252520Query_thumb.jpg?imgmax=800" width="424" height="265"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;2) Add a new Database connection if there is none existing, enter the server information and add the required tables for the SQL query. Once that is done, select the required columns. In this example, I have connected to the AdventureWorks database and used the English Product Name in DimProduct table &amp;amp; Order quantity measure in the FactInternetSales.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-MrjZqTRVVXM/T0GX1BZplfI/AAAAAAAAC1c/5AcuXyh7IvE/s1600-h/3%252520Add%252520DB%252520and%252520query%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="3 Add DB and query" border="0" alt="3 Add DB and query" src="http://lh5.ggpht.com/-4QvPII6SF0A/T0GX1XXqIcI/AAAAAAAAC1k/mpPXVCLSuVo/3%252520Add%252520DB%252520and%252520query_thumb%25255B2%25255D.jpg?imgmax=800" width="504" height="167"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;3) Even though you can group using the OfficeWriter features, I edited the SQL query directly to group by the English Product Name, as shown below and click on OK. Close the query editor after that.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/-tCZtZHpgjPo/T0GX19g_pCI/AAAAAAAAC1s/19wgGsEUVtQ/s1600-h/4%252520Modifying%252520SQL%252520Query%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="4 Modifying SQL Query" border="0" alt="4 Modifying SQL Query" src="http://lh3.ggpht.com/-XkxdzLxuAdc/T0GX2KhxTeI/AAAAAAAAC10/7RDZMps27c0/4%252520Modifying%252520SQL%252520Query_thumb.jpg?imgmax=800" width="402" height="265"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;4) Click on Insert Field and select the English Product Name in cell A1 and Order Quantity in B1.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-h6An1sRr4EM/T0GX20puvDI/AAAAAAAAC18/DdlO1uP297k/s1600-h/5%252520Insert%252520fields%252520to%252520excel%252520sheet%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="5 Insert fields to excel sheet" border="0" alt="5 Insert fields to excel sheet" src="http://lh6.ggpht.com/-Mg5W-lpjXf4/T0GX3dQvYTI/AAAAAAAAC2E/3k8_EMAjzd8/5%252520Insert%252520fields%252520to%252520excel%252520sheet_thumb.jpg?imgmax=800" width="504" height="181"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;5) Click on View. This will prompt you to enter the name of your report and save it in your local drive. Click on Save and a new dialog box opens which will prompt you to enter the name of your report server. Click on OK to publish your report to the report server.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/-NcPh95D-MGw/T0GX4L9cDkI/AAAAAAAAC2M/yrp75JGzLdA/s1600-h/6%252520Save%252520the%252520report%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="6 Save the report" border="0" alt="6 Save the report" src="http://lh5.ggpht.com/-B4jwa19JxOo/T0GX45NoxMI/AAAAAAAAC2U/lYuAZehF_Bc/6%252520Save%252520the%252520report_thumb%25255B1%25255D.jpg?imgmax=800" width="504" height="293"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;6) Once that is done, the report preview would be shown in Excel. You can click on Close Report View to go back to the designer.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-Xv1LpWy2_nk/T0GX5jSfiiI/AAAAAAAAC2c/QtdMPhR4iQo/s1600-h/7%252520Preview%252520report%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="7 Preview report" border="0" alt="7 Preview report" src="http://lh6.ggpht.com/-rzA9uPcMQqE/T0GX6DaIJLI/AAAAAAAAC2k/diO_YyjYm0g/7%252520Preview%252520report_thumb%25255B1%25255D.jpg?imgmax=800" width="504" height="278"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;7) You can also preview the report from the report manager, which will display a message that the report was made in OfficeWriter and would display correctly only when exported to Excel with OfficeWriter.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-omVh_7jrmb0/T0GX62iJhTI/AAAAAAAAC2w/OcVHhKoNY0Q/s1600-h/8%252520Preview%252520report%252520in%252520IE%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="8 Preview report in IE" border="0" alt="8 Preview report in IE" src="http://lh6.ggpht.com/-k8u68XEdU2g/T0GX7WELo4I/AAAAAAAAC24/hvFwlPPz9m0/8%252520Preview%252520report%252520in%252520IE_thumb%25255B1%25255D.jpg?imgmax=800" width="504" height="275"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Editing an existing report is also simple but you would not be able to edit the queries made through BIDS. Follow the steps below to edit an existing report.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;1) Click on Open Report and then click on Retrieve as shown in the image below.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/-GScqQCW0Ruc/T0GX9HLkQHI/AAAAAAAAC3A/ZQluWhDmLQg/s1600-h/9%252520Open%252520existing%252520report%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="9 Open existing report" border="0" alt="9 Open existing report" src="http://lh5.ggpht.com/-ruvT0vrrI-k/T0GX94kslvI/AAAAAAAAC3Q/UoKlTwYd9Es/9%252520Open%252520existing%252520report_thumb%25255B1%25255D.jpg?imgmax=800" width="404" height="456"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;2) Enter the report server url and click on Refresh. The list of existing reports would be displayed below and you can select from them.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-2ourGaSXF2o/T0GX_Bi8vyI/AAAAAAAAC3c/wjQEIU0NKiQ/s1600-h/10%252520Select%252520existing%252520report%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px; padding-top: 0px" title="10 Select existing report" border="0" alt="10 Select existing report" src="http://lh4.ggpht.com/-QBrILhOvu3Y/T0GX_Q9tF1I/AAAAAAAAC3o/UZDZYZYCpOc/10%252520Select%252520existing%252520report_thumb%25255B1%25255D.jpg?imgmax=800" width="404" height="394"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;3) Insert the fields after selecting the datasets (notice that Add Query and Edit Query is disabled). You can also include charts as shown below.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-MA2mfj4ywbQ/T0GYAXOEmJI/AAAAAAAAC30/9v7y8Xttirg/s1600-h/11%252520Insert%252520fields%252520and%252520chart%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="11 Insert fields and chart" border="0" alt="11 Insert fields and chart" src="http://lh3.ggpht.com/-n_qmZ2nHVj8/T0GYBX4gKdI/AAAAAAAAC38/ezRg6T9qJj8/11%252520Insert%252520fields%252520and%252520chart_thumb.jpg?imgmax=800" width="504" height="259"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;4) Click on View to save and publish your reports. You can then preview the report in excel.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-ni0_3ql0hiM/T0GYB6OEt9I/AAAAAAAAC4M/OWNoCH3vEJg/s1600-h/12%252520Report%252520Preview%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="12 Report Preview" border="0" alt="12 Report Preview" src="http://lh6.ggpht.com/-Y0Us3OjZslM/T0GYCf07hzI/AAAAAAAAC4Y/fSVGFJoUnm8/12%252520Report%252520Preview_thumb.jpg?imgmax=800" width="477" height="265"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;br&gt;&lt;font color="#000000" size="2"&gt;&lt;strong&gt;&lt;u&gt;Useful Links&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;1) &lt;a href="http://www.officewriter.com/" target="_blank"&gt;OfficeWriter Home Page&lt;/a&gt;&lt;/font&gt;&lt;br&gt;&lt;font color="#000000" size="2"&gt;2) &lt;a href="http://wiki.softartisans.com/display/Docs/OfficeWriter+Docs" target="_blank"&gt;OfficeWriter tutorials and Documentation&lt;/a&gt;&lt;/font&gt;&lt;br&gt;&lt;font color="#000000" size="2"&gt;3) &lt;a href="http://wiki.softartisans.com/display/RS8/FAQ" target="_blank"&gt;OfficeWriter FAQ&lt;/a&gt;&lt;/font&gt;&lt;br&gt;&lt;font color="#000000" size="2"&gt;4) &lt;a href="http://wiki.softartisans.com/display/RS8/System+Requirements" target="_blank"&gt;OfficeWriter System Requirements&lt;/a&gt;&lt;/font&gt;&lt;br&gt;&lt;font color="#000000" size="2"&gt;5) &lt;a href="http://www.officewriter.com/officewriter-free-evaluation.aspx" target="_blank"&gt;OfficeWriter Download Evaluation version&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;u&gt;P.S.&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;This is a paid review. However, I have tried to maintain a totally neutral review, and if there is any point that you disagree with me, I would be pleased to hear about in the comments section.&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-5185524140749301956?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=KJJwz5Czkhc:f8nM_4c66JM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=KJJwz5Czkhc:f8nM_4c66JM:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=KJJwz5Czkhc:f8nM_4c66JM:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/KJJwz5Czkhc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/5185524140749301956/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2012/02/review-officewriter-v8.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/5185524140749301956?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/5185524140749301956?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/KJJwz5Czkhc/review-officewriter-v8.html" title="Review: OfficeWriter v8" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-UfV3FG1OoEs/T0GXyQGuBvI/AAAAAAAAC00/KVKT38dzSAo/s72-c/reporting-services-diagram_thumb.gif?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2012/02/review-officewriter-v8.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUDRHozfCp7ImA9WhRbEEk.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-284773284660689685</id><published>2012-01-31T15:02:00.001-05:00</published><updated>2012-01-31T15:04:35.484-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-31T15:04:35.484-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SSAS" /><title>Set the Slice on your SSAS Cube Partitions now!</title><content type="html">&lt;p&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;I am pretty sure that most of you would have heard or read about this at least once in your SSAS career, but how many of you actually do set slices for your partitions? Well, I am also guilty of the charge and seldom did&lt;/font&gt; set slices till a recent issue. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-ghljul88NYc/TyhI1WPIHtI/AAAAAAAACys/g4BldGibAo8/s1600-h/1-Setting-slice-in-SSAS-cube-partiti%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="1 Setting slice in SSAS cube partitions" border="0" alt="1 Setting slice in SSAS cube partitions" src="http://lh3.ggpht.com/-RsasYhEdjzQ/TyhI1te4GMI/AAAAAAAACy0/B11Phmf6ShQ/1-Setting-slice-in-SSAS-cube-partiti%25255B1%25255D.png?imgmax=800" width="244" height="166"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#008040"&gt;Situation : Duh, that’s strange!&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;It’s a sunny day in Charlotte and I was just playing around with SQL Server Profiler for learning some performance tuning stuff. I executed this simple MDX query on the sample Adventure Works DB for some purpose which is beyond the scope of this post - &lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#9b00d3" size="1"&gt;&lt;strong&gt;select {[Measures].[Internet Sales Amount]} on 0,&lt;br&gt;{[Ship Date].[Calendar].[Month].&amp;amp;[2008]&amp;amp;[4]} on 1&lt;br&gt;from [Adventure Works]&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Now while I was going through the Profiler trace, I noticed something strange – three partitions (2005, 2006 and 2008) were being read while I expected just one partition (for 2008) to be read as my query just had April 2008 on the rows. &lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;a href="http://lh4.ggpht.com/-5Fv1l0dymdo/TyhI11_sWVI/AAAAAAAACy8/59ovzL6SSHs/s1600-h/2%252520Multiple%252520partitions%252520being%252520read%252520in%252520Profiler%252520trace%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="2 Multiple partitions being read in Profiler trace" border="0" alt="2 Multiple partitions being read in Profiler trace" src="http://lh6.ggpht.com/-XBByOm3DLVY/TyhI2KuxmfI/AAAAAAAACzE/98ZMY2wweTk/2%252520Multiple%252520partitions%252520being%252520read%252520in%252520Profiler%252520trace_thumb%25255B1%25255D.png?imgmax=800" width="504" height="152"&gt;&lt;/a&gt;&lt;br&gt;Now, for people who are not familiar with Adventure Works cube, there are four partitions for the Internet Sales measure group, one for each year from 2005 to 2008 as shown below - &lt;/p&gt;&lt;/font&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-jayQD8QYq_c/TyhI2UBm1GI/AAAAAAAACzM/FTfeEtgeLfA/s1600-h/3%2525204%252520Partitions%252520in%252520Internet%252520Sales%252520Measure%252520Group%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="4 Partitions in Internet Sales Measure Group" border="0" alt="4 Partitions in Internet Sales Measure Group" src="http://lh3.ggpht.com/-GctZk5w8kYY/TyhI2nF45WI/AAAAAAAACzU/mkSlBkhjz9w/3%2525204%252520Partitions%252520in%252520Internet%252520Sales%252520Measure%252520Group_thumb%25255B1%25255D.jpg?imgmax=800" width="504" height="144"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;I decided to take a detour from my actual purpose to investigate this issue.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#008040"&gt;Debugging : Need to dig up that grave!&lt;br&gt;&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;I was aware that SSAS partitions generate automatic data slicers for each partition and these information are present in the &lt;strong&gt;info.*.xml&lt;/strong&gt; file of the partition&lt;font color="#000000"&gt; data file (you can find them usually at C:\Program Files\Microsoft SQL Server\MSAS10_50.MSSQLSERVER\OLAP\Data folder followed by the cube, measure group and partition name if you haven’t changed the default settings. Note that I am using SQL Server 2008 R2). I decided to have a look at these three partition data files.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/-y7rdhx5Xch4/TyhI28vMvZI/AAAAAAAACzc/qHLXsdYrTi8/s1600-h/4%252520Partition%252520autimatic%252520data%252520slices%25255B5%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="4 Partition autimatic data slices" border="0" alt="4 Partition autimatic data slices" src="http://lh6.ggpht.com/-FeLI60m0XWM/TyhI3AGdtQI/AAAAAAAACzk/-jmNCplHAKk/4%252520Partition%252520autimatic%252520data%252520slices_thumb%25255B3%25255D.jpg?imgmax=800" width="404" height="404"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font size="2"&gt;As seen above, there was clearly a difference between the partitions of 2005 / 2006 and 2008 (which are having the names Internet_Sales_2001.0.prt / Internet_Sales_2002.0.prt and Internet_Sales_2004.0.prt. These names are the partition IDs and can be seen in the ID property of the partitions)&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-UfGPjNZKHn0/TyhI3iMUuPI/AAAAAAAACzs/7fbXpQAa3L8/s1600-h/5%252520Partition%252520ID%252520property%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="5 Partition ID property" border="0" alt="5 Partition ID property" src="http://lh4.ggpht.com/-sEDZY5xCW_0/TyhI31TcjlI/AAAAAAAACz0/9WSwVRG0czU/5%252520Partition%252520ID%252520property_thumb.jpg?imgmax=800" width="231" height="244"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;It seemed like the auto-slices were not getting created for the 2005 and 2006 partition while it was being done for the 2008 partition. This was further confirmed on opening and inspecting the info.*.xml file with notepad.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#008040"&gt;Knee-jerk Solution : Or is it?&lt;br&gt;&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;font color="#000000"&gt;I went into research mode on Google and soon came up with a&amp;nbsp; property in the &lt;strong&gt;msmdsrv.ini&lt;/strong&gt; file which limits the creation of auto-slicers based on the number of rows in the partition – the &lt;strong&gt;IndexBuildThreshold&lt;/strong&gt; property.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-xT8JjarRBBk/TyhI4LaIhFI/AAAAAAAACz8/UJRjk1THavQ/s1600-h/6%252520Modifying%252520the%252520msmdsrv.ini%252520file%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="6 Modifying the msmdsrv.ini file" border="0" alt="6 Modifying the msmdsrv.ini file" src="http://lh6.ggpht.com/--sX4noxpE8U/TyhI4obvFWI/AAAAAAAAC0E/8Abjcyw0ysk/6%252520Modifying%252520the%252520msmdsrv.ini%252520file_thumb%25255B1%25255D.jpg?imgmax=800" width="504" height="133"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;By default, the value is 4096 rows and both the partitions for 2005 and 2006 had less than 4000 rows. This explained why the auto-slicers were not getting created and I modified it to 1000. Now on reprocessing the measure group, I was able to see that the auto-slicers were generated in the partition data files and only the correct partition was being read in the profiler trace.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#008040"&gt;Actual Solution : The real deal!&lt;br&gt;&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;font color="#000000"&gt;I decided to gloat over my findings to my friend and colleague, Javier Guillen (&lt;a title="Javier Guillen's blog" href="http://javierguillen.wordpress.com/"&gt;blog&lt;/a&gt; | &lt;a href="https://twitter.com/#!/javiguillen"&gt;twitter&lt;/a&gt;) who was sitting in the next room. When I described the problem statement to him, the very first question he asked me was whether I had set the partition slices, and I was like – sheesh, I missed on that cardinal rule, as usual. I was under the impression that as long as your partition is for a single data member (as in this case – a single year), it should work. But later I found out that partitions for which autoslices are not generated will be scanned anyway, unless the partition slices are explicitly defined. I went back and set the slices for each partition correctly to their respective years and also reverted the IndexBuildThreshold property to the original value of 4096.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;a href="http://lh3.ggpht.com/-hU8VR-4J40M/TyhI43tPNgI/AAAAAAAAC0M/3jX_2rzXBPc/s1600-h/7%252520Setting%252520the%252520partition%252520slices%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="7 Setting the partition slices" border="0" alt="7 Setting the partition slices" src="http://lh6.ggpht.com/-cQCcXn-0J90/TyhI5U3IOWI/AAAAAAAAC0U/o007SD91ScM/7%252520Setting%252520the%252520partition%252520slices_thumb%25255B2%25255D.jpg?imgmax=800" width="304" height="273"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Once this was done, I processed my measure group and found out that only the correct partitions were being read from the trace files. &lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;font color="#008040"&gt;&lt;strong&gt;&lt;u&gt;Reading Materials&lt;br&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#000000"&gt;I took some time to read and learn more about partition slices, thought you would be interested in it too if you made it this far.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;1) &lt;a href="http://sqlblog.com/blogs/mosha/archive/2008/10/14/get-most-out-of-partition-slices.aspx"&gt;Get most out of partition slices&lt;/a&gt; - Mosha Pasumansky&lt;br&gt;2) &lt;a href="http://sqlcat.com/sqlcat/b/technicalnotes/archive/2007/09/11/ssas-partition-slicing.aspx"&gt;SSAS Partition Slicing&lt;/a&gt; - Eric Jacobsen&lt;br&gt;3) &lt;a href="http://jesseorosz.wordpress.com/2007/09/06/partition-slice-impact-on-query-performance-ssas2005/"&gt;Partition Slice Impact on Query Performance&lt;/a&gt; - Jesse Orosz&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-284773284660689685?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=Jdg_fW4FJDU:MbI1yGwUqog:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=Jdg_fW4FJDU:MbI1yGwUqog:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=Jdg_fW4FJDU:MbI1yGwUqog:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/Jdg_fW4FJDU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/284773284660689685/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2012/01/set-slice-on-your-ssas-cube-partitions.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/284773284660689685?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/284773284660689685?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/Jdg_fW4FJDU/set-slice-on-your-ssas-cube-partitions.html" title="Set the Slice on your SSAS Cube Partitions now!" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-RsasYhEdjzQ/TyhI1te4GMI/AAAAAAAACy0/B11Phmf6ShQ/s72-c/1-Setting-slice-in-SSAS-cube-partiti%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2012/01/set-slice-on-your-ssas-cube-partitions.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8BSHY_eip7ImA9WhRUE0s.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-3577898796277575194</id><published>2012-01-22T22:52:00.001-05:00</published><updated>2012-01-23T19:10:59.842-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-23T19:10:59.842-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MDX" /><category scheme="http://www.blogger.com/atom/ns#" term="SSAS" /><title>Using TraceEvent for MDX Debugging</title><content type="html">&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Do you know how it feels like to hear an old song and have a whole lot of memories come flooding back to you? Well, something sort of similar happened to me today. I was doing my weekly reading and going through a brilliant &lt;a title="Excel Writeback &amp;ndash; Security and Leveraging the UPDATEABLE Cell Property" href="http://artisconsulting.com/blogs/greggalloway/Lists/Posts/Post.aspx?ID=20" target="_blank"&gt;&lt;font color="#3366cc"&gt;post&lt;/font&gt;&lt;/a&gt; by Microsoft MVP - Greg Galloway (&lt;a href="http://artisconsulting.com/blogs/greggalloway/default.aspx" target="_blank"&gt;&lt;font color="#3366cc"&gt;blog&lt;/font&gt;&lt;/a&gt;). That was when I noticed that he had released a new functionality to the &lt;a href="http://asstoredprocedures.codeplex.com/" target="_blank"&gt;&lt;font color="#3366cc"&gt;Analysis Services Stored Procedures&lt;/font&gt;&lt;/a&gt; (ASSP) Project on Codeplex. I decided to test this new functionality and was thinking of a scenario where I could use it, when I remembered about an old &lt;a title="AS Forum Post - Strange behaviour of Aggregate() function" href="http://social.msdn.microsoft.com/Forums/en-SG/sqlanalysisservices/thread/d679f716-05ab-42c9-8286-a4669e92b548" target="_blank"&gt;&lt;font color="#3366cc"&gt;post&lt;/font&gt;&lt;/a&gt; in the Analysis Services forum that I intended to blog about but never did. &lt;/font&gt;&lt;a href="http://lh3.ggpht.com/-Vdb8XN-eL4w/Tx1cydoYk0I/AAAAAAAACxI/9S48u_J8Owo/s1600-h/New-Tool-in-the-ASSP-Toolkit_thumb1%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="New-Tool-in-the-ASSP-Toolkit_thumb1" border="0" alt="New-Tool-in-the-ASSP-Toolkit_thumb1" src="http://lh5.ggpht.com/-g4CdpNizJC4/Tx1cyil5x6I/AAAAAAAACxQ/DkpRBBAz0yQ/New-Tool-in-the-ASSP-Toolkit_thumb1_thumb.jpg?imgmax=800" width="308" height="108"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;Now the new addition to the ASSP toolkit is the TraceEvent class. Quoting from the ASSP project page -&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; letter-spacing: normal; display: inline !important; font: 13px 'Segoe UI', 'Microsoft Sans Serif', arial, geneva, sans-serif; white-space: normal; orphans: 2; float: none; color: rgb(48,51,45); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"&gt;“The function in the TraceEvent class is FireTraceEventAndReturnValue. It can be used to detect when Analysis Services is evaluating an expression since the function merely fires a trace event that appears in Profiler as a User Defined event, then returns the integer value you pass in. This function can be used in a scenario such as determining when the cell security expression is evaluated.&lt;/span&gt; &lt;br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; letter-spacing: normal; font: 13px 'Segoe UI', 'Microsoft Sans Serif', arial, geneva, sans-serif; white-space: normal; orphans: 2; color: rgb(48,51,45); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"&gt;&lt;br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; letter-spacing: normal; font: 13px 'Segoe UI', 'Microsoft Sans Serif', arial, geneva, sans-serif; white-space: normal; orphans: 2; color: rgb(48,51,45); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"&gt;&lt;span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; letter-spacing: normal; display: inline !important; font: 13px 'Segoe UI', 'Microsoft Sans Serif', arial, geneva, sans-serif; white-space: normal; orphans: 2; float: none; color: rgb(48,51,45); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"&gt;Here is an example MDX query displaying the usage of this function:&lt;/span&gt; &lt;br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; letter-spacing: normal; font: 13px 'Segoe UI', 'Microsoft Sans Serif', arial, geneva, sans-serif; white-space: normal; orphans: 2; color: rgb(48,51,45); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"&gt;&lt;br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; letter-spacing: normal; font: 13px 'Segoe UI', 'Microsoft Sans Serif', arial, geneva, sans-serif; white-space: normal; orphans: 2; color: rgb(48,51,45); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"&gt;&lt;/p&gt;&lt;pre style="border-bottom: rgb(62,98,166) 0.1em dashed; border-left: rgb(62,98,166) 0.1em dashed; padding-bottom: 1.5em; overflow-x: hidden; overflow-y: hidden; widows: 2; text-transform: none; background-color: rgb(255,255,255); margin-top: 0px; text-indent: 0px; padding-left: 0.5em; width: 539px; letter-spacing: normal; padding-right: 0.5em; font: 13px consolas, 'Courier New', courier, monospace; white-space: pre-wrap; orphans: 2; height: 35px; color: rgb(48,51,45); border-top: rgb(62,98,166) 0.1em dashed; border-right: rgb(62,98,166) 0.1em dashed; word-spacing: 0px; padding-top: 0.5em; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-image: initial"&gt;with member [Measures].[test] as ASSP.FireTraceEventAndReturnValue(99)&lt;br /&gt;select [Measures].[test] on 0&lt;br /&gt;from [Adventure Works]&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; letter-spacing: normal; display: inline !important; font: 13px 'Segoe UI', 'Microsoft Sans Serif', arial, geneva, sans-serif; white-space: normal; orphans: 2; float: none; color: rgb(48,51,45); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"&gt;The signature of the function is:&lt;/span&gt; &lt;br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; letter-spacing: normal; font: 13px 'Segoe UI', 'Microsoft Sans Serif', arial, geneva, sans-serif; white-space: normal; orphans: 2; color: rgb(48,51,45); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"&gt;&lt;b style="line-height: normal; widows: 2; text-transform: none; background-color: rgb(255,255,255); font-variant: normal; font-style: normal; text-indent: 0px; letter-spacing: normal; font-family: 'Segoe UI', 'Microsoft Sans Serif', arial, geneva, sans-serif; white-space: normal; orphans: 2; color: rgb(48,51,45); font-size: 13px; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"&gt;&lt;i&gt;FireTraceEventAndReturnValue(int)”&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Having a base in programming, it was natural for me to expect a sort of “watch window” when I started learning MDX. I wanted to view the values and the change in them while the query was being debugged, but sadly there was none. The TraceEvent class will help alleviate that pain to some extent and I will be showing it in the next few minutes. For the purpose of demonstration, I would be taking the two queries from the AS forum &lt;a title="AS Forum Post - Strange behaviour of Aggregate() function" href="http://social.msdn.microsoft.com/Forums/en-SG/sqlanalysisservices/thread/d679f716-05ab-42c9-8286-a4669e92b548" target="_blank"&gt;&lt;font color="#3366cc"&gt;post&lt;/font&gt;&lt;/a&gt; I mentioned before - &lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;I) &lt;u&gt;PROBLEM&lt;/u&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="left"&gt;&lt;font color="#000000" size="2"&gt;&lt;font color="#008000"&gt;&lt;strong&gt;&lt;u&gt;Query 1&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt; &lt;/p&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; height: 125px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;with&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;member [Product].[Product Categories].[Agg] &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; Aggregate(TopCount([Product].[Product Categories].[Product].members, 3, [Measures].[Internet Sales Amount]))&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt; {[Measures].[Internet Sales Amount]} &lt;span style="color: #0000ff"&gt;on&lt;/span&gt; 0,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;[&lt;span style="color: #0000ff"&gt;Date&lt;/span&gt;].[Calendar].[Month].members &lt;span style="color: #0000ff"&gt;on&lt;/span&gt; 1&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;from [Adventure Works]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;where ([Product].[Product Categories].[Agg])&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#008000"&gt;Query 2&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt; &lt;br&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; height: 94px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt; {[Measures].[Internet Sales Amount]} &lt;span style="color: #0000ff"&gt;on&lt;/span&gt; 0,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;[&lt;span style="color: #0000ff"&gt;Date&lt;/span&gt;].[Calendar].[Month].members &lt;span style="color: #0000ff"&gt;on&lt;/span&gt; 1&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;from [Adventure Works]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;where (TopCount([Product].[Product Categories].[Product].members, 3, [Measures].[Internet Sales Amount]))&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#008000" size="2"&gt;Results&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-eegNlCdHRxw/Tx1czKazZzI/AAAAAAAACxY/FaM5bTNm0as/s1600-h/1-MDX-Query-results_thumb%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="1-MDX-Query-results_thumb" border="0" alt="1-MDX-Query-results_thumb" src="http://lh5.ggpht.com/-ug0HcE4-5xM/Tx1czd6GXoI/AAAAAAAACxg/tSi4T9KksOE/1-MDX-Query-results_thumb_thumb.jpg?imgmax=800" width="406" height="265"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;For a MDX beginner, you would expect the results to be same for both queries, as you are just moving the formula of the calculated member in Query 1 to the WHERE clause in Query 2. The reason for the difference is because calculations overwrite current coordinates while axes don't overwrite the current context. So when the first query is being executed, the current coordinates are overwritten and executed in the context of the query axis which means it will check the top 3 products for each of the month and display the result. However, in the second case, you don't have any calculations defined and hence the current coordinates would be the one in the WHERE clause, which is the Top count of products across all months. (You would get a better idea by reading the original &lt;a title="AS Forum Post - Strange behaviour of Aggregate() function" href="http://social.msdn.microsoft.com/Forums/en-SG/sqlanalysisservices/thread/d679f716-05ab-42c9-8286-a4669e92b548" target="_blank"&gt;&lt;font color="#3366cc"&gt;post&lt;/font&gt;&lt;/a&gt; in the forum)&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Enough of theory and let us see whether we can debug and understand the working of the mdx queries using the TraceEvent class. For the purpose of seeing the results, we will modify the queries as shown below and see the results in the Profiler.&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;II) &lt;u&gt;DEBUGGING THE PROBLEM&lt;/u&gt;&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#008000" size="2"&gt;Query 1 for July 2005&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; height: 141px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;with&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;member [Product].[Product Categories].[Agg] &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; Aggregate(TopCount([Product].[Product Categories].[Product].members, 3, ASSP.FireTraceEventAndReturnValue([Measures].[Internet Sales Amount])))&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt; {[Measures].[Internet Sales Amount]} &lt;span style="color: #0000ff"&gt;on&lt;/span&gt; 0,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;[&lt;span style="color: #0000ff"&gt;Date&lt;/span&gt;].[Calendar].[Month].&amp;amp;[2005]&amp;amp;[7] &lt;span style="color: #0000ff"&gt;on&lt;/span&gt; 1&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;from [Adventure Works]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;where ([Product].[Product Categories].[Agg])&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#008000" size="2"&gt;&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#008000" size="2"&gt;Profiler Results for Query 1&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-cJkGBOcICXw/Tx32yvcCeWI/AAAAAAAACyY/im1Y1NRM9hA/s1600-h/2-Query-1-Profiler-results_thumb11%25255B1%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="2-Query-1-Profiler-results_thumb1" border="0" alt="2-Query-1-Profiler-results_thumb1" src="http://lh6.ggpht.com/-eRiKpBC8DHM/Tx1c0ecbCfI/AAAAAAAACyg/9ztCxKNvrcE/2-Query-1-Profiler-results_thumb11_thumb.jpg?imgmax=800" width="504" height="550"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Even without knowing the theory part, you can find out that the measure gets evaluated at 4, which is after the axes get evaluated (1, 2 and 3 in the image above) and hence, the top 3 products would be calculated for the current context of July 2005. I have not pasted the entire trace here but if you run it, you can see that the measure values for each product for the month of July 2005 is returned in the Integer Data column. I have marked the top 3 values in red and you can see that this corresponds to $261,231 which is what we saw in the results for the first query.&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#008000" size="2"&gt;Query 2 for July 2005&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; height: 94px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt; {[Measures].[Internet Sales Amount]} &lt;span style="color: #0000ff"&gt;on&lt;/span&gt; 0,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;[&lt;span style="color: #0000ff"&gt;Date&lt;/span&gt;].[Calendar].[Month].&amp;amp;[2005]&amp;amp;[7] &lt;span style="color: #0000ff"&gt;on&lt;/span&gt; 1&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;from [Adventure Works]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;where (TopCount([Product].[Product Categories].[Product].members, 3, ASSP.FireTraceEventAndReturnValue([Measures].[Internet Sales Amount])))&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#008000" size="2"&gt;Profiler Results for Query 2&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#008000" size="2"&gt;&lt;a href="http://lh5.ggpht.com/-dHMh72uk-uY/Tx1c0i4lYEI/AAAAAAAACyk/K-y5w1TWfZY/s1600-h/3-Query-2-Profiler-results_thumb11%25255B1%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="3-Query-2-Profiler-results_thumb1" border="0" alt="3-Query-2-Profiler-results_thumb1" src="http://lh3.ggpht.com/-wYEg_xUWxas/Tx1c1Midh8I/AAAAAAAACyo/-9bKcySXbcw/3-Query-2-Profiler-results_thumb11_thumb.jpg?imgmax=800" width="504" height="392"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Here, you can see that the measure gets evaluated at 1, which is before the axes get evaluated (3 and 4 in the image above). I have also marked the top three values for the products, and on close examination, it can be found to be the top 3 values for products across all months.&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-LZBAOJqm8fE/Tx1c1SxAX8I/AAAAAAAACyI/C81QSamcp4M/s1600-h/4-Top-3-products-for-all-months_thum%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="4-Top-3-products-for-all-months_thum" border="0" alt="4-Top-3-products-for-all-months_thum" src="http://lh3.ggpht.com/-D8jYzVZlAUY/Tx1c1rBDOxI/AAAAAAAACyQ/W9971UseMdY/4-Top-3-products-for-all-months_thum_thumb.jpg?imgmax=800" width="468" height="90"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;So once the top products are found, the axes are evaluated and then the results are serialized in 5, which gives us the value of $221,852 which is what we saw in the results for the second query.&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;III) &lt;u&gt;SUMMARY&lt;/u&gt;&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Even without knowing the theory, we were able to debug the MDX queries and find out why there was a difference with the help of the TraceEvent function. This technique can be elaborated and used across variable scenarios for query debugging. In short, the TraceEvent functionality is a great function to have when you don’t know why you are getting some particular results in your queries. And yeah, don’t forget to thank Greg for this!&lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh3.ggpht.com/-eJpxZ6Y89Pk/TxzZaYVJDOI/AAAAAAAACxA/cdpHkwEv_yo/wlEmoticon-smile%25255B2%25255D.png?imgmax=800"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-3577898796277575194?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=xaOTONT30Do:R5oxyT9eSVc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=xaOTONT30Do:R5oxyT9eSVc:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=xaOTONT30Do:R5oxyT9eSVc:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/xaOTONT30Do" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/3577898796277575194/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2012/01/using-traceevent-for-mdx-debugging.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/3577898796277575194?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/3577898796277575194?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/xaOTONT30Do/using-traceevent-for-mdx-debugging.html" title="Using TraceEvent for MDX Debugging" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-g4CdpNizJC4/Tx1cyil5x6I/AAAAAAAACxQ/DkpRBBAz0yQ/s72-c/New-Tool-in-the-ASSP-Toolkit_thumb1_thumb.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2012/01/using-traceevent-for-mdx-debugging.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04EQnw-cSp7ImA9WhRVFkk.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-6898079680863659188</id><published>2012-01-15T11:45:00.000-05:00</published><updated>2012-01-15T11:45:03.259-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-15T11:45:03.259-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SSRS" /><title>Reducing SSRS RDL size by uploading Shapefiles to ReportServer</title><content type="html">&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;I don’t know about you guys, but I am really petrified of public speaking. So I always try to read about it and it really gives me some comfort to know that I am not alone. In fact, if your fear of public speaking is between mild anxiety and complete terror, you are said to be well within the normal range. I would not be exaggerating if I said that some studies show that there are people who rate their fear of public speaking as more severe than fear of death. Last year was when I finally decided to embrace my fear and I managed to speak at a local user group event in London and also at &lt;a title="Session materials used in SQLBits" href="http://road-blogs.blogspot.com/2011/10/fast-track-to-spatial-reporting-sqlbits.html" target="_blank"&gt;SQLBits&lt;/a&gt; (trust me, it wasn’t that hard as I thought it would be). And since now is the time everyone makes resolutions, I was trying to take some hint from &lt;a title="50 New Year&amp;rsquo;s Resolutions for Public Speakers" href="http://mannerofspeaking.org/2011/12/30/50-new-years-resolutions-for-public-speakers/" target="_blank"&gt;50 New Year’s Resolutions for Public Speakers&lt;/a&gt; and watching &lt;a title="Fast Track to Spatial Reporting - SQLBits Session Video" href="http://sqlbits.com/(X(1)S(xkq3bqj54ulh1rmknteodx3p))/Sessions/Event9/Fast_Track_to_Spatial_Reporting" target="_blank"&gt;my presentation video&lt;/a&gt; from the last SQLBits. Seeing it, I realized I had missed mentioning an important point regarding map reports and hence decided to blog about it before I get too lazy.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/-koRyZVJBBWU/TxJIibVBuTI/AAAAAAAACto/Jwgl7IpqlIQ/s1600-h/REDUCING%252520RDL%252520SIZE%252520BY%252520UPLOADING%252520SHAPEFILES%252520TO%252520REPORTSERVER%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="REDUCING RDL SIZE BY UPLOADING SHAPEFILES TO REPORTSERVER" border="0" alt="REDUCING RDL SIZE BY UPLOADING SHAPEFILES TO REPORTSERVER" src="http://lh5.ggpht.com/-cgOOtGwlu14/TxJIigzI2WI/AAAAAAAACtw/0tKY9OyJtvo/REDUCING%252520RDL%252520SIZE%252520BY%252520UPLOADING%252520SHAPEFILES%252520TO%252520REPORTSERVER_thumb%25255B2%25255D.jpg?imgmax=800" width="504" height="190"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;People who are familiar with map report development would already be aware of the size issues when dealing with shapefiles (If you are a complete newbie on map reports, I would strongly recommend you to go through &lt;a title="Fast Track to Spatial Reporting - SQLBits Session Video" href="http://sqlbits.com/(X(1)S(xkq3bqj54ulh1rmknteodx3p))/Sessions/Event9/Fast_Track_to_Spatial_Reporting" target="_blank"&gt;my presentation video&lt;/a&gt;). Most of the shapefiles are in MBs and since this data is embedded in the report RDLs, the size of the RDL also goes into MBs. The problem as well as the solution are demonstrated below:-&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;1) Make a simple report from a shapefile by selecting the Basic Map option in the Map Wizard. I haven’t linked the shapefile to a dataset for simplicity purpose.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-D26pXoRUY9E/TxJIjCrcTJI/AAAAAAAACt4/mIMzGWFihcA/s1600-h/1%252520map%252520report%252520from%252520Colombia%252520shapefile%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="1 map report from Colombia shapefile" border="0" alt="1 map report from Colombia shapefile" src="http://lh5.ggpht.com/-_gNiCZc-i44/TxJIjvOc3PI/AAAAAAAACuA/h3qS67WjB_o/1%252520map%252520report%252520from%252520Colombia%252520shapefile_thumb%25255B1%25255D.jpg?imgmax=800" width="404" height="325"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;2) Now you can verify that the shapefile data has been embedded in the report by right clicking on the report in the solution explorer, and selecting the view code option. &lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-GOieOpBrz3E/TxJIkI5Mi9I/AAAAAAAACuI/N9Xdohoe_cM/s1600-h/2%252520embedded%252520spatial%252520data%252520in%252520report%252520rdl%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="2 embedded spatial data in report rdl" border="0" alt="2 embedded spatial data in report rdl" src="http://lh5.ggpht.com/-Svwq4m_QPnw/TxJIkU1VtiI/AAAAAAAACuQ/as-WW0JhAeE/2%252520embedded%252520spatial%252520data%252520in%252520report%252520rdl_thumb%25255B1%25255D.jpg?imgmax=800" width="354" height="450"&gt;&lt;/a&gt;&lt;/p&gt;   &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;You can see that the territory names are there in the rdl code.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;3) Now deploy the report to the report server and then, download the rdl to check the size.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/-Wjl0SoVhRc8/TxJIk8HAJ0I/AAAAAAAACuY/zoyoNPtYwGY/s1600-h/3%252520Shapefile%252520rdl%252520size%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="3 Shapefile rdl size" border="0" alt="3 Shapefile rdl size" src="http://lh6.ggpht.com/-PP6edLnCO3Q/TxJIlfG-uHI/AAAAAAAACug/IvLOD06rUs8/3%252520Shapefile%252520rdl%252520size_thumb%25255B1%25255D.jpg?imgmax=800" width="404" height="401"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;You can see that the rdl size is 3.11 MB. The shapefile that I had used for this report was 2.4 MB.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;4) Now to solve this issue, we will have to upload the shapefile (.shp and .dbf files) to the report server. For this, navigate to the folder in Report Manager and click on upload. Then browse to the shp and dbf files and click ok.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/-zfiFilPtRBo/TxJIl47rX_I/AAAAAAAACuo/R6mMcV4LjPw/s1600-h/4%252520Upload%252520shp%252520and%252520dbf%252520to%252520reportserver%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="4 Upload shp and dbf to reportserver" border="0" alt="4 Upload shp and dbf to reportserver" src="http://lh6.ggpht.com/-bF6_8wvQ-3w/TxJImHIjmwI/AAAAAAAACuw/DyQSUlASM_4/4%252520Upload%252520shp%252520and%252520dbf%252520to%252520reportserver_thumb%25255B1%25255D.jpg?imgmax=800" width="504" height="295"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;5) Once this is done, go back to the report in BIDS and click on the map twice to bring the map layers panel on the right. Right click on the polygon layer and select Layer data option.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/-X48fKHa7T9c/TxJImmnN6AI/AAAAAAAACu4/qRm1lWYayLc/s1600-h/5%252520Selecting%252520layer%252520data%252520in%252520map%252520layers%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="5 Selecting layer data in map layers" border="0" alt="5 Selecting layer data in map layers" src="http://lh3.ggpht.com/-y1AQRnX81_M/TxJInJj8TnI/AAAAAAAACvA/QPuO_r6-mRA/5%252520Selecting%252520layer%252520data%252520in%252520map%252520layers_thumb.jpg?imgmax=800" width="504" height="186"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;6) Now change the option from &lt;em&gt;Data Embedded in Report&lt;/em&gt; to &lt;em&gt;Link to ESRI Shapefile&lt;/em&gt;. Now give the location of the files in your report server (In this case, &lt;em&gt;\Blog Reports\COL_adm1.shp&lt;/em&gt;). Note that the location has to start with a slash followed by the folder names within the report manager and then the file name of the shp file.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/-zwaDPYiUp8k/TxJIns1JVsI/AAAAAAAACvI/aUMbcXdsqHs/s1600-h/6%252520Linking%252520the%252520map%252520to%252520the%252520uploaded%252520files%252520in%252520reportserver%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="6 Linking the map to the uploaded files in reportserver" border="0" alt="6 Linking the map to the uploaded files in reportserver" src="http://lh5.ggpht.com/-3aTCPJd19HM/TxJInxu_aiI/AAAAAAAACvQ/FZWZUPLW0HE/6%252520Linking%252520the%252520map%252520to%252520the%252520uploaded%252520files%252520in%252520reportserver_thumb.jpg?imgmax=800" width="504" height="230"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;7) Once this is done, you will not be able to view the results in BIDS. You can view the report code to confirm that the map data is not embedded in the rdl now. Just deploy the report after that and preview it in report manager to ensure that it is working. &lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;8) Now, download the rdl from the report server and you can see that the size has been considerably reduced, from over 3 MB to 12.2 KB.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/-fn1akLH9IAk/TxJIoYLgb_I/AAAAAAAACvY/ViE5_Itt-MI/s1600-h/7%252520Modified%252520Shapefile%252520reduced%252520rdl%252520size%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="7 Modified Shapefile reduced rdl size" border="0" alt="7 Modified Shapefile reduced rdl size" src="http://lh6.ggpht.com/-2PB8WQst9ZA/TxJIomzt0PI/AAAAAAAACvg/JuJbalqtL5k/7%252520Modified%252520Shapefile%252520reduced%252520rdl%252520size_thumb%25255B1%25255D.jpg?imgmax=800" width="304" height="368"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;It would actually be a good practice to store your shapefiles in the report server at the end of your development. This way, the shapefiles can be reused by multiple reports if needed. Also, you would not need to open BIDS in case an updated version of the shapefile becomes available later. This technique can also be used for report images though I see little benefit from it as usually the images are only a few KBs. As for performance, I quickly checked a couple of times and the rendering time was a little less using this technique. Maybe I will do a detailed performance test and post a blog on it later. Till then, adieus amigos!&lt;/font&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-6898079680863659188?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=tYnIY7lJvfI:XZSRG6M66v0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=tYnIY7lJvfI:XZSRG6M66v0:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=tYnIY7lJvfI:XZSRG6M66v0:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/tYnIY7lJvfI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/6898079680863659188/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2012/01/reducing-ssrs-rdl-size-by-uploading.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/6898079680863659188?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/6898079680863659188?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/tYnIY7lJvfI/reducing-ssrs-rdl-size-by-uploading.html" title="Reducing SSRS RDL size by uploading Shapefiles to ReportServer" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-cgOOtGwlu14/TxJIigzI2WI/AAAAAAAACtw/0tKY9OyJtvo/s72-c/REDUCING%252520RDL%252520SIZE%252520BY%252520UPLOADING%252520SHAPEFILES%252520TO%252520REPORTSERVER_thumb%25255B2%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2012/01/reducing-ssrs-rdl-size-by-uploading.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4ARXkzeip7ImA9WhRVEU0.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-1191316155421113573</id><published>2012-01-08T12:37:00.001-05:00</published><updated>2012-01-09T06:35:44.782-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-09T06:35:44.782-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>A New Year and a New Job</title><content type="html">&lt;p align="justify"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;For people who are connected with me, this would not come as much of a shock but yes, with this post comes a big change for me. By the time this post gets published, I would have already moved on from &lt;/font&gt;&lt;a href="www.mindtree.com" target="_blank"&gt;MindTree Ltd&lt;/a&gt; &lt;font color="#000000"&gt;and started work at&lt;/font&gt; &lt;a href="http://www.mariner-usa.com" target="_blank"&gt;Mariner&lt;/a&gt;, &lt;font color="#000000"&gt;my new work place. This would also mean that I have changed my base from London, UK to Charlotte, USA. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a title="Mariner - Insight to Achieve" href="http://www.mariner-usa.com" target="_blank"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Mariner" border="0" alt="Mariner" src="http://lh5.ggpht.com/-af4HyCqJHX8/TwnUdsNlDZI/AAAAAAAACtg/wq9mZ6n3kJY/mariner%25255B4%25255D.jpg?imgmax=800" width="322" height="163"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;I have lots of fond memories about MindTree and the decision to part was indeed very difficult. I will definitely miss my colleagues there and wish them all the very best for the future. At the same time, I am also very excited to join Mariner and look forward to working and learning from some of the most talented people I have known. Hopefully, I will also be able to contribute something.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The new year has got me a new job and I am looking forward to a lot of things. I would like to end this post with a New Year wish that I had read sometime back, for all of my readers-&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;I hope you will have a wonderful year, that you'll dream dangerously and outrageously, that you'll make something that didn't exist before you made it, that you will be loved and that you will be liked, and that you will have people to love and to like in return. And, most importantly (because I think there should be more kindness and more wisdom in the world right now), that you will, when you need to be, be wise, and that you will always be kind. I hope that in this year to come, you make mistakes.Because if you are making mistakes, then you are making new things, trying new things, learning, living, pushing yourself, changing yourself, changing your world. You're doing things you've never done before, and more importantly, you're Doing Something. Whatever it is you're scared of doing, Do it. And I hope, somewhere in the next year, you surprise yourself!&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-1191316155421113573?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=Kt3WcEr2KhY:bkEBwsSC6Gk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=Kt3WcEr2KhY:bkEBwsSC6Gk:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=Kt3WcEr2KhY:bkEBwsSC6Gk:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/Kt3WcEr2KhY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/1191316155421113573/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2012/01/new-year-and-new-job.html#comment-form" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/1191316155421113573?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/1191316155421113573?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/Kt3WcEr2KhY/new-year-and-new-job.html" title="A New Year and a New Job" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-af4HyCqJHX8/TwnUdsNlDZI/AAAAAAAACtg/wq9mZ6n3kJY/s72-c/mariner%25255B4%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>8</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2012/01/new-year-and-new-job.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMAQHc-eip7ImA9WhRWE0s.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-5615794734783457105</id><published>2011-12-30T15:40:00.000-05:00</published><updated>2011-12-31T15:47:21.952-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-31T15:47:21.952-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SSAS" /><category scheme="http://www.blogger.com/atom/ns#" term="SSRS" /><title>Using SSAS formatting in SSRS</title><content type="html">&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Christmas time is one of my most favourite times of the year – the time when you can just lay back, relax, enjoy some quality time with your family and catch up with your old friends. While this Christmas time has been a little hectic for me considering that I changed my base from London, UK to Charlotte, USA (I promise to say more on that in a later post), I still found time to catch up with family and friends. So I was talking with an old colleague of mine, and as is with most techies, we ended up discussing work after some time (now I know what the idiom means – All roads leads to Rome). Well, I should warn you that my friend is not a great fan of SSRS, and he was cribbing about SSRS and the difficulties he faces when dealing with it. Being a SSRS enthusiast, I couldn’t resist giving solutions or workarounds to most of the problems he said. One of his major concerns was about the formatting in SSRS. He was totally annoyed that the decimal/currency formatting he did in SSAS did not carry over to SSRS and that he had to modify potentially many reports to replicate the formatting change. That is when I jumped in and said that you could achieve the same in SSRS if you want to.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-J3ZM06Hh5Go/Tv9yzYf8F9I/AAAAAAAACrk/z3cH9x4HGoA/s1600-h/1%252520SSAS%252520formatting%252520in%252520SSRS%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="1 SSAS formatting in SSRS" border="0" alt="1 SSAS formatting in SSRS" src="http://lh5.ggpht.com/-tssmCDw2btk/Tv9yzuNbZII/AAAAAAAACrs/OhFeISKlLdo/1%252520SSAS%252520formatting%252520in%252520SSRS_thumb.jpg?imgmax=800" width="397" height="140"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;To demonstrate the solution, I am using the AdventureWorks database. Follow the steps below to reproduce the solution:-&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;1) Create a new SSRS report and use the query below to create a dataset&lt;br&gt;&lt;font size="1"&gt;&lt;font color="#9b00d3"&gt;SELECT NON EMPTY { [Measures].[Internet Sales Amount], [Measures].[Internet Gross Profit Margin], [Measures].[Internet Order Quantity] } ON COLUMNS,&lt;br&gt;NON EMPTY { ([Product].[Category].[Category].ALLMEMBERS ) } ON ROWS &lt;br&gt;FROM [Adventure Works]&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;Note that [Measures].[Internet Sales Amount] is a measure expression, [Measures].[Internet Gross Profit Margin] is a calculated measure and [Measures].[Internet Order Quantity] is a base measure.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;&lt;a href="http://lh4.ggpht.com/-P40n6zLCP0I/Tv9y0Mz0YvI/AAAAAAAACr0/BnT16zBJZF4/s1600-h/2%252520Different%252520type%252520of%252520measures%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="2 Different type of measures" border="0" alt="2 Different type of measures" src="http://lh6.ggpht.com/-bo-bpuwBVOY/Tv9y0WyFM9I/AAAAAAAACr8/Xj44mUttrnU/2%252520Different%252520type%252520of%252520measures_thumb%25255B1%25255D.jpg?imgmax=800" width="604" height="160"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;2) Create a simple matrix in SSRS using the fields above and preview it.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;&lt;a href="http://lh5.ggpht.com/-MoK76TJyfS4/Tv9y00SyaAI/AAAAAAAACsE/_lGxOmbBW68/s1600-h/3%252520Previewing%252520the%252520unformatted%252520data%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="3 Previewing the unformatted data" border="0" alt="3 Previewing the unformatted data" src="http://lh5.ggpht.com/-gUsEtIC2EpQ/Tv9y1OPhVLI/AAAAAAAACsM/chUROHKoBzE/3%252520Previewing%252520the%252520unformatted%252520data_thumb%25255B1%25255D.jpg?imgmax=800" width="604" height="159"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;You will notice that the measures are not formatted while the same measures in SSAS are formattted, as clear from the cube browser preview.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;&lt;a href="http://lh6.ggpht.com/-SRwvT8YAyWA/Tv9y1mg89sI/AAAAAAAACsU/OwuNPMF__i0/s1600-h/4%252520SSAS%252520formatting%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="4 SSAS formatting" border="0" alt="4 SSAS formatting" src="http://lh5.ggpht.com/-hI3O9Y25d2k/Tv9y19kGzZI/AAAAAAAACsc/VQaFaLFMeSM/4%252520SSAS%252520formatting_thumb.jpg?imgmax=800" width="504" height="182"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;3) Now, to get the same SSAS formatting in SSRS, you will have to modify the MDX query to include the cell property – format_string as shown below.&lt;/font&gt;&lt;br&gt;&lt;font color="#9b00d3" size="1"&gt;SELECT NON EMPTY { [Measures].[Internet Sales Amount], [Measures].[Internet Gross Profit Margin], [Measures].[Internet Order Quantity] } ON COLUMNS, &lt;br&gt;NON EMPTY { ([Product].[Category].[Category].ALLMEMBERS ) } ON ROWS &lt;br&gt;FROM [Adventure Works] &lt;br&gt;CELL PROPERTIES VALUE, FORMAT_STRING&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;4) Once the query is modified, click on each of the 3 textboxes that need to be formatted, and enter the following code in the format property&lt;br&gt;&lt;font color="#9b00d3" size="1"&gt;=Fields!&amp;lt;name&amp;gt;("FORMAT_STRING")&lt;/font&gt;&lt;br&gt;E.g., for the Internet Order Quantity, the code and image is given below &lt;br&gt;&lt;font color="#9b00d3"&gt;&lt;font size="1"&gt;=Fields!Internet_Order_Quantity("FORMAT_STRING")&lt;/font&gt;&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&lt;font color="#9b00d3"&gt;&lt;a href="http://lh6.ggpht.com/-3BSQW3ozcvc/Tv9y2TAFiVI/AAAAAAAACsk/3C2vCtcy_n0/s1600-h/5%252520SSRS%252520Format%252520property%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="5 SSRS Format property" border="0" alt="5 SSRS Format property" src="http://lh6.ggpht.com/-BQj-TZo33o0/Tv9y2lIkDzI/AAAAAAAACss/t1-TCkDiK90/5%252520SSRS%252520Format%252520property_thumb%25255B1%25255D.jpg?imgmax=800" width="604" height="249"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;5) Now preview the report. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-q4qIMc6Pex8/Tv9y2_ISvcI/AAAAAAAACs0/7-3rnxTse2I/s1600-h/6%252520SSRS%252520initial%252520format%252520preview%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="6 SSRS initial format preview" border="0" alt="6 SSRS initial format preview" src="http://lh6.ggpht.com/-zJjYR47JW_o/Tv9y3czlncI/AAAAAAAACs8/s4N_8vqeukY/6%252520SSRS%252520initial%252520format%252520preview_thumb.jpg?imgmax=800" width="385" height="265"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;We can see that the format for Internet Order quantity is correct, but the other two has been overwritten by Currency and Percent. &lt;strong&gt;This is because the format strings in SSRS and SSAS is not the same for all formats&lt;/strong&gt;. To correct this, I have used custom code in the next step.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;6) Click on Report menu and then select Report Properties. Copy and paste the following code into the custom code tab&lt;/font&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p align="justify"&gt;&lt;font color="#9b00d3" size="1"&gt;Dim public RSFormat as String&lt;br&gt;Public Function FindFormat(ByVal ASFormat AS String) AS String&lt;br&gt;If (ASFormat="Currency") then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RSFormat="c"&lt;br&gt;ElseIf (ASFormat="Percent") then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RSFormat="p"&lt;br&gt;ElseIf (ASFormat="Standard") then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RSFormat="0"&lt;br&gt;Else &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RSFormat=ASFormat&lt;br&gt;End If&lt;br&gt;return RSFormat&lt;br&gt;End Function&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p align="justify"&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;P.S. : I have taken care of the frequently used format strings, but if there is any format that I have missed, that can be easily added to the code with a ElseIf statement.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;7) Now click on each of the 3 textboxes that need to be formatted, and then replace the code used in step 4 with the following code&lt;br&gt;&lt;font color="#9b00d3" size="1"&gt;=Code.FindFormat(Fields!&amp;lt;name&amp;gt;("FORMAT_STRING"))&lt;/font&gt;&lt;br&gt;E.g., for the Internet Order Quantity, the code and image is given below &lt;br&gt;&lt;font color="#9b00d3" size="1"&gt;=Code.FindFormat(Fields!Internet_Order_Quantity("FORMAT_STRING"))&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;8) Preview the report and now you should be getting the same format that was in SSAS also.&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/-L89zYEYyIAI/Tv9y3yIaTMI/AAAAAAAACtE/PXb2E7db_PY/s1600-h/7%252520SSRS%252520final%252520format%252520preview%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="7 SSRS final format preview" border="0" alt="7 SSRS final format preview" src="http://lh3.ggpht.com/-GwqdUYU6-Cw/Tv9y4AGPYeI/AAAAAAAACtM/HIEqYzZOIU0/7%252520SSRS%252520final%252520format%252520preview_thumb%25255B1%25255D.jpg?imgmax=800" width="504" height="343"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The advantage of using this technique is that you would not need to touch your reports if you change the formatting in SSAS. This would ensure that the formatting used in your reports is standardized and consistent with what has been defined in your cube. Also, if you have multiple reports, you could compile the custom code and deploy the assembly to a server. This way, you would not need to duplicate the custom code in each of the reports. &lt;/font&gt;&lt;/p&gt;&lt;font color="#000000" size="2"&gt;&lt;strong&gt;&lt;font color="#000000" size="2"&gt;&lt;span class="Apple-converted-space"&gt; &lt;p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; letter-spacing: normal; font: 13px arial, helvetica; white-space: normal; orphans: 2; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" align="justify"&gt;&lt;br&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#008000"&gt;References&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; letter-spacing: normal; font: 13px arial, helvetica; white-space: normal; orphans: 2; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" align="justify"&gt;&lt;font color="#000000" size="2"&gt;1) &lt;a title="Blog by Greg Galloway" href="http://www.artisconsulting.com/blogs/greggalloway/Lists/Posts/Post.aspx?ID=10" target="_blank"&gt;Retrieving Cell Properties&lt;/a&gt;&lt;br&gt;2) &lt;a title="Blog by Teo Lachev" href="http://prologika.com/CS/blogs/blog/archive/2007/08/14/how-to-get-extended-properties-with-ssas-ole-db-provider.aspx" target="_blank"&gt;How to Get Extended Properties with SSAS OLE DB Provider&lt;/a&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-5615794734783457105?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=Ti_T9c80ZDY:q4a2tPqRkvM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=Ti_T9c80ZDY:q4a2tPqRkvM:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=Ti_T9c80ZDY:q4a2tPqRkvM:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/Ti_T9c80ZDY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/5615794734783457105/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2012/01/using-ssas-formatting-in-ssrs.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/5615794734783457105?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/5615794734783457105?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/Ti_T9c80ZDY/using-ssas-formatting-in-ssrs.html" title="Using SSAS formatting in SSRS" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-tssmCDw2btk/Tv9yzuNbZII/AAAAAAAACrs/OhFeISKlLdo/s72-c/1%252520SSAS%252520formatting%252520in%252520SSRS_thumb.jpg?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2012/01/using-ssas-formatting-in-ssrs.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cER385eyp7ImA9WhRRFks.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-3304858877440253110</id><published>2011-11-30T09:56:00.001-05:00</published><updated>2011-11-30T09:56:46.123-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-30T09:56:46.123-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SSRS" /><title>Where did my RDL.DATA files go?</title><content type="html">&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Today morning, I was reading an old post on &lt;a title="Clearing SSRS Query cache" href="http://www.purplefrogsystems.com/blog/2010/04/clearing-ssrs-query-cache/" target="_blank"&gt;Clearing SSRS Query cache&lt;/a&gt; by Alex Whittles (&lt;a title="The Frog Blog" href="http://www.purplefrogsystems.com/blog/" target="_blank"&gt;blog&lt;/a&gt; | &lt;a href="https://twitter.com/#!/PurpleFrogSys" target="_blank"&gt;twitter&lt;/a&gt;). That is when I decided to try out something and opened up my most recent project to find some rdl.data files. Surprisingly, I did not find a single rdl.data file although I had more than 10 reports which had been run multiple times. Even a full search of my laptop failed to yield results for those elusive files. That is when I decided to investigate further into the matter.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-Z5HX0linqXA/TtZEKDwAr9I/AAAAAAAACrM/BrfRikqi8K4/s1600-h/thnking%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="thnking" border="0" alt="thnking" src="http://lh5.ggpht.com/-4Q9Ykqz8zp8/TtZEK1W32PI/AAAAAAAACrU/8uUnCYeQQjE/thnking_thumb%25255B2%25255D.png?imgmax=800" width="304" height="307"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The rdl.data files are usually present for each report and are used only in the development environment. When we preview the SQL Server Reporting Services (SSRS) reports in Business Intelligence Development Studio (BIDS – the development environment), the query results are cached and stored as the rdl.data files in the report folder. This cache will be used the next time the reports are previewed and is the reason why the report seems to display faster. This will help in developing reports faster as we don’t have to wait a long time for the report to be displayed. However, this could also mean that the data would be stale when we are previewing the report in BIDS.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Now, coming back to the issue, I quickly noted my version of SQL Server (which is 2008 R2) and checked for updates. I realized that I had not applied the Service Pack 1 for SQL Server 2008 R2 and quickly searched the internet for a bug, which I found &lt;a title="FIX: Business Intelligence Development Studio 2008 R2 does not generate an RDL.DATA file when you preview a SQL Server report" href="http://support.microsoft.com/kb/2282505" target="_blank"&gt;here&lt;/a&gt;. So all I had to do was to apply the Service Pack 1 which I downloaded from this &lt;a title="Microsoft&amp;reg; SQL Server&amp;reg; 2008 R2 Service Pack 1" href="http://www.microsoft.com/download/en/details.aspx?id=26727" target="_blank"&gt;link&lt;/a&gt;. Once the Service Pack was applied, things got back to normal and I was able to generate the rdl.data files when the reports were previewed. &lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;P.S. : Kindly note the version to which this fix applies – Microsoft SQL Server 2008 R2 Reporting Services (without any patches/updates/service packs)&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-3304858877440253110?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=Ct4_7gNZICQ:9CGYL5_Nwsc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=Ct4_7gNZICQ:9CGYL5_Nwsc:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=Ct4_7gNZICQ:9CGYL5_Nwsc:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/Ct4_7gNZICQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/3304858877440253110/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2011/11/where-did-my-rdldata-files-go.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/3304858877440253110?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/3304858877440253110?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/Ct4_7gNZICQ/where-did-my-rdldata-files-go.html" title="Where did my RDL.DATA files go?" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-4Q9Ykqz8zp8/TtZEK1W32PI/AAAAAAAACrU/8uUnCYeQQjE/s72-c/thnking_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2011/11/where-did-my-rdldata-files-go.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQESHo7fip7ImA9WhRREU4.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-4630516964716166816</id><published>2011-11-24T07:38:00.001-05:00</published><updated>2011-11-24T07:38:29.406-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-24T07:38:29.406-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SSRS" /><title>Adding a Target line to a Horizontal Bar Chart in SSRS</title><content type="html">&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;This is usually the time of the year when I get to my laziest best. The cold weather and the approaching holiday season brings out&amp;nbsp; the sloth in me and I have a huge backlog of articles I need to read as well as tend to. But somehow I have pulled up my socks and managed to come up with this article on how to add a target line to a horizontal bar chart in SSRS.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/-VqVIZMFjAAk/Ts46v6SSuJI/AAAAAAAACq8/kSdXYUsUR38/s1600-h/Target-line-in-horizontal-Bar-Chart4.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Target line in horizontal Bar Chart" border="0" alt="Target line in horizontal Bar Chart" src="http://lh3.ggpht.com/-L-armt6gV3c/Ts46wlx6EvI/AAAAAAAACrE/i_djN9RmHrk/Target-line-in-horizontal-Bar-Chart_.jpg?imgmax=800" width="504" height="265"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;For the benefit of people who are not so familiar with the horizontal bar charts in SSRS, there is no out-of-the-box functionality for achieving a target line (unlike the column charts, where we can implement a line chart as detailed &lt;a title="Column Chart with Goal Threshold Line" href="https://sqlserverbiblog.wordpress.com/tag/column-chart/" target="_blank"&gt;here&lt;/a&gt;). So when this question was raised in the MSDN forums, I put on my thinking cap and suggested a solution based on having the image of a line as a marker, something like shown below&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://img850.imageshack.us/img850/5854/50745724.jpg" width="400" height="226"&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The steps are mentioned in the forum discussion &lt;a title="Click here to go to the MSDN forum discussion" href="http://social.msdn.microsoft.com/Forums/en-US/sqlreportingservices/thread/7597fbd2-8d22-456c-b850-bb109f45d66d" target="_blank"&gt;here&lt;/a&gt;. But a disadvantage of this approach was that it wouldn’t accommodate an increase or decrease in the number of members in the Y axis. For e.g., if the line image was designed for 5 members, then an increase in the number of members would mean that the image would spill over the X axis. Similarly, a decrease in the number of members would mean that the lines fail to reach the X axis. So I came up with an alternate solution using striplines and the steps are given below:-&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;1) Make a simple bar chart with a category and measure. In this example, I have used Year as the category field and Cnt as the measure value.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;img src="http://img189.imageshack.us/img189/8100/1barchartwithyearincate.jpg" width="500" height="188"&gt;&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;2) Click on the X axis to select it, then right click and unselect the option ‘Show Major Gridlines’. This will remove the gridlines on the chart.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;img style="" src="http://img522.imageshack.us/img522/6007/2unselectshowmajorgridl.jpg" width="500" height="274"&gt;&amp;nbsp; &lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;3) Click on the X axis to select it, and then select the collections button in the StripLines property&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;img src="http://img443.imageshack.us/img443/862/3addstriplinesy.jpg" width="500" height="201"&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;4) Click on the Add button in the ChartStripLine Collection Editor. The properties should appear as shown below now.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;img src="http://img35.imageshack.us/img35/1229/4addstriplinecollection.jpg" width="500" height="362"&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;5)&amp;nbsp; Now change the BorderStyle property as Solid and enter the field or the number at which you want the target line to come in the IntervalOffset property as shown below&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;img src="http://img5.imageshack.us/img5/2404/5addingthetargetline.jpg" width="500" height="606"&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;6) Select OK and click on the preview button. You should be able to see the target line in the bar chart as shown below.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;img src="http://img855.imageshack.us/img855/7750/6previewingthessrsrepor.jpg" width="500" height="330"&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;7) You can increase the width of the target line by changing the BackgroundColor property to the BorderColor (in this case Black) and by increasing the StripWidth property in the ChartStripLine Collection Editor shown in step 5.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;A disadvantage of this method is that the target line appears behind the bars. Apart from this, it works pretty well and you have a clever workaround the next time someone insists on having a target line on their bar charts.&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-4630516964716166816?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=E-gi_ra5mBk:H-t7erv8P2M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=E-gi_ra5mBk:H-t7erv8P2M:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=E-gi_ra5mBk:H-t7erv8P2M:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/E-gi_ra5mBk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/4630516964716166816/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2011/11/adding-target-line-to-horizontal-bar.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/4630516964716166816?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/4630516964716166816?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/E-gi_ra5mBk/adding-target-line-to-horizontal-bar.html" title="Adding a Target line to a Horizontal Bar Chart in SSRS" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-L-armt6gV3c/Ts46wlx6EvI/AAAAAAAACrE/i_djN9RmHrk/s72-c/Target-line-in-horizontal-Bar-Chart_.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2011/11/adding-target-line-to-horizontal-bar.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUCSX8-cCp7ImA9WhdbGUo.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-525191618903475316</id><published>2011-10-18T17:22:00.001-04:00</published><updated>2011-10-18T17:27:48.158-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-18T17:27:48.158-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Denali" /><category scheme="http://www.blogger.com/atom/ns#" term="Power View" /><title>Tracking Data over Time Visually in Power View aka Project Crescent</title><content type="html">&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;All right, I know most of you Microsoft BI fans would be gushing over the new announcements made in &lt;a title="PASS Summit 2011" href="http://www.sqlpass.org/summit/2011/" target="_blank"&gt;PASS Summit 2011&lt;/a&gt; last week. Now onwards, Project Crescent will be officially known as Power View, SQL Server Denali as SQL Server 2012, Juneau as SQL Server Data Tools and finally, we have a mobile BI strategy! (you can read the official press release from &lt;a title="Microsoft Expands Data Platform With SQL Server 2012, New Investments for Managing Any Data, Any Size, Anywhere" href="http://www.microsoft.com/Presspass/press/2011/oct11/10-12PASS1PR.mspx" target="_blank"&gt;here&lt;/a&gt; and some more details on Power View from &lt;a title="Power View, PASS and Mobile" href="http://blogs.msdn.com/b/sqlrsteamblog/archive/2011/10/13/power-view-pass-and-mobile.aspx" target="_blank"&gt;here&lt;/a&gt;). I decided to celebrate the occasion by blogging about one of the new features I particularly like in Power View in CTP3 version – tracking data over time visually.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;For this demonstration, I have used the computer in &lt;a title="SQL Server Virtual Labs" href="http://www.microsoft.com/sqlserver/en/us/learning-center/virtual-labs.aspx" target="_blank"&gt;SQL Server Virtual Labs&lt;/a&gt;. This is a great place to kick-start your SQL Server 2012 journey. Apart from the great tutorials, I also access it when I have to test out some new feature. Follow the steps below to create a Power View report with the ‘track data over time’ functionality:-&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;1) Go to the SharePoint site and click on Data Sources. Then click on the small dropdown icon on the right of the data source name and select the &lt;em&gt;&lt;strong&gt;Create ‘Crescent’ Report&lt;/strong&gt;&lt;/em&gt; option as shown in the image below.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/-R8LWUgTv-Qg/Tp3t2ZsVfsI/AAAAAAAACkg/8EjY5O80Wd4/s1600-h/1%252520Create%252520Crescent%252520Report%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="1 Create Crescent Report" border="0" alt="1 Create Crescent Report" src="http://lh6.ggpht.com/-RlnS3tg69YA/Tp3t3MLQSNI/AAAAAAAACko/Qbq0JR0ciiE/1%252520Create%252520Crescent%252520Report_thumb%25255B2%25255D.jpg?imgmax=800" width="404" height="379"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;2) If this is the first time you are opening the Crescent report, there is a chance that you might get the following error - &lt;br&gt;&lt;font color="#ff0000" size="1"&gt;&lt;strong&gt;An error occurred while loading the model for the item or data source. Verify that the connection information is correct and that you have permissions to access the data source.&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;a href="http://lh3.ggpht.com/-wxxfiftQPM8/Tp3t3kB_XhI/AAAAAAAACkw/gkIa9QQyelE/s1600-h/2%252520First%252520time%252520error%252520when%252520opening%252520Project%252520Crescent%252520report%25255B8%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="2 First time error when opening Project Crescent report" border="0" alt="2 First time error when opening Project Crescent report" src="http://lh3.ggpht.com/-C70pvSaEXow/Tp3t4FxxKkI/AAAAAAAACk4/8gdfq0vcqBw/2%252520First%252520time%252520error%252520when%252520opening%252520Project%252520Crescent%252520report_thumb%25255B17%25255D.jpg?imgmax=800" width="404" height="212"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;This is a bug within the current CTP and this should go off if you refresh the address bar of the browser.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/-WTKTgQEy-dk/Tp3t4wjUExI/AAAAAAAAClA/1feG-UoQs2s/s1600-h/3%252520Crescent%252520report%252520layout%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="3 Crescent report layout" border="0" alt="3 Crescent report layout" src="http://lh3.ggpht.com/-LoLV6O3fJZI/Tp3t5dnMx5I/AAAAAAAAClI/yuA4QMWpu0w/3%252520Crescent%252520report%252520layout_thumb%25255B1%25255D.jpg?imgmax=800" width="404" height="246"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;3) Select &lt;strong&gt;&lt;em&gt;Category&lt;/em&gt;&lt;/strong&gt; under&lt;strong&gt;&lt;em&gt; Product&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;Quantity&lt;/em&gt;&lt;/strong&gt; under &lt;strong&gt;&lt;em&gt;Sales&lt;/em&gt;&lt;/strong&gt;. A table will be displayed in the layout with the values of &lt;strong&gt;&lt;em&gt;Category&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;Quantity&lt;/em&gt;&lt;/strong&gt;.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-2h6X2MJ5cJs/Tp3t6bU8GII/AAAAAAAAClQ/S8NJMBZR6mc/s1600-h/4%252520Selecting%252520Category%252520and%252520Quantity%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="4 Selecting Category and Quantity" border="0" alt="4 Selecting Category and Quantity" src="http://lh5.ggpht.com/-6hR1EuzKS_M/Tp3t6y9IPYI/AAAAAAAAClY/_sxXEXGmFc8/4%252520Selecting%252520Category%252520and%252520Quantity_thumb%25255B1%25255D.jpg?imgmax=800" width="404" height="229"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;4) Click on the &lt;em&gt;&lt;strong&gt;Scatter&lt;/strong&gt;&lt;/em&gt; chart option as shown in the image below.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/-VVrUaKZD7Rc/Tp3t7fy5yoI/AAAAAAAAClg/xN1LEaBCNsQ/s1600-h/5%252520Selecting%252520scatter%252520chart%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="5 Selecting scatter chart" border="0" alt="5 Selecting scatter chart" src="http://lh5.ggpht.com/-YOC1okKC3F4/Tp3t72rkP1I/AAAAAAAAClo/JcCGU-NaX1I/5%252520Selecting%252520scatter%252520chart_thumb%25255B1%25255D.jpg?imgmax=800" width="404" height="227"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;5) Resize the chart to occupy the full space. A scatter chart requires 3 measures – for the X axis, Y axis and the size of the bubble.&amp;nbsp; Since we have already selected the &lt;strong&gt;&lt;em&gt;Quantity&lt;/em&gt;&lt;/strong&gt; measure, we just need to select 2 more measures for the Y axis and size. Select &lt;strong&gt;&lt;em&gt;Revenue&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;# Products&lt;/em&gt;&lt;/strong&gt;.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/-9qNa6T9Sook/Tp3t8kLuVUI/AAAAAAAAClw/eMl5B5iN1oI/s1600-h/6%252520Selecting%252520measures%252520for%252520scatter%252520chart%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="6 Selecting measures for scatter chart" border="0" alt="6 Selecting measures for scatter chart" src="http://lh3.ggpht.com/-di2hKlGOgvc/Tp3t9M-NWrI/AAAAAAAACl4/TVK59dKE12s/6%252520Selecting%252520measures%252520for%252520scatter%252520chart_thumb%25255B1%25255D.jpg?imgmax=800" width="404" height="212"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;6) Once that is done, select &lt;strong&gt;&lt;em&gt;Year &lt;/em&gt;&lt;/strong&gt;under &lt;strong&gt;&lt;em&gt;Date&lt;/em&gt; &lt;/strong&gt;and this will automatically be taken as the Play Axis of the scatter chart. You should be able to get the graph as shown below.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-7hVmPh5lk9o/Tp3t99yiZ0I/AAAAAAAACmA/gM8d6pC-PyU/s1600-h/7%252520Select%252520Year%252520as%252520the%252520Play%252520Axis%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="7 Select Year as the Play Axis" border="0" alt="7 Select Year as the Play Axis" src="http://lh6.ggpht.com/-0HZmBpkB0mo/Tp3t-eKDYEI/AAAAAAAACmI/2DwXx-02JVs/7%252520Select%252520Year%252520as%252520the%252520Play%252520Axis_thumb%25255B1%25255D.jpg?imgmax=800" width="404" height="217"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;7) Give a title and then click on the save button on top left corner. Enter the destination path as well as the file name and then click ok to publish the report in SharePoint.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&amp;nbsp;&lt;a href="http://lh5.ggpht.com/-T7YANP27QTQ/Tp3t_YcGV_I/AAAAAAAACmQ/Qz6wBPhDRDI/s1600-h/8%252520Publish%252520reports%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="8 Publish reports" border="0" alt="8 Publish reports" src="http://lh3.ggpht.com/-NfX6yhOfIps/Tp3t_4viZtI/AAAAAAAACmY/mVleOXqALQY/8%252520Publish%252520reports_thumb%25255B1%25255D.jpg?imgmax=800" width="404" height="197"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;8) Go to the destination path specified in the step above and click on the report name to preview it. Click on the play button to see visually how the Category changes over the year.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/-oR1V3Yrs9PY/Tp3uuQQ-8HI/AAAAAAAACnU/1XgC_o429PE/s1600-h/Track%252520Categories%252520over%252520Years%25255B7%25255D.gif"&gt;&lt;img style="display: inline" title="Track Categories over Years" alt="Track Categories over Years" src="http://lh3.ggpht.com/-3BKpI36Cyzc/Tp3uvZ8keoI/AAAAAAAACnc/EXfrmsfW9EA/Track%252520Categories%252520over%252520Years_thumb%25255B3%25255D.gif?imgmax=800" width="400" height="282"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;You can also click on a particular category and track the changes for that particular category over the year.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/-6ROg0NAXZRk/Tp3uCfTzpvI/AAAAAAAACmw/Y0nI9dbO-pQ/s1600-h/Track%252520Selected%252520Category%25255B3%25255D.gif"&gt;&lt;img style="display: inline" title="Track Selected Category" alt="Track Selected Category" src="http://lh5.ggpht.com/-8STL-dvNElQ/Tp3uDQ7GyRI/AAAAAAAACm4/eLqQwcW9p_g/Track%252520Selected%252520Category_thumb%25255B1%25255D.gif?imgmax=800" width="400" height="287"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Isn’t that sweet and simple? &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh5.ggpht.com/-iH13Qoz1LTs/Tp3uD1ZYBOI/AAAAAAAACnA/sSNXwpQ-NpI/wlEmoticon-smile%25255B2%25255D.png?imgmax=800"&gt; Coming from a manufacturing domain, I can already think of lots of scenarios where this can be used (e.g.: tracking price changes, profitability, revenue, stock, sales, etc over time).&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Of late, I have come to realize that some people face difficulties in following blogs by just reading the steps or by seeing a few images. So, I have taken a conscious decision to video-blog the steps whenever I can. You can find the video for this blog below&lt;/font&gt;&lt;/p&gt; &lt;div align="justify"&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:4049e6f6-4d2a-43bd-8a2a-654a9a3ba8e0" class="wlWriterEditableSmartContent"&gt;&lt;div id="8c7c8198-b5aa-4cfe-9d4e-97b4f3ef8edc" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=-QSpTqd1eOs" target="_new"&gt;&lt;img src="http://lh4.ggpht.com/-eZqDUWphWfE/Tp3uEEVWaYI/AAAAAAAACno/gwycKAJqpRQ/video3cd85525d14f%25255B112%25255D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('8c7c8198-b5aa-4cfe-9d4e-97b4f3ef8edc'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;448\&amp;quot; height=\&amp;quot;252\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/-QSpTqd1eOs?hl=en&amp;amp;hd=1\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/-QSpTqd1eOs?hl=en&amp;amp;hd=1\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;448\&amp;quot; height=\&amp;quot;252\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="width:448px;clear:both;font-size:.8em"&gt;Tracking Data over Time in Power View&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Let me know your feedback about this initiative and whether it is helping in conveying my message better. Cheers!&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-525191618903475316?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=aBMJ9p5Gvx4:CXQnn6EMXp4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=aBMJ9p5Gvx4:CXQnn6EMXp4:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=aBMJ9p5Gvx4:CXQnn6EMXp4:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/aBMJ9p5Gvx4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/525191618903475316/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2011/10/tracking-data-over-time-visually-in.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/525191618903475316?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/525191618903475316?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/aBMJ9p5Gvx4/tracking-data-over-time-visually-in.html" title="Tracking Data over Time Visually in Power View aka Project Crescent" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-RlnS3tg69YA/Tp3t3MLQSNI/AAAAAAAACko/Qbq0JR0ciiE/s72-c/1%252520Create%252520Crescent%252520Report_thumb%25255B2%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2011/10/tracking-data-over-time-visually-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4DQHY-eip7ImA9WhdbEkk.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-2969041062573879134</id><published>2011-10-10T07:58:00.000-04:00</published><updated>2011-10-10T07:59:31.852-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-10T07:59:31.852-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SSRS" /><title>Generating QR codes in SSRS</title><content type="html">&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Over the short span of my career, I have seen many people get burnt out and change their careers from technology to some other field. It is easy to get disillusioned with a job that requires you to sit on a chair the entire day and "code" the same stuff. At the same time, I have also met people who are so passionate and enthusiastic about what they do and are still coding away to glory after 15-20 years. What makes those people different, and why don't they get bored of the "same, old mundane coding stuff"? The answer is simple if you do get to observe them - their creative spirit. To quote Edward De Bono, "Creativity involves breaking out of established patterns in order to look at things in a different way." For these people, every day teaches them something new and they like to challenge their limits. They make out new things from the same stuff by looking at it from a different angle. I always make it a point to imbibe this quality in the people I mentor, and try to put across some puzzles where they have to reuse their previous learning in a new way. One of my recent questions was on how to display &lt;a title="Click here to learn more about QR codes" href="http://en.wikipedia.org/wiki/QR_code" target="_blank"&gt;QR codes&lt;/a&gt; in SSRS.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/-zqAOpoQuFnM/TpLeEnowvZI/AAAAAAAACj0/9oknJpNnD4Q/s1600-h/Generating%252520QR%252520code%252520in%252520SSRS%25255B10%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Generating QR code in SSRS" border="0" alt="Generating QR code in SSRS" src="http://lh6.ggpht.com/-RiskX8iy0OI/TpLeExa8u8I/AAAAAAAACj4/rzV3dMXraFs/Generating%252520QR%252520code%252520in%252520SSRS_thumb%25255B8%25255D.jpg?imgmax=800" width="197" height="240"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;br&gt;&lt;font color="#000000" size="2"&gt;On asking this question, most of the answers involved in getting some custom code written (but no-one knew how to write the code) or to get some plug-in from third party vendors (which involved licence costs). But the team had to put on their thinking caps when I said that the only thing they would require is access to the internet.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;For demonstrating the purpose, I have made a report which will generate business cards for all the employees in my fictional company with QR codes. Follow the steps below to generate the report:-&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;1) Create a dataset with the following query&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#9b00d3" size="1"&gt;SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Jason Thomas' AS name, 'www.road-blogs.blogspot.com' AS URL, '00447574713732' AS mob&lt;br&gt;UNION ALL&lt;br&gt;SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Jay Thomas' AS name, 'www.beyondrelational.com' AS URL, '67891' AS mob&lt;br&gt;UNION ALL&lt;br&gt;SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Jean Elizabeth' AS name, 'http://twitter.com/de_unparagoned' AS URL, '12345' AS mob&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Instead of this, you can also use information from your database tables or SSAS cubes. For the sake of simplicity, I am directly hardcoding my dataset.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;2) Drag and drop a list into the layout. Then insert the name, URL and mob details into the list. Also add a company logo to make it look jazzy &lt;font size="1"&gt;&lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://lh5.ggpht.com/-He3J4CooBX0/TpLeFdQ10tI/AAAAAAAACj8/bPJBv6rcdIY/wlEmoticon-winkingsmile%25255B2%25255D.png?imgmax=800"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/-0zyeRf1nVXs/TpLeF3_qDBI/AAAAAAAACkA/EzvdnbFqSmk/s1600-h/BIDS%252520Layout%252520-%252520List%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="BIDS Layout - List" border="0" alt="BIDS Layout - List" src="http://lh6.ggpht.com/-jlROZl9zgMU/TpLeGLjrmFI/AAAAAAAACkE/UOLEqliWTQM/BIDS%252520Layout%252520-%252520List_thumb%25255B1%25255D.jpg?imgmax=800" width="504" height="271"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;3) Drag and drop an image to the list and select the image properties.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/-NT1meJDGtzQ/TpLeGv0HrfI/AAAAAAAACkI/CkuEsAlSUrQ/s1600-h/Image%252520properties%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Image properties" border="0" alt="Image properties" src="http://lh4.ggpht.com/-UIAUknOcyCU/TpLeG27mZmI/AAAAAAAACkM/emEoHW243To/Image%252520properties_thumb%25255B1%25255D.jpg?imgmax=800" width="504" height="292"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;4) Go to the General tab and select the Image Source as External. Then click on the expression and enter the following expression&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font size="1"&gt;=&lt;font color="#a31515"&gt;&lt;font color="#a31515"&gt;"http://qrcode.kaywa.com/img.php?s=8&amp;amp;d="&lt;/font&gt;&lt;/font&gt; + Fields!name.Value + Constants.vbcrlf + Fields!URL.Value + Constants.vbcrlf + Fields!mob.Value&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;This is shown in the image below.&lt;/font&gt;&lt;/p&gt;&lt;/font&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-mXvV_X85HO8/TpLeHdTGS8I/AAAAAAAACkQ/JHtIBoS8Y3Q/s1600-h/How%252520to%252520generate%252520QR%252520code%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="How to generate QR code" border="0" alt="How to generate QR code" src="http://lh3.ggpht.com/-sVSmy_oGy3w/TpLeHwZxQlI/AAAAAAAACkU/czevaAlhd5Y/How%252520to%252520generate%252520QR%252520code_thumb%25255B1%25255D.jpg?imgmax=800" width="504" height="352"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;(You can append any string after the URL though I am using the Name, URL and mobile here)&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;5) Click on preview and you should be able to get the desired results.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-JQXWKKL0eus/TpLeIauHIDI/AAAAAAAACkY/tlXWi5iuwMo/s1600-h/End%252520Result%252520-%252520QR%252520codes%252520in%252520SSRS%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="End Result - QR codes in SSRS" border="0" alt="End Result - QR codes in SSRS" src="http://lh5.ggpht.com/-VnVgXHNYdDI/TpLeI5hnIPI/AAAAAAAACkc/17gMw75vYqg/End%252520Result%252520-%252520QR%252520codes%252520in%252520SSRS_thumb%25255B1%25255D.jpg?imgmax=800" width="504" height="601"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The secret of getting this done is by using the &lt;font color="#a31515"&gt;&lt;a href="http://qrcode.kaywa.com" target="_blank"&gt;Kaywa&lt;/a&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;site which will accept parameters and output the QR code for that as an image. Now there are plenty of &lt;a title="Top 10 free online QR code generators" href="http://freenuts.com/top-10-free-online-qr-code-generators/" target="_blank"&gt;sites&lt;/a&gt; online which will generate QR codes as well as barcodes in this format, and you can use any one of them for doing the same. And since you have already learned before that it is possible to display External images in SSRS, generating QR codes or barcodes is just an application of that knowledge.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;u&gt;Disclaimer&lt;/u&gt;&lt;br&gt;This report was developed just for having some fun with SSRS and for educational purposes. For people who are going to be using this for commercial purposes, I would ask them to go through the conditions of the site which generates QR code (for eg, Kaywa states it’s use should be only for non-commercial reasons).&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-2969041062573879134?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=f0Vb7LDhMUc:9KG5tG1x3Bs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=f0Vb7LDhMUc:9KG5tG1x3Bs:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=f0Vb7LDhMUc:9KG5tG1x3Bs:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/f0Vb7LDhMUc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/2969041062573879134/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2011/10/generating-qr-codes-in-ssrs.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/2969041062573879134?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/2969041062573879134?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/f0Vb7LDhMUc/generating-qr-codes-in-ssrs.html" title="Generating QR codes in SSRS" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-RiskX8iy0OI/TpLeExa8u8I/AAAAAAAACj4/rzV3dMXraFs/s72-c/Generating%252520QR%252520code%252520in%252520SSRS_thumb%25255B8%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2011/10/generating-qr-codes-in-ssrs.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8GRng8fCp7ImA9WhdbEUg.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-3869376666181184978</id><published>2011-10-08T07:13:00.000-04:00</published><updated>2011-10-09T07:13:47.674-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-09T07:13:47.674-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Book / Tool / Software Reviews" /><title>uCertify 70-448 PrepKit Review</title><content type="html">&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Ok, let me put it up very bluntly - I am not a big fan of all those test and preparation sites for certifications that keeps floating around. The main reason for my dislike is that the questions are usually the braindumps of the exams which have been leaked out and many people can cheat their way to a certification just by studying the dumps (I still don't get it why the questions are never changed or shuffled on a regular basis for the Microsoft certifications). This eventually affects the reputation of the certification as well as the credibility of the people who have been certified. And for people who have done it the hard way, it could mean that their efforts have gone in vain. This was the first thought that came to my mind when &lt;a href="http://www.ucertify.com" target="_blank"&gt;uCertify&lt;/a&gt; asked me to review their test preparation software for &lt;a title="TS: Microsoft SQL Server 2008, Business Intelligence Development and Maintenance" href="http://www.microsoft.com/learning/en/us/exam.aspx?id=70-448" target="_blank"&gt;70-448&lt;/a&gt; recently and I was certain that the product would face the ire of my blog if this was going to be another dumps based test site. Luckily it didn’t.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/-j6MbZRYIMdk/TpGBG_hkqFI/AAAAAAAACjE/kV4egv7hgoI/s1600-h/0%252520uCertify%252520HomePage%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="0 uCertify HomePage" border="0" alt="0 uCertify HomePage" src="http://lh6.ggpht.com/-RL214esZuw0/TpGBHbNTnvI/AAAAAAAACjI/0TTkeoXtS4w/0%252520uCertify%252520HomePage_thumb%25255B1%25255D.jpg?imgmax=800" width="504" height="304"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The very first thing that came to my notice after installing the software was the elegant and user friendly UI.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/-CTWP5ef2w20/TpGBIf5rL8I/AAAAAAAACjs/Sh-zvuRiiEc/s1600-h/1%252520uCertify%252520UI.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="1 uCertify UI" border="0" alt="1 uCertify UI" src="http://lh5.ggpht.com/-767iXKL0iC4/TpGBJEBDaSI/AAAAAAAACjw/Le1Fyege0dg/1%252520uCertify%252520UI_thumb.jpg?imgmax=800" width="354" height="332"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The UI has got separate sections for tests, study materials and progress tracking. The tests can be taken in two modes - learn mode (where you can review your answers immediately and read the notes also for it) and test mode (where you would be able to see your answers and score only at the end of the test). uCertify has neatly classified the tests so that there is a diagnostic test in the beginning to assess your level, practice tests to improve your skill levels and the final test (which I think is a bit harder than the real one). &lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The study material section is also pretty handy as it contains all the key concepts in one place. &lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-1RdVvC5xmh8/TpGBJsKD-QI/AAAAAAAACjU/rUVmbfhDF74/s1600-h/2%252520StudyMaterial%25255B8%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="2 StudyMaterial" border="0" alt="2 StudyMaterial" src="http://lh6.ggpht.com/-u0wqlzkql5o/TpGBKNusQeI/AAAAAAAACjY/VZAX-UFgjHk/2%252520StudyMaterial_thumb%25255B4%25255D.jpg?imgmax=800" width="354" height="214"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The test readiness section tracks your history and gives you an indication of how ready you are to take the certification.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/-hFYwcWeossY/TpGBKjOenhI/AAAAAAAACjc/tumOVHA1cIo/s1600-h/3%252520TestReadiness%25255B11%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="3 TestReadiness" border="0" alt="3 TestReadiness" src="http://lh6.ggpht.com/-2q-Gg3cO62M/TpGBLBnQD8I/AAAAAAAACjg/GbfI6Cvif54/3%252520TestReadiness_thumb%25255B5%25255D.jpg?imgmax=800" width="354" height="191"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Another great feature is the Study Helper which explains the key concepts in each of the six chapters required for MCTS 70-448.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-YHM_cGw1dOU/TpGBLr6n93I/AAAAAAAACjk/7J5Pw5kDn7Y/s1600-h/4%252520Study%252520Helper%25255B7%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="4 Study Helper" border="0" alt="4 Study Helper" src="http://lh3.ggpht.com/-9dx8AuIiBwk/TpGBMMW5dPI/AAAAAAAACjo/taARZ1ui7Wk/4%252520Study%252520Helper_thumb%25255B3%25255D.jpg?imgmax=800" width="354" height="253"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Now, coming to the pros and cons of the 70-448 PrepKit&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;strong&gt;&lt;u&gt;Pros&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;1) Extremely strong and user friendly UI which I believe is shared for all the uCertify PrepKits. &lt;br&gt;2) uCertify’s strong policy against &lt;a title="The problem with Braindumps" href="http://www.ucertify.com/blog/the-problem-with-braindumps.html" target="_blank"&gt;Braindumps&lt;/a&gt;&lt;br&gt;3) Comprehensive set of questions with study notes (300+) which are neatly classified &lt;br&gt;4) Test readiness feature gives an indication of when you should appear for your exams&lt;br&gt;5) Money back policy if you don’t pass within your first attempt&lt;br&gt;6) Good simulation of the test environment.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;strong&gt;&lt;u&gt;Cons&lt;br&gt;&lt;/u&gt;&lt;/strong&gt;1) Even though the overall quality of the questions are good, there are some areas of improvement. For eg, questions with pictures of the actual development environment are less.&lt;br&gt;2) The How To section (visuals explaining how to do something) and Articles section are pretty much empty for 70-448.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;strong&gt;&lt;u&gt;Overall&lt;br&gt;&lt;/u&gt;&lt;/strong&gt;My experience suggests that the 70-448 exam is a piece of cake for people with at least 2 years of experience in SSIS, SSAS and SSRS and they would pass the exam by buying and studying the official book - &lt;a title="Microsoft&amp;reg; SQL Server&amp;reg; 2008 Business Intelligence Development and Maintenance" href="http://www.amazon.com/MCTS-Self-Paced-Training-Exam-70-448/dp/0735626367/ref=as_li_wdgt_js_ex?&amp;amp;linkCode=wey&amp;amp;tag=somerandthou-20" target="_blank"&gt;MCTS Self-Paced Training Kit (Exam 70-448)&lt;/a&gt;. But for people who would want to get a feel of the tests before the actual exam or for those who don’t have an all-round work experience in the three sections (SSIS, SSAS, SSRS), I would recommend uCertify 70-448 PrepKit. It’s a good investment considering that you will get your money back if you don’t pass within your first attempt. And also, you can be proud of the fact that you tried to pass the exam honestly and not by depending on the illegal dumps.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;strong&gt;&lt;u&gt;P.S.&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;I am not being paid by uCertify to write this review nor am I getting any benefits out of the sales made through this review. However, my readers can avail a discount of 10% (in addition to any existing sale) on any test preparation software from uCertify by putting the discount code 'UCPREP' in the shopping cart.&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-3869376666181184978?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=n_78fK2K8_Q:8jFN3xh850A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=n_78fK2K8_Q:8jFN3xh850A:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=n_78fK2K8_Q:8jFN3xh850A:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/n_78fK2K8_Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/3869376666181184978/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2011/10/ucertify-70-448-prepkit-review.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/3869376666181184978?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/3869376666181184978?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/n_78fK2K8_Q/ucertify-70-448-prepkit-review.html" title="uCertify 70-448 PrepKit Review" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-RL214esZuw0/TpGBHbNTnvI/AAAAAAAACjI/0TTkeoXtS4w/s72-c/0%252520uCertify%252520HomePage_thumb%25255B1%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2011/10/ucertify-70-448-prepkit-review.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8FQHs8fip7ImA9WhdUGEQ.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-2461762672356461292</id><published>2011-10-06T05:36:00.001-04:00</published><updated>2011-10-06T05:36:51.576-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-06T05:36:51.576-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Activities / Whitepapers / Events" /><title>SQLBits 9 - Hangover</title><content type="html">&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;At the time of writing this post, I can see yellow leaves falling to the pavements and feel the cold breeze kissing my cheeks. No matter how hard I try to resist it, reality is dawning on me that the summer has gone by and that the winter is finally settling in (yeah, I know some of you might argue that we never had a summer. After all, it's been the coldest summer in 18 years). Can't believe that it was only a week before many of us were sweating in the big halls of the Adelphi Hotel in Liverpool. Oh sheesh, I did it again! I tried to avoid it but just like the winter, here comes the &lt;strong&gt;&lt;a title="Click here to read 'SQLBits 8 - Hangover'" href="http://road-blogs.blogspot.com/2011/04/sqlbits-8-hangover.html" target="_blank"&gt;familiar&lt;/a&gt;&lt;/strong&gt; feeling of hangover.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;a href="http://lh5.ggpht.com/-l9pkmF5tT3M/To1080FsGqI/AAAAAAAACf0/lzQQNnv56Xo/s1600-h/SQLBitsLogo3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="SQLBitsLogo" border="0" alt="SQLBitsLogo" src="http://lh4.ggpht.com/--F5PcH6FLKA/To109oVEBgI/AAAAAAAACf4/yKMVlEmSjKs/SQLBitsLogo_thumb1.png?imgmax=800" width="240" height="81"&gt;&lt;/a&gt;&lt;br&gt;This was my third SQLBits and like always, I had been counting down the days from the time SQLBits was announced. Well, this time I had an additional reason - I was presenting a session at SQLBits. More than that, I had also got a &lt;u&gt;free&lt;/u&gt; entry on Friday because I was a speaker (now that calls for a big HURRAY!). Even a loss of pay on Friday couldn't deter me from attending the conference on Friday (I had already exhausted my annual leaves for my wedding in July&lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-sadsmile" alt="Sad smile" src="http://lh5.ggpht.com/-LvvTcYaUtO8/To10-AT7fXI/AAAAAAAACf8/Fixb2BjChr4/wlEmoticon-sadsmile2.png?imgmax=800"&gt;) and I reached there right in time for the keynote.&lt;/font&gt;&lt;/p&gt;&lt;font color="#000000" size="2"&gt; &lt;p align="justify"&gt;Even though the agenda suggested that I would be seeing cloned versions of Steve Tramack in both the Aintree and Lancaster halls using the latest Microsoft &amp;amp; HP technologies (check the agenda &lt;a title="SQLBits 9 Agenda for Friday" href="http://sqlbits.com/(S(fueva455qrdns245thsoiovo))/information/Agenda.aspx" target="_blank"&gt;here&lt;/a&gt;), all I got to see was a bigger room with the wall removed and one Steve Tramack. Or wait, I thought I saw two people on the stage and it definitely wasn't two Steves. Being a victim of the hardships involved in installing and configuring SharePoint myself, I totally appreciated the idea and thought behind the HP Fast Track Solutions for Microsoft SQL Server. The best part is that you can configure a system within a couple of hours what would have definitely taken some weeks. Overall, it was a brilliant start to SQLBits.&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/-juZFRA2qORs/To10_36wMpI/AAAAAAAACgA/N3ozIhyv7iA/s1600-h/IMG_00943.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SQLBits Keynote" border="0" alt="SQLBits Keynote" src="http://lh4.ggpht.com/-HV9B-yhSBeU/To11Az-HywI/AAAAAAAACgE/DNQcPxS_sgA/IMG_0094_thumb1.jpg?imgmax=800" width="244" height="206"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;After that, I went to Matt Masson's (&lt;a href="http://twitter.com/#!/mattmasson" target="_blank"&gt;twitter&lt;/a&gt; | &lt;a href="http://blogs.msdn.com/b/mattm/" target="_blank"&gt;blog&lt;/a&gt;) session on 'What's New in SQL Server Denali for SSIS'. The Facebook social life manager demo was really cool and unique, and also had a peek at many of the new features of SSIS.&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/-3xIoUk3VL-0/To11ECl7b-I/AAAAAAAACgI/jH-oDtlJyNo/s1600-h/IMG_00962.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Matt Mason on SSIS Denali" border="0" alt="Matt Mason on SSIS Denali" src="http://lh4.ggpht.com/-dpPXIEkLWLI/To11uXtJbsI/AAAAAAAACgM/IM3hR2noqAg/IMG_0096_thumb.jpg?imgmax=800" width="244" height="184"&gt;&lt;/a&gt;&lt;a href="http://lh5.ggpht.com/-ovMNMLg_rbQ/To11wcROqtI/AAAAAAAACgQ/SieIQYhG-lU/s1600-h/IMG_00972.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Matt Mason on SSIS Denali" border="0" alt="Matt Mason on SSIS Denali" src="http://lh6.ggpht.com/-OEkTIOMVnA4/To11w7mZnyI/AAAAAAAACgU/wsxUTDwCUE8/IMG_0097_thumb.jpg?imgmax=800" width="244" height="184"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Next on my list was ‘Basic BISM’ by Chris Webb (&lt;a href="http://cwebbbi.wordpress.com/" target="_blank"&gt;blog&lt;/a&gt;). This was an introductory session on Business Intelligence Semantic Model and was extremely helpful to people like me who were more or less on the start of the learning curve. Chris also touched upon the advantages and disadvantages of the tabular mode in this session.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-sjKGxj5OhEw/To11yi97ZrI/AAAAAAAACgY/qm9CuPWq7p4/s1600-h/IMG_00993.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Chris Webb on BISM" border="0" alt="Chris Webb on BISM" src="http://lh5.ggpht.com/-6Zkc9uojjqA/To11zwuQRJI/AAAAAAAACgc/xwkVveM0Qyg/IMG_0099_thumb.jpg?imgmax=800" width="244" height="184"&gt;&lt;/a&gt;&lt;a href="http://lh5.ggpht.com/-YMm4MLJ6C3E/To111QeaUaI/AAAAAAAACgg/q4_6eV1AVss/s1600-h/IMG_01003.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Chris Webb on BISM" border="0" alt="Chris Webb on BISM" src="http://lh6.ggpht.com/-v2G2B0xvX6E/To1112RpjVI/AAAAAAAACgk/2HCSu9XhBI4/IMG_0100_thumb.jpg?imgmax=800" width="244" height="184"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Then I went for the ‘Myths and Monster of Flash’ session by Fusion-IO where Steve Wharton (&lt;a href="http://twitter.com/#!/FusionioUK" target="_blank"&gt;twitter&lt;/a&gt; | &lt;a href="http://www.fusionio.com/blog/" target="_blank"&gt;blog&lt;/a&gt;) presented some of the characteristics and mechanics of the NAND flash.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-Gxk-noJsWcw/To113msXkOI/AAAAAAAACgo/E2HPYeQfpkA/s1600-h/IMG_01024.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Steve Wharton - Fusion io" border="0" alt="Steve Wharton - Fusion io" src="http://lh4.ggpht.com/-wws9eATCa5U/To114jBoPPI/AAAAAAAACgs/HNdt8Vij3uU/IMG_0102_thumb1.jpg?imgmax=800" width="184" height="244"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Later I spent some time walking around the stalls and talking with the exhibitors. It was so interesting and informative at the same time that I actually spent a lot more time than I intended to and missed the next session as a result.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/-toeJl0nswTc/To117bO_DdI/AAAAAAAACgw/UaJj7U8T9fo/s1600-h/DSC_01142.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SQLBits exhibitor space" border="0" alt="SQLBits exhibitor space" src="http://lh6.ggpht.com/-AheTNw44NT8/To118Q4DOgI/AAAAAAAACg0/uSzjI5VVLps/DSC_0114_thumb.jpg?imgmax=800" width="244" height="163"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The next session was one of my most awaited ones – ‘iPad and Powerpivot-Mobile Business Intelligence in action’ by Jennifer Stirrup (&lt;a href="http://twitter.com/#!/jenstirrup" target="_blank"&gt;twitter&lt;/a&gt; | &lt;a href="http://www.jenstirrup.com/" target="_blank"&gt;blog&lt;/a&gt;). I had been planning to catch hold of Jen’s sessions for a long time and finally made it this time. Not to say, I had a great time learning about mobile BI and some of the best practices in visualizations. &lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/-Si31suPXDPY/To11-dPaBuI/AAAAAAAACg4/9kMqe0pO2o4/s1600-h/IMG_01033.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMG_0103" border="0" alt="IMG_0103" src="http://lh4.ggpht.com/-4zyYBoredyU/To11_M92knI/AAAAAAAACg8/EMd2QdCtetU/IMG_0103_thumb.jpg?imgmax=800" width="244" height="184"&gt;&lt;/a&gt;&lt;a href="http://lh4.ggpht.com/-aOBa6occLMI/To12CP4SxPI/AAAAAAAAChA/33DEEKH3zak/s1600-h/IMG_01043.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMG_0104" border="0" alt="IMG_0104" src="http://lh4.ggpht.com/-_PEQk9SAREI/To12DUsZDsI/AAAAAAAAChE/je0hhr7dpBo/IMG_0104_thumb.jpg?imgmax=800" width="244" height="184"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;One of the other things I was really looking forward to was meeting Hrvoje (&lt;a href="http://twitter.com/#!/HrvojePiasevoli" target="_blank"&gt;twitter&lt;/a&gt; | &lt;a href="http://hrvoje.piasevoli.com/" target="_blank"&gt;blog&lt;/a&gt;) and Tomislav Piasevoli (&lt;a href="http://twitter.com/#!/tpiasevoli" target="_blank"&gt;twitter&lt;/a&gt; | &lt;a href="http://tomislav.piasevoli.com/" target="_blank"&gt;blog&lt;/a&gt;) who were coming down to SQLBIts all the way from Croatia. So after the sessions, I met up with the Piasevoli brothers and we headed to the Cavern Pub for washing down our throats. Had an extremely great time with them as is evident from all the photographs.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-RsCS7c4ab7M/To12FZ4QVHI/AAAAAAAAChI/BPfH7FCXDSk/s1600-h/TP-Fotos4.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Tomislav, me and Hrvoje at Cavern Pub" border="0" alt="Tomislav, me and Hrvoje at Cavern Pub" src="http://lh4.ggpht.com/-XsxDWnua_Y8/To12HIzu9ZI/AAAAAAAAChM/XNxaWdVxRKM/TP-Fotos_thumb2.jpg?imgmax=800" width="504" height="285"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;We were keeping a tab on the time as we did not want to be late for the much anticipated event of the night – James Bond Casino Night. It really was a great experience walking in to the hall which had now transformed into a casino and we started gambling with the fake money provided to us. Most of the people were appropriately dressed in their James Bond attires also, which made the experience even better. I am sure all of us would have left the place declaring this as the best post event party in SQLBits till date.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/-TcZ7JiYXGlc/To12JZpqt4I/AAAAAAAAChQ/SR7EeigrdKQ/s1600-h/Fotos3.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SQLBits James Bond Casino Night" border="0" alt="SQLBits James Bond Casino Night" src="http://lh6.ggpht.com/-KZF0oUYIkPI/To12MYGnJWI/AAAAAAAAChU/wZpkOoqDkWM/Fotos_thumb1.jpg?imgmax=800" width="504" height="285"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The next day, I had to wake up at an unearthly hour as I had to rush for my 8.10 am session on ‘Fast Track to Spatial Reporting’. The demo material for my session are available for download &lt;a title="Fast Track to Spatial Reporting - SQLBits session material for download" href="http://road-blogs.blogspot.com/2011/10/fast-track-to-spatial-reporting-sqlbits.html" target="_blank"&gt;here&lt;/a&gt;. Got a few pics of my session too, thanks to Tomislav.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/-4B4QsoUbYmk/To12NyxHo2I/AAAAAAAAChY/iRG6IZgNPJU/s1600-h/DSC_01127.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Jason on Spatial Reporting" border="0" alt="Jason on Spatial Reporting" src="http://lh3.ggpht.com/-onR8DeT4MEQ/To12PJRNntI/AAAAAAAAChc/y_Ep5c1FYOo/DSC_0112_thumb18.jpg?imgmax=800" width="244" height="163"&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/-e3ivYt0WIjk/To12RIOMhMI/AAAAAAAAChg/yzX9FaZhRVg/s1600-h/DSC_01112.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Jason on Spatial Reporting" border="0" alt="Jason on Spatial Reporting" src="http://lh3.ggpht.com/-BhScXFe3wJQ/To12RldHBlI/AAAAAAAAChk/j_WbG7mawdU/DSC_0111_thumb.jpg?imgmax=800" width="244" height="163"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;The next three sessions I attended was definitely the highlight for many in this version of SQLBits. The first of the series was ‘Building Great Models for Crescent’ by Kasper Jonge (&lt;a href="http://twitter.com/#!/kjonge" target="_blank"&gt;twitter&lt;/a&gt; | &lt;a href="http://www.powerpivotblog.nl/" target="_blank"&gt;blog&lt;/a&gt;). His session was jam packed with demos and being a reporting person myself, it was really nice to watch all the new features in Crescent.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-gc2SrrlxSgI/To12SZXxiqI/AAAAAAAACho/NQFwtWFgDNM/s1600-h/DSC_01302.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Kasper Jonge on Crescent" border="0" alt="Kasper Jonge on Crescent" src="http://lh6.ggpht.com/-25Vk5NlenSY/To12TNfQtFI/AAAAAAAAChs/2601ZTPl-RQ/DSC_0130_thumb.jpg?imgmax=800" width="244" height="163"&gt;&lt;/a&gt;&lt;a href="http://lh5.ggpht.com/-cfQ46T2X8TQ/To12UuGdPkI/AAAAAAAAChw/NzqhQYhpXdw/s1600-h/IMG_01108.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Kasper Jonge on Crescent" border="0" alt="Kasper Jonge on Crescent" src="http://lh3.ggpht.com/-j2vBapBFhaM/To12VGG1yNI/AAAAAAAACh0/FRPONzyQewk/IMG_0110_thumb9.jpg?imgmax=800" width="244" height="164"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The next of the series was ‘Vertipaq vs. OLAP: Change your Data Modelling Approach’ by Marco Russo (&lt;a href="http://twitter.com/#!/marcorus" target="_blank"&gt;twitter&lt;/a&gt; | &lt;a href="http://sqlblog.com/blogs/marco_russo/" target="_blank"&gt;blog&lt;/a&gt;). Most of the perceptions that I had built about data-modelling was challenged and I was forced to see them in a new light when I am modelling in Vertipaq.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/-hO6bnFM9c94/To12WVNpx-I/AAAAAAAACh4/rRfdgQeqOZA/s1600-h/DSC_01385.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="DSC_0138" border="0" alt="DSC_0138" src="http://lh6.ggpht.com/-Pq76uJzx2nk/To12XRDfdMI/AAAAAAAACh8/Yfm9fi7-Uow/DSC_0138_thumb1.jpg?imgmax=800" width="244" height="163"&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/-VVWNh48WReA/To12Z3tZq3I/AAAAAAAACiA/CWwlvgTCnlk/s1600-h/IMG_01114.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMG_0111" border="0" alt="IMG_0111" src="http://lh3.ggpht.com/-B7038agWVtk/To12an4PSVI/AAAAAAAACiE/RiRrHVsJUaA/IMG_0111_thumb7.jpg?imgmax=800" width="244" height="163"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Alberto Ferrari (&lt;a href="http://twitter.com/#!/FerrariAlberto" target="_blank"&gt;twitter&lt;/a&gt; | &lt;a href="http://sqlblog.com/blogs/alberto_ferrari/" target="_blank"&gt;blog&lt;/a&gt;) was next on the stage with ‘Many-to-Many Relationships in DAX’ and I was seriously amazed at how he presented such a complex topic in such an easily understandable format. This was one of the moments where I wished if only I had such people as my professors when I was studying in my University. &lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-AUlYiTeBeVY/To12bwieDNI/AAAAAAAACiI/Dh86osBMCsg/s1600-h/DSC_01445.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="DSC_0144" border="0" alt="DSC_0144" src="http://lh3.ggpht.com/-OrHjC6zNxRI/To12coBbwYI/AAAAAAAACiM/FfVaXFiix2k/DSC_0144_thumb1.jpg?imgmax=800" width="244" height="163"&gt;&lt;/a&gt;&lt;a href="http://lh4.ggpht.com/-Y76a8r2P2JI/To12faEFfMI/AAAAAAAACiQ/DgQbPzsUtog/s1600-h/IMG_01154.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMG_0115" border="0" alt="IMG_0115" src="http://lh3.ggpht.com/-6rSzQ1kmy9s/To12fwSOaxI/AAAAAAAACiU/mDRw4U06-v8/IMG_0115_thumb7.jpg?imgmax=800" width="244" height="162"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;I checked in to the ‘Lightning Talks’ soon after, something which I wanted to do in last time’s SQLBits itself but couldn’t because it was clashing with another session. It was great to see the likes of Kasper Jonge, Martin Newman, Andrew Fryer, Richard Douglas, Ed Vassie, Neil Hambly and Tobiasz Koprowski share the same stage.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/-WXQYAJFXKVE/To12hyO8oCI/AAAAAAAACiY/xwE_AVtE-QE/s1600-h/IMG_01173.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMG_0117" border="0" alt="IMG_0117" src="http://lh6.ggpht.com/-FcwKIcw_UX8/To12iUKbeVI/AAAAAAAACic/jBBcjiIHXrg/IMG_0117_thumb.jpg?imgmax=800" width="244" height="184"&gt;&lt;/a&gt;&lt;a href="http://lh3.ggpht.com/-yMcVM6b_v58/To12lPGhcRI/AAAAAAAACig/EeJhGRi6Xz4/s1600-h/IMG_01183.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMG_0118" border="0" alt="IMG_0118" src="http://lh4.ggpht.com/-1fxKtGGnNo8/To12lrfc2dI/AAAAAAAACik/6rxtIwLaA2s/IMG_0118_thumb.jpg?imgmax=800" width="244" height="184"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The last session of the day was kept aside for Duncan Sutcliffe’s (&lt;a href="http://twitter.com/#!/duncansutcliffe" target="_blank"&gt;twitter&lt;/a&gt; | &lt;a href="http://duncansutcliffe.wordpress.com/" target="_blank"&gt;blog&lt;/a&gt;) session on ‘Kerberos-All You Need to Know in One Hour’. As usual, Duncan just blew everyone apart with his unique presentation style and all in all, it was one of the most comprehensive sessions on Kerberos that I have seen.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-CL1xCfcv1pI/To12nS4sWoI/AAAAAAAACio/NVdsauD-AKg/s1600-h/IMG_01193.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMG_0119" border="0" alt="IMG_0119" src="http://lh4.ggpht.com/-1oJIyO9xszA/To12oDQSWgI/AAAAAAAACis/TTlFS4zoH9I/IMG_0119_thumb.jpg?imgmax=800" width="244" height="184"&gt;&lt;/a&gt;&lt;/p&gt;&lt;span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; letter-spacing: normal; font: 15px/20px arial, tahoma, helvetica, freesans, sans-serif; white-space: normal; orphans: 2; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Soon we had the customary post event party and lots of prizes were announced from Kindles to Xboxes. A big thanks to all the sponsors without whom SQLBits would not have been possible.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/-5-I7m0tO8ZE/To12pPzCsVI/AAAAAAAACiw/quQ622Exk70/s1600-h/Sponsors4.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Sponsors" border="0" alt="Sponsors" src="http://lh6.ggpht.com/-0_pFfz4CKYo/To12p0ext6I/AAAAAAAACi0/QpTvXHpXvR4/Sponsors_thumb2.jpg?imgmax=800" width="504" height="193"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;Also a moment thanking all the guys behind this - Simon Sabin, Christian Bolton, James Rowland-Jones, Martin Bell, Darren Green, Chris Webb, Allan Mitchell, Tim Kent, Chris Testa-O’Neill and all the helpers. A big, BIG,&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;font size="3"&gt;BIG&lt;/font&gt;&lt;/strong&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;thanks to all of you guys.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;/span&gt;&lt;font color="#000000" size="2"&gt;Once the party was over, all that was left for us to do was to reminisce the last two three days and wait eagerly for the next version of SQLBits. Well, myself, Hrvoje, Tomislav and Kasper also found something else to do while reminiscing &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://lh6.ggpht.com/-_1cwr-ZzzjA/To12qTs7FxI/AAAAAAAACi4/p9lWVGYXPJg/wlEmoticon-winkingsmile2.png?imgmax=800"&gt;, see below for a hint.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/-WexHUgggqVU/To12ro7QjMI/AAAAAAAACi8/Df3GtCwpIOY/s1600-h/DSC_01574.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Jason, Kasper, Hrvoje and Tomislav" border="0" alt="Jason, Kasper, Hrvoje and Tomislav" src="http://lh6.ggpht.com/-Sh9mqCrqbrE/To12sTWXY4I/AAAAAAAACjA/oG0xS5zFEUI/DSC_0157_thumb2.jpg?imgmax=800" width="504" height="336"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;As for the winter, I would like to borrow a few lines from Percy Shelley – If Winter comes, can Spring be far behind?&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-2461762672356461292?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=w-5QJQiJgr0:Az8RhWfnpB4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=w-5QJQiJgr0:Az8RhWfnpB4:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=w-5QJQiJgr0:Az8RhWfnpB4:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/w-5QJQiJgr0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/2461762672356461292/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2011/10/sqlbits-9-hangover.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/2461762672356461292?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/2461762672356461292?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/w-5QJQiJgr0/sqlbits-9-hangover.html" title="SQLBits 9 - Hangover" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/--F5PcH6FLKA/To109oVEBgI/AAAAAAAACf4/yKMVlEmSjKs/s72-c/SQLBitsLogo_thumb1.png?imgmax=800" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2011/10/sqlbits-9-hangover.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMGQXk5fCp7ImA9WhdUFUU.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-5393574283992641574</id><published>2011-10-02T14:31:00.000-04:00</published><updated>2011-10-02T14:33:40.724-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-02T14:33:40.724-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="My Sessions" /><title>Fast Track to Spatial Reporting - SQLBits session material for download</title><content type="html">&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;So one more objective struck off from my annual list. Even though I had nightmares where my laptop crashed just before my session, nothing untoward happened and I managed to complete my first session at SQLBits without any problems.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-fNMMVVtoKZ0/ToiuLyGj0hI/AAAAAAAACfs/TmuXtm3u6aA/s1600-h/IMG_0120%25255B6%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="SQLBits 9 Query Across the Merseyside Speaker" border="0" alt="SQLBits 9 Query Across the Merseyside Speaker" src="http://lh5.ggpht.com/-c-jV7GpgvEw/ToiuMk4yreI/AAAAAAAACfw/7H_9Rx9st_o/IMG_0120_thumb%25255B4%25255D.jpg?imgmax=800" width="244" height="153"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The session was scheduled on Oct 1 at 8.10 am in the morning (at a time when I would&lt;/font&gt;&lt;font color="#000000" size="2"&gt; normally be snoring in my bed). There was a brief moment of confusion when I discovered around 7.30 am that my laptop did not have the VGA port for plugging in the projector (the new DELL systems just have the HDMI and mini USB ports). Luckily, James Boother (&lt;a href="http://twitter.com/#!/JimmyBoo" target="_blank"&gt;twitter&lt;/a&gt; | &lt;a href="http://boother.co.uk/" target="_blank"&gt;blog&lt;/a&gt;) and Neil Hambly (&lt;a href="http://twitter.com/#!/Neil_Hambly" target="_blank"&gt;twitter&lt;/a&gt; | &lt;a href="http://sqlblogcasts.com/blogs/NeilHambly" target="_blank"&gt;blog&lt;/a&gt;) helped me get a converter and salvaged the situation. I was able to complete all the demos within the stipulated 1 hour time though I thought I had to race at some parts. Anyways, I will be blogging about my overall SQLBits 9 experience in detail soon. Till then, feel free to download the materials that I used in my session below:-&lt;/font&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;font color="#000000" size="2"&gt;&lt;a title="Download the session slides" href="https://docs.google.com/leaf?id=0B1k6zmQ4NXQlY2UwZTBhMWUtMzljOS00OTMxLWJmNmMtYjRlNzE4OGQzMzRj&amp;amp;hl=en_US" target="_blank"&gt;Session slides&lt;/a&gt; – contains the PowerPoint presentation (2 MB)&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font color="#000000" size="2"&gt;&lt;a title="Download the report rdls" href="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B1k6zmQ4NXQlYjhjNDNlOTAtMDBhOS00MTM2LWFhZmItMzE2MzE0MWJlZDM5&amp;amp;hl=en_US" target="_blank"&gt;Report RDLs&lt;/a&gt; – contains all the report files used in the demo (12 MB)&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font color="#000000" size="2"&gt;&lt;a title="Download the MAP database backup" href="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B1k6zmQ4NXQlZTU2ZGY4MjgtOGRlZi00Y2I5LThhODAtMGEyNDZiMmY5ZmY1&amp;amp;hl=en_US" target="_blank"&gt;Database backup&lt;/a&gt; – contains the spatial database used for the reports (41 MB)&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font color="#000000" size="2"&gt;&lt;a title="Download demo notes" href="https://docs.google.com/leaf?id=0B1k6zmQ4NXQlNTAwMTVjNjMtNWU5NS00YjNmLTlmOWYtMDU5YmQ3ODA4MGRh&amp;amp;hl=en_US&amp;amp;pli=1" target="_blank"&gt;Demo notes&lt;/a&gt; – short notes describing the demo (5 KB)&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-5393574283992641574?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=BtlxBfi61X0:CGmO26-fNE4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=BtlxBfi61X0:CGmO26-fNE4:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=BtlxBfi61X0:CGmO26-fNE4:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/BtlxBfi61X0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/5393574283992641574/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2011/10/fast-track-to-spatial-reporting-sqlbits.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/5393574283992641574?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/5393574283992641574?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/BtlxBfi61X0/fast-track-to-spatial-reporting-sqlbits.html" title="Fast Track to Spatial Reporting - SQLBits session material for download" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-c-jV7GpgvEw/ToiuMk4yreI/AAAAAAAACfw/7H_9Rx9st_o/s72-c/IMG_0120_thumb%25255B4%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2011/10/fast-track-to-spatial-reporting-sqlbits.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUNRX47cCp7ImA9WhdbEUg.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-7560603177880450145</id><published>2011-09-22T15:58:00.001-04:00</published><updated>2011-10-09T07:04:54.008-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-09T07:04:54.008-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Book / Tool / Software Reviews" /><title>Book Review : MDX with Microsoft SQL Server 2008 R2 Analysis Services Cookbook</title><content type="html">&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;What do you do in your evenings when you are sent off from your base location on a month long consulting assignment? Well, I had an option to soak up the old Beatles numbers in the Cavern Pub (the birthplace of Beatles) every evening, now that I am in Liverpool. But a particular book got me hooked this time and every weekday was just a restless wait for the evening to come. My readers, you might be misled by my words in thinking that I am reading the latest Dan Brown thriller but trust me, I am not exaggerating when I say that I couldn’t keep this book down till I completed it. &lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;a href="http://www.packtpub.com/mdx-with-microsoft-sql-server-2008-r2-analysis-services/book"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="MDX with Microsoft SQL Server 2008 R2 Analysis Services Cookbook" border="0" alt="MDX with Microsoft SQL Server 2008 R2 Analysis Services Cookbook" src="http://lh3.ggpht.com/-kkDLdFFw-70/Tnw8gA9GUHI/AAAAAAAACfo/bH8KynLKpZs/Image%252520MDX%252520with%252520Microsoft%252520SQL%252520Server%2525202008%252520R2%252520Analysis%252520Services%252520Cookbook.jpg?imgmax=800" width="197" height="244"&gt;&lt;/a&gt;Neither the book nor the author needs introduction. The book has already been lauded by most of the industry experts like &lt;a href="http://cwebbbi.wordpress.com/2011/08/11/new-mdx-book-mdx-with-microsoft-sql-server-2008-r2-analysis-services-cookbook/" target="_blank"&gt;Chris Webb&lt;/a&gt;, &lt;a href="http://sqlblog.com/blogs/marco_russo/archive/2011/08/25/mdx-cookbook-a-new-must-read.aspx" target="_blank"&gt;Marco Russo&lt;/a&gt;, &lt;a href="http://dwbi1.wordpress.com/2011/09/01/tomislav%E2%80%99s-mdx-book/" target="_blank"&gt;Vincent Rainardi&lt;/a&gt;, etc. Tomislav Piasevoli (&lt;a title="Microsoft Most Valuable Professional" href="https://mvp.support.microsoft.com/profile=DEA838FA-0C13-49F0-B2A0-1E4AC71E7451" target="_blank"&gt;MVP&lt;/a&gt; | &lt;a href="http://tomislav.piasevoli.com/" target="_blank"&gt;blog&lt;/a&gt; | &lt;a href="http://twitter.com/#!/tpiasevoli" target="_blank"&gt;twitter&lt;/a&gt;) has been one of my favourite bloggers and I have been following him for quite some years now. So it wasn’t quite surprising that I have been following up on the book updates ever since I saw the RAW e-book version (something like a beta release, just has a few chapters) on my PackT online subscription during the month of March. And luckily for me, the launch of the book coincided with my consulting assignment. I have spent quality time with the book most of these evenings (in fact, so much that I think it made my wife jealous &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh3.ggpht.com/-iBG04JIT1sM/TnuTVz20A2I/AAAAAAAACfk/GIPgoOfTroo/wlEmoticon-smile%25255B2%25255D.png?imgmax=800"&gt;) and I am thoroughly impressed with the format of the book.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Walking back the memory lane, I always yearned for a SSAS book that had examples of common design and implementation issues and was overjoyed to find the same in &lt;a href="http://www.amazon.com/Expert-Development-Microsoft-Analysis-Services/dp/1847197221/ref=as_li_wdgt_js_ex?&amp;amp;linkCode=wey&amp;amp;tag=somerandthou-20" target="_blank"&gt;Expert Cube Development with Microsoft SQL Server 2008 Analysis Services&lt;/a&gt;. Once I went through this book completely, I tried to find a similar one for MDX too but in vain (found one for SSRS in the process - &lt;a href="http://www.amazon.com/Microsoft-Server-Reporting-Services-Recipes/dp/0470563117/?tag=widgetsamazon-20" target="_blank"&gt;Microsoft SQL Server Reporting Services Recipes for Designing Expert Reports&lt;/a&gt;). Well, I am glad to say that the search has finally ended with the advent of the MDX cookbook by Tomislav. The book follows a simple and easy to understand structure throughout the 9 chapters :&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;- Getting ready :- getting the pre-requisite queries ready for the task&lt;br&gt;- How to do it :- how to do the task&lt;br&gt;- How it works :- how the task works&lt;br&gt;- There’s more :- alternate ways and more information on the task&lt;br&gt;- See also :- links to related information and tasks&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Once I got familiar with the format, I was just reading the ‘Getting ready’ part and trying to solve the task on my own. After that, I would compare my answers with the next 2 sections and it enriched my reading experience. Though the initial chapters were relatively easy, I was scratching my head as the chapters neared the end and I have learned a lot of new things through this book. This is not really intended to be your first MDX book but is a &lt;strong&gt;&lt;u&gt;MUST HAVE&lt;/u&gt;&lt;/strong&gt; once you have tasted a bit of MDX. All you MDX developers, you are definitely missing out on a great book if you haven’t read this. Now if you are not sure where to buy it from, here is the &lt;a title="Buy 'MDX with Microsoft SQL Server 2008 R2 Analysis Services Cookbook' Paperback from Amazon" href="http://www.amazon.com/Microsoft-Server-Analysis-Services-Cookbook/dp/1849681309/ref=as_li_wdgt_js_ex?&amp;amp;linkCode=wey&amp;amp;tag=somerandthou-20" target="_blank"&gt;link&lt;/a&gt;. The Kindle version is also available in Amazon and you can download a sample from &lt;a title="Kindle version" href="http://www.amazon.com/Microsoft-Analysis-Services-Cookbook-ebook/dp/B005HIK89S/ref=as_li_wdgt_js_ex?&amp;amp;linkCode=wey&amp;amp;tag=somerandthou-20" target="_blank"&gt;here&lt;/a&gt; to get a better feel of how the cookbook and its recipes are structured. As for me, I have just added it to the favourites on my blog’s Amazon widget.&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-7560603177880450145?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=9vqwbODBcuo:5x31pUoyIME:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=9vqwbODBcuo:5x31pUoyIME:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=9vqwbODBcuo:5x31pUoyIME:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/9vqwbODBcuo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/7560603177880450145/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2011/09/book-review-mdx-with-microsoft-sql.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/7560603177880450145?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/7560603177880450145?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/9vqwbODBcuo/book-review-mdx-with-microsoft-sql.html" title="Book Review : MDX with Microsoft SQL Server 2008 R2 Analysis Services Cookbook" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-kkDLdFFw-70/Tnw8gA9GUHI/AAAAAAAACfo/bH8KynLKpZs/s72-c/Image%252520MDX%252520with%252520Microsoft%252520SQL%252520Server%2525202008%252520R2%252520Analysis%252520Services%252520Cookbook.jpg?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2011/09/book-review-mdx-with-microsoft-sql.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMMQH4-fCp7ImA9WhdQEEo.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-4069449216196944683</id><published>2011-08-11T10:21:00.001-04:00</published><updated>2011-08-11T10:21:21.054-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-11T10:21:21.054-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Denali" /><category scheme="http://www.blogger.com/atom/ns#" term="SSRS" /><title>Export to Excel upgrades in SSRS Denali CTP3</title><content type="html">&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;I don’t know whether it is the same with you guys but for me, it is a bit hard to get on track and start work after a long vacation. Usually, the initial few days are spent idle before the computer and if I don’t make an effort to control it, my moods become crankier than the schoolboy who doesn’t want to go to school. However this time has been a bit easier for two reasons: (a) My wife who is a constant source of encouragement (benefits of being newly wed! &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://lh3.ggpht.com/-0A7TpMd4zZs/TkPlJbPSiOI/AAAAAAAACd4/lp30MGSclV0/wlEmoticon-winkingsmile2.png?imgmax=800"&gt;) and (b) release of SQL Server Denali CTP3. There has been lots of interesting and new features to test out and this has become the proverbial carrot for me to get out of my sluggishness. This article is about one of those new features in SSRS Denali CTP3 – the feature upgrades in exporting a SSRS report to Excel.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/-CdsPFnD03iY/TkPlKJsoJ3I/AAAAAAAACd8/GWeJRkumeXQ/s1600-h/Denali-xlsx-feature4.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Denali xlsx feature" border="0" alt="Denali xlsx feature" src="http://lh6.ggpht.com/-31hvhzu55l0/TkPlK6qnZ6I/AAAAAAAACeA/JjDhiMYlvK4/Denali-xlsx-feature_thumb2.jpg?imgmax=800" width="176" height="244"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;Before I start listing down the new features, I would like to show you guys a screenshot of the new developer environment.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-KwEI5ya5uMI/TkPlLgzHYZI/AAAAAAAACeE/a4AASwQ2hb0/s1600-h/Denali%252520dev%252520environment.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Denali dev environment" border="0" alt="Denali dev environment" src="http://lh3.ggpht.com/-Vy31P5fNqcw/TkPlMfjeNlI/AAAAAAAACeI/BMLlPAMJatA/Denali%252520dev%252520environment_thumb.jpg?imgmax=800" width="554" height="302"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Yes, the old BIDS has given way to a new mean Visual Studio 2010 environment and I totally dig the blue background. Isn’t it cool?&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Now before I get distracted with the other features, it is high time I say the upgrade is – SSRS renders a report to the native format of Microsoft Excel 2007-2010. The format is &lt;strong&gt;Office Open XML&lt;/strong&gt;. The content type of files generated by this renderer is &lt;strong&gt;application/vnd.openxmlformats-officedocument.spreadsheetml.sheet&lt;/strong&gt; and the file extension of files is &lt;strong&gt;.xlsx&lt;/strong&gt;. The benefits of this over the previous .xls format (Excel 2003) are listed below:-&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#008040" size="2"&gt;&lt;strong&gt;1) &lt;u&gt;Max columns per worksheet increased from 256 to 16,384&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;If you are exporting a report with more than 256 columns in a worksheet to the normal .xls format in Denali or in SSRS versions prior to Denali, you will get the following error message&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-zpgZNLpBWm8/TkPlM62mXhI/AAAAAAAACeM/gY6-2zw3oRU/s1600-h/Max%252520columns%252520error%252520in%252520excel%252520SSRS%25255B5%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Max columns error in excel SSRS" border="0" alt="Max columns error in excel SSRS" src="http://lh6.ggpht.com/-8TXcoW0ogu4/TkPlNpLsJEI/AAAAAAAACeQ/8gcGS-ngDIc/Max%252520columns%252520error%252520in%252520excel%252520SSRS_thumb%25255B3%25255D.jpg?imgmax=800" width="404" height="206"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;You will no longer see this error message if you are exporting to the .xlsx format.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#008040" size="2"&gt;&lt;strong&gt;2) &lt;u&gt;Max rows per worksheet increased from 65,536 to 1,048,576&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Similarly, if you are trying to export a report with more than 65,536 rows in a worksheet to the normal .xls format, you would be greeted with the following error message.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-M0IBShS3TCk/TkPlOW7NA_I/AAAAAAAACeU/yGASAUZGZGc/s1600-h/Max%252520rows%252520error%252520in%252520excel%252520SSRS%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Max rows error in excel SSRS" border="0" alt="Max rows error in excel SSRS" src="http://lh6.ggpht.com/-naBarDSlAqA/TkPlPIxq1dI/AAAAAAAACeY/8LzyentMfzw/Max%252520rows%252520error%252520in%252520excel%252520SSRS_thumb%25255B1%25255D.jpg?imgmax=800" width="404" height="214"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;However, this will no longer be an issue when you export to the new .xlsx format.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#008040" size="2"&gt;&lt;strong&gt;3) &lt;u&gt;No of colours allowed in a worksheet increased from 56 to approx. 16 million&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;font color="#000000"&gt;I am sure this is a very welcome move for many. Prior to Denali, you couldn’t get more than 56 colours in a worksheet but with the new .xlsx format, this is very much possible. For eg, consider the&lt;/font&gt; following colour matrix that I made in BIDS.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-pSfYa7BJD-U/TkPlP0Ik2FI/AAAAAAAACec/UUPMftOCYh4/s1600-h/Denali%252520SSRS%252520colour%252520matrix%25255B9%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Denali SSRS colour matrix" border="0" alt="Denali SSRS colour matrix" src="http://lh3.ggpht.com/-2VYU-Efuvsg/TkPlQqmlvHI/AAAAAAAACeg/dUKfPJkGR30/Denali%252520SSRS%252520colour%252520matrix_thumb%25255B5%25255D.jpg?imgmax=800" width="504" height="169"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Now when I export it to .xls (Excel 2003) format, I get the following output in excel&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-6lmPD75SA88/TkPlS3JcA9I/AAAAAAAACek/JLKAHBqiIdo/s1600-h/Denali%252520SSRS%252520colour%252520matrix%252520xls%252520format%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Denali SSRS colour matrix xls format" border="0" alt="Denali SSRS colour matrix xls format" src="http://lh6.ggpht.com/-zxv-rriReUM/TkPlTjeIljI/AAAAAAAACeo/ORZj_jk8Uao/Denali%252520SSRS%252520colour%252520matrix%252520xls%252520format_thumb%25255B1%25255D.jpg?imgmax=800" width="504" height="142"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;We can see that the entire last row is blacked out due to the colour limit. However, if we export it to the .xlsx format, we get the proper output.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/-pm0eBEI9c2U/TkPlUGJ3Q-I/AAAAAAAACes/y_Rl9LJyHSM/s1600-h/Denali%252520SSRS%252520colour%252520matrix%252520xlsx%252520format%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Denali SSRS colour matrix xlsx format" border="0" alt="Denali SSRS colour matrix xlsx format" src="http://lh5.ggpht.com/-jHOxwIp4Q70/TkPlU2A2TeI/AAAAAAAACew/JBNw9X4BdB8/Denali%252520SSRS%252520colour%252520matrix%252520xlsx%252520format_thumb%25255B1%25255D.jpg?imgmax=800" width="504" height="158"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000" size="2"&gt;&lt;strong&gt;&lt;u&gt;BUG ALERT&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Even though the excel export worked as expected in the case of pre-defined background colours for each cell, it did not show up the correct results when I used custom code to show the background colours for the members in a group.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;For eg, the following output came up properly in .xls format&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/-85aXZ2Jzdok/TkPlV6j5FDI/AAAAAAAACe0/cr_FB1LlYTo/s1600-h/Denali%252520SSRS%252520bug%252520xls%252520format%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Denali SSRS bug xls format" border="0" alt="Denali SSRS bug xls format" src="http://lh4.ggpht.com/-i0Gm_Ib7joY/TkPlWiy-MiI/AAAAAAAACe4/ZZJaSbrF7FE/Denali%252520SSRS%252520bug%252520xls%252520format_thumb.jpg?imgmax=800" width="77" height="244"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;But when the same report was exported to .xlsx format, it started showing the last colour (which is Green) for every cell.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/-L2XxdU8-1Po/TkPlXdPDYlI/AAAAAAAACe8/XAjP_Uoph0I/s1600-h/Denali%252520SSRS%252520bug%252520xlsx%252520format%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Denali SSRS bug xlsx format" border="0" alt="Denali SSRS bug xlsx format" src="http://lh3.ggpht.com/-3C8itS7WUBE/TkPlXy0YpnI/AAAAAAAACfA/QLmbRXkW8Xc/Denali%252520SSRS%252520bug%252520xlsx%252520format_thumb%25255B1%25255D.jpg?imgmax=800" width="77" height="282"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;This has been raised as a bug in Connect. Vote for it if you want it to be rectified fast.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="https://connect.microsoft.com/SQLServer/feedback/details/683691/ssrs-denali-export-to-excel-colors-not-being-displayed-correctly"&gt;&lt;font size="2"&gt;https://connect.microsoft.com/SQLServer/feedback/details/683691/ssrs-denali-export-to-excel-colors-not-being-displayed-correctly&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;   &lt;p&gt;&lt;font color="#008040" size="2"&gt;&lt;strong&gt;4) &lt;u&gt;ZIP compression&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;font color="#000000"&gt;The .xlsx format has ZIP compression, hence the size of the files generated would be lesser. For eg, I generated a report with 250 rows and 250 columns in both .xlsx and .xls formats. The .xlsx format was just 25KB while the .xls format was 35KB in size. This difference may become more evident and important in the case of large reports.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;That’s all from me this time folks. Hopefully, I will be back with some more of the new features. &lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-4069449216196944683?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=H_hsUTlHFdQ:BrKBxzWDVU0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=H_hsUTlHFdQ:BrKBxzWDVU0:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=H_hsUTlHFdQ:BrKBxzWDVU0:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/H_hsUTlHFdQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/4069449216196944683/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2011/08/export-to-excel-upgrades-in-ssrs-denali.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/4069449216196944683?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/4069449216196944683?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/H_hsUTlHFdQ/export-to-excel-upgrades-in-ssrs-denali.html" title="Export to Excel upgrades in SSRS Denali CTP3" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-0A7TpMd4zZs/TkPlJbPSiOI/AAAAAAAACd4/lp30MGSclV0/s72-c/wlEmoticon-winkingsmile2.png?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2011/08/export-to-excel-upgrades-in-ssrs-denali.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QHR3Y4fCp7ImA9WhdRE0o.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-8261486914652834471</id><published>2011-08-03T09:48:00.001-04:00</published><updated>2011-08-03T09:48:56.834-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-03T09:48:56.834-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="My Sessions" /><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>And here I announce the good news…</title><content type="html">&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;To all my loving and caring readers who had been wondering where the hell did I get lost the last month, I have two good news for you.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#008000" size="2"&gt;&lt;strong&gt;1) I got hitched!&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Yes, I had been on a vacation last month and meanwhile managed to upgrade the status of Ms Neethu Sebastian from long-time girlfriend to wifey &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh6.ggpht.com/-B2NdUofXubw/TjlRxYxnTBI/AAAAAAAACdw/iwxocqYr5w8/wlEmoticon-smile%25255B2%25255D.png?imgmax=800"&gt;. The wedding was a lot of fun but hectic to the core (roughly translates to – enjoyed it but never doing it again). &lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;img src="http://a3.sphotos.ak.fbcdn.net/hphotos-ak-snc6/284753_10150739630965574_624780573_20218566_7639828_n.jpg" width="280" height="421"&gt;&lt;img src="http://a2.sphotos.ak.fbcdn.net/hphotos-ak-ash4/282484_10150739644770574_624780573_20218748_104971_n.jpg" width="280" height="421"&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#008000" size="2"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#008000" size="2"&gt;&lt;strong&gt;2) My session got selected for SQLBits 9!&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;Yes, I will be speaking at &lt;a href="http://sqlbits.com"&gt;SQLBits 9 – Query across the Mersey&lt;/a&gt;. Just got the confirmation from the SQLBits team that my session – &lt;strong&gt;Fast Track to Spatial Reporting&lt;/strong&gt; has been selected. The session would be held on Oct 1, Saturday from 8.10 to 9.10 am. Please click on the agenda below for more details.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://sqlbits.com/information/Agenda.aspx"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="sqlbits agenda" border="0" alt="sqlbits agenda" src="http://lh6.ggpht.com/-A7A3f3WYQHE/TjlRxxZVMnI/AAAAAAAACd0/C9Rs7xsqqt4/sqlbits%252520agenda%25255B5%25255D.jpg?imgmax=800" width="574" height="484"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;&lt;strong&gt;&lt;u&gt;P.S.&lt;/u&gt;&lt;/strong&gt; : If you are attending SQLBits 9 in Liverpool, make sure that you drop in and say a hi to me&lt;/font&gt; &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh6.ggpht.com/-B2NdUofXubw/TjlRxYxnTBI/AAAAAAAACdw/iwxocqYr5w8/wlEmoticon-smile%25255B2%25255D.png?imgmax=800"&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-8261486914652834471?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=yU11KPOjL8w:QwLo-_dMqeY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=yU11KPOjL8w:QwLo-_dMqeY:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=yU11KPOjL8w:QwLo-_dMqeY:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/yU11KPOjL8w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/8261486914652834471/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2011/08/and-here-i-announce-good-news.html#comment-form" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/8261486914652834471?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/8261486914652834471?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/yU11KPOjL8w/and-here-i-announce-good-news.html" title="And here I announce the good news…" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-B2NdUofXubw/TjlRxYxnTBI/AAAAAAAACdw/iwxocqYr5w8/s72-c/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>8</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2011/08/and-here-i-announce-good-news.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IFR3k6eCp7ImA9WhZaF0Q.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-4729638413910941025</id><published>2011-07-04T13:11:00.001-04:00</published><updated>2011-07-04T13:11:56.710-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-04T13:11:56.710-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="My Sessions" /><title>SSAS Best Practices–Session slides for download</title><content type="html">&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Looks like I am on a session taking spree, this was my third one in 3 weeks. This time, I decided to collate some of the best practices in SQL Server Analysis Services and present it for the BI minds in my company, &lt;a href="http://www.mindtree.com/" target="_blank"&gt;MindTree Ltd.&lt;/a&gt; This is one subject that just doesn’t finish in 1 hour, and even though I tried to cut down a lot of points, I ended up spilling by almost 15 minutes. A big thanks to&lt;/font&gt; &lt;a href="http://in.linkedin.com/pub/emil-xavier/a/430/281" target="_blank"&gt;&lt;font size="2"&gt;Emil Xavier&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; for organizing the session and for arranging the logistics, everything was prim and proper. Anyways, without boring you guys further, here goes the session slides. Feel free to pass it around!&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a title="SSAS Best Practices - Session slides for download" href="https://docs.google.com/leaf?id=0B1k6zmQ4NXQlYjFmMDkwOTUtZDE2ZS00YzRhLWFlODQtNTMyOGZhMjQyYjlm&amp;amp;hl=en_US"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SSAS Best Practices - Session Slides for download" border="0" alt="SSAS Best Practices - Session Slides for download" src="http://lh3.ggpht.com/-1RC1DXEDD6Q/ThH0W0H2KyI/AAAAAAAACdo/4J6Rs5wrNRc/SSAS%252520Best%252520Practices%252520-%252520Session%252520Slides%252520for%252520download%25255B4%25255D.jpg?imgmax=800" width="504" height="379"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-4729638413910941025?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=lbwWkFWjccM:5fQW66BsM2Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=lbwWkFWjccM:5fQW66BsM2Q:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=lbwWkFWjccM:5fQW66BsM2Q:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/lbwWkFWjccM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/4729638413910941025/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2011/07/ssas-best-practicessession-slides-for.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/4729638413910941025?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/4729638413910941025?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/lbwWkFWjccM/ssas-best-practicessession-slides-for.html" title="SSAS Best Practices–Session slides for download" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-1RC1DXEDD6Q/ThH0W0H2KyI/AAAAAAAACdo/4J6Rs5wrNRc/s72-c/SSAS%252520Best%252520Practices%252520-%252520Session%252520Slides%252520for%252520download%25255B4%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2011/07/ssas-best-practicessession-slides-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4DQHw5cCp7ImA9WhZbF0g.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-4113550908058245068</id><published>2011-06-22T11:06:00.001-04:00</published><updated>2011-06-22T12:09:31.228-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-22T12:09:31.228-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="My Sessions" /><category scheme="http://www.blogger.com/atom/ns#" term="SSRS" /><title>Let’s Go Spatial – Session slides for download</title><content type="html">&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;So that’s one objective struck off from my list for this year. Yes, I made a presentation on the mapping features in SSRS 2008 R2 for the London BI User Group on 21 June, 2010. The UG meeting was held in the Hitachi office near London Bridge and was attended by around 30 people. A big thanks to &lt;a href="http://www.hitachiconsulting.com/UK2/page.cfm" target="_blank"&gt;Hitachi Consulting&lt;/a&gt; for sponsoring the beer / pizza and of course, for allowing us to use their office for the meeting. Another round of applause to &lt;/font&gt;&lt;font color="#000000" size="2"&gt;Chris Webb (&lt;a title="Practical Business Intelligence" href="http://cwebbbi.wordpress.com/" target="_blank"&gt;blog&lt;/a&gt;)&amp;nbsp; for organizing this UG meeting and personally, my gratitude for giving me the opportunity to speak. Though my presentation was more focussed on demos, I am attaching the slides that I used for my session – ‘&lt;em&gt;Let’s go Spatial’&lt;/em&gt; along with this post. I will try to upload the rdls of the reports also but that might take some time. So keep checking or ping me if you have got some urgent need for the sample reports used in my presentation.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a title="Download Let's Go Spatial Session Slides" href="https://docs.google.com/leaf?id=0B1k6zmQ4NXQlMDExNzAwZDQtMDQwMy00ZTBiLThkODgtMmUwODMzOTc5NWU3&amp;amp;sort=name&amp;amp;layout=list&amp;amp;num=50" target="_blank"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Click to download - Let's go SPATIAL" border="0" alt="Click to download - Let's go SPATIAL" src="http://lh4.ggpht.com/-1XCYhkPrm7Q/TgIE2x2CWNI/AAAAAAAACc4/7l2LD01nTfw/Let%252527s%252520go%252520SPATIAL.jpg?imgmax=800" width="404" height="306"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The demos included&lt;/font&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="justify"&gt;&lt;font color="#000000" size="2"&gt;Creating map reports from ESRI shapefiles&lt;/font&gt;&lt;/div&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="justify"&gt;&lt;font color="#000000" size="2"&gt;How to deal with deployment errors with large shapefiles&lt;/font&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt; &lt;div align="justify"&gt;&lt;font color="#000000" size="2"&gt;Creating map reports from Spatial Data&lt;/font&gt;&lt;/div&gt; &lt;ul&gt; &lt;li&gt;&lt;font color="#000000" size="2"&gt;How to import shapefiles into your database&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;&lt;font color="#000000" size="2"&gt;Visualizing your map reports using measures&lt;/font&gt;  &lt;li&gt;&lt;font color="#000000" size="2"&gt;How to drill up and down your map reports&lt;/font&gt;  &lt;li&gt;&lt;font color="#000000" size="2"&gt;How to do custom aggregation in your map reports&lt;/font&gt;  &lt;li&gt;&lt;font color="#000000" size="2"&gt;Creating bubble maps in your map reports&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;This was followed by an amazing session on Change Data Capture by the charismatic Duncan Sutcliffe (&lt;a title="Practical Business Intelligence" href="http://duncansutcliffe.wordpress.com/" target="_blank"&gt;blog&lt;/a&gt; | &lt;a href="http://twitter.com/#!/duncansutcliffe" target="_blank"&gt;twitter&lt;/a&gt;). Overall a nice day and looking forward for more BI user group meetings. &lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-4113550908058245068?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=gxEwxCw56_k:oNPbRma566Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=gxEwxCw56_k:oNPbRma566Q:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=gxEwxCw56_k:oNPbRma566Q:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/gxEwxCw56_k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/4113550908058245068/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2011/06/lets-go-spatial-session-slides-for.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/4113550908058245068?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/4113550908058245068?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/gxEwxCw56_k/lets-go-spatial-session-slides-for.html" title="Let’s Go Spatial – Session slides for download" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-1XCYhkPrm7Q/TgIE2x2CWNI/AAAAAAAACc4/7l2LD01nTfw/s72-c/Let%252527s%252520go%252520SPATIAL.jpg?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2011/06/lets-go-spatial-session-slides-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIGQHY8fip7ImA9WhZUFk4.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-3351015473426885015</id><published>2011-06-09T06:48:00.001-04:00</published><updated>2011-06-09T11:32:01.876-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-09T11:32:01.876-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SSAS" /><title>When and How to Snowflake Dimension Sources : SSAS Design Part 3</title><content type="html">&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; letter-spacing: normal; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="line-height: 20px; font-family: arial, tahoma, helvetica, freesans, sans-serif; color: rgb(51,51,51); font-size: 15px" class="Apple-style-span"&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;In my last&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;a title="When and How to Snowflake Dimension Sources : SSAS Design Part 2" href="http://road-blogs.blogspot.com/2011/06/when-and-how-to-snowflake-dimension.html"&gt;post&lt;/a&gt;&lt;/span&gt;, I had quickly hinted why I prefer using a star schema and also explained the second scenario in which I would snowflake the dimension sources for the DSV.&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;span class="Apple-converted-space"&gt;&lt;a href="http://lh6.ggpht.com/-PbHNku5lnNI/TfDnbvVT9dI/AAAAAAAACco/gEa1DRGNhQI/s1600-h/Star%252520to%252520Snowflake%252520Part%2525203%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Star to Snowflake Part 3" border="0" alt="Star to Snowflake Part 3" src="http://lh5.ggpht.com/-JMAlaMMI3h0/TfDncHgUXZI/AAAAAAAACcs/kh2nHXgnToA/Star%252520to%252520Snowflake%252520Part%2525203_thumb%25255B1%25255D.jpg?imgmax=800" width="504" height="175"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;span class="Apple-converted-space"&gt;&lt;/span&gt;&lt;/font&gt;&lt;font color="#000000" size="2"&gt;The three scenarios as well as the example product dimension are repeated below for quick reference&lt;/font&gt;&lt;/p&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; letter-spacing: normal; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="line-height: 20px; font-family: arial, tahoma, helvetica, freesans, sans-serif; color: rgb(51,51,51); font-size: 15px" class="Apple-style-span"&gt; &lt;ul style="padding-bottom: 0px; line-height: 1.4; list-style-type: disc; margin: 0.5em 0px; padding-left: 2.5em; padding-right: 2.5em; padding-top: 0px"&gt; &lt;li style="border-bottom-style: none; padding-bottom: 0px; border-top-color: ; text-indent: 0px; margin: 0px 0px 0.25em; border-left-style: none; padding-left: 0px; padding-right: 0px; border-top-style: none; border-right-style: none; padding-top: 0px"&gt; &lt;div align="justify"&gt;&lt;font size="2"&gt;Multiple lower levels for the dimension (Scenario 1)&lt;/font&gt;&lt;/div&gt; &lt;li style="border-bottom-style: none; padding-bottom: 0px; text-indent: 0px; margin: 0px 0px 0.25em; border-left-style: none; padding-left: 0px; padding-right: 0px; border-top-width: 1px; border-right-style: none; padding-top: 0px"&gt; &lt;div align="justify"&gt;&lt;font size="2"&gt;Multiple facts coming at multiple granularity (Scenario 2)&lt;/font&gt;&lt;/div&gt; &lt;li style="border-bottom-style: none; padding-bottom: 0px; text-indent: 0px; margin: 0px 0px 0.25em; border-left-style: none; padding-left: 0px; padding-right: 0px; border-top-width: 1px; border-right-style: none; padding-top: 0px"&gt; &lt;div align="justify"&gt;&lt;font size="2"&gt;Multiple levels joining to the same parent (Scenario 3)&lt;/font&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/-DzKnmj9hYxY/TfClA4LInOI/AAAAAAAACcQ/9aWCtCi5KmM/s1600-h/Facts%252520at%252520different%252520granularity_thumb%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Facts at different granularity" border="0" alt="Facts at different granularity_" src="http://lh5.ggpht.com/-vkqJX8wa-ss/TfClBfKDy5I/AAAAAAAACcU/QZGvc2JirDg/Facts%252520at%252520different%252520granularity_thumb_thumb%25255B2%25255D.jpg?imgmax=800" width="504" height="410"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt; &lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;u&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; letter-spacing: normal; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="line-height: 20px; font-family: arial, tahoma, helvetica, freesans, sans-serif; color: rgb(51,51,51); font-size: 15px" class="Apple-style-span"&gt;&lt;b&gt;&lt;u&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; letter-spacing: normal; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="text-align: justify; line-height: 20px; font-family: arial, tahoma, helvetica, freesans, sans-serif; color: rgb(51,51,51); font-size: 15px" class="Apple-style-span"&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#008000" size="2"&gt;Scenario 3 – Multiple Levels joining to same Parent &lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="text-align: center; margin: 0cm 0cm 10pt" class="MsoNormal" align="center"&gt;&lt;span style="line-height: 115%; font-size: 9pt; mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;a href="http://lh5.ggpht.com/-KPaqj3IlW_E/TfClBznd19I/AAAAAAAACcY/zt0iu6aitzU/s1600-h/Cyclical%252520relationship%252520in%252520Product%252520Dimension%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Cyclical relationship in Product Dimension" border="0" alt="Cyclical relationship in Product Dimension" src="http://lh3.ggpht.com/-H0Y6lGP7f1E/TfClCc3FDAI/AAAAAAAACcc/999udfoAsLU/Cyclical%252520relationship%252520in%252520Product%252520Dimension_thumb.jpg?imgmax=800" width="219" height="206"&gt;&lt;/a&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify; margin: 0cm 0cm 0pt; mso-add-space: auto" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;Consider the above example where there are multiple levels (Local SKU and Nielsen SKU) joining to the same parent. Invariably, a “diamond” or cyclic relationship would be involved the moment you say that there are multiple levels joining to the same parent in SSAS dimensions (You could avoid this by splitting the dimensions and making &lt;a title="Introduction to Dimensions (Analysis Services - Multidimensional Data)" href="http://msdn.microsoft.com/en-us/library/ms175439.aspx"&gt;referenced dimensions&lt;/a&gt; in SSAS but then you would lose the ability to make hierarchies between the levels in the two split dimensions). For Scenario 3 to be applied, an additional condition also needs to be satisfied – at least one of the intermediate attributes involved in the cyclic relationship needs to have fact coming in at that level and this attribute should not be the start point or end point of the cyclic relationship. Some examples of diamond relationship are given below&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify; margin: 0cm 0cm 0pt; mso-add-space: auto" class="MsoListParagraphCxSpMiddle" align="justify"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;font color="#000000" size="2"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="text-align: center; margin: 0cm 0cm 0pt; mso-add-space: auto" class="MsoListParagraphCxSpMiddle" align="center"&gt;&lt;span style="line-height: 115%; font-size: 9pt; mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;font color="#000000" face="Calibri"&gt;&lt;a href="http://lh3.ggpht.com/-bLAqCP7DWUo/TfClDCouzeI/AAAAAAAACcg/phnJJ17MFH8/s1600-h/Examples%252520of%252520Cyclic%252520Relationship%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Examples of Cyclic Relationship" border="0" alt="Examples of Cyclic Relationship" src="http://lh5.ggpht.com/-D49M9aV7594/TfClDufi5CI/AAAAAAAACck/LTtiW2p8sVk/Examples%252520of%252520Cyclic%252520Relationship_thumb%25255B1%25255D.jpg?imgmax=800" width="504" height="296"&gt;&lt;/a&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt; mso-add-space: auto" class="MsoListParagraphCxSpMiddle" align="justify"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;In our example, both Local SKU and Nielsen SKU have fact coming in at their levels and they are neither the start point (Dummy Level) nor the end point (Retail SKU) of the cyclic relationship, and hence Retail SKU qualifies under Scenario 3. In this scenario, the following views would be made&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: -18pt; margin: 0cm 0cm 10pt 36pt; mso-list: l1 level1 lfo2" class="MsoListParagraphCxSpLast" align="justify"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes; mso-bidi-font-family: calibri"&gt;&lt;span style="mso-list: ignore"&gt;a)&lt;span style="font: 7pt 'Times New Roman'"&gt;&lt;font face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;View for parent level – A view is made for the parent entity (Retail SKU in our example) which will contain all the attributes &lt;/span&gt;/ entities till the next entity where one of the three scenarios’ happens.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;For our example, one view is made.&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;u&gt;&lt;span style="font-family: 'Courier New'; color: #00b050; font-size: 9pt; mso-bidi-font-family: arial; mso-bidi-font-size: 10.0pt"&gt;// View for Retail SKU and attributes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;SELECT DISTINCT&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="color: #00b050; font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// Scenario 2 at Brand Pack&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;Retail_SKU, Standard_SKU, BrandPack#FK&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;FROM&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;&amp;lt;table&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;WHERE&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;font face="Courier New"&gt;&lt;span class="ITGCode"&gt;&lt;span style="color: #00b050; font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// &amp;lt;levels inside “diamond” at which fact granularity comes&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;&amp;lt;level=Local_SKU_ID or level=Nielsen_SKU_ID&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 10pt; mso-add-space: auto" class="MsoListParagraphCxSpLast" align="justify"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; letter-spacing: normal; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="text-align: justify; line-height: 18px; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: small" class="Apple-style-span"&gt;Some things to note here&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div style="margin: 0cm 0cm 10pt; mso-add-space: auto" class="MsoListParagraphCxSpLast" align="justify"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;font color="#000000" size="2"&gt;As mentioned in the note section of my previous &lt;a title="When and How to Snowflake Dimension Sources : SSAS Design Part 2" href="http://road-blogs.blogspot.com/2011/06/when-and-how-to-snowflake-dimension.html"&gt;post&lt;/a&gt;, there is a basic difference in the &lt;font face="Courier New"&gt;WHERE&lt;/font&gt; clause of the views in Scenario 3 and the rest. For the rest of the scenarios, the clause would be for the lowest level of the view. So if the same principle was applied to the above view, then the &lt;font face="Courier New"&gt;WHERE &lt;/font&gt;clause would have been for &amp;lt;level=Retail_SKU&amp;gt;. Consider a case where there are Retail SKUs which don’t have any Local SKUs or Nielsen SKUs. There would not be any facts associated with them, and would be a pain for the business users if they start appearing in the dropdowns for the reports. Having the Scenario 3 &lt;font face="Courier New"&gt;WHERE&lt;/font&gt; clause would prevent this from happening as only the Retails SKUs which have facts associated with them would be brought in the cube.&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;li&gt; &lt;div style="margin: 0cm 0cm 10pt; mso-add-space: auto" class="MsoListParagraphCxSpLast" align="justify"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;The reason why Brand Family doesn’t qualify for Scenario 3 is because apart from the lowest level (Brand Pack), there are no attributes in the “diamond” relationship which has fact coming at that level. Hence, all these attributes have come under the view for Brand Pack in Scenario 2.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;li&gt; &lt;div style="margin: 0cm 0cm 10pt; mso-add-space: auto" class="MsoListParagraphCxSpLast" align="justify"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;In both Scenario 1 and Scenario 3, &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;there is a cyclic relationship or diamond relationship present in the model. These views will only ensure that the master data is correct. Care should be taken to handle the cyclic relationships within SSAS by defining multiple hierarchies or by making the relationship linear. Else you might see the blue squiggly line in the dimension attribute relationship manager in SSAS warning you of the occurrence of cyclic relationships.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="justify"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;That said, this marks the end of my trilogy on When and How to Snowflake Dimension Sources. I have made an effort to make it as generic as possible, but there could be scenarios which I have missed. Feel free to throw bricks or debate on the above concepts, constructive criticism is always welcome!&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-3351015473426885015?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=Djx7cfkt1Kc:sHLjp0_OYUk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=Djx7cfkt1Kc:sHLjp0_OYUk:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=Djx7cfkt1Kc:sHLjp0_OYUk:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/Djx7cfkt1Kc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/3351015473426885015/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2011/06/when-and-how-to-snowflake-dimension_09.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/3351015473426885015?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/3351015473426885015?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/Djx7cfkt1Kc/when-and-how-to-snowflake-dimension_09.html" title="When and How to Snowflake Dimension Sources : SSAS Design Part 3" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-JMAlaMMI3h0/TfDncHgUXZI/AAAAAAAACcs/kh2nHXgnToA/s72-c/Star%252520to%252520Snowflake%252520Part%2525203_thumb%25255B1%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2011/06/when-and-how-to-snowflake-dimension_09.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4GRXk4eip7ImA9WhZUFkw.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-9038321944058785054</id><published>2011-06-01T18:57:00.000-04:00</published><updated>2011-06-09T06:55:24.732-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-09T06:55:24.732-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SSAS" /><title>When and How to Snowflake Dimension Sources : SSAS Design Part 2</title><content type="html">&lt;p style="margin: 0cm 0cm 0pt; mso-add-space: auto" class="MsoListParagraphCxSpFirst" align="justify"&gt;&lt;font color="#000000" size="2"&gt;As a response to my previous &lt;a title="When and How to Snowflake Dimension Sources : SSAS Design Part 1" href="http://road-blogs.blogspot.com/2011/05/when-and-how-to-snowflake-dimension.html"&gt;post&lt;/a&gt;, one of my readers asked me this question – &lt;em&gt;“ why are you hell-bent on making a star schema? You yourself have told that a snowflake schema would give the best performance during cube processing and once the cube is processed, it doesn’t matter which schema was used – the query performance would be the same. So make the designer’s life easier by making all the dimension attributes in &lt;a title="Third Normal Form" href="http://en.wikipedia.org/wiki/Third_normal_form"&gt;3NF&lt;/a&gt;, obviously nothing can go wrong there! “&lt;/em&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt; mso-add-space: auto" class="MsoListParagraphCxSpFirst" align="justify"&gt;&lt;font color="#000000" size="2"&gt;Well, I have been extremely lucky to work along with a highly technical support &amp;amp; maintenance team at the client site, who challenges and makes me give appropriate reasons for every design decision I take. We as a vendor develop our applications and pass it on to the support team for the final code review and acceptance (this is in addition to the UAT or data testing part which would be done along with the business users). This made me think of them as two separate customers with two different priorities for the same application. If I have to sell my application to them, I need to appease both of them and the only way I can do is by doing a fine balancing act. The Business Users would want the best performing system (both in terms of cube processing as well as query performance) while the Support Team would want a system which is easier to support and maintain. If I designed all my attributes in 3NF, the support team would straightaway reject the application as they wouldn’t make sense what is happening in the DSV with the hundreds of attributes and relations. Since my cubes are usually less than 50GB, the processing time difference between the two schemas is less than 15 minutes which my business users would not even notice. In this case, it makes sense to use a star schema and appease my other customer, the Support Team. Your support team would love you for the additional work you do in your DSV’s diagram organizer when you neatly show them the star schemas for every fact.&lt;/font&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt; mso-add-space: auto" class="MsoListParagraphCxSpFirst" align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt; mso-add-space: auto" class="MsoListParagraphCxSpFirst" align="justify"&gt;&lt;a href="http://lh4.ggpht.com/-jQjPEVNl8U4/TegXxD2HMNI/AAAAAAAACcA/W7x9fnA4wE4/s1600-h/Star-to-Snowflake3.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Star to Snowflake" border="0" alt="Star to Snowflake" src="http://lh6.ggpht.com/-DQ0IOcaaD2g/TegXx9-Si8I/AAAAAAAACcE/WEu4y5dmtkQ/Star-to-Snowflake_thumb1.jpg?imgmax=800" width="504" height="175"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;In my last &lt;a title="When and How to Snowflake Dimension Sources : SSAS Design Part 1" href="http://road-blogs.blogspot.com/2011/05/when-and-how-to-snowflake-dimension.html"&gt;post&lt;/a&gt;, I had quickly summarized some of the best practices that I apply in the design of my dimension sources and also explained the first scenario in which I would snowflake the dimension sources for the DSV. &lt;/font&gt;&lt;font color="#000000" size="2"&gt;The three scenarios as well as the example product dimension are repeated below for quick reference&lt;/font&gt;&lt;/p&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; letter-spacing: normal; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="line-height: 20px; font-family: arial, tahoma, helvetica, freesans, sans-serif; color: rgb(51,51,51); font-size: 15px" class="Apple-style-span"&gt; &lt;ul style="padding-bottom: 0px; line-height: 1.4; list-style-type: disc; margin: 0.5em 0px; padding-left: 2.5em; padding-right: 2.5em; padding-top: 0px"&gt; &lt;li style="border-bottom-style: none; padding-bottom: 0px; border-top-color: ; text-indent: 0px; margin: 0px 0px 0.25em; border-left-style: none; padding-left: 0px; padding-right: 0px; border-top-style: none; border-right-style: none; padding-top: 0px"&gt; &lt;div align="justify"&gt;&lt;font size="2"&gt;Multiple lower levels for the dimension (Scenario 1)&lt;/font&gt;&lt;/div&gt; &lt;li style="border-bottom-style: none; padding-bottom: 0px; text-indent: 0px; margin: 0px 0px 0.25em; border-left-style: none; padding-left: 0px; padding-right: 0px; border-top-width: 1px; border-right-style: none; padding-top: 0px"&gt; &lt;div align="justify"&gt;&lt;font size="2"&gt;Multiple facts coming at multiple granularity (Scenario 2)&lt;/font&gt;&lt;/div&gt; &lt;li style="border-bottom-style: none; padding-bottom: 0px; text-indent: 0px; margin: 0px 0px 0.25em; border-left-style: none; padding-left: 0px; padding-right: 0px; border-top-width: 1px; border-right-style: none; padding-top: 0px"&gt; &lt;div align="justify"&gt;&lt;font size="2"&gt;Multiple levels joining to the same parent (Scenario 3)&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="justify"&gt;&lt;font size="2"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Product dimension linked to facts" border="0" alt="Product dimension linked to facts" src="http://lh3.ggpht.com/-3-8PuPKiYFY/TeWX_VVAm1I/AAAAAAAACbY/9lAjhvLErjM/Facts%252520at%252520different%252520granularity_thumb%25255B3%25255D.jpg?imgmax=800" width="500" height="407"&gt;&lt;/font&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt; &lt;p style="margin: 0cm 0cm 0pt; mso-add-space: auto" class="MsoListParagraphCxSpFirst"&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt; mso-add-space: auto" class="MsoListParagraphCxSpFirst"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;u&gt;&lt;font size="3"&gt;&lt;font color="#000000"&gt;&lt;font face="Calibri"&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; letter-spacing: normal; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="text-align: justify; line-height: 20px; font-family: arial, tahoma, helvetica, freesans, sans-serif; color: rgb(51,51,51); font-size: 15px" class="Apple-style-span"&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#008000" size="2"&gt;Scenario 2 – Multiple facts at multiple granularity&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt; mso-add-space: auto" class="MsoListParagraphCxSpMiddle"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;u&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;span style="text-decoration: none"&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="text-align: center; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle" align="left"&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;&lt;a href="http://lh5.ggpht.com/-SDFL_6elp4k/TegXyaqjiWI/AAAAAAAACcI/0uubeYM48Pw/s1600-h/clip_image0022.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh6.ggpht.com/-BQcSxSG7-Kw/TegXy42igcI/AAAAAAAACcM/OWwVCBDVQ2o/clip_image002_thumb.jpg?imgmax=800" width="244" height="244" v:shapes="_x0000_i1025"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="text-align: center; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle" align="center"&gt;&lt;span style="line-height: 115%; font-size: 9pt; mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;font color="#000000" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify; margin: 0cm 0cm 0pt; mso-add-space: auto" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;Consider the example in the above figure where there are facts coming in at multiple levels of the same dimension (at Prod Group, Brand Pack, Local SKU and Nielsen SKU levels). In this scenario, all the members of the levels at which the fact comes are needed and hence, the following views are made&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify; text-indent: -18pt; margin: 0cm 0cm 10pt 36pt; mso-list: l1 level1 lfo2" class="MsoListParagraphCxSpLast"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;&lt;span style="mso-bidi-font-family: calibri"&gt;&lt;span style="mso-list: ignore"&gt;a)&lt;span style="font: 7pt 'Times New Roman'"&gt;&lt;font face="Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;Individual views for each of the level at which fact granularity comes – For each level at which the fact comes, a view is made which will contain all the attributes &lt;/span&gt;/ entities till the next entity where one of the three scenarios’ happen. Since there are 4 levels at which fact comes in this example, the following views are made&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;u&gt;&lt;span style="font-family: 'Courier New'; color: #00b050; font-size: 9pt; mso-bidi-font-family: arial; mso-bidi-font-size: 10.0pt"&gt;// View for Local SKU and attributes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;SELECT&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="color: #00b050; font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// Scenario 3 at Retail SKU&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;Local_SKU, RSKU#FK&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;FROM&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;&amp;lt;table&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="mso-fareast-language: en-gb; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;u&gt;&lt;span style="font-family: 'Courier New'; color: #00b050; font-size: 9pt; mso-bidi-font-family: arial; mso-bidi-font-size: 10.0pt"&gt;// View for Nielsen SKU and attributes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;SELECT&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="color: #00b050; font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// Scenario 3 at Retail SKU&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;Nielsen_SKU, RSKU#FK&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;FROM&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;&amp;lt;table&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;o:p&gt;&lt;font color="#000000" face="Courier New"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;u&gt;&lt;span style="font-family: 'Courier New'; color: #00b050; font-size: 9pt; mso-bidi-font-family: arial; mso-bidi-font-size: 10.0pt"&gt;// View for Brand Pack attributes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;SELECT&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="color: #00b050; font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// Scenario 2 at Product Group&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;BrandPack, BrandSF, LocalBrandSF, BrandFamily, RPCT, RPCTGrp, PG#FK&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;FROM&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;&amp;lt;table&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;o:p&gt;&lt;font color="#000000" face="Courier New"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;u&gt;&lt;span style="font-family: 'Courier New'; color: #00b050; font-size: 9pt; mso-bidi-font-family: arial; mso-bidi-font-size: 10.0pt"&gt;// View for Product Group attributes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;&lt;font color="#000000"&gt;SELECT&lt;/font&gt;&lt;span style="color: #00b050"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;ProductGroup, ReportingProductGroup&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;FROM&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font color="#000000"&gt;&lt;font face="Courier New"&gt;&amp;lt;table&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Some things to note here&lt;/font&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font size="2"&gt;If the entity for which the view is made is the lowest level of the dimension or if the entity’s immediate child is having a mandatory relationship with it, then there is no need to include the Unknown Member. Else, we would have to provide the Unknown Member for that entity. (A mandatory relationship indicates that for every occurrence of entity A there must exist an entity B, and vice versa) &lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt; &lt;li&gt; &lt;div align="justify"&gt;&lt;font color="#000000" size="2"&gt;&lt;span lang="EN-US"&gt;There is an overlap of Scenario 1 and Scenario 2 for Local SKU and Nielsen SKU views but the resultant views are the same. These views are repeated in this post just for completeness of Scenario 2.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt; &lt;li&gt; &lt;div align="justify"&gt;&lt;font color="#000000" size="2"&gt;In the view for Brand Pack attributes, it might look like Scenario 3 applies at Brand Family level. But Scenario 3 needs an extra condition to be satisfied which is not done here. This will be explained in detail in the next &lt;a title="When and How to Snowflake Dimension Sources : SSAS Design Part 3" href="http://road-blogs.blogspot.com/2011/06/when-and-how-to-snowflake-dimension_09.html"&gt;post&lt;/a&gt;.&lt;/font&gt;&lt;/div&gt; &lt;li&gt; &lt;div align="justify"&gt;&lt;font color="#000000" size="2"&gt;General rule for each individual view in Scenario 1 and Scenario 2 is to select all the attributes from the&amp;nbsp; table which has children at the lowest level of that view. For eg, in the view for Brand Pack attributes, all Brand Sub Families would be present which have Brand Packs. If there is a Brand Sub Family which doesn’t have a Brand Pack, it will not be present in the view. But that particular value of Brand Sub Family can be safely omitted as there are no facts coming in at a Brand Sub Family level and hence it would not be needed for analysis (in most of the cases). This general rule would not be applicable to Scenario 3 and would be explained in the next &lt;a title="When and How to Snowflake Dimension Sources : SSAS Design Part 3" href="http://road-blogs.blogspot.com/2011/06/when-and-how-to-snowflake-dimension_09.html"&gt;post&lt;/a&gt;.&lt;/font&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Meanwhile, as usual, let me know till what level you agree or disagree on these points. &lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-9038321944058785054?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=wuVNSDgmVzM:0rHG0IRw470:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=wuVNSDgmVzM:0rHG0IRw470:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=wuVNSDgmVzM:0rHG0IRw470:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/wuVNSDgmVzM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/9038321944058785054/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2011/06/when-and-how-to-snowflake-dimension.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/9038321944058785054?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/9038321944058785054?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/wuVNSDgmVzM/when-and-how-to-snowflake-dimension.html" title="When and How to Snowflake Dimension Sources : SSAS Design Part 2" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-DQ0IOcaaD2g/TegXx9-Si8I/AAAAAAAACcE/WEu4y5dmtkQ/s72-c/Star-to-Snowflake_thumb1.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2011/06/when-and-how-to-snowflake-dimension.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8FQHs_eyp7ImA9WhZVGUs.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-6531488573572064405</id><published>2011-05-31T18:51:00.000-04:00</published><updated>2011-06-01T18:53:31.543-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-01T18:53:31.543-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Activities / Whitepapers / Events" /><title>SQL Server BI Quiz 2011 &amp; The Analysis Services 2008 R2 Operations Guide</title><content type="html">&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;June is the month which has the longest daylight hours of the year in the Northern Hemisphere. So all you guys in this half of the world, its time to make use of the extra daylight and try to win yourself an Ipad. Yes, &lt;a href="http://beyondrelational.com" target="_blank"&gt;BeyondRelational&lt;/a&gt; is back with their next edition of quiz – &lt;a href="http://beyondrelational.com/quiz/SQLServer/BI/2011/default.aspx" target="_blank"&gt;SQL Server BI Quiz 2011&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://beyondrelational.com/quiz/SQLServer/BI/2011/default.aspx"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SQL Server BI Quiz 2011" border="0" alt="SQL Server BI Quiz 2011" src="http://lh6.ggpht.com/-nsp3GK9Kg24/Tea_mGY7MgI/AAAAAAAACb0/uUOVxNUndEs/image%25255B4%25255D.png?imgmax=800" width="504" height="517"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; letter-spacing: normal; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="text-align: justify; line-height: 18px; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: small" class="Apple-style-span"&gt;As usual, &lt;a style="color: rgb(51,170,255); text-decoration: underline" href="http://beyondrelational.com/"&gt;BeyondRelational&lt;/a&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;has coordinated with 30 Microsoft MVPs / experts and come up with this SQL Server BI feast for all you guys. You get to answer questions from some of the best SQL BI brains out there – every day of the month. And oh, in case you didn’t notice, I have also put together something for you on June 17. Hope to see a lot of you answering them. Now people in the southern half of the world, you don’t need to sulk, this is open for you guys too &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh3.ggpht.com/-hPN_U8OOIrE/Tea_mtFa5_I/AAAAAAAACb4/XPe23x9UPac/wlEmoticon-smile%25255B2%25255D.png?imgmax=800"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; letter-spacing: normal; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="text-align: justify; line-height: 18px; font-family: arial, tahoma, helvetica, freesans, sans-serif; font-size: small" class="Apple-style-span"&gt;Another useful way to spend your extra time would be to go through the &lt;a href="http://msdn.microsoft.com/en-us/library/hh226085.aspx"&gt;Analysis Services 2008 R2 Operations Guide&lt;/a&gt;. A must read for every SSAS enthusiast out there, this has been written by Denny Lee, John Sirmon and Thomas Kejser. If this isn’t enough to make your mouth water, just check out the long list of contributors in the article. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;a title="Analysis Services 2008 R2 Operations Guide" href="http://msdn.microsoft.com/en-us/library/hh226085.aspx"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-_cA2v-Gdceg/Tea_nctCN9I/AAAAAAAACb8/YKxrbnLfVLs/image%25255B9%25255D.png?imgmax=800" width="504" height="435"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-6531488573572064405?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=gHyrsPCOTvg:oCF-tgBncC0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=gHyrsPCOTvg:oCF-tgBncC0:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=gHyrsPCOTvg:oCF-tgBncC0:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/gHyrsPCOTvg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/6531488573572064405/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2011/06/sql-server-bi-quiz-2011-analysis.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/6531488573572064405?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/6531488573572064405?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/gHyrsPCOTvg/sql-server-bi-quiz-2011-analysis.html" title="SQL Server BI Quiz 2011 &amp;amp; The Analysis Services 2008 R2 Operations Guide" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-nsp3GK9Kg24/Tea_mGY7MgI/AAAAAAAACb0/uUOVxNUndEs/s72-c/image%25255B4%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2011/06/sql-server-bi-quiz-2011-analysis.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8FRXk_eSp7ImA9WhZUEEg.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-6718320945875177963</id><published>2011-05-30T21:41:00.000-04:00</published><updated>2011-06-02T19:20:14.741-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-02T19:20:14.741-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SSAS" /><title>When and How to Snowflake Dimension Sources : SSAS Design Part 1</title><content type="html">&lt;p align="justify"&gt;&lt;font size="2"&gt;One of the best practices while designing a SSAS solution is to decouple your source database (which is in ideal cases, the data warehouse or the data mart but could also be an OLTP database) with the help of a semantic layer or view layer. Even though the Data Source View (DSV) of Analysis Services does provide a semantic layer, it is best to do all your intended operations/calculations within a SQL view and then use that view as the source of your dimensions and facts in the DSV. This will make sure that if the query for a dimension or fact needs to be changed at a later point of time, the SSAS solution need not be opened and make life easier for the DBA who is maintaining the system. It also has some performance benefits for the cube processing in the case of complex queries, which is beyond the scope of this post. This post tries to discuss a scenario in which you would want to snowflake your dimensions in the view layer (and not the scenarios in which you would want to snowflake your dimensions in the relational database or SSAS). Before all the Kimball enthusiasts come to bash me up, hear me out when I say that my preferred option would be to use the denormalized dimensions to create the popular star schemas. Even if the dimension is snowflaked in the relational database, I usually end up making a view on top of these normalized tables which will denormalize them into a single dimension giving a star schema look to the dimensions in the DSV. I am completely for the star schemas because of it’s simple, easy to understand and maintain structure. With this, I would also like to clear a popular misconception that the star schema is the best model for SSAS because of performance benefits due to lesser joins. Actually for large dimensions, the star schema would take longer time for cube processing than the snowflake schema and you can get a taste of this from a demo in MVP Ashwani Roy’s (&lt;a href="http://codeperfect.co.uk/" target="_blank"&gt;blog&lt;/a&gt; | &lt;a href="http://twitter.com/#!/Ashwani_Roy" target="_blank"&gt;twitter&lt;/a&gt;) presentation on &lt;a href="http://sqlbits.com/Sessions/Event7/Analysis_Services_Best_Practices" target="_blank"&gt;Analysis Services Best Practices&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-L-CdQsWkwuY/TeWX-jFKdSI/AAAAAAAACbQ/c9b22a3g9PI/s1600-h/Star%252520to%252520Snowflake%25255B7%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Star to Snowflake" border="0" alt="Star to Snowflake" src="http://lh6.ggpht.com/-LbS9HUBev7c/TeWX_E6oULI/AAAAAAAACbU/wNb4DcTc1oU/Star%252520to%252520Snowflake_thumb%25255B3%25255D.jpg?imgmax=800" width="504" height="175"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font size="2"&gt;Vincent Rainardi (&lt;a href="http://dwbi1.wordpress.com/" target="_blank"&gt;blog&lt;/a&gt;) has written an excellent post on &lt;a href="http://dwbi1.wordpress.com/2011/03/11/when-to-snowflake/" target="_blank"&gt;When to Snowflake&lt;/a&gt; your dimensions in the data warehouse side, which would be a good read prior to this post. If your data modeller generally follows a star schema approach and has already taken care of the concepts outlined in the above article by snowflaking appropriately, you would be lucky enough to just create the view layer as the exact copy of your data warehouse. Else have a look at the scenario below while making your view layer-&lt;/font&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="justify"&gt;&lt;font size="2"&gt;Multiple lower levels for the dimension (Scenario 1)&lt;/font&gt;&lt;/div&gt; &lt;li&gt; &lt;div align="justify"&gt;&lt;font size="2"&gt;Multiple facts coming at multiple granularity (Scenario 2)&lt;/font&gt;&lt;/div&gt; &lt;li&gt; &lt;div align="justify"&gt;&lt;font size="2"&gt;Multiple levels joining to the same parent (Scenario 3)&lt;/font&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="justify"&gt;&lt;font size="2"&gt;We will use the following Product dimension as an example for explaining the three scenarios.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font size="2"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Product dimension linked to facts" border="0" alt="Product dimension linked to facts" src="http://lh3.ggpht.com/-3-8PuPKiYFY/TeWX_VVAm1I/AAAAAAAACbY/9lAjhvLErjM/Facts%252520at%252520different%252520granularity_thumb%25255B3%25255D.jpg?imgmax=800" width="504" height="410"&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#008000" size="2"&gt;Scenario 1 – Multiple Lower Levels&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt; mso-add-space: auto" class="MsoListParagraphCxSpFirst"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p style="text-align: center; margin: 0cm 0cm 0pt; mso-add-space: auto" class="MsoListParagraphCxSpMiddle" align="center"&gt;&lt;a href="http://lh5.ggpht.com/-9KA9X1mxTbs/TeWYBRNu3sI/AAAAAAAACbc/aqekB9NLWL4/s1600-h/Multiple%252520Lower%252520Levels%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Multiple Lower Levels" border="0" alt="Multiple Lower Levels" src="http://lh6.ggpht.com/-k5Ybnnq1A3Q/TeWYB2W57UI/AAAAAAAACbg/KOvWoFiLyZc/Multiple%252520Lower%252520Levels_thumb.jpg?imgmax=800" width="224" height="185"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p style="text-align: justify; margin: 0cm 0cm 0pt; mso-add-space: auto" class="MsoListParagraphCxSpMiddle"&gt;&lt;o:p&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p style="text-align: justify; margin: 0cm 0cm 0pt; mso-add-space: auto" class="MsoListParagraphCxSpMiddle" align="justify"&gt;&lt;font color="#000000" size="2"&gt;Consider the above figure where there are multiple lower levels (Nielsen SKU and Local SKU) in the dimension. Even though SSAS can handle multiple lower levels, it is always better to create a surrogate key which can be used as the dimension key (Read this &lt;a title="Creating a dimension with multiple column key (Vincent Rainardi)" href="http://dwbi1.wordpress.com/2010/06/20/creating-a-dimension-with-multiple-column-key/" target="_blank"&gt;post&lt;/a&gt; to learn how to create a dimension with multiple column key). For this scenario, the following views would be created in the view layer which would be then used as such in the DSV:-&lt;/p&gt; &lt;p style="text-align: justify; margin: 0cm 0cm 0pt; mso-add-space: auto" class="MsoListParagraphCxSpFirst"&gt;&lt;o:p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p style="text-align: justify; text-indent: -18pt; margin: 0cm 0cm 10pt 36pt; mso-list: l0 level1 lfo1" class="MsoListParagraphCxSpLast"&gt;&lt;span style="line-height: 115%; font-family: 'Arial','sans-serif'; font-size: 10pt; mso-fareast-font-family: arial"&gt;&lt;span style="mso-list: ignore"&gt;a.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Arial','sans-serif'; font-size: 10pt"&gt;View for dummy level – For the dummy level key, a surrogate id or sequence id can be used as it would be unique. The view would be of the following format&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;SELECT&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="color: #00b050; font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// SID as dummy level key and the other two as foreign keys&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;SID, LocalSKU_ID#FK, NielsenSKU_ID#FK&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none; tab-stops: 95.25pt" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;FROM&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;&amp;lt;table&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;o:p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;ol style="margin-top: 0cm" type="a" start="2"&gt; &lt;li style="text-align: justify; line-height: normal; margin: 0cm 0cm 0pt; text-autospace: ; mso-list: l0 level1 lfo1; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: 'Arial','sans-serif'; font-size: 10pt"&gt;Individual Views for each lowest level – For each of the lowest level, an individual view needs to be created which would contain all the attributes / entities till the next entity where one of the three scenarios’ happen. Since there are two lower levels, two views need to be created as shown below.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: 'Courier New'; color: #00b050; font-size: 9pt; mso-bidi-font-family: arial; mso-bidi-font-size: 10.0pt"&gt;// View for Local SKU and attributes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;SELECT&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;&lt;o:p&gt;&lt;span style="font-family: 'Courier New'; color: #00b050; font-size: 9pt; mso-bidi-font-family: arial; mso-bidi-font-size: 10.0pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;Local_SKU, RSKU#FK&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;FROM&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;&amp;lt;table&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;o:p&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 36pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: 'Courier New'; color: #00b050; font-size: 9pt; mso-bidi-font-family: arial; mso-bidi-font-size: 10.0pt"&gt;// View for Nielsen SKU and attributes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;SELECT&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;&lt;font color="#00b050"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;Nielsen_SKU, RSKU#FK&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;FROM&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;&amp;lt;table&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="line-height: normal; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt; &lt;p style="line-height: normal; text-indent: 18pt; margin: 0cm 0cm 0pt 54pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span class="ITGCode"&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Courier New"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/font&gt; &lt;p style="text-align: justify; margin: 0cm 0cm 10pt 35.45pt; mso-add-space: auto" class="MsoListParagraphCxSpLast"&gt;&lt;font color="#000000" size="2"&gt;It is to be noted that the attributes / entities are taken only till the level of Retail SKU because Scenario 3 (multiple levels joining to the same parent) applies at Retail SKU level. &lt;/font&gt;&lt;/p&gt; &lt;p style="text-align: justify; margin: 0cm 0cm 10pt; mso-add-space: auto" class="MsoListParagraph" align="justify"&gt;&lt;font color="#000000" size="2"&gt;Now, why do we have to snowflake in this scenario? Let us see how the denormalized table would be for the same three levels&lt;/font&gt;&lt;/p&gt; &lt;p style="text-align: justify; margin: 0cm 0cm 10pt; mso-add-space: auto" class="MsoListParagraph" align="justify"&gt; &lt;table style="margin: auto auto auto 40.85pt; width: 192pt; border-collapse: collapse; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 1184" class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="256"&gt; &lt;tbody&gt; &lt;tr style="height: 15pt; mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt; &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; background: #bfbfbf; height: 15pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt" valign="bottom" width="64" nowrap&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span style="color: black; font-size: 9pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;SID&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: 'Times New Roman','serif'; color: #333333; font-size: 12pt; mso-fareast-language: en-gb; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; background: #bfbfbf; height: 15pt; border-left-color: #f0f0f0; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-top-alt: solid windowtext .5pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt" valign="bottom" width="64" nowrap&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;b&gt;&lt;span style="color: black; font-size: 9pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;LSKU&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; background: #bfbfbf; height: 15pt; border-left-color: #f0f0f0; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-top-alt: solid windowtext .5pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt" valign="bottom" width="64" nowrap&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;b&gt;&lt;span style="color: black; font-size: 9pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;NSKU&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; background: #bfbfbf; height: 15pt; border-left-color: #f0f0f0; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-top-alt: solid windowtext .5pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt" valign="bottom" width="64"&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;b&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="color: black; font-size: 9pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;RSKU&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 15pt; mso-yfti-irow: 1"&gt; &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" valign="bottom" width="64" nowrap&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;1&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-left-color: #f0f0f0; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt" valign="bottom" width="64" nowrap&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;L1&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-left-color: #f0f0f0; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt" valign="bottom" width="64" nowrap&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;NULL&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-left-color: #f0f0f0; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt" valign="bottom" width="64"&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;R1&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 15pt; mso-yfti-irow: 2"&gt; &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" valign="bottom" width="64" nowrap&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;2&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-left-color: #f0f0f0; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt" valign="bottom" width="64" nowrap&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;L2&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-left-color: #f0f0f0; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt" valign="bottom" width="64" nowrap&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;NULL&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-left-color: #f0f0f0; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt" valign="bottom" width="64"&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;R2&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 15pt; mso-yfti-irow: 3"&gt; &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" valign="bottom" width="64" nowrap&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;3&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-left-color: #f0f0f0; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt" valign="bottom" width="64" nowrap&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;NULL&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-left-color: #f0f0f0; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt" valign="bottom" width="64" nowrap&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;N1&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-left-color: #f0f0f0; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt" valign="bottom" width="64"&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;R1&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 15pt; mso-yfti-irow: 4"&gt; &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" valign="bottom" width="64" nowrap&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;4&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-left-color: #f0f0f0; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt" valign="bottom" width="64" nowrap&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;NULL&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-left-color: #f0f0f0; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt" valign="bottom" width="64" nowrap&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;N2&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-left-color: #f0f0f0; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt" valign="bottom" width="64"&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;R2&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 15pt; mso-yfti-irow: 5; mso-yfti-lastrow: yes"&gt; &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" valign="bottom" width="64" nowrap&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;5&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-left-color: #f0f0f0; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt" valign="bottom" width="64" nowrap&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;NULL&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-left-color: #f0f0f0; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt" valign="bottom" width="64" nowrap&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;N3&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 48pt; padding-right: 5.4pt; height: 15pt; border-left-color: #f0f0f0; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt" valign="bottom" width="64"&gt; &lt;p style="text-align: center; line-height: normal; margin: 0cm 0cm 0pt" class="MsoNormal" align="center"&gt;&lt;span style="color: black; font-size: 8pt; mso-fareast-language: en-gb; mso-bidi-font-family: calibri; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font face="Calibri"&gt;R2&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt; &lt;p style="text-align: justify; margin: 0cm 0cm 10pt; mso-add-space: auto" class="MsoListParagraph" align="justify"&gt;&lt;font color="#000000" size="2"&gt;Usually, I replace the NULLs by –1 in my design to avoid using the &lt;a title="Defining the Unknown Member and Null Processing Properties" href="http://technet.microsoft.com/en-us/library/ms170707.aspx" target="_blank"&gt;Unknown Member&lt;/a&gt; feature of SSAS. If this table is taken as the dimension source for SSAS and the appropriate relations are specified as SID—&amp;gt;LSKU—&amp;gt;RSKU and SID—&amp;gt;NSKU—&amp;gt;RSKU, there would be errors during dimension processing saying that there are multiple parents for the same child (for eg, –1 for NSKU would point to R1 and R2 values for Retail SKU). Snowflaking the source views as shown above would solve this problem. Please note that the SSAS Product dimension would still be a single one which would contain all the attributes from the snowflaked source views.&lt;/font&gt;&lt;/p&gt; &lt;p style="text-align: justify; margin: 0cm 0cm 10pt; mso-add-space: auto" class="MsoListParagraph" align="justify"&gt;&lt;font color="#000000" size="2"&gt;The other scenarios would be covered in the subsequent &lt;a title="When and How to Snowflake Dimension Sources : SSAS Design Part 2" href="http://road-blogs.blogspot.com/2011/06/when-and-how-to-snowflake-dimension.html"&gt;posts&lt;/a&gt;. Meanwhile it would be great to know how much you agree or disagree on these points.&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-6718320945875177963?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=IHxa1eSiJ1U:n84xYI2swEw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=IHxa1eSiJ1U:n84xYI2swEw:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=IHxa1eSiJ1U:n84xYI2swEw:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/IHxa1eSiJ1U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/6718320945875177963/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2011/05/when-and-how-to-snowflake-dimension.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/6718320945875177963?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/6718320945875177963?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/IHxa1eSiJ1U/when-and-how-to-snowflake-dimension.html" title="When and How to Snowflake Dimension Sources : SSAS Design Part 1" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-LbS9HUBev7c/TeWX_E6oULI/AAAAAAAACbU/wNb4DcTc1oU/s72-c/Star%252520to%252520Snowflake_thumb%25255B3%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2011/05/when-and-how-to-snowflake-dimension.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UESH08cCp7ImA9WhZQEkg.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-7198671997362022331</id><published>2011-04-19T19:17:00.001-04:00</published><updated>2011-04-19T19:20:09.378-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-19T19:20:09.378-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MDX" /><category scheme="http://www.blogger.com/atom/ns#" term="SSAS" /><title>Performance problems with Dynamic Named Sets</title><content type="html">&lt;p align="justify"&gt;&lt;font size="2"&gt;The last couple of days, I have been fiddling around with an interesting mdx query passed on to me by Hrvoje Piasevoli (&lt;/font&gt;&lt;a title="Hrvoje Piasevoli's Blog" href="http://hrvoje.piasevoli.com/" target="_blank"&gt;&lt;font size="2"&gt;blog&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; | &lt;/font&gt;&lt;a title="Hrvoje's Twitter account" href="http://twitter.com/#!/Hrvojepiasevoli" target="_blank"&gt;&lt;font size="2"&gt;twitter&lt;/font&gt;&lt;/a&gt; | &lt;font size="2"&gt;&lt;a title="SSAS foum profile" href="http://social.msdn.microsoft.com/profile/hrvojepiasevoli/" target="_blank"&gt;MSDN&lt;/a&gt;). Though I wouldn’t be explaining about the query as Hrvoje himself would blog about it soon (once he gets off the SSAS forums and twitter, which could be never &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://lh5.ggpht.com/_TMh7Ez9bsn0/Ta4X65LfnhI/AAAAAAAACY8/0kDsc_QCZ1s/wlEmoticon-winkingsmile%5B2%5D.png?imgmax=800"&gt;), I was trying to recreate the scenario in the cube and was involving a lot of dynamic sets. That is when I hit upon the problem – queries which were running in split seconds started to drag. And I am not even speaking of the measures which involved those dynamic named sets. If you are a beginner to named sets, I would suggest having a quick glance through the post – &lt;a title="Static Named Sets v/s Dynamic Named Sets" href="http://road-blogs.blogspot.com/2010/05/static-named-sets-vs-dynamic-named-sets.html" target="_blank"&gt;Static Named Sets v/s Dynamic Named Sets&lt;/a&gt; before reading further.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_TMh7Ez9bsn0/Ta4X7YiVtYI/AAAAAAAACZA/JqaPCIqz_BU/s1600-h/Dynamic%20Set%20Performance%5B5%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Dynamic Set Performance" border="0" alt="Dynamic Set Performance" src="http://lh4.ggpht.com/_TMh7Ez9bsn0/Ta4X7nD3z8I/AAAAAAAACZE/vSPBSVqxBho/Dynamic%20Set%20Performance_thumb%5B3%5D.jpg?imgmax=800" width="504" height="209"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The steps to demonstrate the issues are given below.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#008040" size="2"&gt;&lt;strong&gt;&lt;u&gt;Problem&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;1) Before illustrating the problem, let us take the average times of a simple query in cold cache. For the demo, the query shown below is used&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#9b00d3" size="1"&gt;SELECT [Measures].[Internet Sales Amount] ON 0&lt;br&gt;FROM [Adventure Works]&lt;br&gt;WHERE {[Date].[Calendar Year].&amp;amp;[2002],[Date].[Calendar Year].&amp;amp;[2001]}&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The average time in cold cache was around 63ms in my laptop.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_TMh7Ez9bsn0/Ta4X8DXISDI/AAAAAAAACZI/xfN4mGDs3AU/s1600-h/1%20Query%20before%20set%20creation%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="1 Query before set creation" border="0" alt="1 Query before set creation" src="http://lh6.ggpht.com/_TMh7Ez9bsn0/Ta4X8iOttfI/AAAAAAAACZM/_h_qXgFvxW0/1%20Query%20before%20set%20creation_thumb%5B1%5D.jpg?imgmax=800" width="404" height="136"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;2) Now a simple dynamic set is created in the cube calculated member script as shown below&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#9b00d3" size="1"&gt;CREATE DYNAMIC SET CURRENTCUBE.[ExSet]&lt;br&gt;AS (EXISTING [Date].[Calendar].[Calendar Year]);&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The average time of the previous query is again checked in cold cache and is found out to be around 63ms still. All well and good so far.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;3) Now create a measure which will refer the dynamic set, like shown below&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#9b00d3" size="1"&gt;CREATE MEMBER CURRENTCUBE.[Measures].SetString&lt;br&gt;AS SetToStr(ExSet), &lt;br&gt;VISIBLE = 1&amp;nbsp; ;&lt;/font&gt; &lt;/p&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;The average time of the previous query is again checked and suddenly, it has come up to 1.1s which is an increase of 75%. – &lt;strong&gt;&lt;font style="background-color: #ff0000"&gt;Issue 1&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_TMh7Ez9bsn0/Ta4X9HC4i0I/AAAAAAAACZQ/2orMXEQiThc/s1600-h/2%20Query%20after%20set%20creation%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="2 Query after set creation" border="0" alt="2 Query after set creation" src="http://lh3.ggpht.com/_TMh7Ez9bsn0/Ta4X95Vh4AI/AAAAAAAACZU/eWDbYT5plx8/2%20Query%20after%20set%20creation_thumb%5B1%5D.jpg?imgmax=800" width="404" height="132"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;4) Let us also note down the time taken to display the SetString measure which was created.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_TMh7Ez9bsn0/Ta4X-xpZ7BI/AAAAAAAACZY/Gh6Imc2cwZg/s1600-h/3%20Query%20for%20SetString%20measure%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="3 Query for SetString measure" border="0" alt="3 Query for SetString measure" src="http://lh5.ggpht.com/_TMh7Ez9bsn0/Ta4X_GmuOiI/AAAAAAAACZc/X5zOYcg4fC4/3%20Query%20for%20SetString%20measure_thumb%5B1%5D.jpg?imgmax=800" width="404" height="171"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Even this takes around 1.1s on cold cache which is a lot for such a simple operation. - &lt;strong&gt;&lt;font style="background-color: #ff0000"&gt;Issue 2&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#008040" size="2"&gt;&lt;strong&gt;&lt;u&gt;Reason&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;On closely checking the traces from Profiler, it is found that when the SetString measure referring the dynamic set is not created, only the above query (in step 1) gets executed (after the calculated member script is loaded into memory). However, after the SetString measure is created, in addition to the above events, a series of Query dimension events and Calculate Non Empty Current events are generated which indicates that the dynamic set is being evaluated, even though it is not being used in the query. &lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_TMh7Ez9bsn0/Ta4YAFxaaAI/AAAAAAAACZg/JdKtX139C8Y/s1600-h/4%20Reason%20for%20performance%20degradation%5B19%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="4 Reason for performance degradation" border="0" alt="4 Reason for performance degradation" src="http://lh5.ggpht.com/_TMh7Ez9bsn0/Ta4YAjugImI/AAAAAAAACZk/pWvEgiRq6EI/4%20Reason%20for%20performance%20degradation_thumb%5B21%5D.jpg?imgmax=800" width="504" height="275"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#008040" size="2"&gt;Workaround&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;A workaround for this issue is to trick the engine into thinking that the dynamic set is not being referred. This can be done by replacing the set with StrToSet. Eg – the dynamic set &lt;strong&gt;ExSet&lt;/strong&gt; will be replaced by &lt;strong&gt;StrToSet(‘ExSet’)&lt;/strong&gt;. Hence, the calculated member definition in the script will be modified as shown below&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#9b00d3" size="1"&gt;CREATE MEMBER CURRENTCUBE.[Measures].SetString&lt;br&gt;AS SetToStr(StrToSet(‘ExSet’)), VISIBLE = 1 ;&lt;/font&gt; &lt;/p&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;This will solve the issue and bring the performance back to normal.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_TMh7Ez9bsn0/Ta4YBIiniKI/AAAAAAAACZo/XyA7lLgy9nc/s1600-h/5%20Solution%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="5 Solution" border="0" alt="5 Solution" src="http://lh5.ggpht.com/_TMh7Ez9bsn0/Ta4YBlJkHwI/AAAAAAAACZs/PJodtu8Af38/5%20Solution_thumb%5B1%5D.jpg?imgmax=800" width="504" height="416"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#008040" size="2"&gt;&lt;strong&gt;&lt;u&gt;Note&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;This issue had been raised in Connect almost 20 months ago and Microsoft had responded saying that they will investigate this in the future release. As of now (SQL Server 2008 R2 – 10.50.1600.1), there has been no improvements and part of it could be because of the very low number of votes. Considering that the performance could get a lot more worse in the case of complex dynamic sets, it is a serious issue for me and needs to be fixed. If you also feel the same, please vote for this Connect issue – &lt;a href="https://connect.microsoft.com/SQLServer/feedback/details/484865/calcuated-member-with-a-reference-to-dynamic-named-set-kills-the-cubes-performance" target="_blank"&gt;Calculated member with a reference to dynamic named set Kills the cube's performance&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-7198671997362022331?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=IuTV8dyfAaE:V3hY540-rOY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=IuTV8dyfAaE:V3hY540-rOY:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=IuTV8dyfAaE:V3hY540-rOY:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/IuTV8dyfAaE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/7198671997362022331/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2011/04/performance-problems-with-dynamic-named.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/7198671997362022331?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/7198671997362022331?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/IuTV8dyfAaE/performance-problems-with-dynamic-named.html" title="Performance problems with Dynamic Named Sets" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_TMh7Ez9bsn0/Ta4X65LfnhI/AAAAAAAACY8/0kDsc_QCZ1s/s72-c/wlEmoticon-winkingsmile%5B2%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2011/04/performance-problems-with-dynamic-named.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQCR3c7eyp7ImA9WhZRGEs.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-9007612571785858327</id><published>2011-04-14T13:34:00.001-04:00</published><updated>2011-04-15T06:29:26.903-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-15T06:29:26.903-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Activities / Whitepapers / Events" /><title>SQLBits 8 - Hangover</title><content type="html">&lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Yups, 10 days have passed since I attended the SQLBits by the Seaside, and I am yet to recover from the hangover. And nopes, I am not talking of the hangover from the beer I drank (though I must admit I did guzzle down a few too many, thanks to all the wonderful sponsors who were way too generous handing out free coupons). &lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/_TMh7Ez9bsn0/TacwEsluZTI/AAAAAAAACXo/Y1uKheqzlS0/s1600-h/SQLBitsLogo%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="SQLBitsLogo" border="0" alt="SQLBitsLogo" src="http://lh5.ggpht.com/_TMh7Ez9bsn0/TacwFJk1XhI/AAAAAAAACXs/YEB1f00UGAE/SQLBitsLogo_thumb%5B1%5D.png?imgmax=800" width="240" height="81"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;I had become a big fan of the SQLBits conferences, ever since I attended the last one in York. But this time, I was even more excited because it was going to be held in Brighton. Sunny forecasts and the prospect of lunch at the beach just made me count down the days till April 3. In a sadistic sort of way, I was even more pleased with myself on registering pretty early because many people could not get it done on account of the registration being fully booked. In fact, I had to use some native Indian yoga tricks to restrain myself from flaunting it off in front of my poor colleagues who couldn’t get a reservation. Due to work reasons, I had only gone for the free community day sessions on Saturday.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;I reached Brighton by 8.55am and straightaway jumped into Marco Russo’s (&lt;a href="http://sqlblog.com/blogs/marco_russo/" target="_blank"&gt;blog&lt;/a&gt; | &lt;a href="http://twitter.com/#!/marcorus" target="_blank"&gt;twitter&lt;/a&gt;) session on Analysis Services Advanced Best Practices.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_TMh7Ez9bsn0/TacwFoQRLqI/AAAAAAAACXw/Mg9D0e77FmU/s1600-h/IMG_0043%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMG_0043" border="0" alt="IMG_0043" src="http://lh3.ggpht.com/_TMh7Ez9bsn0/TacwGJXfKuI/AAAAAAAACX0/op8V_0FRPD4/IMG_0043_thumb.jpg?imgmax=800" width="244" height="211"&gt;&lt;/a&gt;&lt;a href="http://lh4.ggpht.com/_TMh7Ez9bsn0/TacwGgC6bPI/AAAAAAAACX4/llHVqU_-0NE/s1600-h/IMG_0044%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMG_0044" border="0" alt="IMG_0044" src="http://lh5.ggpht.com/_TMh7Ez9bsn0/TacwHBEJ7TI/AAAAAAAACX8/jVKEPDj7rXY/IMG_0044_thumb%5B1%5D.jpg?imgmax=800" width="244" height="211"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Even though it was a level 400 session, Marco explained the concepts in a very simple way so that everyone could understand and the session was pretty captivating. In the end, I took away some very nice design related tips for SSAS dimensions for scenarios like SCD type 2, parent-child, etc.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Next I went for John Stevens-Taylor’s (&lt;a href="http://throughadarkglassclearly.blogspot.com/" target="_blank"&gt;blog&lt;/a&gt; | &lt;a href="http://twitter.com/#!/jstevenstaylor" target="_blank"&gt;twitter&lt;/a&gt;) session on Data Modelling for a Flexible Cube. The room was so jam packed with people that I had to stand at the back and even then, people were pouring in. Since I had sprained my ankle the other day, I couldn’t stand for long and I came out rueing on not coming early to the room. This feeling was compounded when I came to hear the amazing feedback on the session.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;After that, I was double minded on whether to go for the SQL Product Team Panel session by the SQL CAT Team or for Vincent Rainardi’s (&lt;/font&gt;&lt;a href="http://dwbi1.wordpress.com/" target="_blank"&gt;&lt;font size="2"&gt;blog&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;) session on Advanced Dimensional Modelling. I &lt;font color="#000000"&gt;decided to go for Vincent’s session and had a very enriching time there learning about &lt;span style="widows: 2; text-transform: none; text-indent: 0px; letter-spacing: normal; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="line-height: 21px; font-family: arial; font-size: 13px" class="Apple-style-span"&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;Fact Table Primary Key, Vertical Fact Tables, Aggregate Fact Tables, SCD Type 6, Snapshotting Transaction Fact Tables, Dealing with Currency Rates, When to Snowflake,&lt;/span&gt;&lt;/span&gt; etc.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_TMh7Ez9bsn0/TacwHsg0rwI/AAAAAAAACYA/oqHfUG6fq4M/s1600-h/IMG_0049%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMG_0049" border="0" alt="IMG_0049" src="http://lh5.ggpht.com/_TMh7Ez9bsn0/TacwH8yOTNI/AAAAAAAACYE/XXoYGXC_YcE/IMG_0049_thumb.jpg?imgmax=800" width="244" height="164"&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/_TMh7Ez9bsn0/TacwIaTZICI/AAAAAAAACYI/vh5D_aYFUO8/s1600-h/IMG_0048%5B5%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMG_0048" border="0" alt="IMG_0048" src="http://lh5.ggpht.com/_TMh7Ez9bsn0/TacwI9d6vbI/AAAAAAAACYM/uHEFlL65ykk/IMG_0048_thumb%5B8%5D.jpg?imgmax=800" width="246" height="164"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Soon after the session, I was able to materialize my dream of having lunch at the Brighton beach side, soaking up the warm sun and watching the surfs getting washed up the shore (ok, I admit, and some hot chicks in bikinis &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-flirtmale" alt="Flirt male" src="http://lh4.ggpht.com/_TMh7Ez9bsn0/TacwJKiUTII/AAAAAAAACYQ/F3T55tOznUQ/wlEmoticon-flirtmale%5B2%5D.png?imgmax=800"&gt;)&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;The next one I attended was Jamie Thomson’s (&lt;a href="http://sqlblog.com/blogs/jamie_thomson/" target="_blank"&gt;blog&lt;/a&gt; | &lt;a href="http://twitter.com/#!/jamiet" target="_blank"&gt;twitter&lt;/a&gt;) session on SSIS Dataflow Performance Tuning. Though I am more of a SSAS/SSRS person than SSIS, I just couldn’t stop myself from attending Jamie’s session, I had attended one of his sessions in a Local User Group meeting, and have remained a big fan of his presentations after that.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/_TMh7Ez9bsn0/TacwJXMfW8I/AAAAAAAACYU/eDyCQ4pokjo/s1600-h/IMG_0050%5B7%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMG_0050" border="0" alt="IMG_0050" src="http://lh5.ggpht.com/_TMh7Ez9bsn0/TacwKMMtTxI/AAAAAAAACYY/36sSA3XiC1E/IMG_0050_thumb%5B3%5D.jpg?imgmax=800" width="245" height="186"&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/_TMh7Ez9bsn0/TacwKShZuPI/AAAAAAAACYc/o44VPEMjCkI/s1600-h/IMG_0051%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMG_0051" border="0" alt="IMG_0051" src="http://lh5.ggpht.com/_TMh7Ez9bsn0/TacwK2F6-oI/AAAAAAAACYg/erqsn2FuiCE/IMG_0051_thumb%5B7%5D.jpg?imgmax=800" width="244" height="186"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;His session was heavily based on demos which made it very interesting and I had some great takeaways from his session on performance tuning and execution trees.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;Next on my list was Alex Whittles’ (&lt;/font&gt;&lt;a href="http://www.purplefrogsystems.com/blog/" target="_blank"&gt;&lt;font size="2"&gt;blog&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; | &lt;/font&gt;&lt;a href="http://twitter.com/#!/purplefrogsys" target="_blank"&gt;&lt;font size="2"&gt;twitter&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;) session on Automating SSAS cube documentation using SSRS, DMV and Spatial Data. Now if you are one of those who follow the SQL world in twitter, you would be already aware of the &lt;em&gt;‘Spatial Art’&lt;/em&gt; tweets being passed around by Alex&lt;font color="#000000"&gt;, &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000" size="2"&gt;Alastair (&lt;a href="http://alastaira.wordpress.com" target="_blank"&gt;blog&lt;/a&gt; | &lt;a href="http://twitter.com/#!/AlastairA" target="_blank"&gt;twitter&lt;/a&gt;) and Simon (&lt;a href="http://sqlblogcasts.com/blogs/simons" target="_blank"&gt;blog&lt;/a&gt; | &lt;a href="http://twitter.com/#!/simon_sabin" target="_blank"&gt;twitter&lt;/a&gt;). This got me hooked and I was waiting for the session to actually see it live. &lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/_TMh7Ez9bsn0/TacwLEPgdXI/AAAAAAAACYk/ARsFWwuDMoo/s1600-h/IMG_0053%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMG_0053" border="0" alt="IMG_0053" src="http://lh4.ggpht.com/_TMh7Ez9bsn0/TacwLkyKs8I/AAAAAAAACYo/_VnXCED122A/IMG_0053_thumb%5B1%5D.jpg?imgmax=800" width="244" height="205"&gt;&lt;/a&gt;&lt;a href="http://lh4.ggpht.com/_TMh7Ez9bsn0/TacwL4JhC0I/AAAAAAAACYs/L-WyV9_oIJw/s1600-h/IMG_0054%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMG_0054" border="0" alt="IMG_0054" src="http://lh4.ggpht.com/_TMh7Ez9bsn0/TacwMfKPoGI/AAAAAAAACYw/LMhnHlZ4Kyw/IMG_0054_thumb%5B5%5D.jpg?imgmax=800" width="244" height="204"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Alex’s slides were so beautifully done and I was so much in awe of his presentation skills. The topic was like a breath of fresh air and to top it all, I won a book on Microsoft SQL Azure during his session.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Soon we had the customary post event party and lots of prizes were announced from 50” plasma TV to Xboxes. Everyone I spoke to had lots of fun and a big thanks to all the sponsors without whom it would not have been possible.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/_TMh7Ez9bsn0/TacwM7nptZI/AAAAAAAACY0/stl-o0FTm78/s1600-h/Sponsors%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Sponsors" border="0" alt="Sponsors" src="http://lh5.ggpht.com/_TMh7Ez9bsn0/TacwNEAxPpI/AAAAAAAACY4/EYebjJmojog/Sponsors_thumb%5B2%5D.jpg?imgmax=800" width="504" height="241"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;A special mention for &lt;a title="Fusion-IO" href="http://www.fusionio.com/" target="_blank"&gt;Fusion-IO&lt;/a&gt; for successfully conducting the &lt;a href="http://www.crappycodegames.com/" target="_blank"&gt;Crappy Code Games&lt;/a&gt; in Manchester, London and Brighton, was really an awesome event. Totally loved it! (Click here to read my &lt;a title="Crappy Code Games 2011 - London" href="http://road-blogs.blogspot.com/2011/03/crappy-code-games-2011-london.html" target="_blank"&gt;London&lt;/a&gt; experience).&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font color="#000000" size="2"&gt;Now this post would not be complete without thanking the people behind it - Simon Sabin, Christian Bolton, James Rowland-Jones, Martin Bell, Darren Green, Chris Webb, Allan Mitchell, Tim Kent and Chris Testa-O’Neill. A big, BIG, &lt;strong&gt;&lt;font size="3"&gt;BIG&lt;/font&gt;&lt;/strong&gt; thanks to all of you guys.&lt;/font&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;Now for those who&lt;/font&gt; missed SQLBits 8 (and those who are still in the hangover like me), what better way to relive the experience than Jamie’s videos. Catch them right here - &lt;a title="Reflections on SQLBits 8" href="http://sqlblog.com/blogs/jamie_thomson/archive/2011/04/10/reflections-on-sqlbits-8.aspx" target="_blank"&gt;Reflections on SQLBits 8&lt;/a&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;br&gt;&lt;/p&gt;&lt;/font&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-9007612571785858327?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=nhOxYXmncdg:MM_PSeiK-EY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=nhOxYXmncdg:MM_PSeiK-EY:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=nhOxYXmncdg:MM_PSeiK-EY:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/nhOxYXmncdg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/9007612571785858327/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2011/04/sqlbits-8-hangover.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/9007612571785858327?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/9007612571785858327?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/nhOxYXmncdg/sqlbits-8-hangover.html" title="SQLBits 8 - Hangover" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_TMh7Ez9bsn0/TacwFJk1XhI/AAAAAAAACXs/YEB1f00UGAE/s72-c/SQLBitsLogo_thumb%5B1%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2011/04/sqlbits-8-hangover.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUER3k7eCp7ImA9WhZREEw.&quot;"><id>tag:blogger.com,1999:blog-4208106035476527184.post-8436794652127148731</id><published>2011-04-05T10:49:00.000-04:00</published><updated>2011-04-05T11:26:46.700-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-05T11:26:46.700-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MDX" /><title>MDX Basics</title><content type="html">&lt;div align="justify"&gt;&lt;span style="font-size: x-small"&gt;&lt;font color="#000000" size="2"&gt;One of my colleagues in MindTree Ltd, &lt;/font&gt;&lt;a title="Bragdishwaran U" href="http://www.linkedin.com/profile/view?id=17563981" target="_blank"&gt;&lt;font color="#0000ff" size="2"&gt;Bragdishwaran U&lt;/font&gt;&lt;/a&gt;&lt;font color="#000000" size="2"&gt;, had recently taken a session on MDX Basics. I found the session well structured and specially asked his permission to publish the slides from his deck for the benefit of my readers who are completely new to MDX.&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;div align="justify"&gt;&lt;span style="font-size: x-small"&gt;&lt;font color="#000000" size="2"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt; &lt;div align="justify"&gt;&lt;a title="Download 'MDX Basics' ppt by clicking here" href="https://docs.google.com/present/edit?id=0AVk6zmQ4NXQlZGRjNmZ0bnFfMTBjcTJkODVmeg&amp;amp;hl=en" target="_blank"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Download MDX Basics ppt by clicking here" border="0" alt="Download MDX Basics ppt by clicking here" src="http://lh4.ggpht.com/_TMh7Ez9bsn0/TZsy7K-QPWI/AAAAAAAACXk/X-K1OvMfwPc/MDX%20Basics%5B8%5D.jpg?imgmax=800" width="125" height="55"&gt;&lt;/a&gt;&lt;/div&gt; &lt;div align="justify"&gt; &lt;div style="width: 425px" id="__ss_7522576"&gt;&lt;strong style="margin: 12px 0px 4px; display: block"&gt;&lt;/strong&gt;&lt;object id="__sse7522576" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mdxbasics-110405090654-phpapp01&amp;amp;stripped_title=mdx-basics-7522576&amp;amp;userName=jason143" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed name="__sse7522576" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mdxbasics-110405090654-phpapp01&amp;amp;stripped_title=mdx-basics-7522576&amp;amp;userName=jason143" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt; &lt;div style="padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 5px"&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div align="justify"&gt;&lt;span style="color: black; font-size: x-small"&gt;&lt;font size="2"&gt;Feel free to comment and let me know if there are any additional areas you would like to see being included here.&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4208106035476527184-8436794652127148731?l=road-blogs.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=oFX0kpIJWCE:agZ4VLPaWNE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Jason?a=oFX0kpIJWCE:agZ4VLPaWNE:3QFJfmc7Om4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Jason?i=oFX0kpIJWCE:agZ4VLPaWNE:3QFJfmc7Om4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Jason/~4/oFX0kpIJWCE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://road-blogs.blogspot.com/feeds/8436794652127148731/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://road-blogs.blogspot.com/2011/04/mdx-basics.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/8436794652127148731?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4208106035476527184/posts/default/8436794652127148731?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Jason/~3/oFX0kpIJWCE/mdx-basics.html" title="MDX Basics" /><author><name>Jason Thomas</name><uri>http://www.blogger.com/profile/14392541524727505933</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="27" height="32" src="http://3.bp.blogspot.com/_TMh7Ez9bsn0/SccWymuXtWI/AAAAAAAAAb8/da2bAUASXjU/S220/exp1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_TMh7Ez9bsn0/TZsy7K-QPWI/AAAAAAAACXk/X-K1OvMfwPc/s72-c/MDX%20Basics%5B8%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://road-blogs.blogspot.com/2011/04/mdx-basics.html</feedburner:origLink></entry></feed>

