Thursday, 21 April 2011

Better BI Dashboards

In CapricornVentis, we've been delivering great business discovery solutions in QlikView for several years now.  QlikView really helps you build great user interfaces that help people interrogate their data in new ways that they have never thought of before.

Before QlikView, much of my "Dashboard" design work would have been in SalesLogix CRM where we plugged various chart controls into the CRM data to display information such as Sales Pipeline, Performance, etc.  Similar things can be achieved with Oracle CRM On Demand Analytics.

No matter what system you use - BI, CRM, Database, you probably have access to some wonderful tools that allow you to present data to users in lots of different ways.

"What do you want to see on your dashboard", says the chart designer.  "Everything", says the customer.  "OK", says the designer.

Stop!  "Everything" is the wrong answer when it comes to dashboard design.

Think of your car dashboard.  It doesn't tell you everything that is happening in your car.  It does tell you everything that you need to know, right now, to drive your car.

Think about it.  Many car dashboards don't include a clock.  A clock is a "nice to have" on a dashboard - it isn't critical to the running of the vehicle.

A "pure" car dashboard probably needs to have only 3 things - a speedometer, a fuel guage and an oil temperature guage.  Someone might argue that a tachometer is useful because it lets me know if I am over-revving the engine and also lets me know when is the best time to change gear.  We could have the argument but lets just add it in.  So, 4 things.  Everything else is "nice to have" and you don't need it.

There are other things that I need to know about to run my car.  I need to know that my oil levels are good.  I need to know that my brake fluid is in between min and max.  These are things that I should check every week or so - but I don't need to know about them right now as I drive this car.

It is the same with the business dashboard.

What do you need to know, right now, to run your business?


Stephen Redmond is CTO of CapricornVentis a QlikView Elite Partner

Wednesday, 20 April 2011

Improve load performance by writing better script!

I came across a document recently where a date was being loaded from a text field in YYYYMMDD format.  The developer had used left, right and mid functions along with MakeDate to parse the date.

This is something that I might have done myself several years ago - before I knew better.  I wondered to myself if there would be much of a load speed differential between this method and Date# - which is the method that I would use today.  So I did some testing.

This particular machine was running v9 so it could have used some load speed tweaking.  I took a data set of 3 million records and compared both using the two methods.  The left, right, mid method took about 2 minutes (not a fast machine).  The Date# method was under 1:30 - 3/4 the time for the other method.

I wonder if you went back and reviewed some of your old code, if you might speed it up a little by just doing things better, just because you now know better.


Stephen Redmond is CTO of CapricornVentis a QlikView Elite Partner

Monday, 18 April 2011

Blocking user access to a field using OMIT

This is something that comes up every so often.  A question like, "we have sensitive data (such as salary!) in our system that we only want some users to see".

This is all very straightforward on SBS where collaboration is not available.  Simply lock down the tab which has the sensitive data displayed using, for example, a condition based on the OSUser() function.

On an Enterprise server, where users can create their own objects, you don't want them to even see that the field is there.

We can achieve this using the OMIT field in Section Access.  At a simple level, if you only have one field to hide, you can have the OMIT in the main Section Access table.  If you want to perhaps OMIT several fields, then the creation of a group of fields is the thing to do and then just link the user to the group ID.

In the example below, when user1 logs in they will not see Field1 or Field2.  When user2 logs in, they will not see Field2 or Field3.



Section Access;
LOAD * INLINE [
    ACCESS, USERID, OMITGROUP
    ADMIN, admin, 
    USER, user1, group1
    USER, user2, group2
];


LOAD * INLINE [
    OMITGROUP, OMIT
    group1, Field1
    group1, Field2
    group2, Field2
    group2, Field3
];




Section Application;


Fields:
LOAD * INLINE [
    Field1, Field2, Field3, Field4, Field5
    Value1, Value2, Value3, Value4, Value5
];



Stephen Redmond is CTO of CapricornVentis a QlikView Elite Partner

Friday, 15 April 2011

Defending Pie Charts!

Anyone who knows me (in the BI world) knows that I have a certain lack of respect for the humble Pie chart.  I am supportive of Stephen Few's idea that we should, in general, Save the Pies for Desert.


A Pie chart, as it ubiquitously appears in many presentations, used to compare one value against several others, is a very poor choice for the task.  A simple bar chart is by far the better choice for the job.

I have been quite happy, up till now, to reject any use of a pie chart for any purpose.  That was until I came across Robert Kosara's blog entry, In Defence of Pie Charts.  Robert discusses Spence and Lewandowsky's study which shows that pie charts were interpreted more accurately than bar charts in some circumstances.


So, perhaps there is a good use for the Pie chart after all - not in comparison of multiple values, but in simple part-to-whole comparison.


Take, for example, the following Pie chart where we are comparing the performance of Germany versus all other countries.



Now, this chart doesn't give me any numbers but what it does give me is an intuitive feel for how much of the market Germany has.

Now, compare that to an equivalent bar chart.



Here we have a perfectly formed bar chart where we can get a good grasp of the numbers that are involved.  However, if I want to get an idea of what percentage the German total is versus the whole, I have to do a little more work to get the answer - I can't intuit it.

