AVG vs Promedio ponderado

Al hilo de la creación de KPIs en Microstrategy, uno de los más recurrentes y, a priori, sencillos de crear, es el cálculo de promedios. Vamos a ver cual es la diferencia entre crear una métrica a partir de la función AVG o a partir de un SUM(x)/COUNT(x) y por el camino vamos a entender, entre otras cosas, la diferencia entre calcular la media de otras medias o la media ponderada de un conjunto de datos. Vamos a ello…

Lo primero que vamos a hacer es partir de los elementos que tenemos creados para hacer este análisis de cálculo. Tenemos en Microstrategy tres indicadores básicos y dos atributos

  • Indicadores
    • AVG NOTA
    • PROMEDIO NOTA
    • MUESTRA REALIZADA

      El pase de diapositivas requiere JavaScript.

  • Atributos
    • Codunico
    • Skill

todos ellos están en una misma FACT_TABLE.

Configuramos un informe de test para que nos quedé algo similar a esto

microstrategy_informe

 

Aquí ya vemos que ambas métricas difieren en la totalización pero si hacemos drill down en la cuadricula hasta CODUNICO, que es el nivel inferior de la FACT_TABLE, veremos que ambas métricas vuelven a dar el resultado correcto.

codunico

 

Como veis, sin el nivel de CODUNICO y obviando los totales, el informe sería idéntico con ambas métricas. Pero claro, es a la hora de realizar la agregación, donde reside la diferencia de estos dos cálculos. Vamos a verlo en detalle con una hoja de excel

El pase de diapositivas requiere JavaScript.

Ahora ya estamos entendiendo un poco más el calculo que Microstrategy está haciendo cuando agrega una métrica que se basa en la función AVG o cuando lo hace con una que se basa en un SUM(x)/COUNT(x). En detalle:

  • En el primero de los casos, AVG, Microstrategy ha calculado la NOTA media, en la query, haciendo un AVG(NOTA_CALIDAD), para cada uno de los elementos de SKILL y los ha mostrado. Es cuando realiza la agregación, para conseguir el total, cuando construye  de nuevo un AVG para los AVG anteriores o mas en concreto, realiza una media de las medias calculadas en la query.
  • En el segundo de los casos SUM(x)/COUNT(x), Microstrategy ha calculado por un lado el SUM(NOTA_CALIDAD) y por otro el COUNT(NOTA_CALIDAD) y una vez los obtenido, ha hecho un SUM/COUNT para conseguir el promedio. Cuando necesita agregar, como no tiene implementada la funcion AVG, lo que hace es seguir usando el SUM y el COUNT para construir la métrica a cualquier nivel que se necesite.

query

 

Al hacer la media de las medias, la función AVG está obviando la muestra, que define la representatividad, de cada uno de los conjuntos de elementos del atributo SKILL, tomando como si cada elemento que lo compone pesara lo mismo, distorsionando así el resultado final. En cambio, el promedio ponderado por las muestras siempre va a tener en cuenta la representatividad de cada conjunto de datos y no va a provocar distorsiones a la hora de hacer drill down o drill up en una cuadricula. 

En resumen…

¿Por qué funciona el AVG cuando bajamos a nivel de CODUNICO?

Cuando bajamos a nivel de CODUNICO, que es el nivel más bajo de nuestra FT, todas las muestras de cada conjunto se igualan, son siempre 1 y por tanto, como su representatividad es la misma, el AVG funciona perfectamente.

¿Por qué NO funciona el AVG cuando agregamos?

Cuando agregamos por encima de CODUNICO, las muestra de cada conjunto de datos ya no es igual y por tanto, al obviar estás muestras y hacer la media de las medias de los subconjuntos, el AVG deja de servir para obtener la media.

En conclusión…

No quiero decir que la función AVG no sea correcta o no nos sirva, pero hay que tener claro que queremos obtener de ella. Tener esto claro nos evitará desarrollar métricas que luego no van a darnos el cálculo que esperamos.

Espero que os haya servido de ayuda ;).

Sergio Martín
Más de seis años de experiencia gestionando equipos y proyectos de Business Intelligence para diferentes sectores, apasionado de todos los procesos técnicos relacionados con la gestión de la información, el tratamiento de datos y la automatización de procesos

** Microstrategy 9.4 | Pentaho 5 (ETL) | Oracle 11g **

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *