<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PerformancePoint Blog</title>
	<atom:link href="http://performancepointblog.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://performancepointblog.com</link>
	<description>A Blog about PerformancePoint and Microsoft BI technologies. Your host is Russell Christopher</description>
	<lastBuildDate>Thu, 30 Jun 2011 11:14:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>After 14 years, turning in my blue badge.</title>
		<link>http://performancepointblog.com/2011/06/after-14-years-turning-in-my-blue-badge/</link>
		<comments>http://performancepointblog.com/2011/06/after-14-years-turning-in-my-blue-badge/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 18:48:49 +0000</pubDate>
		<dc:creator>Russell</dc:creator>
				<category><![CDATA[The Competition]]></category>
		<category><![CDATA[Tableau]]></category>

		<guid isPermaLink="false">http://performancepointblog.com/?p=706</guid>
		<description><![CDATA[Russell waxes poetic about his work at Microsoft and new opportunities at Tableau Software]]></description>
			<content:encoded><![CDATA[<p>Just about 14 years ago, I was hired as a full-time employee at Microsoft. It was my first “grown-up” job with a desk, a phone, <em>Pentium</em> machines, and printed manuals (remember those?). I supported Microsoft Access, and I loved it. Shortly afterwards I discovered SQL Server, data warehousing and business intelligence. Damn, I was lucky.</p>
<p>Microsoft has been a great place to work, with many (<em>many, many, many</em>) people smarter than I am to lean on and help me grow. I wouldn’t be where I am now without my blue badge.</p>
<p>However, I’ve managed to stumble into what I think will be another one of those “damn lucky” opportunities. I’m going to work for <a href="http://www.tableausoftware.com">Tableau Software</a>.</p>
<p>Over last year’s Christmas break, I played with a sampling of BI tools from “the new kids on the block”.  In fact, I wrote about some of my experiences here. Working with Tableau Desktop, however…it shifted my frame of reference around what business intelligence can be both quickly and dramatically (and for me, the beauty of Tableau is that I can continue to use it with products that I know and love like SQL Server ant SharePoint).</p>
<p>I’ll be joining Tableau as a Business Consultant in late-July, and I’m excited as hell.</p>
<p>I’m frankly not sure what will happen to performancepointblog.com: I’ll definitely keep it up. However, I tend to blog about what I do, so I suspect a new data visualization blog with a Tableau focus will make a debut sometime in the near future.</p>
<p>“Thanks!”, Microsoft…and “Hello”, Tableau!</p>
]]></content:encoded>
			<wfw:commentRss>http://performancepointblog.com/2011/06/after-14-years-turning-in-my-blue-badge/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>The Microsoft Analytics PowerPivot Add-in for Twitter</title>
		<link>http://performancepointblog.com/2011/06/the-microsoft-analytics-powerpivot-add-in-for-twitter/</link>
		<comments>http://performancepointblog.com/2011/06/the-microsoft-analytics-powerpivot-add-in-for-twitter/#comments</comments>
		<pubDate>Fri, 10 Jun 2011 11:35:47 +0000</pubDate>
		<dc:creator>Russell</dc:creator>
				<category><![CDATA[PowerPivot]]></category>
		<category><![CDATA[Social Media]]></category>

		<guid isPermaLink="false">http://performancepointblog.com/2011/06/the-microsoft-analytics-powerpivot-add-in-for-twitter/</guid>
		<description><![CDATA[Microsoft just released the Microsoft Analytics add-in for Twitter, and I gotta say that I’m pretty excited. It utilizes PowerPivot to allow for some really interesting and highly configurable data exploration and reporting against Twitter data. Here's a quick overview of the tool.]]></description>
			<content:encoded><![CDATA[<h2>Joy! Free Twitter analytics goodness based on the Microsoft BI platform!</h2>
<p>Wesley Backelant fired off an early morning tweet on the newly-released <strong>Microsoft</strong> <strong>Analytics add-in for Twitter</strong>, and I gotta say that I’m pretty excited. Twitter is my social media tool of choice, and I’ve been playing around with various .NET twitter-related libraries out on codeplex in an effort to do many of things this add-in does out of the box.</p>
<p>Essentially the add-in is made up of:</p>
<ul>
<li>Logic to search twitter for users, keywords, and hashtags.</li>
<li>A PowerPivot data model to store search results</li>
<li>A set of Excel worksheets used to report on topics (keywords), people (users), sentiment (tone) and see individual tweets themselves</li>
</ul>
<p>….and source code. Glorious, beautiful source code. The final worksheet in the add-in contains all the code you need to rebuilt this solution yourself. Bless you Microsoft &amp; Extended Results: I haven’t giggled like a little girl at 6AM in quite a while.</p>
<h2>A quick jump start:</h2>
<p>First,  download it:</p>
<p><a title="http://www.microsoft.com/download/en/details.aspx?id=26213" href="http://www.microsoft.com/download/en/details.aspx?id=26213">http://www.microsoft.com/download/en/details.aspx?id=26213</a></p>
<p>Here’s a Wiki for late-breaking issues with the add-in:</p>
<p><a title="http://social.technet.microsoft.com/wiki/contents/articles/3296.aspx" href="http://social.technet.microsoft.com/wiki/contents/articles/3296.aspx">http://social.technet.microsoft.com/wiki/contents/articles/3296.aspx</a></p>
<p>After installing the add-in, you’ll want to insert keywords, hashtags, and people into the search window. I, of course, search for myself:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/06/04.gif"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="04" src="http://performancepointblog.com/wp-content/uploads/2011/06/04_thumb.gif" border="0" alt="04" width="522" height="67" /></a></p>
<p>The add-in’s code takes over to do the dirty work with Twitter, and you’ll see:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/06/05.gif"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="05" src="http://performancepointblog.com/wp-content/uploads/2011/06/05_thumb.gif" border="0" alt="05" width="522" height="512" /></a></p>
<p>…and:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/06/06.gif"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="06" src="http://performancepointblog.com/wp-content/uploads/2011/06/06_thumb.gif" border="0" alt="06" width="522" height="645" /></a></p>
<p>You’ll  be prompted to do a manual data refresh both in the PowerPivot environment and  in “Excel proper”, and you’re ready to rock and roll.</p>
<p>Let’s run through the worksheets you can play with step-by-step, shall we?</p>
<h2>Tone Dictionary</h2>
<p>The Tone Dictionary is a handy “configurator” which lets you define what words should drive positive and negative sentiment on the “Tone” worksheet that we’ll look at later. I rather enjoyed reading some of the negative terms like “terrible”, “sucks” and “worthless”. Well done! All of these terms can be edited:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/06/30.gif"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="30" src="http://performancepointblog.com/wp-content/uploads/2011/06/30_thumb.gif" border="0" alt="30" width="522" height="616" /></a></p>
<h2>Topics</h2>
<p>The Topics worksheet is your overview data – it includes some basic information like total tweets, retweets, mentions, and more:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/06/31.gif"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="31" src="http://performancepointblog.com/wp-content/uploads/2011/06/31_thumb.gif" border="0" alt="31" width="404" height="302" /></a></p>
<p>There is an excellent array of pre-configured slicers to let you filter by search query, time of day, tone, users, mentions, and hashtags.</p>
<p>I give Microsoft and Extended Results big props for adding some nice time intelligence to this worksheet. I’ve filtered the results below so that you can see when I do the majority of my tweeting – before work, with a little bit of time spent after 5:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/06/32.gif"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="32" src="http://performancepointblog.com/wp-content/uploads/2011/06/32_thumb.gif" border="0" alt="32" width="604" height="731" /></a></p>
<p>On an unsliced workbook you can immediately see that Wesley got a lot of @mentions, while I did a lot of tweeting against the #businessinteligence and #msbi hastags (two of my favorite haunts):</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/06/33.gif"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="33" src="http://performancepointblog.com/wp-content/uploads/2011/06/33_thumb.gif" border="0" alt="33" width="304" height="710" /></a></p>
<h2>People</h2>
<p>On the People worksheet you have the same set of slicers to work with, and the ability to see top tweeters, mentions, retweeters, and mentioners.</p>
<p>You can also spot who is tweeting “positively” and “negatively” based on the tone dictionary:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/06/34.gif"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="34" src="http://performancepointblog.com/wp-content/uploads/2011/06/34_thumb.gif" border="0" alt="34" width="304" height="507" /></a></p>
<p>It looks like Cecillio is having a bad day over on #businessintelligence! Want to know why? Just go over to the <strong>Details</strong> worksheet and find the tweet in question:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/06/35.gif"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="35" src="http://performancepointblog.com/wp-content/uploads/2011/06/35_thumb.gif" border="0" alt="35" width="604" height="334" /></a></p>
<p>Once I did my filtering, I found that he had just used an unhappy emoticon – he didn’t drop a “sucks”, “worthless”, or “terrible”, which left me a bit disappointed:</p>
<p><strong>#WorkModeOn –&gt;; #BusinessIntelligence de data desde el 2001 al 2011 WTF Cubo y mas Cubo hoy <img src='http://performancepointblog.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />   #SQLServer2008</strong></p>
<h2>Tone</h2>
<p>Finally, there’s the Tone worksheet – you’ll use it do determine how folks are feeling about people, topics, and anything else:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/06/37.gif"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="37" src="http://performancepointblog.com/wp-content/uploads/2011/06/37_thumb.gif" border="0" alt="37" width="604" height="482" /></a></p>
<p>You can see that something “good” happened on the #businessintelligence hastag on 6/9, and that yours truly has been pretty neutral the last few days.</p>
<h2>Wrap up</h2>
<p>This is good stuff. It is eminently configurable with the ability to add additional slicers, leverage DAX,  and use calculated measures in PowerPivot. Including source code so you can rip down and rebuild this yourself? Genius! Download, use and love this thing!</p>
]]></content:encoded>
			<wfw:commentRss>http://performancepointblog.com/2011/06/the-microsoft-analytics-powerpivot-add-in-for-twitter/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PowerPivot on the iPad: Best Practices</title>
		<link>http://performancepointblog.com/2011/05/powerpivot-on-the-ipad-best-practices/</link>
		<comments>http://performancepointblog.com/2011/05/powerpivot-on-the-ipad-best-practices/#comments</comments>
		<pubDate>Mon, 09 May 2011 19:11:19 +0000</pubDate>
		<dc:creator>Russell</dc:creator>
				<category><![CDATA[PowerPivot]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[iPad]]></category>

		<guid isPermaLink="false">http://performancepointblog.com/2011/05/powerpivot-on-the-ipad-best-practices/</guid>
		<description><![CDATA[Mobile BI is getting hotter and hotter by the second. If you’re interested in a little bit of “out of the box Mobile BI” and don’t want to buy 3rd party products, you can view your published Excel Services &#038; PowerPivot workbooks on the iPad. Here's how...]]></description>
			<content:encoded><![CDATA[<p>Mobile BI is getting hotter and hotter by the second. Microsoft hasn’t exactly been quick off the mark in this space as we have no mobile BI apps of our own and have pretty much ceded the space to partners. That’s OK I guess, because some of our partners like Extended Results have created some <a href="http://pushbi.com/" target="_blank">pretty amazing stuff</a>.</p>
<p>If you’re interested in a little bit of “out of the box Mobile BI” and don’t want to buy 3rd party products, you can always view your published Excel Services &amp; PowerPivot workbooks on the iPad.</p>
<p>Designing and/or re-factoring your reports for the device does take a bit of thought and planning, however. This post is a brain dump on things you should consider with some hints and tips. Most of what I’m going to give you falls into the “no duh” category, but I think you’ll pick up some useful nuggets.</p>
<h2>Size Matters</h2>
<p>Truth. Your biggest challenge will be building a report which relates a meaningful amount of information in the limited amount of screen real estate you’ll have to work with. You thought it was tough artfully cramming things into a PPS dashboard? Meh! Take the training wheels off!</p>
<h3>Develop and Test Small</h3>
<p>You may have an iPad to begin with, and even if you do it’s a pain in the rear to constantly refresh your changes on the device to see how things are looking. Develop and test as much as you can on your desktop/laptop.</p>
<p><strong>Install Safari </strong>on your desktop and configure it to act like Safari-on-iPad:</p>
<ol>
<li>Open Safari’s <strong>Options</strong> dialog.</li>
<li>Click <strong>Advanced</strong> on the Options dialog’s toolbar.</li>
<li>Select <strong>Show Develop menu in the menu bar</strong>.</li>
<li>if you want to go all out, click Security on the Options dialog, and de-select <strong>Enable plug-ins</strong> and <strong>Enable Java</strong>. This isn’t strictly necessary, but the items don’t work by default on some iOS Safari installations as far as I know.</li>
<li>Close the Options dialog. If the Menu Bar isn’t showing in Safari (File, Edit View, History, Bookmarks, etc.) Choose the <strong>Options</strong> drop down, and de-select <strong>Hide Menu Bar.</strong></li>
<li>On the <strong>Options</strong> drop-down, select <strong>Hide Bookmark Bar</strong>.</li>
<li>On the  <strong>Develop</strong> menu, choose <strong>User Agent</strong>, then <strong>Safari iOS x.xx – iPad</strong></li>
<li>Hide the the <strong>Menu Bar</strong> again.</li>
<li>Here’s the painful part: Go 1024 x 768 on your screen resolution. I know, it’s horrible. Do it, and maximize Safari.</li>
</ol>
<p>After Safari is on your machine and you’re running in 1024 x 768, you can begin developing,</p>
<h3>Basic Guidance</h3>
<p><strong>Remember, no Silverlight</strong>. The fancy PowerPivot Gallery visualizations like Theater, Carousel, etc. don’t work on the iPad since iOS doesn’t support Silverlight and Flash. Make sure you set the default view of the gallery to “All Documents”.  If you don’t want to go this route, you can create a Web Part page for each workbook and add an Excel Web Access Web Part to display the workbook. </p>
<p><strong>Assume that users don’t know iPad navigation tricks. </strong>That’s right, believe it or not some of your users may be dumb. They have an iPad, but they don’t know how to use it. I know, I know – could never happen. If it does happen, they’ll get hopelessly lost trying to navigate your report, and just give up. So throw ‘em a bone with some quick movement tips.</p>
<p>Consider adding a new worksheet to the front of your workbook which explains the two-finger scroll gesture. Some sample text:</p>
<blockquote><p>To navigate the reports in this workbook:</p>
<ul>
<li>Use the worksheet tabs at the bottom of the browser to move from worksheet to worksheet</li>
<li>To view different parts of a worksheet, press and hold two fingers to the iPad screen, then scroll while keeping your fingers on the screen</li>
</ul>
</blockquote>
<p><strong>Move slicers to the bottom of each worksheet</strong>. Horizontal slicers use up valuable screen space and will nearly always force your users to scroll. First, shrink these suckers up so they use less vertical space. Next step, move them to the bottom of the sheet unless it’s absolutely necessary you keep them at the top.</p>
<p><strong>Remove logos and artwork in the report header</strong>. Artwork and/or a logo in the header of a report adds a dash of class. However, on the iPad, it makes it less likely you’ll see all the information you need on one screen without a scroll.</p>
<p><strong>Expand row-level groupings in your PivotTables. </strong>I like to collapse all the grouped rows in my PivotTables to save on vertical space. While this generally is a good design decision, it doesn’t take into account a mantra that is critical for you to understand in iPad-land. Repeat after me:</p>
<p><em><span style="background-color: #ffff00;">The iPad soft keyboard is evil. Do everything you can to prevent it from getting in the way of your user</span></em></p>
<p><em><a href="http://performancepointblog.com/wp-content/uploads/2011/05/Keyboard-Up.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Keyboard Up" src="http://performancepointblog.com/wp-content/uploads/2011/05/Keyboard-Up_thumb.png" border="0" alt="Keyboard Up" width="736" height="553" /></a></em></p>
<p><em> </em></p>
<p>Each time your user has to interact with a + or &#8211; symbol to expand or collapse a grouping of rows, iPad’s keyboard will appear. This gets really old after about the first 10 seconds. Before you save the workbook to SharePoint, expand all your row groupings so users only have to scroll the workbook to view the information it contains rather than do a scroll + “tap” (on the row).</p>
<p>You might also want to add another “navigation note” about row groups to your “how to navigate” cheat sheet:</p>
<ul>
<li>
<div><em>To expand or collapse a group of rows or columns, tap and <strong>briefly </strong></em>hold the + or – symbol. The web report will re-paint 2-3 seconds later</div>
</li>
</ul>
<p><strong>Consider replacing slicers altogether<em>. </em></strong>When one interacts with a slicer in any way, the blasted soft keyboard will make an appearance. In addition, there are no iPad gestures you can use to easily select multiple slicer items like one can by CTRL and SHIFT clicking in Windows. The “old-fashioned” <strong>Report</strong> <strong>Filters</strong> aren’t as pretty or smart as Slicers, but one can select multiple items inside them and they only pop the soft keyboard once when one opens the filter dialog page.  In some cases, you’re just going to need to bite the bullet and use them instead of slicers.</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/05/Filter.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Filter" src="http://performancepointblog.com/wp-content/uploads/2011/05/Filter_thumb.png" border="0" alt="Filter" width="726" height="546" /></a></p>
<h3>Other Ideas</h3>
<p><strong>Turn off the Excel Toolbar:</strong> The Excel toolbar becomes something of an appendix when your PowerPivot workbook is viewed on the iPad. Why not remove it and get a few extra rows in your worksheet displayed? You can do so by displaying the workbook inside an <strong>Excel Web Access</strong> web part, and then turning off the toolbar:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/05/ScreenHunter_01-May.-09-13.27.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SharePoint Properties" src="http://performancepointblog.com/wp-content/uploads/2011/05/ScreenHunter_01-May.-09-13.27_thumb.jpg" border="0" alt="SharePoint Properties" width="378" height="541" /></a></p>
<p><strong>Modify your Master Page: </strong>Even a basic SharePoint site generally uses (wastes?) vertical space with header logos, breadcrumb trails, and alike.  If you have the CSS chops, why not get into the master page and modify some of this to free up more room?</p>
]]></content:encoded>
			<wfw:commentRss>http://performancepointblog.com/2011/05/powerpivot-on-the-ipad-best-practices/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>IE9 and PowerPivot Snapshot Generation Still Don&#8217;t Mix.</title>
		<link>http://performancepointblog.com/2011/03/ie9-and-powerpivot-snapshot-generation-still-dont-mix/</link>
		<comments>http://performancepointblog.com/2011/03/ie9-and-powerpivot-snapshot-generation-still-dont-mix/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 15:31:18 +0000</pubDate>
		<dc:creator>Russell</dc:creator>
				<category><![CDATA[PowerPivot]]></category>
		<category><![CDATA[IE9]]></category>

		<guid isPermaLink="false">http://performancepointblog.com/?p=660</guid>
		<description><![CDATA[It looks like the gold version of IE9 will still break PowerPivot's ability to generate snapshots. ]]></description>
			<content:encoded><![CDATA[<p>In a quick <a href="http://performancepointblog.com/2010/12/ie9-and-powerpivot-snapshot-generation-don%e2%80%99t-mix/">one-off post from a few months </a>ago, I wrote about my experiences with IE9 breaking PowerPivot&#8217;s ability to generate snapshots. With the RTW of IE9 , I thought it would be smart to circle back to this problem.</p>
<p>Unfortunately, it doesn&#8217;t look like it was fixed. A colleague at Microsoft was kind enough to test this, and he still sees the same problem. So, word to the wise: don&#8217;t install IE9 on the SharePoint app servers which will be doing snapshot generation.</p>
]]></content:encoded>
			<wfw:commentRss>http://performancepointblog.com/2011/03/ie9-and-powerpivot-snapshot-generation-still-dont-mix/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Visualizing Microsoft Market Basket Analysis with Tableau</title>
		<link>http://performancepointblog.com/2011/02/visualizing-market-basket-analysis-with-tableau/</link>
		<comments>http://performancepointblog.com/2011/02/visualizing-market-basket-analysis-with-tableau/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 19:29:08 +0000</pubDate>
		<dc:creator>Russell</dc:creator>
				<category><![CDATA[SQL Analysis Services]]></category>
		<category><![CDATA[Data Mining]]></category>
		<category><![CDATA[Tableau]]></category>

		<guid isPermaLink="false">http://performancepointblog.com/2011/02/visualizing-market-basket-analysis-with-tableau/</guid>
		<description><![CDATA[In this post we explore different ways you can use Tableau to explore the output of the Microsoft Association Rules algorithm.]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Over the past couple of weeks I’ve shared my thoughts on using Tableau to visualize Microsoft’s <a href="http://performancepointblog.com/2011/02/visualizing-sql-server-analysis-services-data-mining-output-with-tableau/" target="_blank">Time Series</a> and <a href="http://performancepointblog.com/2011/02/the-microsoft-clustering-algorithm-tableau-and-more-cowbell/" target="_blank">Clustering</a> algorithms. Today, I’ll finish off with Association Rules.</p>
<p>The Association Rules algorithm focuses on <em>itemsets, </em>which you can think of as a bundle of “things” (attributes) which frequently go together. For example, a popular itemset might be {Peanut Butter, Jelly, Bread}. Itemsets don’t have to be related to shopping, however. A perfectly valid itemset might be {Red Sox Fan, Cretin, Convict}: We’re just creating groups of attributes which go together.</p>
<p>Given many <em>itemsets</em>, the Association Rules algorithm discovers most frequently occurring ones. Then, it creates association rules using those frequently occurring itemsets.  Here’s what a rule looks like:</p>
<p>{Peanut Butter = Existing , Jelly = Existing =&gt; Bread = Existing}</p>
<p>If we see Peanut Butter and Jelly in someone’s shopping cart, they are likely to buy Bread, as well.</p>
<p>The concepts of support, probability, and importance are used to tell us how many times we see an item or itemset, the confidence we have in the rule, and the “lift” we might expect for a rule.</p>
<p>If you’d like to understand more about these concepts, <a href="http://social.msdn.microsoft.com/Forums/en-US/sqldatamining/thread/a1b1f0e4-0e8c-42f0-bf0b-cff176019e03" target="_blank">read this thread</a> by Jamie Maclennan.</p>
<p>Here’s a basic query to return information from our data mining model:</p>
<p><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">SELECT * FROM OpenQuery (SSAS,&#8217;SELECT NODE_CAPTION as [Rule], NODE_SUPPORT AS [Support], MSOLAP_NODE_SCORE AS [Importance], </span></p>
<p><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">NODE_PROBABILITY AS [Probability] from</span></p>
<p><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">[Association].content WHERE NODE_TYPE=8&#8242;)</span></p>
<p>Executing this puppy will return all our rules and their support,  probability &amp; importance values. We’re looking for rules with relatively high importance (&gt; 0) which indicate that the existence of peanut butter and jelly will impact bread buying positively:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/1-Orginal-Query.gif" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Original Query" src="http://performancepointblog.com/wp-content/uploads/2011/02/1-Orginal-Query.gif" border="0" alt="Original Query" width="557" height="435" /></a></p>
<p>If you open the image above, you’ll see that each rule looks pretty much like a “formula”. To make these formulae useful, we’re going to need to parse them into individual fields that be used as labels on an axis. To do that, we write lots of kludgy string parsing code:</p>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">SELECT </span></h6>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">    [Rule], </span></h6>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">    &#8212; Cast NTEXT to nvarchar then determine number of items in itemset by keying on number of = symbols before the -&gt; characters</span></h6>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">    &#8212; Divide by 2 since DATALENGTH against NVARCHAR will be twice the string length</span></h6>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">    (DATALENGTH(LEFT(CAST([rule] as nvarchar(300)),CHARINDEX(&#8216;-&gt;&#8217;,cast([RULE] as nvarchar(300)))))- DATALENGTH (REPLACE(LEFT(CAST([rule] as NVARCHAR(300)),CHARINDEX(&#8216;-&gt;&#8217;,[RULE])),&#8217;=',&#8221;)))/2   as [ItemSet Size],</span></h6>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">    [Support],</span></h6>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">    [Importance],</span></h6>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">    [Probability],</span></h6>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">    &#8212; Grab first item in itemset</span></h6>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">    LEFT(CAST([rule] as nvarchar(300)), CHARINDEX(&#8216;=&#8217;, CAST([rule] as nvarchar(300))) -1) as [Basket Item 1],</span></h6>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">    &#8212; If two items exist in itemset, grab second using kludgy string parsing</span></h6>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">    CASE (DATALENGTH(LEFT(CAST([rule] as nvarchar(300)),CHARINDEX(&#8216;-&gt;&#8217;,cast([RULE] as nvarchar(300)))))- DATALENGTH (REPLACE(LEFT(CAST([rule] as NVARCHAR(300)),CHARINDEX(&#8216;-&gt;&#8217;,[RULE])),&#8217;=',&#8221;)))/2 </span></h6>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">        WHEN 2 Then SUBSTRING(CAST([rule] as NVARCHAR(300)),CHARINDEX(&#8216;,&#8217;,CAST([rule] as nvarchar(300)))+2, ((CHARINDEX(&#8216;-&gt;&#8217;,cast([RULE] as nvarchar(300)))-12) &#8211; (CHARINDEX(&#8216;,&#8217;,CAST([rule] as nvarchar(300)))+2) ))</span></h6>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">    END as [Basket Item 2],</span></h6>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">    &#8212; Recommended Item</span></h6>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">    REPLACE(RIGHT(CAST([rule] as NVARCHAR(300)), (DATALENGTH(CAST([rule] as NVARCHAR(300)))/2) &#8211; (CHARINDEX(&#8216;-&gt;&#8217;,cast([RULE] as nvarchar(300)))+2)),&#8217; = Existing&#8217;,&#8221;) as [Recommended Item]</span></h6>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">FROM </span></h6>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">OpenQUery (SSAS,&#8217;SELECT NODE_CAPTION as [Rule], NODE_SUPPORT AS [Support], MSOLAP_NODE_SCORE AS [Importance], </span></h6>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">NODE_PROBABILITY AS [Probability] from</span></h6>
<h6><span style="font-family: Courier New; font-size: x-small; font-weight: normal;">[Association].content WHERE NODE_TYPE=8&#8242;)</span></h6>
<p>Writing the SQL above was by far the ugliest bit. On to the results:<br />
<a href="http://performancepointblog.com/wp-content/uploads/2011/02/2-Updated-Query.gif" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Updated Query" src="http://performancepointblog.com/wp-content/uploads/2011/02/2-Updated-Query.gif" border="0" alt="Updated Query" width="557" height="435" /></a></p>
<p>The resultset above adds “Basket Item 1”, “Basket Item 2”, and “Recommended Item” fields by parsing the the rule column.</p>
<p>Now for the fun stuff. First, let’s look at our rules by Importance and Probability:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/3-Association-Rules.gif" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="3 - Association Rules" src="http://performancepointblog.com/wp-content/uploads/2011/02/3-Association-Rules_thumb.gif" border="0" alt="3 - Association Rules" width="557" height="435" /></a></p>
<p>Next, lets look at the actual products which are being recommended:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/4-Recommendation.gif" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="4 - Recommendation" src="http://performancepointblog.com/wp-content/uploads/2011/02/4-Recommendation_thumb.gif" border="0" alt="4 - Recommendation" width="557" height="433" /></a></p>
<p><em>Support</em> is being used you determine our bubble size, so we can see below that Mountain Bottle cages are recommended by 5 different rules:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/5-Recommednations.gif" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="5 - Recommednations" src="http://performancepointblog.com/wp-content/uploads/2011/02/5-Recommednations_thumb.gif" border="0" alt="5 - Recommednations" width="557" height="433" /></a></p>
<p>By highlighting a specific item (product), we can see that while we generated lots of rules which recommend it, those rules aren’t very important – I’d probably ignore these.</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/6-Highligt.gif" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="6 - Highligt" src="http://performancepointblog.com/wp-content/uploads/2011/02/6-Highligt_thumb.gif" border="0" alt="6 - Highligt" width="557" height="433" /></a></p>
<p>Finally, let’s see which items  tend to go together in the same basket. Here we can see that the Mountain Bottle Cage gets grouped with a lot of other items.</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/7-Recommendations-per-Product.gif" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="7 -Recommendations per Product" src="http://performancepointblog.com/wp-content/uploads/2011/02/7-Recommendations-per-Product_thumb.gif" border="0" alt="7 -Recommendations per Product" width="557" height="423" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://performancepointblog.com/2011/02/visualizing-market-basket-analysis-with-tableau/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Business Intelligence on Windows Phone 7: A Review of BlueGranite Nitro for WP7</title>
		<link>http://performancepointblog.com/2011/02/business-intelligence-on-windows-phone-7-a-review-of-bluegranite-nitro-for-wp7/</link>
		<comments>http://performancepointblog.com/2011/02/business-intelligence-on-windows-phone-7-a-review-of-bluegranite-nitro-for-wp7/#comments</comments>
		<pubDate>Sun, 20 Feb 2011 21:01:25 +0000</pubDate>
		<dc:creator>Russell</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Mobile BI]]></category>
		<category><![CDATA[WP7]]></category>

		<guid isPermaLink="false">http://performancepointblog.com/?p=625</guid>
		<description><![CDATA[BlueGranite recently released a free business intelligence application Windows Phone 7. In this post I'll take it for a test drive and create my own dashboard ]]></description>
			<content:encoded><![CDATA[<p>About three weeks ago, the folks at <a href="http://www.blue-granite.com/site/" target="_blank">BlueGranite</a> released version 1.0 of their <strong>free</strong> WP7 BI app, <a href="http://www.blue-granite.com/site/Solutions/BlueGraniteNitro/tabid/173/Default.aspx" target="_blank">BlueGranite Nitro</a>. Here’s a “borrowed” screencap:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/BlueGraniteNitro.gif"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="BlueGraniteNitro" src="http://performancepointblog.com/wp-content/uploads/2011/02/BlueGraniteNitro_thumb.gif" border="0" alt="BlueGraniteNitro" width="300" height="562" /></a></p>
<p>I’ve been too busy following my bliss to mess around with it until recently,  but I took the plunge late last week. The authors have implemented the design patterns for a WP7 app nicely, and you’ll see all the things you’d expect, like animated page transitions, etc.</p>
<h2>The Basics</h2>
<p>The application displays one visualization per page, allowing the user to move between pages of interest. For a free application, I was quite impressed by the number and richness of the visualizations it supports. A look at the Nitro’s  (fairly basic) documentation reveals there are 20 different types you can play with:</p>
<ul>
<li>Line Chart</li>
<li>Bar Chart</li>
<li>Column Chart</li>
<li>1 Line + 1 Column Chart</li>
<li>Stacked Column</li>
<li>100% Stacked Column Chart</li>
<li>Area Chart</li>
<li>Stacked Area Chart</li>
<li>100% Stacked Area Chart</li>
<li>Pie Chart</li>
<li>Funnel Chart</li>
<li>Bubble Chart</li>
<li>Pyramid Chart</li>
<li>Smoothed Line Chart</li>
<li>Doughnut Chart</li>
<li>Radar Chart</li>
<li>Scorecard</li>
<li>Map with gradient shading.</li>
<li>Map with KPI shading (green/yellow/red).</li>
<li>Bullet Chart Scorecard</li>
</ul>
<p>Some of the animations I noticed in the demo videos looked awfully familiar, and it quickly became apparent that BlueGranite decided to leverage <a href="http://visifire.com/silverlight_wpf_charts_gauges_gallery.php" target="_blank">Visifire</a> for most of their charting needs. Hooray! I love Visifire’s controls, and the fact that they have a <a href="http://visifire.com/silverlight_wpf_charts_gauges_designer.php" target="_blank">web-based chart designer</a> is a big bonus. You’ll see why later.</p>
<p>Configuring the application to point at one of BlueGranite’s <a href="http://www.blue-granite.com/site/Solutions/BlueGraniteNitro/BlueGraniteNitroSampleDashboards/tabid/179/Default.aspx" target="_blank">demo dashboards</a> is very straight-forward, and between the two built-in samples and AdventureWorks, you’ll have more than enough to play with.</p>
<h3>Creating your own Dashboard</h3>
<p>One feeds the dashboard data using XML. You can leverage a static XML file on a web server to do so, or render a Microsoft SQL Reporting Services report as XML to provide a dynamic data feed. Well, you know what I’m going to do. Let’s roll up our sleeves!</p>
<p>BlueGranite provides a walk-through on how the <a href="http://www.blue-granite.com/site/Solutions/BlueGraniteNitro/CreatingaSSRSdatasourceforBlueGraniteNitro/tabid/175/Default.aspx" target="_blank">AdventureWorks sample SSRS feed</a> was created, and I’m glad they did. I advise you to take your time with all the files that make up the sample and get really familiar with how BlueGranite did what they did. I found that creating one of these from scratch is not for the faint-of-heart. You’re going to be writing plenty of TSQL and possibly hand-crafting some MDX before you’re done. You’ll also want their <a href="http://www.blue-granite.com/site/Solutions/BlueGraniteNitro/BlueGraniteNitroXMLDocumentLayout/tabid/176/Default.aspx" target="_blank">XML reference documentation</a>.</p>
<p>I decided to create a dashboard using sample online analytics data I have for a fictional ad agency named WWReach Advertising. I’ve used the same data in other examples on this blog. All of that lovely data lives in a cube.</p>
<h2>Queries. Lots of them.</h2>
<p>The first thing you’ll do is write a “Control Panel” query which pretty much tells Nitro:</p>
<ul>
<li>How many pages are going be displayed in your dashboard</li>
<li>Which type of visualization will be displayed on each page</li>
<li>How each visualization should display and format data</li>
</ul>
<p>This SSRS dataset which contains the query above must be named <strong>DataLayoutSet,</strong> and it will contain one SELECT statement for each page in your dashboard. If you have 5 pages, you’ll write 5 SELECT statements and use UNION to string them altogether inside the dataset.</p>
<p>I recommend you start with one and only one SELECT in DataLayoutSet. Don’t put 2-3 in at the same time like I did – too many chances for error.</p>
<p>After you’ve created DataLayoutSet and it contains details for at least one dashboard page, you’re going to create more queries which actually grab your data. I assumed this part would be really simple, but it wasn’t.</p>
<p>BlueGranite Nitro requires that the queries which feed a dashboard page be shaped in a particular manner. Based on the type of visualization you want to use, it’s likely you’ll end up having to jump out of the graphical query designer and start hand-coding. The graphical designer isn’t going to be able do things like create MDX Members that you’ll need if you happen to use SSAS as a data source like I did.</p>
<p>Now that the “data query” is written, you’ll need to modify the field names in its containing dataset to match the attributes you specified in DataLayoutSet. You’ll name these suckers x1, y1, y2, z1, etc. Why?</p>
<p>Visifire. Visifire does it’s data plotting based on values supplied to  &#8216;”X Value”, “Y Value” and “Z Value” attributes. If I want to plot <strong>Sales</strong> and <strong>Profit Margin</strong> by <strong>Month</strong>, x1 will need to display <strong>Month</strong> values, y1 will show <strong>Sales</strong>, and y2 spits out <strong>Profit Margin</strong>. This is where the Visifire chart designer I mentioned earlier comes in really handy. After you run a query, just take the values it displays and plug ‘em into the <a href="http://visifire.com/silverlight_wpf_charts_gauges_designer.php" target="_blank">chart designer</a>. You can very quickly get a feel for what your page is going to look like inside BlueGranite Nitro even if your SSRS report isn’t completely working yet.</p>
<p>OK, enough. The gents at BlueGranite wrote a nice walkthrough, so use it. Here’s mine:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/Landing.gif"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="Landing" src="http://performancepointblog.com/wp-content/uploads/2011/02/Landing_thumb.gif" border="0" alt="Landing" width="304" height="558" /></a></p>
<p>I’ve added my dashboard using the options screens. Want to use my sample? Here is the <a href="http://performancepointblog.com/wp-content/uploads/2011/02/MobileStuff1.zip">RDL file</a> for you to take a look at. You might just be interested in a <a href="http://performancepointblog.com/wp-content/uploads/2011/02/MobileStuffXML.zip">static XML file</a>, too. </p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/Scorecard.gif"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="Scorecard" src="http://performancepointblog.com/wp-content/uploads/2011/02/Scorecard_thumb.gif" border="0" alt="Scorecard" width="304" height="554" /></a></p>
<p>You can see that my scorecard doesn’t have tons of room for multiple columns. You’ll need to be choosy about what you put here.</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/AreaChart.gif"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="AreaChart" src="http://performancepointblog.com/wp-content/uploads/2011/02/AreaChart_thumb.gif" border="0" alt="AreaChart" width="304" height="558" /></a></p>
<p>The area chart above shows Click Through Rate for 4 clients (Big Air Domestic, Big Air International, EuroRail, etc.) by Vendor (Accuweather, AdBrite, etc..).  Again this is fictional data. Make believe. Fake.</p>
<p>One problem in the current version of Nitro appears to be that it doesn’t handle formatting small numbers very well. Click through rates often range between a tenth to half of a percent, and we’re having a hard time displaying that above.  Attempts to format these values with ‘P’ (Percent) didn’t do anything.</p>
<p>Here’s the same page in landscape mode:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/Area-Landscape.gif"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="Area Landscape" src="http://performancepointblog.com/wp-content/uploads/2011/02/Area-Landscape_thumb.gif" border="0" alt="Area Landscape" width="604" height="319" /></a></p>
<p>The final page I dropped into my dashboard was a bubble chart. I love my bubble charts!</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/Bubble.gif"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="Bubble" src="http://performancepointblog.com/wp-content/uploads/2011/02/Bubble_thumb.gif" border="0" alt="Bubble" width="304" height="562" /></a></p>
<p>In the visualization above we’re plotting clicks and cost per click for my four clients. In a perfect world, I’d also want to vary the size of the bubbles based on the number of impression each client was getting. Visifire does support this ability, but it hasn’t been implemented in Nitro yet. I understand it’s coming soon, and I can’t wait!</p>
<h2>Roundup</h2>
<p>This is a great first effort from BlueGranite. They deserve lots of kudos for contributing to the MSBI ecosystem with this super little tool. And now that I’ve delivered a few compliment and hopefully have them well and truly buttered up…I beg for more features.</p>
<p>What would I like to see?</p>
<ul>
<li><strong>oData</strong> as a potential data source. I’m playing around with SQL Azure quite a bit and being able to consume oData would be quite handy</li>
<li>Ability to control the size of bubbles in a bubble chart</li>
<li>Ability to create custom captions for my bubbles, bars, etc.</li>
<li>More cowbell!</li>
</ul>
<p>I’ve thrown “my” sample out on the internets, so if you want to connect to it and play, here’s where you can find it:</p>
<p><strong>URL:</strong> <a href="http://wwreach.msftlabs.com:8082/reportserver_PowerPivot?/MobileStuff&amp;rs:Command=Render&amp;rs:Format=XML">http://wwreach.msftlabs.com:8082/reportserver_PowerPivot?/MobileStuff&amp;rs:Command=Render&amp;rs:Format=XML</a> (…and I apologize…this URL is MURDER to type in on a soft keyboard)</p>
<p><strong>Credentials:</strong> UserName=corp\runreport <a href="mailto:Password=pass@word1">Password=pass@word1</a></p>
<p>Again, many thanks to the BlueGranite for helping to build Microsoft’s MobileBI story!</p>
]]></content:encoded>
			<wfw:commentRss>http://performancepointblog.com/2011/02/business-intelligence-on-windows-phone-7-a-review-of-bluegranite-nitro-for-wp7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Microsoft Clustering Algorithm, Tableau, and More Cowbell</title>
		<link>http://performancepointblog.com/2011/02/the-microsoft-clustering-algorithm-tableau-and-more-cowbell/</link>
		<comments>http://performancepointblog.com/2011/02/the-microsoft-clustering-algorithm-tableau-and-more-cowbell/#comments</comments>
		<pubDate>Sun, 13 Feb 2011 23:27:07 +0000</pubDate>
		<dc:creator>Russell</dc:creator>
				<category><![CDATA[Feature]]></category>
		<category><![CDATA[SQL Analysis Services]]></category>
		<category><![CDATA[The Competition]]></category>
		<category><![CDATA[Data Mining]]></category>
		<category><![CDATA[Tableau]]></category>

		<guid isPermaLink="false">http://performancepointblog.com/?p=603</guid>
		<description><![CDATA[Using Tableau to visualize the output of the Microsoft Clustering algorithm...More cowbell.]]></description>
			<content:encoded><![CDATA[<p>As a follow-up to my <a href="http://performancepointblog.com/2011/02/visualizing-sql-server-analysis-services-data-mining-output-with-tableau/">work with the Time Series algorithm</a>, I’ve been playing with the SSAS clustering algorithm over several cups of <a href="http://www.baldguybrew.com/">Bald Guy</a> coffee.</p>
<p>One will generally use the clustering algorithm to segment “things” (customers into “customer clusters”, for example) based on similarities between attributes that describe the “things” in question.</p>
<p>The Adventure Works sample cube has a ready-made data mining structure which contains a customer-focused clustering model. It’s called <strong>Customer Clusters</strong> and takes the following inputs:</p>
<ul>
<li>Commute Distance</li>
<li>Education</li>
<li>Gender</li>
<li>Home Owner</li>
<li>Marital Status</li>
<li>Number of Cars Owned</li>
<li>Number of Children at Home</li>
<li>Occupation</li>
<li>Total Children</li>
<li>Yearly Income</li>
</ul>
<p>Rather than recreate the wheel, I’ll use the sample.</p>
<p>The first thing we’ll probably want to understand is how different combinations of attributes and attribute values combine to create distinct clusters of customers – otherwise known as a “cluster profile”. SQL Server Analysis Services has a quick but unsupported system stored procedure named GetClusterProfiles() which will give us this information, and since it’s the weekend, I don’t care if it’s unsupported. I’m going to execute this sproc against my data mining model:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/1-System-Sproc.gif" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="1 - System Sproc" src="http://performancepointblog.com/wp-content/uploads/2011/02/1-System-Sproc_thumb.gif" border="0" alt="1 - System Sproc" width="557" height="384" /></a></p>
<p>Click and view the image above as there’s a lot of good information to be found. The columns <strong>001-010</strong> represent 10 distinct clusters of customers that were discovered based on the data the model was trained on. <strong>Attribute Name</strong> and <strong>Attribute Value</strong> show the inputs and potential input values that were found in the data. For each attribute name/value pair, you’ll see a <strong>support</strong> and <strong>probability</strong> value. <strong>Support</strong> represents the number of cases (rows) we found that fit the criteria in question. <strong>Probability</strong> tells us the probability a particular attribute name/value pair will show up in the customer cluster in question</p>
<p>For example in Customer Cluster 001, there is a ~ 42% chance the customer lives less than a mile away from work, about a 1% chance the person lives 10+ miles away from work, and a ~25% chance they live within 1-2 miles, etc.</p>
<p>As an aside, it’s normal to actual rename clusters from 001, 002, 003 to something more meaningful like “Soccer Moms” , “Yuppies” or “Hipsters” based on our read of the primary drivers of each cluster. I haven’t bothered, so we’ll refer to our clusters as 001-010.</p>
<p>As I mentioned, I initially wanted to use GetClusterProfile()’s output as my data source, but found that I couldn’t use OPENQUERY and the Microsoft MSOLAP provider to execute it. I’m guessing that the fact we return an unknown number of columns (based on the number of clusters we find) could be causing the problem.</p>
<p>Instead, I had to use multiple DMX statements “UNIONed” together. Each DMX SELECT returns cluster attribute name/value pairs for a single attribute. Here’s one for Commute Distance:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/1.5-DMX-for-Single-Attribute.gif" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="1.5 - DMX for Single Attribute" src="http://performancepointblog.com/wp-content/uploads/2011/02/1.5-DMX-for-Single-Attribute_thumb.gif" border="0" alt="1.5 - DMX for Single Attribute" width="557" height="414" /></a></p>
<p>There’s something important here to note, by the way. Notice the WHERE clause where I filter out any attributes with less support than 500 cases. Choosing 500 was an arbitrary decision on my part, but it impacted my results in a big way. In the output above, there are now only 3 Commute Distance nodes returned for customer cluster 001, while there were 5 when I executed GetClusterProfile() in the first screenshot. Is this good or bad? Hard to say – there were only 35 cases supporting the “1% probability of living 10+ miles away” node in cluster 001. Is 35 statistically significant enough to include?</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/2-OpenQuery.gif" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="2 - OpenQuery" src="http://performancepointblog.com/wp-content/uploads/2011/02/2-OpenQuery_thumb.gif" border="0" alt="2 - OpenQuery" width="557" height="396" /></a></p>
<p>(By the way, after the whole discussion around SUPPORT vis-à-vis “Customer Commute” I managed to completely FORGET to add it to the final query above! Since this is just an example I decided not to go back and correct my oversight, however – don’t be surprised when you don’t see the Commute Distance attribute in any of the following vizes.)</p>
<p>After dropping our final SELECT statement into a Tableau “Custom SQL” data connection, we’re ready to build a Viz:</p>
<ul>
<li>The <strong>Node_Name</strong> (The name of the cluster: 001, 002, etc.) pill lands on <strong>Columns</strong></li>
<li><strong>Attribte_Name</strong> and the <strong>Probability</strong> measure get dropped in <strong>Rows</strong></li>
<li><strong>Attrbute_Value</strong> lives in the <strong>Color</strong> shelf</li>
</ul>
<p>You can now easily see how each attribute value drives the composition of different customer clusters (001-010, on columns).</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/3-Cluster-Profile.gif" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="3- Cluster Profile" src="http://performancepointblog.com/wp-content/uploads/2011/02/3-Cluster-Profile_thumb.gif" border="0" alt="3- Cluster Profile" width="557" height="428" /></a></p>
<p>I found there were mixed text and number values in the <strong>Attribute_Value</strong> column, and this was painful. For example, I had to deal with values like “Married” and “Single” (Marital Status) <em>and</em> .056365 (Number of Cars Owned in cluster 010) in the same field. I used Groups to simplify things a bit, but I’d probably massage the data model / query a bit more if I were doing this “for real” rather than “for fun”.</p>
<p>After we understand how customer clusters are composed, we can really have some fun.</p>
<p>The Adventure Works sample SSAS database contains a second cube called “Mined Customer”. Mined Customers combines two data mining models (<strong>Customer Clusters </strong>and an <strong>Association Rules</strong> model for market basket analysis) with lots of other metrics like sales, profit. The mash up of our “default” metrics and dimensions with the “mining insights” gives us some exciting possibilities for visualization.</p>
<p>In the viz below, we’re able to look at average sales and profit margin by our ten customer clusters. One can see that Cluster 5 drives the highest profit margin with a relatively large number of customers:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/4-Clustered-Profit-1.gif" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="4  - Clustered Profit 1" src="http://performancepointblog.com/wp-content/uploads/2011/02/4-Clustered-Profit-1_thumb.gif" border="0" alt="4  - Clustered Profit 1" width="557" height="428" /></a></p>
<p>And the fun continues! By dropping one of the “demographic inputs” on the <strong>Level of Detail shelf</strong>, we can begin exploring within individual clusters. I’m going to drill in by <strong>Occupation</strong>.</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/5-Clustered-Profit-2.gif" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="5-Clustered Profit 2" src="http://performancepointblog.com/wp-content/uploads/2011/02/5-Clustered-Profit-2_thumb.gif" border="0" alt="5-Clustered Profit 2" width="557" height="456" /></a></p>
<p>It now becomes apparent that skilled manual workers in Cluster 6 are more profitable than Cluster 5 as a whole. By putting together my Quick Filters and Demographic fields on the Level of Detail shelf I also have the ability to completely explore the sales and profitability of my customer clusters.</p>
<h4>More Cowbell</h4>
<p>And I have an admission to make: I’m obsessed. Since Gartner released its <a href="http://www.gartner.com/technology/media-products/reprints/microsoft/vol2/article15/article15.html">2011 Magic Quadrant for Business Intelligence Platforms</a> report a few weeks ago, I’ve had MQ on the brain. I’ve been thinking about MQs non-stop – it’s my cowbell. In fact, I got a fever, and the only prescription&#8230;<em><strong>is more cowbell!!&#8221;</strong></em></p>
<p>So, I decided I’d take the previous viz and turn it into a MQ. I essentially zoomed in a tad, and dropped in four annotation areas with no labels and played around with background shading. Voila, more cowbell!</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/6-Clustered-Profit-MQ.png" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="6 - Clustered Profit MQ" src="http://performancepointblog.com/wp-content/uploads/2011/02/6-Clustered-Profit-MQ_thumb.png" border="0" alt="6 - Clustered Profit MQ" width="557" height="430" /></a></p>
<p>Next time, Association Rules – otherwise known as market basket analysis</p>
]]></content:encoded>
			<wfw:commentRss>http://performancepointblog.com/2011/02/the-microsoft-clustering-algorithm-tableau-and-more-cowbell/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Visualizing SQL Server Analysis Services Data Mining Output with Tableau</title>
		<link>http://performancepointblog.com/2011/02/visualizing-sql-server-analysis-services-data-mining-output-with-tableau/</link>
		<comments>http://performancepointblog.com/2011/02/visualizing-sql-server-analysis-services-data-mining-output-with-tableau/#comments</comments>
		<pubDate>Mon, 07 Feb 2011 20:35:34 +0000</pubDate>
		<dc:creator>Russell</dc:creator>
				<category><![CDATA[SQL Analysis Services]]></category>
		<category><![CDATA[The Competition]]></category>
		<category><![CDATA[Data Mining]]></category>
		<category><![CDATA[Tableau]]></category>

		<guid isPermaLink="false">http://performancepointblog.com/?p=577</guid>
		<description><![CDATA[I’m constantly amazed that such a small portion of people who own SQL Server are using the fantastic data mining capabilities they have access to. One thing that has occurred to me as a potential bump in the road towards wider adoption  is visualization. Can Tableau help here?]]></description>
			<content:encoded><![CDATA[<p>I’m constantly amazed that such a small portion of people who own SQL Server are using the fantastic data mining capabilities they have access to. The (free) <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyId=896A493A-2502-4795-94AE-E00632BA6DE7&amp;displaylang=en">Microsoft SQL Server 2008 Data Mining Add-ins</a> and (not free but nonetheless awesome) <a href="https://www.predixionsoftware.com/predixion/PredixionProducts.aspx">Predixion Insight</a> solution make this stuff really easy to do while still offering industrial-strength capabilities.</p>
<p>One thing that has occurred to me as a potential bump in the road towards wider adoption  is visualization. Microsoft offers some sample (and admittedly long-in-the-tooth) <a href="http://msdn.microsoft.com/en-us/library/ms160727(SQL.90).aspx">data mining visualizations</a> but perhaps users still find it too hard to get their newly won insights out of SQL and/or Excel and present same to rest of the world? Maybe users want more control over how the visualizations look and feel and how one interacts with the results?</p>
<p>To that end, I thought it would be fun to work with a product from Microsoft gold certified partner, <a href="http://www.tableausoftware.com/">Tableau Software</a>. The folks at Tableau make a pretty awesome piece of BI goodness named Tableau Desktop that has really, really nice visualization capabilities. Tableau Desktop is a bit like my old favorite ProClarity, except that it can consume data from SSAS to SQL to Teradata to Netezza to PowerPivot and back to text files. Did I mention the tool has awesome visualization capabilities?</p>
<p>What I’m going to do over the next few weeks or as time allows is to drop Tableau on top of SQL Server Analysis Services data mining output. I’ll try to come up with meaningful examples of how one might visualize the output of all the major data mining algorithms SSAS supports. Sounds fair?</p>
<h2>Time Series</h2>
<p>I’ll start with the Time Series algorithm, which we’ll use for predicting values based on numbers tied to slices of time in the past. One essentially feeds a Time Series model a bunch of numbers which are each associated with a timestamp, and SSAS can come back to you with predicted values for other time periods.</p>
<p>In PerformacePoint 2007, we took advantage of this functionality directly and had a really cool report type which one could nest in a dashboard. Unfortunately, the report type leveraged the deprecated Office Web Components, so we don’t have it PPS 2010. In honor of my lost friend, we start with the Time Series:</p>
<p>I’m going to assume you know something about Microsoft data mining. If you don’t, I advise you to spend some time with the <a href="http://technet.microsoft.com/en-us/library/ms167167.aspx">fine tutorial</a> and <a href="http://technet.microsoft.com/en-us/library/ms174949.aspx">books online</a>. As much as I can, I’ll actually base my work off these walkthroughs and examples in the sample AdventureWorks cube.</p>
<p>So, we’ll start off in BIDS with a simple DMX query which predicts the next 6 periods (months) of sales based on history:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/1-DM-Query.jpg" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="1 - DM Query" src="http://performancepointblog.com/wp-content/uploads/2011/02/1-DM-Query_thumb.jpg" border="0" alt="1 - DM Query" width="554" height="426" /></a></p>
<p>I’m re-using the “Forecast” model that is already waiting for us inside the SQL Serve Analysis Services sample cube <strong>AdventureWorks DW 2008R2. </strong>The query will return the model of item we’re selling, the region it’s being sold in and 6 months worth of predictions.</p>
<p>The “as-is” query has a problem in that the results come nested as distinct datasets.  This is pretty hard to use :</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/2-DM-Query-Result.jpg" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="2 - DM Query Result" src="http://performancepointblog.com/wp-content/uploads/2011/02/2-DM-Query-Result_thumb.jpg" border="0" alt="2 - DM Query Result" width="554" height="671" /></a></p>
<p>We’ll fix this annoyance by leaning on the DMX FLATTEN statement. One can flip from ‘Designer” to “SQL” view and modify the query itself:</p>
<h5><span style="font-family: Courier New;">SELECT FLATTENED</span></h5>
<h5><span style="font-family: Courier New;">  [Forecasting].[Model Region],</span></h5>
<h5><span style="font-family: Courier New;">  (PredictTimeSeries([Forecasting].[Amount],6)) as [Amount],</span></h5>
<h5><span style="font-family: Courier New;">   True as [Predicted]</span></h5>
<h5><span style="font-family: Courier New;">From</span></h5>
<h5><span style="font-family: Courier New;">  [Forecasting]</span></h5>
<p>Note how I’ve also added a hard-coded field – “Predicted”; I’ve set the value to “True” to indicate that the values in question are predictions, not historical values.</p>
<p>The look that we’re ultimately going for in our visualization is a single, unbroken line or bar chart which gradually transitions from plotting historical values to predicted values. The bit above gets us our “in the future” numbers.</p>
<p>Getting the historical numbers is pretty easy because there happens to be a SQL Server view which provides them to the data mining algorithm for training purposes. The view is named vTimeSeries, and I’ll just re-purpose it:</p>
<h5><span style="font-family: Courier New;">SELECT ModelRegion,</span></h5>
<h5><span style="font-family: Courier New;">   TimeIndex,</span></h5>
<h5><span style="font-family: Courier New;">   Amount, </span></h5>
<h5><span style="font-family: Courier New;">   0 as [Predicted] –-‘False’: Historical values</span></h5>
<h5><span style="font-family: Courier New;">FROM vTimeSeries </span></h5>
<p>How do we merge these two distinct sets of data? UNION:</p>
<h5><span style="font-family: Courier New;">SELECT * FROM OpenQuery (SSAS,&#8217;SELECT FLATTENED</span></h5>
<h5><span style="font-family: Courier New;">  [Forecasting].[Model Region],</span></h5>
<h5><span style="font-family: Courier New;">  (PredictTimeSeries([Forecasting].[Amount],6)) as [Amount],</span></h5>
<h5><span style="font-family: Courier New;">   True as [Predicted]</span></h5>
<h5><span style="font-family: Courier New;">From</span></h5>
<h5><span style="font-family: Courier New;">  [Forecasting]&#8216;)</span></h5>
<h5><span style="font-family: Courier New;">UNION ALL</span></h5>
<h5><span style="font-family: Courier New;">SELECT </span></h5>
<h5><span style="font-family: Courier New;">   ModelRegion,</span></h5>
<h5><span style="font-family: Courier New;">   TimeIndex,</span></h5>
<h5><span style="font-family: Courier New;">   Amount, </span></h5>
<h5><span style="font-family: Courier New;">   0 as [Predicted]</span></h5>
<h5><span style="font-family: Courier New;">FROM vTimeSeries</span></h5>
<p>Note that we use OpenQuery to make this all work – we therefore have a Linked SQL Server Analysis Server plugged into our SQL Server. I’ve named it SSAS, and here’s the property dialog:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/3-Linked-Server.jpg" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="3 - Linked Server" src="http://performancepointblog.com/wp-content/uploads/2011/02/3-Linked-Server_thumb.jpg" border="0" alt="3 - Linked Server" width="554" height="494" /></a></p>
<p>Once the linked server is there, we can test our query:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/4-Union-Results.jpg" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="4 - Union Results" src="http://performancepointblog.com/wp-content/uploads/2011/02/4-Union-Results_thumb.jpg" border="0" alt="4 - Union Results" width="554" height="604" /></a></p>
<p>Now that the query is done, the real fun can begin. In a new Tableau workbook, we’ll need to create a new Data Connection pointing at SQL Server and using the <strong>Custom SQL</strong> option. Paste the query above into the Custom SQL dialog, and you’re pretty much ready roll.</p>
<ul>
<li>Drop your <strong>Time</strong> dimension on <strong>Columns</strong></li>
<li>Drop <strong>ModelRegion</strong> and <strong>Amount</strong> on Rows</li>
<li>Place the “new” <strong>Predicted</strong> dimension on the <strong>Color </strong>shelf.</li>
</ul>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/5-Tableau.jpg" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="5 - Tableau" src="http://performancepointblog.com/wp-content/uploads/2011/02/5-Tableau_thumb.jpg" border="0" alt="5 - Tableau" width="554" height="426" /></a></p>
<p>If you click the image above, you’ll see that the <em>Predicted</em> field drives the historical/predicted value transition via a color change.</p>
<p>I also added a few Calculated Fields to break out “Region” and “Model” into two distinct dimensions and added each as a filter. For kicks, I changed my shapes from bars to prediction-or-not influenced squares and circles:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/02/6-Tableau-More.jpg" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="6 - Tableau More" src="http://performancepointblog.com/wp-content/uploads/2011/02/6-Tableau-More_thumb.jpg" border="0" alt="6 - Tableau More" width="554" height="455" /></a></p>
<p>That’s it!</p>
]]></content:encoded>
			<wfw:commentRss>http://performancepointblog.com/2011/02/visualizing-sql-server-analysis-services-data-mining-output-with-tableau/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>&#8220;Persisted file cannot be found&#8221; when executing DMX via OpenQuery</title>
		<link>http://performancepointblog.com/2011/02/persisted-file-cannot-be-found-when-executing-dmx-via-openquery/</link>
		<comments>http://performancepointblog.com/2011/02/persisted-file-cannot-be-found-when-executing-dmx-via-openquery/#comments</comments>
		<pubDate>Mon, 07 Feb 2011 16:46:08 +0000</pubDate>
		<dc:creator>Russell</dc:creator>
				<category><![CDATA[SQL Analysis Services]]></category>
		<category><![CDATA[Data Mining]]></category>
		<category><![CDATA[SQL Server Analysis Services]]></category>

		<guid isPermaLink="false">http://performancepointblog.com/?p=558</guid>
		<description><![CDATA[What does "Persisted file cannot be found" mean when you're executing a DMX query? I didn't know and couldn't find anything on the internets.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m about to start playing around with custom visualization of data mining output, and am doing some basic setup work on my servers.</p>
<p>While testing that I could return results from DMX via OpenQuery, I ran a basic DMX statement to return results from a time series model:</p>
<pre>SELECT * FROM OpenQuery (SSAS,'SELECT FLATTENED
  [Forecasting].[Model Region],
  (PredictTimeSeries([Forecasting].[Amount],3)) as [Amount],
   True as [Predicted]
FFrom
  [Forecasting]')</pre>
<p>Doing so returned this error message:</p>
<pre>   OLE DB provider "MSOLAP" for linked server "SSAS" returned message "Error (Data mining): The '\\?\C:\Program Files\Microsoft SQL Server\MSAS10_50.MSSQLSERVER\OLAP\Data\Adventure Works DW 2008R2.0.db\Forecasting.0.dms\Forecasting.0.dmm\0.Forecasting.cnt.bin' persisted file cannot be found.".
Msg 7321, Level 16, State 2, Line 1
An error occurred while preparing the query "SELECT FLATTENED
  [Forecasting].[Model Region],
  (PredictTimeSeries([Forecasting].[Amount],3)) as [Amount],
   True as [Predicted]
From
  [Forecasting]" for execution against OLE DB provider "MSOLAP" for linked server "SSAS".</pre>
<p>Problem? Stupid user trick &#8211; I hadn&#8217;t processed the model.  I was surprised to find that this error message couldn&#8217;t be found via Bing/Google, however. So here&#8217;s a little entry to save someone else some time.</p>
<p>Cheers.</p>
]]></content:encoded>
			<wfw:commentRss>http://performancepointblog.com/2011/02/persisted-file-cannot-be-found-when-executing-dmx-via-openquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What to do when a PerformancePoint scorecard context menu is displayed in the wrong place</title>
		<link>http://performancepointblog.com/2011/01/what-to-do-when-a-performancepoint-scorecard-context-menu-is-displayed-in-the-wrong-place/</link>
		<comments>http://performancepointblog.com/2011/01/what-to-do-when-a-performancepoint-scorecard-context-menu-is-displayed-in-the-wrong-place/#comments</comments>
		<pubDate>Sun, 16 Jan 2011 16:43:17 +0000</pubDate>
		<dc:creator>Russell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://performancepointblog.com/2011/01/what-to-do-when-a-performancepoint-scorecard-context-menu-is-displayed-in-the-wrong-place/</guid>
		<description><![CDATA[Sometimes when you right click a PerformancePoint scorecard, the context menu doesn't appear in the right place. Here's what to do about it.]]></description>
			<content:encoded><![CDATA[<p>PerformancePoint allows you to interact with a scorecard in a number of ways – You can click on items in the scorecard to drive behavior elsewhere in the dashboard, drill to details, decompose values, and more.</p>
<p>When playing inside a PerformancePoint Services 2010 scorecard, you may encounter an odd behavior from time to time: You right-click an area of the scorecard in order to expose the context-menu, and the menu doesn’t appear under your mouse. The menu does indeed get launched, but it is displayed in the wrong place – generally in the upper-left hand corner of your browser:</p>
<p><a href="http://performancepointblog.com/wp-content/uploads/2011/01/ScreenHunter_01-Jan.-16-11.20.jpg" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="ScreenHunter_01 Jan. 16 11.20" src="http://performancepointblog.com/wp-content/uploads/2011/01/ScreenHunter_01-Jan.-16-11.20_thumb.jpg" border="0" alt="ScreenHunter_01 Jan. 16 11.20" width="561" height="480" /></a></p>
<p>Neat, huh?</p>
<p>The issue seems to do with browser compatibility. 99% of the time, if you turn the Internet Explorer <strong>Compatibility View</strong> feature own, your problem will be solved.</p>
]]></content:encoded>
			<wfw:commentRss>http://performancepointblog.com/2011/01/what-to-do-when-a-performancepoint-scorecard-context-menu-is-displayed-in-the-wrong-place/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