So, for this specific purpose, a Pie chart might be a better choice than the bar.

These charts are easily achieved in QlikView using implicit set analysis (available since version 9).

The chart has no dimension but has 2 expressions.  In my case, the expressions are:

   Sum({<Country=P({$})>} LineSalesAmount)

and

   Sum({<Country=E({$})>} LineSalesAmount)

When I select one or more countries, the first expression will give me the total for the selected countries.  The second expression gives me the reverse, the total for all the other values.

The labels for these can be achieved using Concat.  For the selected countries:

   ='Selected: ' & Concat(DISTINCT Country, ', ')

For the other countries:

   ='Others: ' & Concat({} DISTINCT Country, ', ')




Stephen Redmond is CTO of CapricornVentis a QlikView Elite Partner

Thursday, 14 April 2011

Data for Humans

I am a great fan of Stephen Few.  Any of his books are worth reading for anyone who works in the data visualization space.

If you can't get a copy of one of his books right now, then 5 minutes reading his article, "Data Visualization for Human Perception", is a great introduction.  The commentaries by Ronald Rensink, Naomi Robbins and Robert Kosara are equally worth reading.

My belief is that the study of human perception to create great data visualization is fantastically interesting.  There is some fascinating research going on in the area of pre-attentive processing.

As computers get more powerful and the cognitive psychologists keep going with their ground-breaking research, we really are entering a golden age.  I look forward to being a part of it.

Even so, I have a feeling that we will still be using the humble bar chart for many years to come.  It is such an intuitive and simple visual data display method.  I wonder if the real breakthroughs will, in fact, be in enabling people to work more collaboratively with their data to discover new insights.



Stephen Redmond is CTO of CapricornVentis a QlikView Elite Partner

Best practice on iPad user interface design

Thanks to Colin Hancox, who pointed me to this article on the QlikView Blog by Chris Mabardy, Director of Product Marketing at QlikView.

http://community.qlikview.com/blogs/theqlikviewblog/archive/2011/04/13/best-practices-for-qlikview-ipad-user-interface-design.aspx

The new mobile platform coming out in QV10 SR2 is new to all of us so it is great to have good guidance on building apps.

In general, all your old applications will work on the mobile platform.  The main considerations for iPad are screen real-estate (1024x768) and gestures instead of mouse.  If you expect that users will want access to right-mouse features, you need to turn on the new "Menu" icon in the caption.

After that, you just follow good design principals for screen layout.  If you haven't already come across it, I recommend Stephen Few's perceptualedge.com and any of Stephen's books.



Stephen Redmond is CTO of CapricornVentis a QlikView Elite Partner

Your call...Qlikview Server and AccessPoint

kaushik said...

I would like to learn more about Qlikview Server and AccessPoint.

A brief guide to QlikView Server (QVS).  It is worth noting that the QVS Reference Manual is really good now and explains the specifics of this subject really well.

So, QlikView Server is a version of QlikView that runs on a server!  Simple, eh?  QVS will load documents into memory on the server.  When a client connects, QVS will send enough information to that clients so that they can display the information on their screens.  When the client makes a selection, QVS uses the memory and CPU power of the server to process that selection and then sends the screen updates to the client.  This means that the client doesn't require to have enough memory and CPU to handle large volumes of data and complex calculations - hence why simple clients such as iPhone and iPad work so well.  The client just needs enough CPU and memory to render the screens.

QVS only loads each document once.  As each client connects, QVS will apportion them a separate area of memory to handle their data requirements (mostly cache of charts).  A "rule of thumb" is that each client will require and additional 10% of the document's memory requirement.  So if the document loads into 1GB of memory on the server, each client will require approx. 100Mb of additional memory.  As each version of QlikView has been released, their memory handling technology has got better and better and v10 will handle many more clients in the same memory than, say, v8.5.

There are now just 3 main client types (previous versions supported a Java client also).  First, QlikView Desktop can be used as a client to access documents from a server.  When used as a client, you would notice that buttons such as "Save" and "Reload" are disabled because they make no sense for a client - the server will handle all of that.

The second client is the QlikView plugin for IE.  This is an ActiveX plugin that sits inside Internet Explorer.  It shares the same code base as QlikView Desktop so the experience is very similar.  It is still a "thick" client so does require installation - although it comes with an MSI for automated installation.

The third, an easiest to deploy, is the AJAX client.  This doesn't require any installation because it works within a browser such as IE, Firefox, Chrome, etc.  As of QlikView 10 SR2, it is also supported in mobile devices such as Safari for iPad using HTML5.

The majority of Plugin or AJAX end users will access their documents via AccessPoint.  AccessPoint, by default, takes a user's Windows Authentication information and will be able to present to them all of the documents that they have access to.  This means users won't be confused by seeing documents that they won't be able to open.  Users can also set "favorites" in AccessPoint so that they can default to seeing their most used documents.

Windows security is the default for QlikView server but not the only method available.  By turning on QlikView's DMS authentication (not available in Small Business Server), the task of authenticating the users can be given to any other type of directory service or even a completely custom form.



Stephen Redmond is CTO of CapricornVentis a QlikView Elite Partner