Función DIVIDE en Power Pivot
Supongamos el siguiente escenario para estudiar la función DIVIDE en Power Pivot y otras implicaciones; tenemos una tabla que nos indica las ventas de dos tiendas: Tienda 1 y Tienda 2
Allí podremos ver las ventas totales en términos monetarios que ha realizado cada una de las tiendas para los años 2013 y 2014, registrodo mes a mes durante cada 15 días:
Se nos solicita, ver el crecimiento para los años y mes a mes de la tienda 1 respecto a la tienda 2.
La forma de tabla dinámica es sencilla: los campos Año y Mes al área de filas:
Para la tasa de crecimiento solamente debemos restarle al primero el segundo y dividirlo por este último, por lo que la medida sería:
=
( SUM ( Tabla1[Tienda 1] ) – SUM ( Tabla1[Tienda 2] ) )
/ SUM ( Tabla1[Tienda 2] )
Observemos la tabla dinámica:
Salta a la vista los errores, pero …
¿Por qué?
Si tomamos el mes de marzo y miramos la tabla de origen, veremos que la tienda 2 no tiene ventas para dicho mes:
Dado que nuestra medida es: (Tienda 1 – Tienda 2) / (Tienda 2), entonces notaremos que el error se produce por división por cero.
¿Qué hacer? ¿Cómo abordar el problema?
– Combinación funciones IFERROR() y BLANK()
Como sabemos que muchas de las funciones de Excel están en DAX podemos optar por la opción clásica: IFERROR
=
IFERROR (
( SUM ( Tabla1[Tienda 1] ) – SUM ( Tabla1[Tienda 2] ) )
/ SUM ( Tabla1[Tienda 2] );
BLANK ()
)
Antes de continuar ordenemos el campo mes cronológicamente. En el artículo ordenar campos de fechas en Power Pivot se detalla cómo.
Ok, ahora si modifiquemos la medida y observemos la tabla dinámica:
No obstante puedes notar que los elementos Marzo 213 y Enero y Marzo 2014 han desparecido. Si deseas que aparezcan en lugar de BLANK puedes poner un valor de tu gusto, por ejemplo 1, así:
=
IFERROR (
( SUM ( Tabla1[Tienda 1] ) – SUM ( Tabla1[Tienda 2] ) )
/ SUM ( Tabla1[Tienda 2] );
1
)
La tabla dinámica luciría ahora de la siguiente forma:
– Función DIVIDE() en Power Pivot
Power Pivot brinda la función DIVIDE, la cual se especializa en manejar los errores que se pueden genera por división por cero
Sintaxis
DIVIDE(<Númerado>; <Denominador>; [<ResultadoAlterno>])
Con lo cual nuestra Medida se puede organizar del siguiente modo:
=
DIVIDE (
( SUM ( Tabla1[Tienda 1] ) – SUM ( Tabla1[Tienda 2] ) );
SUM ( Tabla1[Tienda 2] );
1
)
La expresión arroja el mismo resultado, una de las cosas interesantes de DIVIDE es que su último argumento es opcional, el valor por defecto es BLANK, por lo que si no queremos que aparezcan estos meses podemos reducir la expresión, así:
=
DIVIDE (
( SUM ( Tabla1[Tienda 1] ) – SUM ( Tabla1[Tienda 2] ) );
SUM ( Tabla1[Tienda 2] )
)
La tabla dinámica en definitiva sería como la de IFERROR, así:
Función IFERROR Vs Función DIVIDE
Siempre que debas manejar errores que se puedan presentar por división por cero, utiliza la función DIVIDE, es más eficiente en la ejecución del modelo de datos y su lectura es más clara.
Si pueden surgir otro tipo de errores, inevitablemente la función IFERROR.
Eso es todo por mí en este artículo.
¡Hasta la Próxima Oprtunidad!