I’m a big fan of intelligent laziness when it comes to Business Intelligence. Although in another arena, one famous adherent of ‘intelligent laziness’ was Napoleon Bonaparte. Napoleon was once said to have classified his soldiers into four types: the smart and ambitious, the dumb and ambitious, the dumb and lazy, and the smart and lazy group. Each soldier type designated their position in the army; so Napoleon made the smart and lazy group his generals, whilst the dumb and energetic, well, they usually ended up getting shot. Napoleon was smart: he knew that the smart and lazy group would be less likely to go ‘gung-ho’ into battle and thus lose him soldiers. On the other hand, the smart and ambitious group of soldiers were more likely to go into battle to achieve glory, and thus took more risk with the lives of footsoldiers. Further, he believed that the smart and lazy group of people be more likely to find simpler solutions rather than complex schemes, and less likely to react, taking risks.
It is easy to find examples of ‘intelligent laziness’ when it comes to Analysis Services cubes; to summarise, it is easier to do the calculations, and store them once in the cube for re-use. However, to help out users who don’t like the thought of BIDS (understandably), many data chart and analysis applications allow you the flexibility of storing these calculations at the presentation layer. For example, this week, I was having a look at Tableau reporting software, which allows you to quickly produce impressive-looking graphs such as a range of charts, heat maps and so on. I started looking at this after showing my latest cube to someone, using Visual Studio cube browser. Their response was ‘ugh, why are you showing me the cube in that?’ and I agree, the BIDS cube browser is, er, basic to say the least. Tableau, on the other hand, connected to my cube simply and allowed me to show off my Analysis Services 2008 cube using a range of graphs. This was really good since it also allowed me to analyse the cube, and I must say that I learned more about the underlying data by interacting with it, using Tableau as the interface.
Whilst Analysis Services cubes allow you to add in calculations, sometimes it is simpler for users to do it in data charting and analysis applications such as Excel, Tableau, XLCubed and so on. However, this can lead to repeated work on their behalf, since they need to copy and paste their calculations from one new workbook to another. When this happens, it is best to put the calculations in the cube, so that cube calculations can be happily re-used from one workbook to another. Further, this means that you always get the same number when you query the data; it is a total nightmare if you get different numbers for the same business criteria since the integrity of the data is immediately called into question, and the differences can be hard to explain. This, for me, is intelligent laziness because you do the work in the Analysis Services 2008 cube once, rather than repeat the work in different workbooks. However, I completely understand why users don’t like writing MDX, using BIDS; it’s not easy, and if your boss wants the numbers now, then it’s better all round just to do it quickly in Tableau, Excel and so on. If you’re interested, you could do the calculations in Excel, Tableau and so on, and trace the Analysis Services 2008 MDX queries in the Profiler whilst browsing the cube; this would allow the user to ‘copy and paste’ the resulting MDX query, and perhaps learn MDX for themselves. Chris Webb wrote a blog about this subject here, and it is a good starting place.
The take-away point here is that laziness is sometimes a good thing, if it means finding simpler solutions and not ‘wading in’ immediately before starting work on a difficult issue.