Welcome to MSDN Blogs Sign in | Join | Help

About the changes in PerformancePoint

If you haven't heard, Microsoft has made changes to the PerformancePoint product alignment. Basically this means PPS no longer exists as a separate product - the dashboard and analytic (M/A) components are being folded into MOSS, while Planning is being "end of life"d. Effective (almost) immediately, if you own rights to PerformancePoint, you now get rights to MOSS Enterprise (InfoPath web forms, Excel Services); if you own rights to SharePoint Enterprise, you now get rights to PerformancePoint.

 Really, this is just a good thing for everyone, since MOSS, Excel Services, and PPS were always really siblings under the covers - there are a lot of synergies that you can now leverage very nicely.

In addition, InfoPath web forms provide a great way of ad-hoc data entry for a BI solution (there's always at least *one* chunk of data that's the result of someone typing values into Enterprise Manager...)

"But Philo, you just wrote a book on PerformancePoint!" Yes, and since it also covers SQL Server as a BI platform, and MOSS, and Excel Services, it's still a *great* book for Microsoft BI: Pro PerformancePoint Server 2007. (Amazon.com)

Posted by philoj | 2 Comments

Pro PerformancePoint about to hit the shelves!

Well, it took the better part of a year, but my second book, Pro PerformancePoint Server 2007: Building Business Intelligence Solutions (Pro) (APress) should be rolling off the presses as you read this. It's almost 500 pages, and I tried to cover Microsoft's entire business intelligence "stack" - from SQL Server (Integration Services, Analysis Services, and Reporting Services) to SharePoint BI, ProClarity, Excel Services, and PerformancePoint (scorecards, dashboards, analytics, and planning). I've even got a short chapter on the new Management Reporter for financial reporting.

 Not a hugely deep dive on any of the technologies, but hopefully enough to wrap your brain about where everything fits and get your feet wet with exercises building things.

I'd be interested in hearing feedback about the book.

 

All-up BI VPC

For folks who want to play with our Business Intelligence technologies and don't want to bother with installing everything, you can download a virtual machine image that has just about everything installed you could want, including demo content.

 The "All-up BI VPC" has two parts, available at:

Part One (3.4 GB)

Part Two (1.0 GB)

 Yes - *giga*bytes. These are compressed, and will unzip to a vhd file for Virtual PC that's over 20GB in size. To run the virtual PC, I highly recommend at least 1GB free memory (so your PC needs at least 2GB). If you can free up more, that's better. Also try to work on a PC with two hard drives, and put this on the non-system drive.

Posted by philoj | 1 Comments

Transposing rows and columns in SQL Server Integration Services

Okay, this was a rough one. The challenge was that a customer had Excel spreadsheets where we needed to transpose the rows and columns. In other words, the spreadsheet looked like this:

But we needed the records to list Program values by date, like this:

Of course, I did that by simply copying the cells and doing a "Paste | Transpose" in Excel. But when you have several hundred spreadsheets being used by folks, that's a nontrivial operation.

At first it looked like my only option was going to be writing a script in a Script Transform component - there's no "transpose" component in SSIS. But every time I asked someone about this, their first response was the Pivot component, which wasn't quite right. Today I ran across some comments on the Unpivot component, and something about the output called to me:

TechNet Unpivot Resultset

And suddenly I figured it out - I could unpivot the spreadsheet, then pivot it again on the other field. Voila! A transpose.

So let's walk through this. I'm going to skip many of the SSIS basics - if you need help with SSIS, check out the tutorials here.

First, let's set up our Excel spreadsheet. This is the one step you really need to do - set a table name on your data. Click and select your data range, including the headers, then type a name into the Name box in the top left:

