Las funciones de inteligencia de DAX nos permiten hacer comparaciones entre muchos tipos de periodos.
Ahora nos planteamos poder tener la información de una empresa, por ejemplo por meses, y poder compararla con la de otro mes, a elegir en un segmentador de datos.
Generalizando, tenemos la información agrupada por un periodo de tiempo, y queremos comprara con otro periodo a elegir: por ejemplo ventas anuales a comprar con cualquier otro año a elegir.
Siempre hablamos de comparaciones del mismo tipo de periodo, por ejemplo meses con meses, o años con años.
Vamos a desarrollar un ejemplo para comparar ventas por meses
Tenemos una tabla Excel con las ventas por meses, para simplificar he creado esta
Importamos nuestra tabla al Power Bi
Damos formato fecha a la fecha
Y añadimos una medida para tener la suma del periodo que usaremos como criterio de agrupación
Importe = SUM(Ventas[Neto])
Ahora necesitamos la típica tabla de calendario, recordemos que la inteligencia de tiempo no funciona bien si no tenemos un calendario continuo
Vamos a Modelado, Nueva tabla y ponemos
Calendario = CALENDAR(DATE(YEAR(MIN(‘Ventas'[Fecha]));1;1); DATE(2017;12;31))
O el periodo que nos interese abarcar
Damos formato e fecha a la date
Y añadimos una columna con el número del mes
Mes = Calendario[Date].[NroMes]
Y por supuesto debemos establecer la relación entre las dos tablas.
Vamos a Relaciones, y arrastramos la fecha de ventas a la date de calendario
Power Bi crea la relación mostrando una línea continua y podemos revisarla haciendo doble clic en la línea
Y ahora viene la parte más especial del sistema. Tenemos que crear otra tabla de calendario, que es la que usaremos para filtrar y comparar
Creamos una nueva tabla con
CalendarioComparacion = CALENDAR(DATE(YEAR(MIN(‘Ventas'[Fecha]));1;1); DATE(2017;12;31))
La llamaremos CalendarioComparacion
La Date, la renombramos como DateComparacion
Ponemos formato fecha a la DateComparacion
Y añadimos el mes comparación
MesComparacion = CalendarioComparacion[DateComparacion].[NroMes]
Y ahora debemos establecer la relación pero la dejaremos inactiva
Vamos a Relaciones y arrastramos la fecha a la DateComparacion
Hacemos doble clic en la relación y desmarcamos Activar esta relación
En el cuadro de relaciones, una está con línea continua, porque esta activa, y la otra con línea discontinua porque no está activa
El último paso es crear una medida que NO aplique ningún filtro de la tabla calendario y si aplique filtros de la tabla CalendarioComparacion
En ventas, creamos una nueva medida con
ImporteMesComparacion = CALCULATE([Importe];ALL(Calendario);USERELATIONSHIP(Ventas[Fecha];CalendarioComparacion[DateComparacion]))
Esto lo leemos como
Calcula, el importe
Sin aplicar ningún filtro de Calendario
Aplicando un filtro, que activa la relación entre Fecha y DateComparacion
Vamos a verificarlo con una tabla
Vamos a Informe, añadimos la visualización tabla y ponemos Mes, Importe e ImporteMesComparacion.
En una columna tenemos las ventas de cada mes y en otra el total de ventas
Ahora añadimos un Segmentador, y le ponemos el MesComparacion
En el segmentador, seleccionamos el mes con el que queremos comparar las ventas.
Por ejemplo las ventas de todos los meses comparadas con las de julio
Ahora tenemos una columna con las ventas mes a mes, otra con las ventas de julio y si queremos la diferencia basta con crear una medida
Diferencia = [Importe]-[ImporteMesComparacion]
Si la añadimos a la tabla tenemos
Encuentro este método muy interesante para poder comparar periodos distintos a elegir de una segmentador
Aquí tenéis el ejemplo en un fichero comprimido Ventas por meses
Hola a tod@s.
Como hago para tener en cada periodo anual la diferencia con el anterior?
DifVentas 2018-2017= Ventas 2018-Ventas 2017
DifVentas 2018-2016= Ventas 2018-Ventas 2016
DifVentas 2018-xxxx= Ventas 2018-Ventas XXX.
La solucion la tengo, solo que los resultados me los coloca siempre en el periodo anterior. Es decir, la del 20182017 en el 2017, la del 20172016 en el 2016 y en