Rotación Simple con Power Pivot
Aloha ms amigos de EFB.
Hoy quiero hablar de rotación de productos visualizado en una tabla dinámica, no será sorpresa entonces, que emplearemos: Power Pivot.
Básicamente queremos determinar la <<rotación simple de productos>> con Power Pivot entre dos fechas señaladas con slicers.
Quiero dividir la situación en problemas más pequeños para abordar partes concretas más sencillas los cuales resolveremos en diferentes artículos
Vamos a la situación, Imaginemos que tenemos la siguiente tabla de datos:
Lo que queremos lograr es tener un par de Slicers (Segmentación de Datos) donde podamos seleccionar una Fecha de Inicio en un primer slicer, y una Fecha Final un segundo slicer: así:
Esto con el fin de ver en una tabla dinámica la diferencia aritmética entre las existencias de la fecha incial y la fecha final, un ejemplo particular:
Nótese como la Fecha Inicial es 1/1/2014 en el slicer con nombre Fecha Desde, mientras que la Fecha Final es 2/1/2014 en slicer denominado Fecha Hasta. Como son dos fechas consecutivas en el mismo mes y año, podemos verlo en la tabla fácilmente (resaltado en rojo en la imagen arriba)
Con lo cual la diferencia es: 10000 – 9982 = 18 (Valor que vemos en la tabla dinámica)
Primera Simplificación: La primera simplificación que vamos hacer para reducir el problema a uno más pequeño sencillo, es que vamos a suponer que solamente existe un producto: Lápiz (En el próximo artículo lo ampliaremos a varios)
– Tablas de Parámetros y «NO» Relación
Surge la pregunta ¿Cómo conseguir esos dos sliceres?
La respuesta sencilla sería añadirlos directamente de la tabla (Que por cierto se ha denominado Existencias) A pesar de ello, podremos notar enseguida que solo podemos añadir un slicer de fecha
¿Qué hacer?
Aquí debemos recurrir a Tablas Slicers (o tablas de parámetros) Hasta el momento solo hemos abordado esta temática de Power Pivot en el capítulo 11 del libro El ADN de Power Pivot Si tienes acceso al libro una hojeada fugaz de repaso te permitirá entrever el porqué…
Hmmm I don’t Have it !!! :/
* No te preocupes =)
En realidad lo que necesitamos de este tema es bastante sencillo. Lo que debemos hacer es dos copias de la columna Fecha de la tabla Existecias, cada una de estas copias debe ser una tabla independiente y además transformarla en una tabla estructurada de Excel, también darle un nombre descriptivo, en este artículo las nombramos como: Fecha Desde y Fecha Hasta.
Procedemos a cargar las tres tablas (Existencias, Fehcas Desde Fecha Hasta) al modelo de datos del libro en el que estamos trabajando.
Para hacerlo solamente dejamos la celda activa dentro de una tabla y luego vamos ala pestaña Power Pivot y pulsamos clic en el comando Agregar al Modelo de Datos que se encuentra en el grupo Tablas.
El primer vídeo de la mini-serie Nociones en Power Pivot puedes repasar estos conceptos básicos a partir del minuto 9:30
Si, podríamos intuir que el próximo paso es relacionar la tablas, pero es precisamente la premisa contraria lo que le da el poder a las tablas de parámetros: No relacionarlas con ninguna tabla y utilizar sus elementos como datos de entrada del usario.
Concretamente NO debemos relacionar las tablas en este escenario, allí esta la magica del «truco»
– …Y DAX Entra en Escena
Aritmeticamente necesitamos: Existencias en Fecha Inicail – Existencias en Fecha Final
La aproximación incial será determinar el valor para la parte Existencias en Fecha Inicial, para ello podemos pensar en restringir la tabla sólo para aquellas filas que contengan la fecha señalda.
Que mejor que la fución FILTER, por lo que tendríamos:
=
FILTER ( Existencias; Existencias[Fecha] = Fecha Indicada en el Slicer Fecha Desde )
¿Cómo detectamos la fecha señalada en el slicer?
Este es el motivo por el cual no relacionamos estos slicers con las tablas en el eje principal del modelo de datos, ya que como suponemos que se hace clic un elemento particular del slicer podemos indicar que nos devuelva el máximo, como sólo hay un elemento seleccionado pues nos devolverá la fecha señalada en el Slicer:
=
FILTER ( Existencias; Existencias[Fecha] = MAX ( FDesde[Fecha Desde] ) )
Como necesitamos el valor de existencias y no la tabla completa (FILTER es una función tabular) y lo que pretendemos es retornar un valor escalar con la existencia de la fecha señalada, lo resolvemos con CALCULATE, así:
=
CALCULATE (
SUM ( Existencias[Existencia] );
FILTER ( Existencias; Existencias[Fecha] = MAX ( FDesde[Fecha Desde] ) )
)
Siguiendo la misma dinámica para la existencia final llegamos a una expresión DAX casi indetica a la aterior, con la única diferencia que el m´paximo correponde a Fecha Hasta
Existe la posibilidad de que el usuario seleccione varios elementos en el slicer, para evitar errores y confuciones podemos utilizar un condicional que devuelva BLANK si el usuario selecciona varios elementos:
=
CALCULATE (
SUM ( Existencias[Existencia] );
FILTER ( Existencias; Existencias[Fecha] = MAX ( FHasta[Fecha Hasta] ) )
)
¿Qué hacer ahora?
Simplemente ejecutar la diferecnia aritmética de la existencias arrojadas por las dos partes anteriores
=
CALCULATE (
SUM ( Existencias[Existencia] );
FILTER ( Existencias; Existencias[Fecha] = MAX ( FDesde[Fecha Desde] ) )
)
– CALCULATE (
SUM ( Existencias[Existencia] );
FILTER ( Existencias; Existencias[Fecha] = MAX ( FHasta[Fecha Hasta] ) )
)
Existe la posibilidad que el usario seleccione varios elementos en uno u otro slicer, para evitar error podemos utilizar un condicional que retorne BLANK si el usario selecciono más de dos elemetos en uno o los dos slicers:
[Rotación Simple]:=IF (
AND ( HASONEVALUE ( FDesde[Fecha Desde] ); HASONEVALUE ( FHasta[Fecha Hasta] ) );
CALCULATE (
SUM ( Existencias[Existencia] );
FILTER ( Existencias; Existencias[Fecha] = MAX ( FDesde[Fecha Desde] ) )
)
– CALCULATE (
SUM ( Existencias[Existencia] );
FILTER ( Existencias; Existencias[Fecha] = MAX ( FHasta[Fecha Hasta] ) )
);
BLANK ()
)
Y eso es todo ….
Creamos la medida rotación simple, luego creamos una tabla dinámica utilizando el modelo de datos donde añadimos el campo prodctos al área de filas y la medida rotación simple al área de valores y añadimos los dos slicers: Fecha Desde y Fecha Hasta
Segunda Simplificación: En este artículo hemos supuesto que las fechas no se repiten, sin embargo, sabemos que en las tablas de existencias en las compañías en muchas situaciones se registra la existencia en diversas horas. Aquí hemos decidido omitir este aspecto de momento, pero lo abordaremos en un artículo posterior así como los múltiples productos
De momento es buen ejercicio es que vayas buscando tus soluciones para expandir el problema y luego contrastarla con la que propondremos
Mis, amigos eso es todo por ahora
– Hasta la próxima Oprtunidad