28 septiembre 2009

Excel 2010 Technical Preview – Parte 6: Sparklines

Esta es la sexta entrega de la serie de las nuevas características para Business Intelligence en Excel 2010. Lo que nos toca hoy es escribir acerca de los Sparklines, una excelente nueva característica que incluye Excel 2010 para darnos mayores y poderosas capacidades para reflejar información gráfica e histórica que sirva como una referencia rápida a una información principal que se esté revisando.

El concepto ode los Sparklines no es inventado por Microsoft, sino fue propuesto por Edward Tufte para “pequeños gráficos de alta resolución, incrustados en un contexto de palabras, números o imágines.” Además Tufte define a los sparklines como “intensos de datos, diseño simple, gráficos del tamaño del texto”. Más detalles en Wikipedia (en inglés). Los sparklines también existen y han existido como Add-Ins de terceros como el de XLCubed pero en este caso, ya podremos disfrutarlos desde el mismo Excel.

La limitación actual en el Technology Preview de Julio, es que no son parte de los Pivot Tables y por tanto no se sincronizan automáticamente con los datos que estemos mostrando en dicho Pivot Table. No he encontrado alguna fuente que indique para para la versión final de Excel 2010 los Pivot Tables soporten esta integración de manera automática (crucen los dedos). Bueno, pero esto no nos debe detener ya que hay formas creativas de hacer que nuestros sparklines sean de alguna manera “dinámicos”.

Lo primero es mostrarles cómo crear un sparklines, y esto es bastante sencillo, sólo basta tener una serie de datos y mapearla con el sparline. Ojo, que no es un pre-requisito tener los datos en un Pivot Table para poder mapearlo, se puede hacer directamente desde los datos en las celdas de Excel.

image 
El ribbon “Insert” de Excel 2010 nos muestra 3 formas distintas de sparklines:

image 

A continuación agregamos los sparklines a nuestro pivot table de resultados del estado de Pérdidas y Ganancias del 2003:

image 
Adicionalmente tenemos varias opciones de personalizar o mejorar la presentación de nuestros sparlines:

image

image

image

Después de aplicarle alguna de las propiedades a nuestros sparklines, tenemos un efecto visual interesante, mostrando por cada fila de datos, la serie completa de los 12 meses de evolución, en color rojo el punto más bajo alcanzado y en color verde el punto más alto de la serie. Para el caso de contrastar valores positivos y negativos podemos cambiar el tipo de gráfica:

image

Como dijimos al inicio, la idea de uso de los sparklines, es que se muestren como información complementaria pero poderosa de la representación de un valor. De acuerdo a eso sería ideal poder ocultar los 12 meses de valores y dejar sólamente por ejemplo el valor total de todo el año para la cuenta. Actualmente si ocultamos las columnas con las series (meses), los sparklines desaparecen tambíen (tal vez se esto se trata de un bug), así que se requiere hacer algunos trucos para lograr este efecto.

En mi caso mi idea va por copiar el Pivot Table en una segunda hoja de Excel y referenciarla en los sparklines de la primera. Así en la primera logramos el efecto deseado:

image 

Ahora el tema es que si cambiamos de año usando el filtro de nuestro Pivot Table (por ejemplo al año 2002 o 2004, entonces perderemos la sincronización corracta de los datos con la segunda hoja de Excel que está alimentando nuestro datos ya que estos están apuntando al año 2003 y eso no es nada bueno. Por suerte ya que estamos usando la versión 2010 de Excel y si tuvieron la oportunidad de leer la parte 2 de esta serie, sabrán que los Slicers vienen al rescate ya que estos nos permiten conectar a más de un Pivot Table con el mismo filtro. En este caso reemplazamos nuestro parámetro individual del año de cada Pivot Table por un Slicer conectado a ambos Pivot Tables:

image

Ahora logramos el efecto deseado, podemos cambiar de año, y automáticamente los 2 Pivot Tables se actualizan y por tanto los sparklines también. De acuerdo a esto, ya saben que pueden agregar más slicers a su Pivot y mantener la sincronización de sus sparklines automáticamente.

image

Esto es todo por ahora, espero que hayan disfrutado este post.

Alan.

5 comentarios:

Anónimo dijo...

Saludos Alan, aprovecho el articulo para hacerte una pregunta: Estoy comenzando el desarrollo de mi primer Datamart y uno de los requisitos del cliente es montar una aplicación web donde pueda ver los reportes hechos en Reporting Services y exportar estos a excel y que se lleven el cubo asociado al reporte para usarlo libremente. mi duda es: Reporting permite hacer esto con el cubo? he escuchado que se debe usar OWC (pero la curva de aprendisaje es alta), existe otra forma de hacerlo? Donde podría encontrar información?

Alan Koo dijo...

Hola,
Has evaluado el tema de los Local Cubes (.cube). Desde Excel puedes crear Local Cubes de una porción de tus datos para que luego los usuarios lo puedan usar Off-Line. Te serviría eso?

Saludos,

Alan

Anónimo dijo...

Saludos Alan, esto me podria servir, voy a hacer la prueba. tengo otra pregunta: ¿Crees que en una tabla de hecho se deban sumarizar los acumulados totales?
Ejemplo: Tengo una tabla de validacion de pedidos donde se detalla fila a fila el error encontrado en un producto del pedido. si quiero saber la cantidad de productos que tienen errores puedo hacer una tabla de hechos que tenga el detalle de cada error por fila y hacer una medida que haga un count de las filas (he calculado que en un año esta tabla de hechos tendria 100 millones de registros) o podria hacer una tabla de hechos que sumarize por dia estas cantidades pero no podria llegar al nivel de decirle que pedido especifico lo genero (para tener un poco mas de detalle llenaria la tabla con un group by por todas las dimensiones posibles).
Mi opinion es que deberia hacerlo con el nivel de detalle mas bajo (100 millones de filas al año.

Alan Koo dijo...

En realidad, todo depende del negocio y de lo que es relevante contestar. Físicamente las bases de datos hoy en día están preparadas para soportar esos millones de filas sin problemas (hay que diseñar esto adecuadamente). Si preguntar por el pedido en detalle no será una necesidad, entonces puedes sumarizarlo. Por otro lado, si la capacidad de poder responder en qué pedido está agrega mucho valor al negocio entonces debe quedar ahi. Un buen ejemplo de escalabilidad es Project REAL, si no lo has revisado, te recomiendo hacerlo, recuerdo que ahi tenían que cargar los inventarios diariamente de la cadena de libros más grande de USA, Barnes and Noble, o sea millones de rows diariamente.

Saludos,

Alan

Andres Fanatico dijo...

buen articulo amigo sigue asi