Hit the "Enter" key then save the spreadsheet. (Note: Save as Excel 95-2003; SSIS doesn't do Office 2007 yet) 

Add a data flow task to a new SSIS project. In the data flow pane, add an Excel source pointing to the ProgramData table in the spreadsheet we just saved. If you preview the data, note the date columns have column names of F2, F3, F4 - the date values of 1/1/2007, etc don't map as column names. So let's go to the columns pane in the Excel source editor and give them intelligent names:

Next we're going to add an Unpivot transformation component and link our Excel Source to it. Double-click on the Unpivot component to open the transformation editor. Then you'll check each of the boxes to the left of each of the month columns which adds them to the "Input Column" list. For each of them you'll enter "MeasureValue" as the Destination Column. Finally, enter "MeasureDate" as the Pivot key value column name at the bottom:

 

The output of this transform will look like this:

 

The next step is a bit of trickery - due to the way the Pivot transform works, we need to sort the output of the Unpivot transform so that the appropriate records will be adjacent, otherwise you'll get a staggered output. Add a Sort Transformation component and connect the Unpivot output to it:

Configure the Sort Transform to sort by the MeasureDate column.

Now let's add a Pivot transform and connect the output of the Sort component to it:

 Now comes the really tricky part - configuring the Pivot component. Double-click on it to open the Advanced Editor. In the Component Properties tab we don't have to change anything.

Open the Input Columns tab. Check all three available input columns. That's all we have to do here.

Open the Input and Output Properties tab. Open up the Privot Default Input and Input Columns folder. Select "MeasureDate." Note the LineageID number here - we'll need that later. Set the PivotUsage to "1". The PivotUsage indicates to SSIS how to use each column:

  • 0: Row Attribute
  • 1: Row ID
  • 2: Column ID
  • 3: Values

So MeasureValue gets a PivotUsage of 3, and note its LineageID. Program gets a 2.

Now let's create our outputs - open up the Pivot Default Output and click on "Output Columns"

Click on the "Add Column" button at the bottom. Our first column is going to be the MeasureDate - set the name to "MeasureDate" and the SourceColumn to the LineageID of the MeasureDate input column.

Now we're going to add the four columns for our four programs. Click on the Output Columns again (if you have "MeasureDate" highlighted when you add a column, it will be inserted above MeasureDate. There's no way to rearrange columns once you create them. It's not a huge deal, but if you're aesthetically nitpicky...).

Once you have "Output Columns" selected, click the "Add Column" button. Name the new column "Program1" (no space). We're going to have to create a column for each value we want to transpose - this is one place that makes this fragile; you're going to have to be sure to set up your error checking in case someone adds a new Program.

This column is going to get values from any row where the Program column has the text value "Program 1" (with space). So put the LineageID for the MeasureValue input column into the SourceColumn field (this indicates where the value will come from). Then type "Program 1" in the PivotKeyValue field. (Or better yet, copy/paste from the spreadsheet itself).

Add columns for Programs 2, 3, and 4 the same way - make sure to select "Output Columns" before adding a column, and the source column will be the same for all four programs.

Now let's add an Excel output to view the results - use the Excel Destination Editor to create a new connection manager with the default outputs after you connect the Pivot:

 When you run the package, here are the results you'll get in the Excel spreadsheet you configured as the output:

 

Note that the dates are sorted alphabetically, as the result of our sorting to group the results. If you're inserting the output into a database, it shouldn't matter. Alternatively you can use other transforms to translate the date column (which is currently a string) into a proper date and sort the dataset again.

Again, a word of warning that this is a bit fragile; our dates are coded in the original source and unpivot, and the programs are listed in our pivot transform - be sure to use robust error checking and reporting. But it's definitely easier to work with and maintain than a script component!!!

 

Posted by philoj | 1 Comments
Filed under: ,

A simple conceit vs. questions left unasked

Here's a fun mental exercise - on the one hand, we have the "everyone is lost but me" syndrome, where someone will charge off on a course of action, despite many many warnings about the perilous nature of his quest, until he runs smack dab into that windmill.

And yet we have "there is no such thing as a stupid question" - where even though everyone around you seems to know what's going on, and you see some flaw, the refrain is "it never hurts to ask the question."

How do we reconcile these? One the one hand, we say that charging off contrary to everyone's opinion is bad; but on the other hand questioning the course when everyone is charging off is good.

The issue is ego.

"Everyone is lost but me" isn't about one person heading in a direction that everyone else warns about; it's about believing that you are smarter than everyone else around you. I can cite two examples and a counter-example from, of all places, Hollywood:

  • Batman&Robin, where Joel Schumacher killed a multi-billion dollar franchise because he was sure what the public wanted to see was more camp like the Batman TV show of the 60's. Never mind that Tim Burton's dark, adult dramas had raked in sinful amounts of cash - when everything is working right, obviously it's time to change the formula. The box office punished Schumacher and comic book movies went into remission for ten years, until Spiderman and Raimi's understanding of the public brought it back.
  • Annapolis (and the thought that prompted this post). This one is near and dear to my heart, since I'm a Naval Academy graduate. As I understand it, the director/producer people wanted to make a movie set at the Naval Academy - hoping to trade a bit on the patriotism borne by 9/11 and launch a new era of Top Gun movies. They approached the Navy about filming at USNA. The public affairs officers in the Navy read the script, and asked for a few changes. The producer/director people refused, and the Navy refused permission (so the movie was shot in Philadelphia). This turn of events was crushing to a lot of USNA graduates, and at first we blamed the Navy for being so unbending. Now that I have seen part of the film, I understand. One of the objections the Navy had was about a romance between a Plebe (freshman) and a female upperclassman. This is fraternization and an expulsion offense at the Naval Academy. I'm sure the producer/director people thought this made it a "forbidden love," but it just came away as completely and utterly unbelievable. I had to turn the movie off. So because the producer/director people thought they knew better than Navy officials what a USNA movie should look like, it tanked.
  • The exception: The Lord of the Rings. When Peter Jackson first landed the role as director, he talked about "his vision" of Tolkien's work. Several hundred thousand angry emails and letters from fans later, he took their rebukes as a challenge and decided to go the other way - be as accurate as humanly possible to the original work. The rest of that, is history.

