Cómo representar en un gráfico de líneas una proyección de cuenta de resultados.

👨🏻‍💻​ Recientemente impartí un taller de PowerBI aplicado a las finanzas en el que vimos cómo crear una cuenta de pérdidas y ganancias desde el libro diario de varias empresas y cómo compararlo contra el presupuesto.

💡 ​Dentro del taller, Esteban Nardi lanzó una pregunta muy interesante sobre cómo podríamos representar en un gráfico de líneas por un lado la contabilidad cerrada y por otro lado el presupuesto hasta el cierre del ejercicio.

El resultado sería similar al de la siguiente imagen:

🖊️ ​En el post de hoy vengo a contarte el detalle de cómo conseguirlo, así que si te mueves en el mundo de las finanzas empresariales y el tema te parece interesante….allá vamos:

Antes de nada, sobra comentar que para aplicar esta solución tendremos que tener montado un modelo financiero en el que elaboremos nuestras medidas.

En nuestro modelo teníamos 2 tablas de hechos, una con los libros diarios de la contabilidad real de las empresas, y otra con los presupuestos.

Tendremos que incorporar a nuestro modelo la fecha del cierre contable que tenemos revisado, que será nuestra fecha de corte para pintar la contabilidad real hasta esa fecha y el presupuesto a partir de la misma.

En el taller, incorporé una consulta desde la opción de “Especificar datos” de Power Query, pero tú puedes incorporarlo desde la fuente que consideres.  Lo que sí es importante es que sea una fuente que pueda modificar únicamente el controller, el director financiero o la persona que sea la encargada de dar el OK definitivo a la revisión de los cierres contables.

La consulta tiene simplemente una columna con un único registro, que es la fecha de cierre revisado. A la columna le asigno el tipo de dato “Fecha”.

A la consulta le doy el nombre de “Revision Cierre” y a la columna “Ultima Revision”.

Dentro de mi informe, tendré que tener calculadas unas medidas para calcular el resultado de PyG de la contabilidad real (a la que llamaré [PyG] ) y de Presupuesto (a la que llamaré [Presupuesto]).

Posteriormente, realizaré la siguiente medida para calcular la fecha de cierre revisado:

Fecha Cierre Revisado = MAX(‘Revision Cierre'[Ultima Revision])

Mi medida DAX para calcular la PyG Proyectada será la siguiente (Nos basamos en la medida [PyG] para calcular el resultado cuando la fecha sea menor o igual a la fecha de cierre revisado y en la medida [Presupuesto] para calcular el resultado cuando la fecha sea mayor a la fecha de cierre revisado):

PyG Proyectada =

CALCULATE (

    [PyG],

    FILTER ( dimCalendario, dimCalendario[Fecha] <= [Fecha Cierre Revisado] )

)

    + CALCULATE (

        [Presupuesto],

        FILTER ( dimCalendario, dimCalendario[Fecha] > [Fecha Cierre Revisado] )

    )

Si metemos esa medida en un gráfico de líneas, y filtramos por el año 2023, tendremos el siguiente resultado:

Refleja el resultado real hasta el mes de octubre (la fecha de cierre revisado es el 31/10/2023) y el valor presupuestado para los meses de noviembre y diciembre.

Sin embargo, nos aparece toda la línea continua y no distinguimos en la propia línea hasta dónde llega el dato real y dónde empieza el presupuestado.

Para conseguir ese efecto, vamos a realizar dos nuevas medidas DAX para pintar cada uno de los 2 tramos que queremos conseguir:

Medida 1:

PyG Proyectada Real =

IF (

    MAX ( dimCalendario[Fecha] ) <= [Fecha Cierre Revisado],

    [PyG]

)

Esta medida nos reflejará el resultado de PyG únicamente cuando el valor de las fechas sea menor o igual a la fecha de cierre revisado.

Si la llevamos a un gráfico de líneas quedaría así:

Como puede observarse, a pesar de tener filtrado todo el ejercicio 2023, únicamente se representan valores hasta el mes de Octubre, que es donde llega la fecha de cierre revisado.

Medida2:

PyG Proyectada Presupuesto =

SWITCH (

    TRUE (),

    MAX ( dimCalendario[Fecha] ) = [Fecha Cierre Revisado], [PyG],

    MAX ( dimCalendario[Fecha] ) > [Fecha Cierre Revisado], [PyG Proyectada],

    BLANK ()

)

Se nos mostraría de la siguiente forma en un gráfico de líneas:

Ahora vemos cómo teniendo filtrado todo el ejercicio 2023 se nos representan valores únicamente desde la fecha de cierre. Destacar que para el valor de Octubre, el dato es el real del PyG de la contabilidad, según indicamos en la primera salida del TRUE().

Esto lo hacemos así para que no haya un salto entre las líneas de real y presupuesto cuando juntemos ambas en un mismo gráfico de líneas.  Al final del post os mostraré lo que ocurriría si obviamos esa primera salida del TRUE y dejamos únicamente valores para las fechas que sean superiores a la fecha de cierre revisado.

Ahora que ya tenemos las 2 medidas preparadas, vamos a juntarlas en un mismo gráfico de líneas para ver el resultado:

Como vemos, a partir de Octubre cambia el color de la línea, al pasar de representar el dato real de la contabilidad al dato del presupuesto.

Ahora, para que destaque más, simplemente vamos a dar formato discontinuo a la línea de la medida “PyG Proyectada Presupuesto” para que nos muestre el resultado que estábamos buscando:

Una vez conseguido el resultado y, como lo prometido es deuda, simplemente quiero mostrarte lo que pasaría si en la medida 2 “PyG Proyectada Presupuesto” quitásemos la primera salida del TRUE y dejásemos la medida de la siguiente forma:

PyG Proyectada Presupuesto =

SWITCH (

    TRUE (),

    MAX ( dimCalendario[Fecha] ) > [Fecha Cierre Revisado], [PyG Proyectada],

    BLANK ()

)

El gráfico quedaría así:

Como puedes observar, al no darle ningún valor a la medida para el caso en que la fecha sea igual a la fecha de cierre revisado, no conseguimos que la línea del presupuesto parta desde el cierre del mes de Octubre, con lo que nos quedaría un salto entre ambas líneas que evitamos gracias a la primera salida del TRUE que incorporamos a la medida (revisar la Medida 2), y que está basada en la contabilidad real con la medida [PyG].

Espero que te haya parecido interesante la entrada y que puedas aplicar esta técnica en tus próximos proyectos 😉​

Seguimos!!! 👊

Si te ha gustado, compártelo!!! 👇 No te guardes el secreto 😜