<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Boon Blog</title><link>http://blogs.msdn.com/b/seanboon/</link><description>All Things Data Visualization.</description><dc:language>en-US</dc:language><generator>Telligent Community 5.6.583.19431 (Build: 5.6.583.19431)</generator><item><title>Project “Crescent” Demo: Introduction to Highlighting</title><link>http://blogs.msdn.com/b/seanboon/archive/2011/08/05/project-crescent-demo-introduction-to-highlighting.aspx</link><pubDate>Fri, 05 Aug 2011 07:46:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10193070</guid><dc:creator>Sean Boon</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/seanboon/rsscomments.aspx?WeblogPostID=10193070</wfw:commentRss><comments>http://blogs.msdn.com/b/seanboon/archive/2011/08/05/project-crescent-demo-introduction-to-highlighting.aspx#comments</comments><description>&lt;p&gt;With the release of SQL Server “Denali” CTP3, we are introducing Project “Crescent”.&amp;#160; Project Crescent is Reporting Services’ new reporting tool targeted at data consumers to visually explore their data and answer ad-hoc questions with ease.&amp;#160; There is lots to cover with Project Crescent and over the next months you are going to see a significant amount of content related to it via the usual channels.&amp;#160; In fact, if you haven’t taken the opportunity yet, I’d highly recommend the following links:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/sqlrsteamblog/archive/2011/07/12/sql-server-codename-quot-denali-quot-ctp3-including-project-quot-crescent-quot-is-now-publically-available.aspx"&gt;SQL Server Reporting Services Team Blog Announces Project Crescent Availability&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://social.technet.microsoft.com/wiki/contents/articles/project-crescent-overview.aspx"&gt;Project Crescent Overview and Wiki&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DBI208"&gt;Project Crescent: Demos Galore&lt;/a&gt;&amp;#160; (session from TechEd North America 2011) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Also, today, we released a lengthy 14 minute video titled &lt;a href="http://www.youtube.com/watch?v=JJgNPKvhLkY&amp;amp;list=PL1CD08919ABF42DA2&amp;amp;index=1"&gt;Project Crescent: Getting Started and Getting the Most from Project Crescent&lt;/a&gt;.&amp;#160; It covers much of the functionality available in CTP3.&lt;/p&gt;  &lt;p align="justify"&gt;In addition to these resources I’m planning on starting a video series accompanied by a set of PowerPivot workbooks.&amp;#160; These videos will be based on real data, all of which I plan to make available for everyone to download.&amp;#160; I certainly view these as works in progress, and as I look at topics to cover, I’ll definitely be making changes to the workbooks and republishing them.&amp;#160; And if you are watching these videos, and you questions or have an idea about how to improve the workbooks with examples, please do feel free to contact me here on the blog.&amp;#160; I’d like this to be as much of a community effort as possible.&lt;/p&gt;  &lt;p align="justify"&gt;This first video demonstrates a feature in Project Crescent that is known as highlighting.&amp;#160; If you want to read a great article on this topic, I highly recommend Stephen Few’s article &lt;a href="http://www.perceptualedge.com/articles/visual_business_intelligence/coordinated_highlighting_in_context.pdf"&gt;Coordinated Highlighting in Context&lt;/a&gt;.&amp;#160; I’m going to demonstrate the Crescent functionality over a set of maybe two or three videos, and this first one covers the interactivity associated with column charts and column charts that have series and a legend.&amp;#160; The data being used for this demonstration is from the &lt;a href="http://cars.gov"&gt;CARS&lt;/a&gt; (Car Allowance Rebate System) program that ran here in the United States during 2009. You may have heard of this program by another name, the “Cash for Clunkers” program.&amp;#160;&amp;#160; At any rate, being a government program, the data is all freely available for download on the site and I have turned it into a very basic PowerPivot workbook that you can download &lt;a href="https://skydrive.live.com/redir.aspx?cid=209305deacf224d0&amp;amp;resid=209305DEACF224D0!597"&gt;here&lt;/a&gt; if you like.&amp;#160; There are quite a few interesting stories to tell about this data, and I hope to show you some of them.&amp;#160;&amp;#160; Over time as I create more videos and demos covering additional topics, I plan to update the workbook and continue to make it available.&amp;#160; Below is the first video on this topic.&lt;/p&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:19366119-ecf2-40d3-b823-451d6bace292" class="wlWriterEditableSmartContent"&gt;&lt;div id="df87518d-abd3-4a4e-bbf3-ed210ffab54c" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=9D4LfSwNLxE&amp;amp;feature=youtube_gdata_player" target="_new"&gt;&lt;img src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-48-metablogapi/5430.video2acacb04f65c.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('df87518d-abd3-4a4e-bbf3-ed210ffab54c'); 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/9D4LfSwNLxE?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/9D4LfSwNLxE?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;Project Crescent Demo: Introduction to Highlighting&lt;/div&gt;&lt;/div&gt; &amp;gt;  &lt;p&gt;To summarize the video, everything in a Crescent report is interactive (except maybe the textboxes : ) ).&amp;#160; People can simply click on a column in a chart and use that as means to highlight data throughout the report.&amp;#160; The other thing you hopefully noticed is that as a report author, I didn’t have to configure this feature at all, it just works.&amp;#160; There are no property pages that open up and require you to be an expert in how the system works underneath to make it all happen.&amp;#160; Much of it happens due to the relationships that are already defined in the model, but as someone who is creating the report or interacting with the data, you don’t even need to be aware of that.&amp;#160; And highlighting isn’t the only thing that happens on the canvas.&amp;#160; Charts can also filter and we’ll look at that feature in a future video.&amp;#160; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10193070" width="1" height="1"&gt;</description></item><item><title>Map Gallery on Codeplex for your SSRS 2008 R2 Reports</title><link>http://blogs.msdn.com/b/seanboon/archive/2010/09/29/map-gallery-on-codeplex-for-your-ssrs-2008-r2-reports.aspx</link><pubDate>Wed, 29 Sep 2010 16:03:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10069324</guid><dc:creator>Sean Boon</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/seanboon/rsscomments.aspx?WeblogPostID=10069324</wfw:commentRss><comments>http://blogs.msdn.com/b/seanboon/archive/2010/09/29/map-gallery-on-codeplex-for-your-ssrs-2008-r2-reports.aspx#comments</comments><description>&lt;p&gt;If you are using maps in SSRS 2008 R2, you might be aware that the Map Wizard only provides U.S. based maps.&amp;nbsp; However, it is totally possible to add more maps to the gallery.&amp;nbsp; Head on over to &lt;a href="http://mapgallery.codeplex.com/"&gt;http://mapgallery.codeplex.com/&lt;/a&gt;&amp;nbsp;where&amp;nbsp;a community project has started up to provide maps for other locations.&amp;nbsp; The site also includes links to directions for how you can create files that will load into the Map Gallery for Reporting Services.&amp;nbsp; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10069324" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/SSRS/">SSRS</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/maps/">maps</category></item><item><title>Maps:  You’re Missing the Point(s)!</title><link>http://blogs.msdn.com/b/seanboon/archive/2010/05/03/maps-you-re-missing-the-point-s.aspx</link><pubDate>Mon, 03 May 2010 16:41:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10006428</guid><dc:creator>Sean Boon</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/seanboon/rsscomments.aspx?WeblogPostID=10006428</wfw:commentRss><comments>http://blogs.msdn.com/b/seanboon/archive/2010/05/03/maps-you-re-missing-the-point-s.aspx#comments</comments><description>&lt;p&gt;While the map in SSRS 2008 R2 supports different data sources for spatial data (ESRI shape files, SQL Server spatial, and included maps in the Map Gallery), sometimes that may not be enough for your needs.&amp;#160; Another way you can get spatial data into the map is to add it to the map directly in the report authoring environment (both BIDS and Report Builder 3.0).&amp;#160; &lt;/p&gt;  &lt;p&gt;In this scenario, we’ll look at an example where you might have a list of stores with just a store name field and you’d like to show their sales and profitability.&amp;#160; The dataset looks like this.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_thumb.png" width="515" height="249" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once you have the dataset, simply add a map to the report by right-clicking –&amp;gt; Insert Map.&amp;#160; This will place a blank map on the report.&lt;/p&gt;  &lt;p&gt;Next, select a map and add a tile layer.&amp;#160; This will place a Bing! maps tile layer background on the map.&amp;#160; In our case, we are going to assume that our stores are all in the state of Washington so we need to zoom the map into the Washington state area and we can do that by just panning and zooming the map in the designer.&amp;#160;&amp;#160; After zooming and panning the map will look something like this.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_thumb_1.png" width="485" height="323" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now that we have the state, we can add embedded points into the map.&amp;#160; For our case, we are going to assume that our three stores are in Seattle, Tacoma, and Olympia.&amp;#160; To add the points, first add a point layer to the map using the fly-out.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_thumb_2.png" width="489" height="479" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now there is a point layer on the map.&amp;#160; Next, select the drop-down on the point layer and choose the option to “Add Point” as shown below.&amp;#160;&amp;#160; Add the point over the Seattle city area.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_thumb_3.png" width="489" height="434" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Once the point is on the map, you can select it and bring up its property page.&amp;#160; Give the point a name, and you can optionally choose to open up a lot of other properties for the point using the checkbox override.&amp;#160;&amp;#160; For now, we’ll leave this box in its unchecked state.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_thumb_4.png" width="478" height="330" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Repeat this procedure to add Store 2 and Store 3 in Tacoma and Olympia.&amp;#160; &lt;/p&gt;  &lt;p&gt;Once the map has all three points added, select the Point Layer in the fly-out and choose the option to bring up the layer wizard.&amp;#160; This will bring up the layer wizard for the point layer.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_thumb_5.png" width="488" height="359" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Select the Bubble Map option and hit “Next”.&amp;#160; On the next page where the wizard asks you to select an analytical dataset, select the dataset you created based on the query at the beginning of this post, and then select “Next”.&lt;/p&gt;  &lt;p&gt;On the next page you will be asked to bind the analytical data to the name property we created on the embedded points.&amp;#160; Here’s a screenshot of what that should look like.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_thumb_6.png" width="488" height="359" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;On the next page of the wizard, we’ll choose the options for setting the bubble size and bubble color.&amp;#160; In our case, we want to make the bubble sizes dependent on sales and the bubble color to be dependent on profit margin.&amp;#160; Below is what the wizard should look like once it’s filled in.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_20.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_thumb_9.png" width="464" height="341" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Click “Finish” to leave the wizard and return to the report design surface. &lt;/p&gt;  &lt;p&gt;Before we run the report, there’s one last bit of cleanup we need to do.&amp;#160; Select the Point Layer and bring up the Point Color rule property page.&amp;#160; We want to remove the point colors showing up in the legend on the right.&amp;#160; Select the Legend tab and from the “Show in Legend” drop-down, de-select Legend1 as shown below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_22.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_thumb_10.png" width="464" height="422" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Exit the property page and then return to the report.&amp;#160; Go ahead and run it now and you should see the following:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_24.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/MapsYoureMissingthePoints_8813/image_thumb_11.png" width="450" height="307" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;That’s it. Of course,&amp;#160; you could go in and add a Legend Title, or even change the Point color rule properties to create as many color buckets as you like to customize the report further.&amp;#160; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7cfac6a7-c3bd-44fa-ad99-770d4575e8ae" class="wlWriterEditableSmartContent"&gt;del.icio.us Tags: &lt;a href="http://del.icio.us/popular/SSRS" rel="tag"&gt;SSRS&lt;/a&gt;,&lt;a href="http://del.icio.us/popular/maps" rel="tag"&gt;maps&lt;/a&gt;,&lt;a href="http://del.icio.us/popular/R2" rel="tag"&gt;R2&lt;/a&gt;,&lt;a href="http://del.icio.us/popular/SQL+Server+Reporting+Services+2008+R2" rel="tag"&gt;SQL Server Reporting Services 2008 R2&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10006428" width="1" height="1"&gt;</description></item><item><title>SSRS 2008 R2 Data Visualization Examples</title><link>http://blogs.msdn.com/b/seanboon/archive/2010/03/18/ssrs-2008-r2-data-visualization-examples.aspx</link><pubDate>Thu, 18 Mar 2010 02:20:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9980866</guid><dc:creator>Sean Boon</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/seanboon/rsscomments.aspx?WeblogPostID=9980866</wfw:commentRss><comments>http://blogs.msdn.com/b/seanboon/archive/2010/03/18/ssrs-2008-r2-data-visualization-examples.aspx#comments</comments><description>&lt;p&gt;Today, the Reporting Services team gave a series of presentations at an all day “airlift” event.&amp;#160; Here are the &lt;a href="http://cid-209305deacf224d0.skydrive.live.com/browse.aspx/SSRS%202008%20R2%20Airlift" target="_blank"&gt;reports and database&lt;/a&gt; backup for the demo I gave.&amp;#160; In future posts, I will&amp;#160; walk through building this report.&amp;#160; Thank you for attending the event today!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9980866" width="1" height="1"&gt;</description></item><item><title>An Introduction to Data Bars in SQL Server Reporting Services 2008 R2</title><link>http://blogs.msdn.com/b/seanboon/archive/2009/11/23/an-introduction-to-data-bars-in-sql-server-reporting-services-2008-r2.aspx</link><pubDate>Mon, 23 Nov 2009 21:30:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9927555</guid><dc:creator>Sean Boon</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/seanboon/rsscomments.aspx?WeblogPostID=9927555</wfw:commentRss><comments>http://blogs.msdn.com/b/seanboon/archive/2009/11/23/an-introduction-to-data-bars-in-sql-server-reporting-services-2008-r2.aspx#comments</comments><description>&lt;p&gt;Data Bars are a new feature in SQL Server Reporting Services 2008 R2 introduced with the November CTP.&amp;#160; Data Bars are useful for building what are often referred to as “trellis” and “table lense” displays that help report consumers indentify possible correlations between multiple values, or in the case of a single column, to simply get an idea of the distribution of small and large values, and the differences between them.&amp;#160; &lt;/p&gt;  &lt;p&gt;I’ve taken the NFL report from a previous post and added a few columns to it to show what is possible using the new data bar feature in SQL Server Reporting Services.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DataBarsinSQLServerReportingServices2008_12D04/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DataBarsinSQLServerReportingServices2008_12D04/image_thumb_1.png" width="521" height="617" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The first column to the right of the sparkline displays the team’s turn over ratio.&amp;#160; One more column to the right displays the team’s points per game versus the league average.&amp;#160; The final column displays the team’s yards per game statistic.&amp;#160; &lt;/p&gt;  &lt;p&gt;When I first look at this table, which is sorted by total wins, I see a couple of things.&amp;#160; First, the Denver Broncos gained the most yards, but turned the ball over a lot (which probably explains why they missed the playoffs last year and maybe why the Bears are having problems this year :)&amp;#160; ).&amp;#160;&amp;#160; Second, the teams that score less points than the league average also tend to lose more games than average.&amp;#160; That’s a bit obvious, but notice that the Steelers actually scored less than the league average, but had the third most wins.&amp;#160; Without the aid of the data bars, I suspect it would take much longer to see these insights.&lt;/p&gt;  &lt;p&gt;To build this report, you will need to download the NFL database &lt;a href="http://cid-209305deacf224d0.skydrive.live.com/self.aspx/SSRS%202008%20R2%20Samples/NFLStats.bak"&gt;here&lt;/a&gt;.&amp;#160; Also download the &lt;a href="http://cid-209305deacf224d0.skydrive.live.com/self.aspx/SSRS%202008%20R2%20Samples/NFL2008%20Win%20Loss%20Sparkline.rdl"&gt;NFL report&lt;/a&gt; with the win-loss sparklines as this serves as the starting point for this exercise.&amp;#160; In part 1, we’ll build a data bar to track points per team, and in future posts we’ll handle building out the turn-over ratio and points per game versus average columns that go a little more in depth with what you can do with data bars.&lt;/p&gt;  &lt;p&gt;To insert a data bar in your report, you can simply pick the tablix cell you want to place the data bar in and go to the ribbon and Insert —&amp;gt; Data Bar.&amp;#160; That provides you with the following data bar picker page.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DataBarsinSQLServerReportingServices2008_12D04/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DataBarsinSQLServerReportingServices2008_12D04/image_thumb_2.png" width="516" height="459" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We built support in for a few different data bar types; the standard data bar, the stacked data bar, the stacked 100% data bar, and we also added the column versions of each of these.&amp;#160; In this case, let’s pick the standard data bar.&lt;/p&gt;  &lt;p&gt;Once the data bar is added to the report, we need to give it a value.&amp;#160; For this first example, let’s use the “Score” field from the dataset.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DataBarsinSQLServerReportingServices2008_12D04/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DataBarsinSQLServerReportingServices2008_12D04/image_thumb_3.png" width="516" height="384" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If we run this report, it should look like this.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DataBarsinSQLServerReportingServices2008_12D04/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DataBarsinSQLServerReportingServices2008_12D04/image_thumb_4.png" width="386" height="588" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Select the data bar, right click and bring up the horizontal axis properties property page.&amp;#160; Let’s spend a few minutes here to go over these options.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DataBarsinSQLServerReportingServices2008_12D04/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DataBarsinSQLServerReportingServices2008_12D04/image_thumb_5.png" width="485" height="435" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;At the top of this page, you will see that the “Align axes in:” option is set to “Talbix3”. This setting works in conjunction with the Axis Min and Axis Max settings direclty below it.&amp;#160;&amp;#160; For cases where the Axis Minimum or Maximum are set to “Auto” the group maximum or minimum will be used to define the axis range for the data bars.&amp;#160;&amp;#160;&amp;#160; In the sample below, I’ve copied the data bar to a new column to the right and simply changed the minimum setting to &lt;strong&gt;Auto.&lt;/strong&gt;&amp;#160; Notice the distinction between the two columns.&amp;#160; The column on the right almost implies that the Cincinnati Bengals scored very few points in the 2008 season, when they actually scored 204 points. Personally, I prefer the view on the left where the axis minimum is set at zero.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DataBarsinSQLServerReportingServices2008_12D04/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DataBarsinSQLServerReportingServices2008_12D04/image_thumb_6.png" width="501" height="618" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The final report based on this introduction to data bars can be found &lt;a href="http://cid-209305deacf224d0.skydrive.live.com/self.aspx/SSRS%202008%20R2%20Samples/NFL2008%20-%20DataBars.rdl"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In future posts, we’ll dig into some additional formatting options for the data bars and how to handle scenarios where you have both positive and negative values (as shown in the first report in this post).&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9927555" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/Data+Visualization/">Data Visualization</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/SSRS/">SSRS</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/SQL+Server+Reporting+Services/">SQL Server Reporting Services</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/data+bars/">data bars</category></item><item><title>SQL Server Reporting Services 2008 R2 Map Tip:  Address Geocoding with SQL Server 2008 Spatial</title><link>http://blogs.msdn.com/b/seanboon/archive/2009/11/18/sql-server-reporting-services-2008-r2-map-tip-address-geocoding-with-sql-server-2008-spatial.aspx</link><pubDate>Wed, 18 Nov 2009 21:42:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9924740</guid><dc:creator>Sean Boon</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/seanboon/rsscomments.aspx?WeblogPostID=9924740</wfw:commentRss><comments>http://blogs.msdn.com/b/seanboon/archive/2009/11/18/sql-server-reporting-services-2008-r2-map-tip-address-geocoding-with-sql-server-2008-spatial.aspx#comments</comments><description>&lt;p&gt;This post is just a pointer to a great blog post on &lt;a href="http://blogs.msdn.com/edkatibah/archive/2009/03/10/address-geocoding-with-sql-server-2008-spatial.aspx"&gt;Spatial Ed&lt;/a&gt;’s blog that addresses (pun intended) one of the most common questions I get regarding the map in Reporting Services which is, “In my database, all of my store locations, customers, etc. are just addresses. Can you map that?” &lt;/p&gt;  &lt;p&gt;The answer to this question is that this data is no different than the other attributes that should be managed using traditional data warehousing techniques.&amp;#160; You likely have a customer dimension table with an address, and you should already have in place a set of processes for managing the attributes of your customer through the lifecycle of your data warehouse. Geocoding of addresses should be integrated into this process and you can use the techniques in Ed’s post to accomplish this.&amp;#160; Then, when your report runs, all of the geo-coding will be done, you won’t need to make a million web service calls to find out how many customers are within 100 miles of your store.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9924740" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/SSRS/">SSRS</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/SQL+Server+Reporting+Services/">SQL Server Reporting Services</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/Geocoding/">Geocoding</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/Map/">Map</category></item><item><title>SQL Server 2008 R2 Map Tips:  How To Import Shapefiles Into SQL Server and Aggregate Spatial Data.</title><link>http://blogs.msdn.com/b/seanboon/archive/2009/11/17/sql-server-2008-r2-map-tips-how-to-import-shapefiles-into-sql-server-and-aggregate-spatial-data.aspx</link><pubDate>Tue, 17 Nov 2009 23:33:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9923944</guid><dc:creator>Sean Boon</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/seanboon/rsscomments.aspx?WeblogPostID=9923944</wfw:commentRss><comments>http://blogs.msdn.com/b/seanboon/archive/2009/11/17/sql-server-2008-r2-map-tips-how-to-import-shapefiles-into-sql-server-and-aggregate-spatial-data.aspx#comments</comments><description>&lt;p&gt;In the August CTP of SQL Server 2008 R2, we introduced the map report item in Reporting Services.&amp;#160; As you might already be aware, the map in SSRS supports the spatial data types and functions that are available in SQL Server.&amp;#160; In this post, we’ll look at what you can aggregate spatial data for your reporting needs.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#008000"&gt;The Scenario&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In this scenario, we are going to build a map of the United States broken into regions (West, Central, and East).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#008000"&gt;Step 1:&amp;#160; Getting the Map Data&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To start with, we need to find a set of maps to support this exercise.&amp;#160; The subject of finding maps is one of the most common questions we receive when people are using the map report item.&amp;#160;&amp;#160; In this case, all of the maps we need can be found on the &lt;a href="http:///www.census.gov"&gt;http:///www.census.gov&lt;/a&gt; web site.&amp;#160; &lt;/p&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;The state files are located at :&lt;a href="http://www.census.gov/cgi-bin/geo/shapefiles/national-files"&gt;http://www.census.gov/cgi-bin/geo/shapefiles/national-files&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;The county files are located at: &lt;a href="http://www.census.gov/geo/www/cob/co2000.html"&gt;http://www.census.gov/geo/www/cob/co2000.html&lt;/a&gt; &lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;For those of you who are already working with the map report item in SSRS, at this point you might be asking yourself “Why not just use the included maps in the map gallery for this effort?”.&amp;#160; We certainly could do that, however, there’s another wrinkle to this scenario that would make this approach difficult and we’ll discuss that later in this post.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#008000"&gt;Step 2:&amp;#160; Converting Shapefiles into SQL Server Spatial Data&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Now that we have the shape files for states and counties, how do we get them into SQL Server spatial?&amp;#160; To do this, we will use a tool from &lt;a href="http://www.sharpgis.net/page/Shape2SQL.aspx"&gt;http://www.sharpgis.net/page/Shape2SQL.aspx&lt;/a&gt; called “Shape2SQL”.&amp;#160; All you need to do here is point the tool at the shapefiles you downloaded previously, and now your data is stored as spatial data types in SQL Server.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#008000"&gt;Step 3:&amp;#160; Creating the Regions&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Now that we have the US states and counties in our database as SQL spatial columns, we need to address how to create the regions.&amp;#160;&amp;#160; Below is the image of the map that shows the regions we need to create.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DrillDownMapsUsingSQLSpatialinSQLServerR_EFAF/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DrillDownMapsUsingSQLSpatialinSQLServerR_EFAF/image_thumb.png" width="551" height="364" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I suspect that this will be a very common requirement when building map reports.&amp;#160; You’ll have a set of shapefile data based on political units, but your company or organization has units of analysis that are made up of these units.&amp;#160; These units of analysis, in our case regions, we’ll change over time.&amp;#160; Stores move between regions, regions get realigned, etc.&amp;#160; Do you want to have to create new shapefiles every time this happens?&amp;#160; I doubt it, plus if you have dimensional tables in your data warehouse that track the composition of these regions, wouldn’t it be great to just rely on those definitions that are already defined.&amp;#160; We have a couple of options we can rely on here.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#008000"&gt;Step 3:&amp;#160; (Option 1)&amp;#160; Aggregate Polygons in SSRS&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;One of the features that we added in this release is support for the UNION() aggregate on spatial data types directly in Reporting Services.&lt;/p&gt;  &lt;p&gt;Let’s look at how we would do this.&amp;#160; Add a dataset to your report using the following query based on the database this article links to.&amp;#160; This is simply a join between a table that defines our regions and the data that stores the spatial data for our states.&amp;#160; I’m taking the liberty of removing the non continental states from the query, but that’s just for the sake of the appearance in the map :).&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;SELECT&amp;#160; * &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;FROM dbo.Regions r, test s &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;WHERE r.statefips= s.statefp     &lt;br /&gt;and stateFIPS &amp;lt; 60 and State &amp;lt;&amp;gt; 'Alaska' &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;ORDER by statefips desc&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Now, add a map to the report.&amp;#160; You could use the wizard here, but to demonstrate this particular feature I would just insert a blank map.&lt;/p&gt;  &lt;p&gt;On the map, choose the option to add a Polygon Layer.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DrillDownMapsUsingSQLSpatialinSQLServerR_EFAF/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DrillDownMapsUsingSQLSpatialinSQLServerR_EFAF/image_thumb_1.png" width="571" height="432" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Next, open up the Layer Data property page by right-clicking on the Polygon Layer.&amp;#160; On the General page, set the spatial field to an expression below.&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;=UNION(Fields!geom.value)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;The Union() aggregate now supports SQL spatial data types!&amp;#160; Great, but we need to group it by something. &lt;/p&gt;  &lt;p&gt;To do the grouping, open up the property grid and under the data node, open up the Group Property Page.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DrillDownMapsUsingSQLSpatialinSQLServerR_EFAF/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DrillDownMapsUsingSQLSpatialinSQLServerR_EFAF/image_thumb_2.png" width="244" height="81" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Add a group based on the [Region] field. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DrillDownMapsUsingSQLSpatialinSQLServerR_EFAF/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DrillDownMapsUsingSQLSpatialinSQLServerR_EFAF/image_thumb_3.png" width="474" height="437" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Now, when you run the report, you should have three distinct regions (West, Central, and East).&amp;#160; &lt;/p&gt;  &lt;p&gt;I would like to thank Robert Bruckner, who has a great blog over at &lt;a href="http://blogs.msdn.com/robertbruckner/"&gt;http://blogs.msdn.com/robertbruckner/&lt;/a&gt;, who championed and built the prototype of this very cool feature.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#008000"&gt;Step 3:&amp;#160; (Option 2)&amp;#160; Aggregate Polygons in SQL Server&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Support for the UNION() aggregate in SSRS is a great feature, but you will notice that if you are aggregating a lot of polygons at report run-time, that your report is going to take awhile to run.&amp;#160; This aggregate is not cheap.&amp;#160; If you are looking for a best practice in this area, I would recommend that you look at aggregating this data in SQL Server and storing the results of those aggregations in your database, just as if you were building aggregate tables in a traditional data warehouse.&lt;/p&gt;  &lt;p&gt;While there is an STUnion() function in SQL Server spatial, it operates on two spatial objects, so you can’t group multiple items and use a traditional GROUP BY query in SQL.&amp;#160; Thankfully, the SQL Spatial team has built a function library that can be added to SQL Server that will enable you to use a standard GROUP BY clause in your queries!&amp;#160; You can download this function library at: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlspatialtools.codeplex.com/"&gt;http://sqlspatialtools.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Follow the instructions for enabling the functions on your SQL Server, and when you’re done, you should be able to write a query like this:&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;SELECT &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;MAX(Region), dbo.GeographyUnionAggregate(s.geom.Reduce(2)) as geo2 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;FROM dbo.Regions r, USStates s &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;WHERE r.statefips= s.statefp &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;and s.statefp &amp;lt; 60 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;GROUP BY r.region&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;This query is a join against the table that defines our regions and the table that contains the imported shape data that is now stored in SQL spatial.&amp;#160; &lt;/p&gt;  &lt;p&gt;The reduce function that is included above is designed to work around a current issue in the product in which the way the globe is projected in SQL Server 2008 spatial.&amp;#160; &lt;/p&gt;  &lt;p&gt;Here is what the query result looks like.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DrillDownMapsUsingSQLSpatialinSQLServerR_EFAF/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DrillDownMapsUsingSQLSpatialinSQLServerR_EFAF/image_thumb_4.png" width="533" height="163" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DrillDownMapsUsingSQLSpatialinSQLServerR_EFAF/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/DrillDownMapsUsingSQLSpatialinSQLServerR_EFAF/image_thumb_6.png" width="492" height="435" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;You can include this query as part of your SSIS packages in which you do your ETL operations.&amp;#160; Then, in your report, you can you can write a simple SELECT statement against this new table that returns the aggregated shapes in your query.&amp;#160; You can then add a layer to your map based on this dataset.&amp;#160; This would give you the best performance at report run-time.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#008000"&gt;Downloads&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I’ve added the database backup and report that shows the RDL UNION() aggregate to the location below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cid-209305deacf224d0.skydrive.live.com/self.aspx/SSRS%202008%20R2%20Samples"&gt;SSRS 2008 R2 Samples&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9923944" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/Data+Visualization/">Data Visualization</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/SSRS/">SSRS</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/SQL+Server+Reporting+Services/">SQL Server Reporting Services</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/Map/">Map</category></item><item><title>Building Win-Loss Sparklines in SQL Server Reporting Services 2008 R2</title><link>http://blogs.msdn.com/b/seanboon/archive/2009/11/16/building-win-loss-sparklines-in-sql-server-reporting-services-2008-r2.aspx</link><pubDate>Mon, 16 Nov 2009 19:21:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9923106</guid><dc:creator>Sean Boon</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/seanboon/rsscomments.aspx?WeblogPostID=9923106</wfw:commentRss><comments>http://blogs.msdn.com/b/seanboon/archive/2009/11/16/building-win-loss-sparklines-in-sql-server-reporting-services-2008-r2.aspx#comments</comments><description>&lt;p&gt;With the November CTP of SQL Server Reporting Services 2008 R2, we are introducing a new visualization in SSRS, sparklines.&amp;#160; Sparklines were developed by Edward Tufte and are described as &lt;a href="http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=0001OR"&gt;“small, intense, simple data words”&lt;/a&gt;.&amp;#160; In this post we’ll look at how you can add a “win-loss” sparkline to your reports.&amp;#160; &lt;/p&gt;  &lt;p&gt;For this example, we’ll take a look at the 2008 NFL season schedule by team and draw a sparkline to depict each team’s performance over the year.&amp;#160; When we’re done, it will look like the image below.&amp;#160; This image shows each team’s result by week where the up ticks are wins and the down ticks are losses.&amp;#160; The dark blue ticks are home games and the light blue ticks are away games.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_thumb.png" width="244" height="185" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#008000"&gt;Step 1:&amp;#160; The Dataset&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The dataset that we need contains the scores of all the games from the 2008 NFL season.&amp;#160; I’ve placed a backup of the database for this exercise up at &lt;a title="http://cid-209305deacf224d0.skydrive.live.com/self.aspx/SSRS%202008%20R2%20Samples" href="http://cid-209305deacf224d0.skydrive.live.com/self.aspx/SSRS%202008%20R2%20Samples"&gt;SSRS 2008 R2 Samples&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;SELECT&amp;#160; Home as Team, HomeScore as Score, [Week], 'H' as Home, Away as Opponent, AwayScore as OpponentScore, (SELECT Team from TeamOffense where teamoffense.TeamAbb=scores.Home) as TeamName     &lt;br /&gt;FROM dbo.scores &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;UNION ALL &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;SELECT&amp;#160; Away as Team, AwayScore as Score, [Week], 'A' as Home, Home as Opponent,&amp;#160; HomeScore as OpponentScore,(SELECT Team from TeamOffense where teamoffense.TeamAbb=scores.Away) as TeamName     &lt;br /&gt;FROM dbo.scores&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#008000"&gt;Step 2:&amp;#160; Add Matrix&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Inside the report body, add a matrix to your report and place the TeamName field on row groups.&amp;#160;&amp;#160; This should give you the look below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_thumb_2.png" width="244" height="52" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#008000"&gt;Step 3:&amp;#160; Add Sparkline&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To add a sparkline to your report, you can right click on a non-detail cell of a tablix or use the ribbon entry point.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_thumb_1.png" width="244" height="94" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_thumb_3.png" width="244" height="216" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We have added several sparkline types to Report Builder 3.0, but the concept for all of them is the same.&amp;#160; They are effectively small charts that are stripped down to just the visual for the series.&amp;#160; There are no legends, no axis titles, no data point labels, etc.&amp;#160; It’s just the line, bar, or column.&amp;#160; Of course, if you want to add any of these features that are turned off because you are targeting a small multiple scenario (subject of a future blog post :) ), you can simply select the sparkline and choose the option to convert it to full chart.&amp;#160; Sparklines are persisted in our RDL format as full charts.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;For this example, we are going to use the column chart.&amp;#160; Select that first option.&amp;#160; Your report should now look like the image below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_thumb_4.png" width="244" height="49" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#008000"&gt;Step 4:&amp;#160; Specify the Series Value and Category Grouping&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In our scenario, we want to use the sparkline to chart each team’s result over the 17 weeks of the NFL season.&amp;#160; To start with, let’s just give the series a value which we will go in and edit.&amp;#160; Select the bar series and you should see our new data visualization panel.&amp;#160; This is new in the November CTP as well.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_thumb_5.png" width="140" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Click on the “+” symbol and add the [Score] field to the Values area.&lt;/p&gt;  &lt;p&gt;Next, we need to define the Category Group for the sparkline.&amp;#160; In our case, each bar represents a week so, we’ll pick the [Week] field.&amp;#160; This will remove the details group.&amp;#160; Your data visualization panel should now look like the image below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_thumb_6.png" width="139" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now things are going to get a little bit more advanced.&amp;#160; The purpose of our sparkline is to show whether or not each team won or lost for each week of the season.&amp;#160; We need to modify our Series value expression in order to&amp;#160; achieve this goal.&lt;/p&gt;  &lt;p&gt;With the data visualization panel still open, select the series and bring up it’s properties.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_16.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_thumb_7.png" width="137" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Change the Value to the following expression:&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;=IIF(IsNothing(SUM(Fields!Score.Value)), 0, IIF(SUM(Fields!Score.Value) &amp;gt;SUM(Fields!OpponentScore.Value), 1,-1))&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;There is a lot going on in this expression, and we’ll get to all of it before this post is over, but for the time being, what we should take away from this expression is that it’s simply doing a check of the current team’s score and comparing it to the opponent’s score, and assigning a 1 for a win and a –1 for a loss.&amp;#160; These are the values that are going to be charted on the sparkline.&amp;#160; &lt;/p&gt;  &lt;p&gt;Let’s go ahead and run the report to see how things are looking to this point.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_18.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_thumb_8.png" width="244" height="169" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#008000"&gt;Step 4:&amp;#160; Axis Synchronization&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you count all of the little up and down ticks on our sparkline, the avid NFL fan will notice something wrong with this picture.&amp;#160; Namely,&amp;#160; each team has 16 “sparks”, but the NFL season is actually comprised of 17 weeks in which every team gets one week off.&amp;#160; As a result, if we were trying to ask ourselves, which teams won on Week 6, the sparkline above would not be helpful, because some of the teams would have had their bye week already.&amp;#160; What we want to see is a gap in the axis to reflect the bye weeks.&amp;#160; &lt;/p&gt;  &lt;p&gt;For those of you who are not NFL fans, here’s another scenario that is similar.&amp;#160; Suppose you have 10 sales people, and only a few of them worked for the entire year, but you have a few that worked during the holiday season.&amp;#160; When you display the sparklines to show their monthly sales, you want all of the monthly sales bars to be the same size in width and be aligned to the appropriate month.&lt;/p&gt;  &lt;p&gt;How do we solve this problem? One way would be to use an OUTER JOIN query, but we realized we shouldn’t necessarily require report authors to do such work in order to get the visual they need.&amp;#160;&amp;#160; So, along with the addition of sparklines, we added another feature in SSRS 2008 called Group Domain Scope that surfaces itself in sparklines as Axis alignment.&amp;#160; The domain scope feature is actually very useful in non-sparkline scenarios as well.&amp;#160; I will cover this particular feature in a future blog post, but for folks who want to start using it now, you can think of it as a feature that fills in the missing values for each instance in a group based on the total unique instances in the group.&lt;/p&gt;  &lt;p&gt;Back to the problem at hand.&amp;#160; To insert all of our bye weeks on the sparkline, we will use the axis synchronization feature.&amp;#160; You can do this by selecting the sparkline and bringing up the Horizontal Axis properties.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_20.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_thumb_9.png" width="244" height="226" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Check the check box for “Align Axes in:” and set it to the tablix.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_22.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_thumb_10.png" width="496" height="211" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Run the report.&amp;#160; Now you should see the following:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_24.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_thumb_11.png" width="244" height="110" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Notice now that each team has a gap in their sparkline that corresponds to their bye week.&amp;#160; If you look back at the value expression for the series, this is where the IsNothing() check on the team’s score comes into play.&amp;#160; If the team doesn’t have an entry for the week, &lt;em&gt;and they don’t have an entry in our database when they are on their bye week&lt;/em&gt;, we can check for that using IsNothing() in conjuction with the Axis Synchronization feature and the result is we chart a value of 0 for those instances.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#008000"&gt;Step 5:&amp;#160; Conditional Formatting the Sparkline&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you look back at our final sparkline at the top of the post, you will notice that some bars are light blue and some bars are darker blue.&amp;#160; Why and how do we do this?&amp;#160; The why is simple:&amp;#160; I’d like to be able to show a distinction between home and away games.&amp;#160; &lt;/p&gt;  &lt;p&gt;The “how” part is actually relatively straightforward. Open up the Series property page and go to the fill tab.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_26.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_thumb_12.png" width="495" height="272" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Open up the Color expression editor and insert the following expression:&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;=IIF(Fields!Home.Value= &amp;quot;H&amp;quot;, &amp;quot;Blue&amp;quot;,&amp;quot;LightBlue&amp;quot;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Run the report.&amp;#160; Now we have the effect we are looking for.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_28.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_thumb_13.png" width="244" height="148" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#008000"&gt;Step 6:&amp;#160; Let’s Add Some Tooltips&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;One last requirement before we are done.&amp;#160; I’d like to see the opponent for each week in my sparkline. For this case, we can add a tooltip to our sparkline, so that user’s can hover over each point and see who the opponent was.&lt;/p&gt;  &lt;p&gt;Select the series and open up it’s Series Data property page.&amp;#160; There you will find a tooltip property.&amp;#160;&amp;#160; Set it to the [Opponent] Field.&amp;#160; Now, run the report.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_30.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_thumb_14.png" width="244" height="117" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;It’s hard to see where the mouse is pointed in this capture, but it’s on Week 5 of the Arizona Cardinals schedule.&amp;#160; Looks like they beat the Buffalo Bills that week.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#008000"&gt;Step 7:&amp;#160; Add the Axis Line&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This last one is a bit hidden, but to add the horizontal axis line we will need to go to the property grid.&amp;#160; Select the Sparkline and in the property grid, and open up the Chart Areas section.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_32.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/BuildingWinLossSparklinesinSQLServerRepo_13D15/image_thumb_15.png" width="520" height="391" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Select the Category Axes in the above editor and then in the window that opens up, choose the option to mark the axis visible.&lt;/p&gt;  &lt;p&gt;That’s it.&amp;#160;&amp;#160; Your report should be all done now.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#008000"&gt;Download the Solution&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I’ve placed the supporting database backup and the reports up on my SkyDrive account.&amp;#160; You can download them here.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://cid-209305deacf224d0.skydrive.live.com/self.aspx/SSRS%202008%20R2%20Samples" href="http://cid-209305deacf224d0.skydrive.live.com/self.aspx/SSRS%202008%20R2%20Samples"&gt;SSRS 2008 R2 Samples&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9923106" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/Data+Visualization/">Data Visualization</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/SSRS/">SSRS</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/sparklines/">sparklines</category></item><item><title>Working with XY Scatter Charts in Reporting Services 2008</title><link>http://blogs.msdn.com/b/seanboon/archive/2009/06/03/working-with-xy-scatter-charts-in-reporting-services-2008.aspx</link><pubDate>Wed, 03 Jun 2009 08:55:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9689464</guid><dc:creator>Sean Boon</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/seanboon/rsscomments.aspx?WeblogPostID=9689464</wfw:commentRss><comments>http://blogs.msdn.com/b/seanboon/archive/2009/06/03/working-with-xy-scatter-charts-in-reporting-services-2008.aspx#comments</comments><description>&lt;p&gt;Recently, I’ve been fielding a few questions regarding XY Scatter Charts in Reporting Services 2008 (see &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sqlreportingservices/thread/b6583085-a33e-48fd-99ec-490dc1350fd8"&gt;MSDN Forum Question&lt;/a&gt;).&amp;#160; We have definitely noticed that working with XY Scatter charts is a bit difficult, and we do appreciate the feedback and will work to improve them in a future release.&amp;#160; The remainder of this post will detail how you can successfully build these charts in SSRS 2008.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Option 1:&amp;#160; Use a Unique Identifier on Rows.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This example relies on using the Category Grouping feature of the chart, but requires a unique identifier in your result set for each row.&amp;#160; Star with this example query:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="400"&gt;SELECT 1 as X, 1 as Y, 100 as RowNumber          &lt;br /&gt;UNION ALL           &lt;br /&gt;SELECT 2 as X, 3 as Y, 200 as RowNumber           &lt;br /&gt;UNION ALL           &lt;br /&gt;SELECT 2 as X, 7 as Y, 300 as RowNumber           &lt;br /&gt;UNION ALL           &lt;br /&gt;SELECT 3 as X, 10 as Y, 400 as RowNumber&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Next, insert an XY Scatter chart into the report.&amp;#160; Place the RowNumber on Category Groups, and add “Y” to the Data Fields area.&amp;#160; At this point the chart will look like the image below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/WorkingwithXYScatterChartsinReportingSer_1403C/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/WorkingwithXYScatterChartsinReportingSer_1403C/image_thumb.png" width="311" height="363" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Finally, right click on the [Sum(Y)] token in the data fields area and bring up the property page for the series.&amp;#160; Here, change the Category field value to the X field.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/WorkingwithXYScatterChartsinReportingSer_1403C/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/WorkingwithXYScatterChartsinReportingSer_1403C/image_thumb_1.png" width="435" height="191" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now, run the report, and your chart should look like the one below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/WorkingwithXYScatterChartsinReportingSer_1403C/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/WorkingwithXYScatterChartsinReportingSer_1403C/image_thumb_2.png" width="340" height="305" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Option 2:&amp;#160; Use a Detail Group as the Category Group&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Instead of returning a unique identifier on your records, another option is to rely on a detail group for the category group for the chart.&amp;#160; From a UI perspective, this one is very difficult to discover.&lt;/p&gt;  &lt;p&gt;First, let’s start with the same SQL query provided above, and insert a new XY Scatter chart into the report.&lt;/p&gt;  &lt;p&gt;Again, place the Y field in the data fields area of the chart flange, but this time place the X field as the Category Group (it actually doesn’t matter which field you put here as you will see in a moment).&lt;/p&gt;  &lt;p&gt;Next, right-click on the Category Group in the chart flange and bring up its property page.&amp;#160; It should look like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/WorkingwithXYScatterChartsinReportingSer_1403C/image_12.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/WorkingwithXYScatterChartsinReportingSer_1403C/image_thumb_5.png" width="433" height="394" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;With the page open, select the single group (shown outlined in red) and press the “Delete” button.&amp;#160; This will empty the group box.&amp;#160; Hit “OK” when done.&amp;#160; Believe it or not, you have just created a detail group for the chart.&lt;/p&gt;  &lt;p&gt;Once the detail group is created, there is an issue where the chart flange is no longer available.&amp;#160; To edit the series, select the series in the plot area and bring up its property page.&amp;#160; On this page, set the Category Field equal to [X].&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/WorkingwithXYScatterChartsinReportingSer_1403C/image_16.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/WorkingwithXYScatterChartsinReportingSer_1403C/image_thumb_7.png" width="427" height="385" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Run the report.&amp;#160; The XY scatter chart should display correctly.&lt;/p&gt;  &lt;p&gt;I agree that both of these solutions are effectively work-arounds for a feature that should be much easier to use, and this is something we will work to address in a future release of Reporting Services.&amp;#160; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9689464" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/charts/">charts</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/SSRS/">SSRS</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/SQL+Server+Reporting+Services/">SQL Server Reporting Services</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/XY+Scatter/">XY Scatter</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/Scatter/">Scatter</category></item><item><title>Enabling Drilldown on (SSRS) Reporting Services 2008 Charts</title><link>http://blogs.msdn.com/b/seanboon/archive/2009/02/09/enabling-drilldown-on-ssrs-reporting-services-2008-charts.aspx</link><pubDate>Mon, 09 Feb 2009 03:25:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9407673</guid><dc:creator>Sean Boon</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/seanboon/rsscomments.aspx?WeblogPostID=9407673</wfw:commentRss><comments>http://blogs.msdn.com/b/seanboon/archive/2009/02/09/enabling-drilldown-on-ssrs-reporting-services-2008-charts.aspx#comments</comments><description>&lt;p&gt;In this post I'm going to spend some time covering a subject that comes up quite a bit on our &lt;a href="http://social.msdn.microsoft.com/forums/en-US/sqlreportingservices/threads/" target="_blank"&gt;forums&lt;/a&gt;, which is how to enable drill-down on a chart in Reporting Services. In this example, I'm using the Analysis Services 2008 AdventureWorks cube.&amp;#160; &lt;/p&gt;  &lt;p&gt;First, create a connection to the Analysis Services database, and in the report, create a dataset based on the following query:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="400"&gt;         &lt;p&gt;&lt;font size="2" face="Cour"&gt;SELECT NON EMPTY              &lt;br /&gt;{ [Measures].[Internet Sales Amount] } ON COLUMNS, &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2" face="Cour"&gt;{[Customer].[Customer Geography].[Country].members,[Customer].[Customer Geography].[State-Province],[Customer].[Customer Geography].[City]} DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2" face="Cour"&gt;FROM [Adventure Works]              &lt;br /&gt;CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;This returns a dataset that looks like the following:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/EnablingDrillDownonSSRSReportingServices_DC70/Drilldown_2.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="Drilldown" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/EnablingDrillDownonSSRSReportingServices_DC70/Drilldown_thumb.png" width="364" height="298" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The dataset is similar in structure as a query you could author against a relational database using the GROUP BY clause.&amp;#160; &lt;/p&gt;  &lt;p&gt;The next step involves inserting a chart into the report.&amp;#160; In this example, I'm using a column chart.&amp;#160; Once the column chart is inserted into the report, add the country field to the category groups and then add the Internet Sales field to the data fields section of the chart.&amp;#160; &lt;/p&gt;  &lt;p&gt;Another piece we'll need in this sample is a set of parameters to track where we are in the hierarchy as we drill.&amp;#160; Create three parameters in the report named pCountry, pState, and pCity and set their visibility to hidden, allow null values and no default values supplied.&amp;#160; &lt;/p&gt;  &lt;p&gt;Next, return to the category groups on the chart.&amp;#160; As we drill on the bars, the category grouping on the chart should change from country, state and city, and the dataset should be filtered to the correct level as well.&amp;#160; To set up the category grouping on the chart to use the following expression.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="400"&gt;         &lt;p&gt;&lt;font size="2" face="Cou"&gt;=IIF(isNothing(parameters!pCountry.Value),              &lt;br /&gt;Fields!Country.Value, IIF(isNothing(parameters!pState.Value)=True,Fields!State_Province.Value,Fields!City.Value))&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Use a similar expression for the label text option which is right above where you define the category groups.&lt;/p&gt;  &lt;p&gt;To set up the filtering, select the filter option on the category group and add a filter and set it's expression to the following:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="700"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="698"&gt;         &lt;p&gt;&lt;font size="2" face="Cou"&gt;=IIF(IsNothing(Parameters!pCountry.Value), IsNothing(Fields!State_Province.Value),              &lt;br /&gt;IIF(IsNothing(Parameters!pState.Value), (IsNothing(Fields!State_Province)=False AndAlso Fields!Country.Value&amp;#160; = Parameters!pCountry.Value),               &lt;br /&gt;(IsNothing(Fields!City.Value)= False AndAlso Fields!State_Province.Value=Parameters!pState.Value)))&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Set the operator to &amp;quot;=&amp;quot; and set the value to &amp;quot;=True&amp;quot; (no quotes required). By setting up the filter expression in this way, we are effectively doing&amp;#160; a check on our level parameter, and depending on it's value, we are passing a different expression along to the filter operation.&amp;#160; In the simplest example, if the country parameter is set to Nothing, we simply pass the IsNothing(Fields!State_Province.Value) expression to the filter.&amp;#160; All records where that expression evaluates to True will not be displayed.&amp;#160; &lt;/p&gt;  &lt;p&gt;Finally, we need to set up the action on the chart series so that when the user clicks on a column, we redisplay the report.&amp;#160; To do this, select the series and set up the page as shown below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/EnablingDrillDownonSSRSReportingServices_DC70/drilldown1_2.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="drilldown1" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/EnablingDrillDownonSSRSReportingServices_DC70/drilldown1_thumb.png" width="475" height="423" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In this example, we are specifying our existing report as the &amp;quot;go to report&amp;quot; and are passing the current state of our parameters to the new instance of the report that will execute when the user selects one of the bars on the chart.&lt;/p&gt;  &lt;p&gt;In closing, this is just one option for implementing a drilldown on a chart.&amp;#160; Another option here, that I would recommend for larger data sets would be to actually set the query to an expression based on similar logic.&amp;#160; If you have other alternatives for implementing this type of a scenario, add a link in the comments section or contact me via the blog.&amp;#160; I'm interested to hear how others implement this scenario.&amp;#160; &lt;/p&gt;  &lt;p&gt;I've uploaded this file to my SkyDrive account.&amp;#160; You can get it &lt;a href="http://cid-209305deacf224d0.skydrive.live.com/self.aspx/SQL%20Server%20Reporting%20Services%20Forum/DrillThrough.rdl" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2910f879-7869-4e36-8b76-1d5bb316c0df" class="wlWriterSmartContent"&gt;del.icio.us Tags: &lt;a href="http://del.icio.us/popular/SSRS" rel="tag"&gt;SSRS&lt;/a&gt;,&lt;a href="http://del.icio.us/popular/data%20visualization" rel="tag"&gt;data visualization&lt;/a&gt;,&lt;a href="http://del.icio.us/popular/charts" rel="tag"&gt;charts&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9407673" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/charts/">charts</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/Data+Visualization/">Data Visualization</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/SSRS/">SSRS</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/SQL+Server+Reporting+Services/">SQL Server Reporting Services</category></item><item><title>Attending SQL PASS Community Summit This Week</title><link>http://blogs.msdn.com/b/seanboon/archive/2008/11/19/attending-sql-pass-community-summit-this-week.aspx</link><pubDate>Wed, 19 Nov 2008 06:20:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9121510</guid><dc:creator>Sean Boon</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/seanboon/rsscomments.aspx?WeblogPostID=9121510</wfw:commentRss><comments>http://blogs.msdn.com/b/seanboon/archive/2008/11/19/attending-sql-pass-community-summit-this-week.aspx#comments</comments><description>&lt;p&gt;This is just a quick note to let people know that I'm attending the &lt;a href="http://summit2008.sqlpass.org/" target="_blank"&gt;SQL PASS Community Summit&lt;/a&gt; this week. Here's a summary of where you can find me if you have some questions regarding data visualization or SQL Server Reporting Services, or if you'd just like to stop by and say &amp;quot;hello&amp;quot;.&amp;#160;&amp;#160;&amp;#160; Should be a great conference!&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Wednesday 11 AM - 1 PM (PST) - Ask the Experts&lt;/li&gt;    &lt;li&gt;Wednesday 1:30 PM - 4 PM - Microsoft Product Pavilion &lt;/li&gt;    &lt;li&gt;Friday 4PM - 5:30 PM - Report Authoring with SQL Server 2008 (Breakout Session)&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9121510" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/SQL+Server+Reporting+Services/">SQL Server Reporting Services</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/PASS/">PASS</category></item><item><title>SSRS and Microsoft Chart Control How To:  Change the Width of Bars and Columns</title><link>http://blogs.msdn.com/b/seanboon/archive/2008/10/31/ssrs-and-microsoft-chart-control-chart-how-to-change-the-width-of-bars-and-columns.aspx</link><pubDate>Fri, 31 Oct 2008 05:14:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9025743</guid><dc:creator>Sean Boon</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/seanboon/rsscomments.aspx?WeblogPostID=9025743</wfw:commentRss><comments>http://blogs.msdn.com/b/seanboon/archive/2008/10/31/ssrs-and-microsoft-chart-control-chart-how-to-change-the-width-of-bars-and-columns.aspx#comments</comments><description>&lt;p&gt;Every once and I while I get asked this question, and it fits nicely with a series I've been planning to blog on what you can do with custom attributes in charts in SQL Server Reporting Services 2008.&amp;#160; The question is, &amp;quot;How do I change the width of the bars and columns on the charts?&amp;quot;.&amp;#160; &lt;/p&gt;  &lt;p&gt;To change the width of bars or columns on a chart, you need to access the custom attributes for the charts.&amp;#160; In Report Builder 2.0, you do this by going to the ribbon under the View area and check the &amp;quot;Properties&amp;quot; checkbox.&amp;#160; This will enable the property grid that people who use the BI Development Studio are familiar with.&amp;#160; Next, select the series you are interested in on the chart, either via the chart flange or by selecting the bar or column on the chart.&amp;#160; Look over to the property grid and look for a section called &amp;quot;General&amp;quot;.&amp;#160; Under the &amp;quot;General&amp;quot; heading there is an area for custom attributes. Expand the custom attributes node and you will see the following.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/SSRSandMicrosoftChartControlChartHowToCh_10E94/customatt_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="248" alt="customatt" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/SSRSandMicrosoftChartControlChartHowToCh_10E94/customatt_thumb.jpg" width="476" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Right there under custom attributes you can change the relative size of the point widths.&amp;#160; Anything less than 1 will create space between the bars and columns.&amp;#160; Anything greater than 1 will cause the bars or columns to overlap.&lt;/p&gt;  &lt;p&gt;Custom attributes also work on the ASP.Net and Winforms chart that we just released.&lt;/p&gt;  &lt;p&gt;Here's a code snippet that'll do the same thing if you are using the stand-alone controls.&lt;code&gt;     &lt;br /&gt;&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;VB     &lt;br /&gt;' Set the Series PointWidth.      &lt;br /&gt;Chart1.Series(0)(&amp;quot;PointWidth&amp;quot;) = &amp;quot;1.2&amp;quot;&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;&lt;/code&gt;C#&lt;/p&gt;  &lt;p&gt;&lt;code&gt;// Set the Series PointWidth. &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;Chart1.Series[0][&amp;quot;PointWidth&amp;quot;] = &amp;quot;1.2&amp;quot;;&lt;/code&gt;    &lt;p&gt;     &lt;br /&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;I'll be posting more on custom attributes very soon.&amp;#160; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9025743" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/charts/">charts</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/Data+Visualization/">Data Visualization</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/SSRS/">SSRS</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/ASP-NET+chart/">ASP.NET chart</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/Winforms+Chart/">Winforms Chart</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/Bar+Chart/">Bar Chart</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/Column+Chart/">Column Chart</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/SQL+Server+Reporting+Services/">SQL Server Reporting Services</category></item><item><title>Silverlight Charts Are Now Available with the Silverlight Toolkit!</title><link>http://blogs.msdn.com/b/seanboon/archive/2008/10/28/silverlight-charts-are-now-available-with-the-silverlight-toolkit.aspx</link><pubDate>Tue, 28 Oct 2008 23:56:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9020950</guid><dc:creator>Sean Boon</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/seanboon/rsscomments.aspx?WeblogPostID=9020950</wfw:commentRss><comments>http://blogs.msdn.com/b/seanboon/archive/2008/10/28/silverlight-charts-are-now-available-with-the-silverlight-toolkit.aspx#comments</comments><description>&lt;p&gt;Today, at PDC, the release of the Silverlight toolkit was made available.&amp;#160; Included in this release, is a preview version of a charting control that was produced as a collaborative effort between the Silverlight controls and SQL Server Reporting Services team.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/SilverlightChartsAreNowAvailablewiththeS_C409/silverlight%20chart_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="231" alt="silverlight chart" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/SilverlightChartsAreNowAvailablewiththeS_C409/silverlight%20chart_thumb.jpg" width="772" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This initial release includes support for the following chart types:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Bar&lt;/li&gt;    &lt;li&gt;Line&lt;/li&gt;    &lt;li&gt;Pie&lt;/li&gt;    &lt;li&gt;Column&lt;/li&gt;    &lt;li&gt;Scatter&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In addition to these series types, the chart supports a few types of animations, but it also can update based on changes in the underlying data if the chart is attached to an ObservableCollection-based data source.&amp;#160; The chart also supports the templating capabilities present in Silverlight.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.codeplex.com/silverlight" target="_blank"&gt;Download, Samples, for Silverlight Toolkit&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/delay/" target="_blank"&gt;David Anson's Blog - Member of the Silverlight toolkit team.&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/sburke/archive/2008/10/28/silverlight-toolkit-now-available-for-download.aspx" target="_blank"&gt;Shawn Burke's Blog - PUM for Silverlight Controls team&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://timheuer.com/blog/archive/2008/10/28/silverlight-toolkit-released-with-charting-databinding.aspx" target="_blank"&gt;Tim Heuer's post on Silverlight chart&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://community.irritatedvowel.com/blogs/pete_browns_blog/archive/2008/10/28/Silverlight-Toolkit-_2800_Silverlight-2-Control-Pack_2900_-_2D00_-Charting.aspx" target="_blank"&gt;Pete Brown's post on Silverlight Toolkit&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;That's it for now.&amp;#160;&amp;#160; Let us know what you think of the Silverlight charts over on the discussion area in codeplex.&amp;#160; We're eager to get your feedback!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9020950" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/charts/">charts</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/Silverlight/">Silverlight</category></item><item><title>Microsoft Chart Controls for .NET Framework 3.5 Released!</title><link>http://blogs.msdn.com/b/seanboon/archive/2008/10/25/microsoft-chart-controls-for-net-framework-3-5-released.aspx</link><pubDate>Sat, 25 Oct 2008 04:21:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9015541</guid><dc:creator>Sean Boon</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/seanboon/rsscomments.aspx?WeblogPostID=9015541</wfw:commentRss><comments>http://blogs.msdn.com/b/seanboon/archive/2008/10/25/microsoft-chart-controls-for-net-framework-3-5-released.aspx#comments</comments><description>&lt;p&gt;This is just a quick post to help spread the word that the Microsoft Chart Controls for .NET Framework 3.5 are now publicly available.&amp;#160; A big congrats to the team!&lt;/p&gt;  &lt;p&gt;Here are some useful links&lt;/p&gt;  &lt;p&gt;Downloads&lt;/p&gt;  &lt;p&gt;1. &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=130F7986-BF49-4FE5-9CA8-910AE6EA442C&amp;amp;displaylang=en"&gt;Microsoft Chart Controls for Microsoft .NET Framework 3.5&lt;/a&gt; &amp;#8211; This installs the ASP.NET and Windows Forms Controls.&amp;#160; The assemblies will be installed in the GAC as well as in the &amp;#8220;%Program File%\Microsoft Chart Controls\Assemblies&amp;#8221; folder.&amp;#160; If you build an application using the controls, your setup and deployment should add MSChart.exe installer as a pre-requisite.&amp;#160; &lt;/p&gt;  &lt;p&gt;2. &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=581FF4E3-749F-4454-A5E3-DE4C463143BD&amp;amp;displaylang=en"&gt;Microsoft Chart Controls for Microsoft .NET Framework 3.5 Language Pack&lt;/a&gt; &amp;#8211; This installs the language pack for the Chart Controls.&amp;#160; It is available in 23 .NET Framework languages.&lt;/p&gt;  &lt;p&gt;3. &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=1D69CE13-E1E5-4315-825C-F14D33A303E9&amp;amp;displaylang=en"&gt;Microsoft Chart Controls Add-on for Microsoft Visual Studio 2008&lt;/a&gt; &amp;#8211; This installs the IntelliSense file in English for the controls and also adds the controls to the toolbox for ASP.NET and Windows Forms.&lt;/p&gt;  &lt;p&gt;Where do we find more information?&lt;/p&gt;  &lt;p&gt;4. &lt;a href="http://code.msdn.microsoft.com/mschart"&gt;ASP.NET Samples&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;5. &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=EE8F6F35-B087-4324-9DBA-6DD5E844FD9F&amp;amp;displaylang=en"&gt;Documentation&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Forum:&amp;#160; &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/MSWinWebChart/threads/"&gt;Windows Forms and ASP.NET Chart Controls&lt;/a&gt; It will be live shortly.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9015541" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/charts/">charts</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/business+intelligence/">business intelligence</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/Data+Visualization/">Data Visualization</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/ASP-NET+chart/">ASP.NET chart</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/Winforms+Chart/">Winforms Chart</category></item><item><title>How To: Build Sparkline Reports in SQL Server Reporting Services</title><link>http://blogs.msdn.com/b/seanboon/archive/2008/10/10/how-to-build-sparkline-reports-in-sql-server-reporting-services.aspx</link><pubDate>Fri, 10 Oct 2008 08:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8993752</guid><dc:creator>Sean Boon</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/seanboon/rsscomments.aspx?WeblogPostID=8993752</wfw:commentRss><comments>http://blogs.msdn.com/b/seanboon/archive/2008/10/10/how-to-build-sparkline-reports-in-sql-server-reporting-services.aspx#comments</comments><description>&lt;P&gt;This is my first post in what I hope is a long series of how to's related to data visualization.&amp;nbsp;&amp;nbsp;&amp;nbsp; For my first post I'm going to demonstrate how you can add &lt;A href="http://en.wikipedia.org/wiki/Sparkline" target=_blank mce_href="http://en.wikipedia.org/wiki/Sparkline"&gt;sparklines&lt;/A&gt; to your SSRS reports.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Below is a screenshot of what a sparkline may look like in SSRS.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/HowToBuildSparklineReportsinSQLServerRep_13C99/SSRS%20Sparkline_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/HowToBuildSparklineReportsinSQLServerRep_13C99/SSRS%20Sparkline_2.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=382 alt="SSRS Sparkline" src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/HowToBuildSparklineReportsinSQLServerRep_13C99/SSRS%20Sparkline_thumb.jpg" width=296 border=0 mce_src="http://blogs.msdn.com/blogfiles/seanboon/WindowsLiveWriter/HowToBuildSparklineReportsinSQLServerRep_13C99/SSRS%20Sparkline_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Sparklines are effectively miniature versions of charts used to display trends.&amp;nbsp; In the example above, I've used an area chart, but line charts and column charts are also often used as sparklines and in many cases people will add additional visuals such as conditionally formatting the color of data points.&lt;/P&gt;
&lt;P&gt;To implement a sparkline in Reporting Services, simply insert a chart into the body of the report.&amp;nbsp; You probably don't want to start by embedding the chart in the table or matrix right away because you will want to modify the properties of the chart and selection of chart elements works best when the chart is large enough that you can actually select its contents.&amp;nbsp; .&lt;/P&gt;
&lt;P&gt;You will also need a dataset.&amp;nbsp; In the example above, I have a query that is retrieving data from the AdventureWorksDW sample database that you can download from &lt;A href="http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=16040" target=_blank mce_href="http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=16040"&gt;Codeplex&lt;/A&gt;.&amp;nbsp; The query is:&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=527 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=525&gt;
&lt;P&gt;SELECT T.CalendarYear, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; T.CalendarQuarter, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; T.MonthNumberOfYear, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUM(S.ExtendedAmount)as Sales , &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; COALESCE(SUM(Q.SalesAmountQuota )/ COUNT(SalesAmountQuota), &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUM(Q.SalesAmountQuota )/ COUNT(SalesAmountQuota)) as Quota , &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUM(S.ExtendedAmount) / (SUM(Q.SalesAmountQuota )/ COUNT(SalesAmountQuota)) as Within, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; E.FirstName + ' ' + E.LastName AS Employee, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; E.EmployeeKey, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 70 as Target &lt;/P&gt;
&lt;P&gt;FROM &lt;/P&gt;
&lt;P&gt;FactResellerSales as&amp;nbsp; S &lt;/P&gt;
&lt;P&gt;LEFT OUTER JOIN dbo.dimTime T ON S.orderdatekey = TimeKey &lt;/P&gt;
&lt;P&gt;JOIN dbo.DimEmployee E &lt;BR&gt;ON S.EmployeeKey = E.EmployeeKey &lt;/P&gt;
&lt;P&gt;LEFT OUTER JOIN dbo.FactSalesQuota Q on &lt;BR&gt;S.EmployeeKey= Q.EmployeeKey AND &lt;BR&gt;T.CalendarYear = Q.CalendarYear AND &lt;BR&gt;T.CalendarQuarter = Q.CalendarQuarter &lt;/P&gt;
&lt;P&gt;WHERE S.EmployeeKey in &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SELECT TOP 10 EmployeeKey from FactResellerSales GROUP BY factResellerSales.EmployeeKey ORDER BY SUM(ExtendedAmount) DESC) &lt;/P&gt;
&lt;P&gt;GROUP BY T.CalendarYear ,T.CalendarQuarter,T.MonthNumberOfYear, E.FirstName, E.LastName, E.EmployeeKey &lt;/P&gt;
&lt;P&gt;ORDER By Employee, T.CalendarYear ASC, T.CalendarQuarter ASC, T.MonthNumberOfYear&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Once the chart is in the body of the report, add the Sales to the Data Fields on the chart and then place the Calendar and Month fields in the category groups. &lt;/P&gt;
&lt;P&gt;To finish the look of the sparkline all you need to do is the following:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Delete the chart title &lt;/LI&gt;
&lt;LI&gt;Delete the chart legend &lt;/LI&gt;
&lt;LI&gt;Right click on both the category and value axis and hide them &lt;/LI&gt;
&lt;LI&gt;Select each axis title and right click and choose the option to hide them&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;To enable the gradient fill on the area chart do the following:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Select the series on the chart and bring up it's properties&lt;/LI&gt;
&lt;LI&gt;On the fill property page, choose fill style = "Gradient"&lt;/LI&gt;
&lt;LI&gt;For this case, the first color is "Cornflower Blue" and the secondary color is set to "White".&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Once you have the look of the sparkline, you can just drag the sparkline into the table or matrix in the appropriate place.&amp;nbsp; The table or matrix will do the job of restricting the rows of the dataset so that each sparkline only shows the data for each row (in this case, each salesperson).&lt;/P&gt;
&lt;P&gt;If you have any suggestions for topics on data visualization for Reporting Services, please feel free to leave them in comments.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8993752" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/charts/">charts</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/business+intelligence/">business intelligence</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/Data+Visualization/">Data Visualization</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/SSRS/">SSRS</category><category domain="http://blogs.msdn.com/b/seanboon/archive/tags/sparkline/">sparkline</category></item></channel></rss>
