Microsoft released the PivotViewer Silverlight 4 control back in August 2010 after being previously developed as LiveLabs Pivot. For those of you who are not familiar with it, PivotViewer is a tool that allows users to visualise collections of related data and dynamically sort, organise and categorise it. Its unique feature is that it is highly graphical, with images or other content representing the data which can be organised by the attributes associated with each data item. It is very effective as it enables users to engage with data in a very natural way and see patterns and correlations in large data sets, whilst allowing the user to easily see the data in context.
Describing it doesn’t really do it justice, so if you’re interested, the best way to see what it can do is to watch the following video:
PivotViewer uses the Microsoft Deep Zoom technology to allow the user to smoothly zoom in on images in the data set. This enables the user to easily focus in on one item in a collection, and easily zoom back out to see the whole of the collection.
Practical limitations with the current PivotViewer control
One of my frustrations with using PivotViewer in Silverlight 4 is that in order to display data in PivotViewer, the developer has to create a “pivot collection” and corresponding Deep Zoom image collection. A pivot collection is basically an XML file containing the data items and their common attributes. The Deep Zoom image collection contains the images corresponding to each item in the collection at different resolutions which allow the user to view each image at the highest possible resolution as they zoom in and out.
Having said this, creating a pivot collection is a fairly straightforward process and Microsoft provides a set of tools such as an addin for Microsoft Excel which enable end users and developers to create their own pivot collections. However these collections are static as the data set is contained in the XML file and source data needs to be converted into the pivot collection XML schema in order for it to be displayed. The real benefit of PivotViewer is evident when a collection is dynamic and can be regenerated based on a source data set which can change as the source data changes. Creating dynamic pivot collections is possible but it is tough using the current version of PivotViewer.
For PivotViewer to gain widespread adoption in the education sector as a means of looking at education data sets, we need easier ways to allow users to create their own pivot collections. Enter the new version of PivotViewer in Silverlight 5.
PivotViewer in Silverlight 5
Microsoft demonstrated the significant enhancements it has made to PivotViewer which will be released in Silverlight 5 at the Silverlight Firestarter event and during MIX 11. Unfortunately the updated version of PivotViewer was not included with the public release of the Silverlight 5 beta in April. However, Microsoft has released a post beta builds of Silverlight 5 to members of the early adopters programme and I’m pleased to say that a recent build includes a beta version of the new PivotViewer control.
PivotViewer has changed in two significant ways:
- Gone are external pivot collection XML files – the PivotViewer control can now be data bound to any collection of objects, in exactly the same way as other Silverlight controls.
- Out are DeepZoom image collections – templates for each tradecard (each data item) can now be defined as DataTemplates in XAML. In fact PivotViewer now allows multiple tradecard templates to be defined for different zoom levels. This allows you to create a detail template if the user is zoomed in, and a summary template if the user is zoomed out and looking at a large number of items.
I will cover the technical details of these enhancements in further blog posts, but the key take home message for now is that these enhancements give us a way to use PivotViewer in a really flexible way and in particular I believe that we can use it to realise the benefits that this data visualisation technique can bring to the education sector.
Using PivotViewer in Education
As soon as I saw PivotViewer I realised that it had lots of potential in the education sector. For example, school’s could create a collection of students, using photos to represent each student, and use it to help them understand student progress. In the UK education sector for example, schools are required to set targets for future student attainment. Estimates of likely future attainment are used to help them set these targets. PivotViewer can help schools to visualise these estimates, understand which students are most at risk of not making sufficient progress and put in place appropriate intervention programmes or corrective measures. What is fantastic about using PivotViewer for this purpose is that the data is immediately made much more relevant by showing each individual student, whilst still showing the overall picture and therefore all the data is in context. Rather than just looking at numbers we realise that there are real people who underlie the numbers.
The following video shows an example of how this could work, which has been built using the Silverlight 5 PivotViewer control. In this example the user can easily see the difference between attainment in Key Stage 2 English and Maths – a background colour of red indicates that there is a disparity between the students attainment in English and Maths. The user can use this indicator to enable them to identify whether there are groups of students who have a large disparity between attainment in English and Maths.
Note that the photos of students have been deliberately pixelated.
Enabling end users to customise PivotViewer
One of the key ways we want to use PivotViewer is to allow us to connect to different data sources and build a pivot collection “on the fly”. This will allow us to use PivotViewer as a data visualisation technique on different data sets, without having to predefine what the pivot collection or the trade card templates will look like. Although the Silverlight 5 PivotViewer control now provides us with the flexibility to easily build collections and define how tradecards will look, this customisability has to be carried out in code. Further work is needed so that we can use it as a tool which can be customised by end users to enable them to analyse different data sets.
Using the new version of the control, I have been able to build a prototype application which allow us to do just this. The app allows us to:
- Query an external data source (for example SQL Server or Analysis Services, but in principal it could be any data source)
- Convert the data set into a collection which can be bound to the control
- Auto-generate the collection properties which users can use to filter and categorise data
- Define the templates for each trade card such that they can be customised by the client (without needing to change code)
- Map data items in the template to a KPI colour mapping (for example, this allows each trade card to display a different colour according to an incoming value and the mappings can be specified by the end user)
The education example above has been generated from this prototype application.
Future Blog Posts
Over the coming weeks I will post further details of the technical details of the enhancements provided in the Silverlight 5 PivotViewer control. I will also be working further on the prototype to provide additional features, so would welcome any feedback or comments that you may have.