Utilizar medida en el último año del gráfico

Hola,

Tengo un gráfico que me muestra el año seleccionado y el previo, tal y como muestro en la siguiente imagen:

Imagen eliminada.

Me gustaría crear la medida "Resto facturación" que haga que si el año del gráfico es el anterior al seleccionado me indique la facturación desde el periodo acumulado hasta el final de año (en este caso desde Julio 2018 hasta Diciembre 2018), mientras que si se trata del año seleccionado me calcule la previsión de facturación para los meses restantes del año (en este caso desde Julio 2019 hasta Diciembre 2019) en base a la medida: PrevisionActual = (TAMFacturacion/TAMFacturacion2Previo*TotalPrevio)-FacturacionAcumulada

La medida que he diseñado es la siguiente (resalto en negrita los campos comentados en el párrafo previo):

Resto facturación =

Var FechaActual = If(COUNTROWS(DISTINCT(ALLSELECTED('T_M_Tabla de fechas'[Fin de mes])))=1;SELECTEDVALUE('T_M_Tabla de fechas'[Fin de mes]);max('T_M_Tabla de fechas'[Fin de mes]))

Var FechaPrevia = DATE(YEAR(FechaActual)-1;MONTH(FechaActual);DAY(FechaActual))

Var Fecha2Previa = DATE(YEAR(FechaActual)-2;MONTH(FechaActual);DAY(FechaActual))

Var InicioFechaActual = DATE(YEAR(FechaActual);1;1)

Var InicioFechaPrevia = DATE(YEAR(FechaActual)-1;1;1)

Var FinFechaPrevia = DATE(YEAR(FechaActual)-1;12;31)

Var TAMFacturacion = CALCULATE(SUM(EXPEDIENTE[ARANCELBRUTO]);filter(EXPEDIENTE;EXPEDIENTE[Fin de mes]>FechaPrevia && EXPEDIENTE[Fin de mes]<=FechaActual))

Var TAMFacturacion2Previo = CALCULATE(SUM(EXPEDIENTE[ARANCELBRUTO]);FILTER(EXPEDIENTE;EXPEDIENTE[Fin de mes]>Fecha2Previa && EXPEDIENTE[Fin de mes]<=FechaPrevia))

Var TotalPrevio = CALCULATE(SUM(EXPEDIENTE[ARANCELBRUTO]);FILTER(EXPEDIENTE;EXPEDIENTE[Fin de mes]>=InicioFechaPrevia && EXPEDIENTE[Fin de mes]<=FinFechaPrevia))

Var FacturacionAcumulada = CALCULATE(SUM(EXPEDIENTE[ARANCELBRUTO]);FILTER(EXPEDIENTE;EXPEDIENTE[Fin de mes]>=InicioFechaActual && EXPEDIENTE[Fin de mes]<=FechaActual))

Var ResultadoPrevio = CALCULATE(sum(EXPEDIENTE[ARANCELBRUTO]);filter(EXPEDIENTE;EXPEDIENTE[Fin de mes]>=FechaPrevia && EXPEDIENTE[Fin de mes]<=FinFechaPrevia))

Var PrevisionActual = (TAMFacturacion/TAMFacturacion2Previo*TotalPrevio)-FacturacionAcumulada

Return

ResultadoPrevio+PrevisionActual

 

Dicha medida no me funciona correctamente ya que me calcula PrevisionActual para el año previo.

Muchas gracias de antemano.

 

 

De todas las variables que creas ¿has probado a devolverlas (en el return) una por una confirmando que los resultados son los esperados? Hasta lo que muestras en negrita ¿todo lo anterior devuelve los resultados correctos cuando seleccionas un mes y una fecha? (sin los datos y sin el modelo de datos, no se me ocurre ninguna sugerencia mejor, no sé alguna otra persona)

 

Buenos días Raúl,

He comprobado todas las medidas una a una (incluidas las que están en negrita) en el return poniéndolas en una tarjeta y todas funcionan correctamente, pero al incorporarlas al gráfico no sé como realizar la función tal y como quiero.

Muchas gracias de todas formas, a ver si alguien me puede ayudar.

Así, a ojo -pues son muchas fórmulas para poder tener una buena idea-, apostaría a que tu tabla EXPEDIENTE se está contextualizando en el CALCULATE de ResultadoPrevio. Te sugeriría que lo confirmases (usando la función ALL). Prueba algo como :

Var ResultadoPrevio = 
    CALCULATE(
        sum(EXPEDIENTE[ARANCELBRUTO]);
        filter(
            EXPEDIENTE;
            ALL(EXPEDIENTE[Fin de mes])>=FechaPrevia && ALL(EXPEDIENTE[Fin de mes])<=FinFechaPrevia)
    )

Buen día

Cartagena

Hola Cartagena,

Disculpa pero no entiendo lo que comentas.

Lo intento simplificar:

- Tengo una medida que se llama ResultadoPrevio

- Tengo otra medida que se llama PrevisionActual

Y quiero hacer lo siguiente: 

Gráfico

Es importante conocer que el desplegable es TablaFechas[Año] y el gráfico tiene en el eje Expediente[Año], ya que era la única forma de conseguir que me mostrara los dos últimos años.

Hola Ángel,