Of course, there's an exception to all of this - there are times that you may be so sure in your vision that you decide to ride off despite the warnings of others. Many visionaries have changed the world this way. Sometimes it's still ego, but I think a large number of times what sets them apart isn't thinking "everyone else is lost but me" but rather "everyone else is looking for the path, but I think I can find a shortcut" - not doubting the intelligence of everyone else, but believing they've found insight into a new path.

A fine line to walk, to be sure.

And yet you'll sit in a room of people you know are smarter than you who are discussing a plan and settling onto the details when you're sure you've spotted a flaw in their plan. Is it ego to ask about it? Well, it may be ego to assert that you have found the flaw in their plan and their all stupid; but I think again - many folks who ask (or sadly, don't ask) that question aren't sure they're smarter than everyone else - often they just think they are the ones who have missed something.

Who was it that said "don't let your ego write checks your body can't cash..."?

Posted by philoj | 1 Comments
Filed under: ,

Dimension Security in SQL Server Analysis Services

I know, the mind boggles - a developer writing about security...

While I was doing the research for this, I was startled by the number of articles on this topic that immediately talk about using MDX queries for dimension security. While MDX queries offer powerful fine-tuning capabilities for restricting access to data in Analysis Services, your first stop should be user roles coupled with Active Directory security groups and Dimension Data filters. Very straightforward and an easy starting point for locking down your cube.

 Here's a screencast walkthrough I did just to show how powerful a concept this is: http://channel9.msdn.com/ShowPost.aspx?PostID=350411

Posted by philoj | 0 Comments

This year's hammer - voice prompts

"When all you have is a hammer, everything looks like a nail"

I use this quote a lot to warn against the tendency we have to overimplement new technologies and solutions. Even as I go through InfoPath and BI solutions, I will warn that while InfoPath is a forms solution, it's not the solution to every forms problem (though hopefully it'll address a lot of them!)

So I wish the speech recognition frenzy would dial it down a bit. Speech recognition for voice prompts is pretty cool, and may have its place, but it's not a panacea. First and foremost, it's a security nightmare:

"Please say your name"

"Now please say your password"

In a crowded bus station? I don't think so.

American Airlines uses voice prompts for their frequent flyer hotline. First of all I have to say my frequent flyer number out loud (security), but then, if I'm checking flight status I have to say my flight number. So - a short numeric entry in a noisy environment (airport) - let's use voice recognition? FAIL.

(I'm also still fuming because my power company uses voice prompts with no option for numeric override to report a power outage, and all they needed were a few basic options which could have easily been handled with a "1" or "2")

Use voice recognition to AUGMENT touch tone data input, not to replace it.

Posted by philoj | 1 Comments

Scorecards - SharePoint, SQL Server, or PerformancePoint?

A few years ago, if you asked Microsoft how to build a scorecard, they may have shrugged. Then we released the "Business Scorecard Accelerator" - a free technology mainly designed to showcase SQL Server Analysis Services.

It was so popular that Microsoft made a product out of it - Business Scorecard Manager 2005. While BSM could pull data from ODBC data sources, its best buddy was still Analysis Services. With the right cube, you could throw together a scorecard in under a day. Of course, BSM still had its quirks...

After Microsoft bought ProClarity in 2006, the BI vision coalesced - BSM v2, ProClarity, and Biz# (a multidimensional planning application) were unified into PerformancePoint. PerformancePoint, which just launched a few weeks ago, is a huge step forward in business intelligence, but more on that another time.

At the same time, SharePoint 2007 has "KPI lists" - a special type of document list which can display collections of key performance indicators. This can be distracting as a type of "scorecard." SharePoint also adds Excel Services, which can allow users to build scorecards in Excel and display them inside SharePoint.

 So what to use when?

A quick overview...

MOSS KPI Lists:

Pros:

  • Easy to use
  • Integrated with MOSS (web parts & lists)
  • Can show multiple data sources
  • Can show KPI's from SQL Server Analysis Services

Cons:

  • Does not scale across the organization
  • Limited functionality

Basically, MOSS KPI lists are a good way to pull KPI functionality on to a SharePoint page - surface some business intelligence on a portal page or shared site. They make a good companion to a BI effort, but this is not the way to start a BI or scorecard initiative - you will quickly be frustrated by some of the limited functionality (formatting, lack of drill down, etc).

Business Scorecard Manager 2005:

Pros:

  • Strategic
  • Scalable
  • Linked Analytic Charts
  • Annotations
  • Alerts

Cons:

  • Need SQL Server 2000 Notification Services for alerts
  • Builder is quirky
  • Working with ODBC data sources is labor intensive

The greatest thing about BSM is how very easy it is to set up a manual scorecard and publish it into SharePoint. Once you learn your way around the Builder, you can whip up a manual scorecard in a few hours. This is powerful because in a scorecard initiative putting an ad-hoc scorecard on the web can "wake up" stakeholders and get their attention while you start wiring it to back end sources.

Having said that, wiring BSM to those back end sources can be labor intensive - each current value, target, and trend has to be wired up as an independent query. Again, using SQL Server Analysis Services can make this far easier - dimensions automatically display across the scorecard.

Excel Services Scorecard

Pros:

  • Easy to use
  • Ad-hoc

Cons:

  • No drill down
  • May not scale
  • No linked charts

Creating a scorecard in Excel and publishing it to Excel Services is a nice way to publish an ad-hoc scorecard. However, it lacks the linked ad-hoc charting and drill down capabilities. It also may be difficult to maintain due to its nature as an Excel spreadsheet. (This is not meant as a limitation of Excel, but rather how Excel xls files often invite sloppy processes...)

ProClarity Dashboard Server:

(ProClarity had a Dashboard Server product, which is being discontinued)

PerformancePoint Monitoring:

Pros:

  • Designed for the enterprise
  • Annotations
  • Linked analytic reports
  • Drill-down
  • Dashboard builder
  • Extensible

Cons:

  • A more expensive option
  • No alerts

Honestly, PerformancePoint Dashboard & Scorecard builder is awesome to work with. The designer is drag and drop and pretty intuitive. It still works best with multidimensional data, but can also show data from other data sources (SharePoint lists, Excel spreadsheets, ODBC data sources, etc). In addition PerformancePoint includes powerful analytics from ProClarity, and the new planning engine for what-if and forecast modeling.

So - SharePoint KPI lists and Excel Services are good introductions into scorecarding, but for a real scorecard/dashboard/BI initiative, PerformancePoint is the way to go.

For more information: http://www.microsoft.com/bi

Posted by philoj | 5 Comments

InfoPath & SharePoint screencast demo

As  follow-up to the "hook InfoPath to a database" demo, here I'm taking a step back to a simpler form - building an InfoPath form to be used on its own in conjunction with SharePoint.

 http://channel9.msdn.com/ShowPost.aspx?PostID=344635

In the next few videos I'm going to cover:

  • InfoPath, xml schemas, and xml
  • An advanced InfoPath form connected to a database
  • Connecting an InfoPath form to a .Net web service
  • Connecting an InfoPath form to a SQL Server web service
  • eForms & workflow in SharePoint

(Just a reminder - this and other fun InfoPath 2007 stuff all covered in my book...)

 I'll also be covering more business intelligence content (SQL Server Analysis Services, ProClarity, PerformancePoint - stay tuned!)

Posted by philoj | 3 Comments
Filed under: , ,

SQL Server Analysis Services in ten minutes

Analysis Services has been part of SQL Server for a while, but it's underappreciated by most. I've posted another video on Channel 9 to try to share what a powerful capability this is for understanding large volumes of aggregated data.

More than just the simple demo (showing a cube, clicking through some dimensions, pulling the data into Excel 2007), Analysis Services opens the door to truly powerful analytic capabilities in data mining, visualization, and (with PerformancePoint Server), scorecards, dashboards, analytic charts, and planning scenarios.

 I'm not trying to trivialize the technology - OLAP cubes are definitely something that's a short time to learn, a lifetime to master. But I am trying to demystify some of this stuff so SQL Server devs & DBA's can get an idea where to start.

Short video, but I'm trying to keep them under ten minutes.

http://channel9.msdn.com/Showpost.aspx?postid=343717

Posted by philoj | 1 Comments

Philo on EDI

I wrote this post on Joel On Software in 2004 in response to a newbie asking about EDI. Since then I have referred several people to it, but a few times I've found the post tricky to find. So, instead of constantly relying on the benevolence of Joel acting as a library for me, I'm going to recycle bits and post this here. The advice is targeted towards EDI, but it really is good general purpose advice for building ETL or any kind of document parsing...

 Step 1: Get sample data from every trading partner. Refuse to do anything until you have this. Claim work stoppage, announce loudly at meetings you're stalled, send emails to VP's, whatever - GET DATA FROM EVERY PARTNER BEFORE STARTING.

Step 2: Make zero assumptions. Provide error cases for every possibility

Step 3: Get the ANSI X12 specs for the document. Read them. Compare the sample data from #1 to them. Be prepared to create program flows for every line in the implementation guides BUT look for lines that aren't used by your partners. Any line you can't find being used, document it. Once you have a full list, send that list to your manager for "I don't see these fields being used - do we need to implement them?" Get the answer in writing.

Step 4: Make sure your code can provide for the lines in step 3 when some partner starts using one of them the day after you deploy.

The hardest part about EDI is that the rules are observed mainly in the breach, and nobody makes partners follow the rules. I built my 810/850 parser as a class hierarchy, which ended up serving me VERY well - it was very modular, and changes like those in step 4 above turned out to be relatively straightforward.

Final note: make sure you know what versions the partners are using, too. :-)