Quería que el gráfico mostrara únicamente el año seleccionado y el anterior y para eso he tenido que recurrir a crear una nueva tabla de fechas que no tenga conexión directa con la primera (lo he sacado a partir de este vídeo: https://www.youtube.com/watch?v=duMSovyosXE), por lo que actualmente existe una tabla calendario sin vinculación: "T_M_Tabla de fechas" y la tabla de la que se obtienen los datos: "EXPEDIENTE", que cuenta con una columna que contiene la fecha de dichos expedientes (ya que sino si seleccionaba el periodo 2019 solo me mostraba el gráfico el año 2019).

Por otra parte, creo que me explico mal y no queda claro lo que busco, os mando una nueva foto que creo que se entiende bien:

 

Gráfico

Un saludo.

Hola de nuevo,

Te escribí hace un rato teniendo en mi cabeza la idea de que las dos tablas estaban relacionadas, no sé por qué no leí bien eso.

He probado tu medida y siento decir que funciona relativamente bien :) Al menos para los cálculos que yo he hecho.

Eso sí, tiene un error y un potencial error: el error es en tu variable FacturacionAcumulada, en la que estás calculando el total de 13 meses, y no de 12, lo que lógicamente modifica el resultado final. Y el potencial error es en el mes de febrero, y es que, tal y como tienes tus variables creadas, podría darse el caso de que en el año 2021 (cuando llegue) no se incluya la cifra de febrero de 2020 (pues es bisiesto y en 2021 tendrá menos días).

Si tienes cifras concretas que puedas mostrar para los meses y un resultado de tu medida que no sea el que deba ser, dímelo y lo reviso.

Hola de nuevo Ángel y muchas gracias por tu respuesta,

La variable FacturacionAcumulada, si no estoy equivocado, esa fecha comprende la facturación desde el 1 de enero del año seleccionado hasta el último día del mes y año seleccionado (al menos era lo que yo he intentado hacer con esta medida), por lo que el máximo de meses debería ser de 12 en el caso de que seleccione el mes de diciembre, ya que comprendería desde el 1 de enero hasta el 31 de diciembre (igual te referías a otra variable, porque hay tantas que es un poco lioso).

Respecto al error potencial que comentas, no había caída en el nº de días de febrero en los años bisiestos, pero creo que como estoy trabajando con meses no habría problema (ya que cogería el mes de febrero independientement

En cuanto a que aparezca para el último año del gráfico (que se corresponde con el año seleccionado) muestre la medida de PrevisionActual y que el año previo del gráfico muestre la medida ResultadoPrevio, he realizado la siguiente medida: if(max(EXPEDIENTE[Fin de mes año]) = selectedvalue('T_M_Tabla de fechas'[Año]); PrevisionActual;ResultadoPrevio) y en el caso del ejemplo el año 2018 me sale correctamente, pero no es así en el año 2019, ¿sabrías como se podría hacer?

Muchas gracias de antemano.

Un saludo.

Hola,

Ah, ok, es cierto que incluye la facturación acumulada *incluido* el mes actual. Tienes razón.

Al respecto de tu medida, con el siguiente código a mí sí me funciona bien:

        IF(
            MAX(EXPEDIENTE[Fin de mes].[Año]) = SELECTEDVALUE('T_M_Tabla de fechas'[Fin de mes].[Año]),
            PrevisionActual,
            ResultadoPrevio
        )

No sé... Como no tengo tan claro como tú qué es cada cosa (efectivamente es un poco lío para quien no está dentro), he hecho un ejemplo devolviendo 1 y -1, y funciona...

Pruébala a ver...

Saludos

Ángel

Hola Ángel,

Muchísimas gracias por tu respuesta,

Ahora me funciona la medida, pero debo de tener un problema con la medida, debido a que si uso la medida en una tarjeta me aparece un resultado (443.145€ para el año 2019, mientras que si hago la misma medida y le filtro que me la aplique solo para el año 2019 me da un resultado de -547.137€, siendo el primero de los resultados el que me debe de salir).

He puesto ambas medidas en tarjetas para analizar la evolución y no encuentro el problema, el archivo se encuentra en el siguiente link: https://drive.google.com/file/d/1JgfYxks2sw5Z-TCaSjKtVU56T_5vQrVg/view?usp=sharing

Muchas gracias.

Un saludo.

 

Hola ABCDE, disculpa que he estado un poco liado.

Ese problema es bastante lógico: al recalcular tu medida imponiendo como nuevo contexto "EXPEDIENTE[Año]=2019" estás filtrando tu tabla EXPEDIENTE y eliminando toda la información adicional que necesitas para hacer el cálculo. Lo que necesitarías sería rescribir el contexto de cálculo que viene de tus segmentaciones (que es a partir del cuál se hace el cálculo), no filtrando tu tabla, no sé si me explico...

Hola Ángel,

Muchas gracias de nuevo por tu respuesta,

Creo que a lo que te refieres es que no debo filtrar por año 2019, ya que poniendo ese filtro no utilizaría datos de años previos como 2018 tenidos en cuenta para el cálculo de la medida (dando así un resultado erróneo)

El problema es que al aplicar esa medida sin filtros sobre el gráfico me da el mismo resultado que si utilizo el filtro que comentábamos, ¿habría que modificar la medida para solucionarlo o como sería?

Un saludo.

Hola,

Sí, exacto, si filtras por un año pierdes los años previos. Fíjate que toda tu medida se basa en la "Fecha actual", basta con que cambies esa variable para que todo te funcione bien. Puedes modificarla con una tabla calendario adicional o semejante.

Saludos

Buenas tardes Ángel,

Muchas gracias de nuevo por tu respuesta,

Creo que soy muy torpe con PowerBI, además de novato, pero no soy capaz de conseguirlo.

He procedido a crear una nueva tabla calendario, a la que he llamado "T_M_Calendario" y he cambiado las referencias que existían a la columna "'T_M_Tabla de fechas'[Fin de mes]" por la nueva tabla (a excepción de la referencia a SELECTEDVALUE), pero no he conseguido que el año 2019 me aparezca correctamente, ya que sigue igual que anteriormente.

Un saludo. 

Enviado por ABCDE el Lun, 28/09/2020 - 10:15