Posted by philoj | 1 Comments
Filed under:

Why InfoPath?

Okay, I'm going to try a different approach on the "why do I care about InfoPath?" issue.

 I recorded a short screencast and posted it to Channel9: http://channel9.msdn.com/ShowPost.aspx?PostID=343092 

 In the screencast, I walk through setting up an InfoPath form to connect to a database, and show how the idea is to free up developers from having to write form after form after form...

 I'd like feedback on if this approach helps, and if you'd like to see more screencasts.

For those who are wondering, the last year has been a bit, um, "interesting." I transferred out of my Office Developer role and over to the BI group, was in the BI group when we acquired ProClarity, lived through PerformancePoint's growing pains, and just three months ago transferred again to the Lockheed Martin account team. So - bumpy roads all around.

I'm going to broaden the focus of the blog here a bit (but Philo, how can it be any broader than "haven't posted anything"?) well... I'm going to start covering Business Intelligence as well, but keep a solution-oriented focus including SharePoint and InfoPath.

We'll see how it goes.

Posted by philoj | 6 Comments
Filed under:

Urquhart's Avoidance and product futures

I give a lot of product briefings, and of course often get caught between what I know and what I can say. In these cases I often find it useful to use Urquhart's Avoidance, made famous in the BBC miniseries "House of Cards" (which I highly recommend):

"You might very well think that; but I couldn't possibly comment"

However, for those times when I honestly cannot answer, I have to share the general "why": the laws of space and time still apply in Redmond. If you've ever been on a software project, you know that work always expands to fill the available time, and inevitably features have to be cut. The problem is that fuzzy area where developers are working furiously and there's still a chance to get stuff in the box, but deadlines are looming. That's when we get into the area where features may or may not be on the chopping block and we are stuck with a Catch-22:

  • Don't mention a feature and possibly risk alienating people who would want it
  • Mention the feature (which is always interpreted as a solid commitment) and earn a wealth of unhappiness if it's cut.

So we learn to be very conservative on forecasting features, especially those that may be at risk.

Just wanted to let you know - we don't do it to toy with you on purpose. That's just a fringe benefit.

Posted by philoj | 0 Comments

"InfoPath isn't part of Office"

Simon said:

"Then you find out its not part of the office suite."

To be fair, this is somewhat true. At best, it's confusing.

With Office 2003, InfoPath wasn't part of the suite you could buy retail or on open license. However, if you bought Office Pro on an enterprise agreement, you did have rights to InfoPath for every desktop.

Unfortunately, in the volume license media, there were two DVD's: one labeled "Office Professional" and another labeled "InfoPath." You had to understand the licensing to understand that you owned InfoPath.  

This is much better in Office 2007, where InfoPath is in Office Professional Plus, Enterprise, and Ultimate.

Posted by philoj | 1 Comments
Filed under:

Why hasn't anyone heard of InfoPath?

I recently wrote a book on InfoPath 2007. What I find most amazing about the book is that it's evangelizing InfoPath. I've shown a number of developers the book, and when they read the description, their reaction is "wow, InfoPath sounds cool - I should check it out."

How is it possible that a member of MS Office that's four years old has almost no mindshare?

I don't know the answer - I'd be interested to hear suggestions on how to get the word out to more users and developers.

Posted by philoj | 15 Comments
Filed under: ,
More Posts Next page »
 
Page view tracker