Convertir acumulados a valores diarios con Power BI

Lo habitual es disponer de los datos como valores diarios y utilizar Time Intelligence para calcular acumulados. Pero puede suceder que te encuentres con que los datos que te proporcionan son acumulados diarios y necesitas deshacer esos acumulados y convertirlos a su valor diario para analizarlos.
Esto…:

Vamos a ver cómo mediante un caso práctico.

La información de partida

Un Excel que se genera y sobrescribe diariamente con dos columnas, la fecha y el valor acumulado de unos consumos hasta la misma. Como salvedad, los datos de sábados y domingos (y festivos) se acumulan con los del lunes o siguiente día hábil…

Así es como quedarían representados los datos si los utilizásemos tal cual:

Columnas índice para poder combinar

Una vez cargado el fichero en Power Query ordenaremos por columna fecha ascendente y duplicaremos la tabla. A cada una de las tablas le vamos a añadir una columna índice. Una comenzará en cero y la otra en uno.

La idea es relacionar estas tablas por ese índice, de modo que obtengamos para una fecha, la fecha anterior.

Y es lo que haremos Combinando ambas tablas por esas columnas:

Tras expandir, eliminar las columnas innecesarias y reordenarlas, tenemos todos los desde-hasta y vamos añadir una columna que calcule el número de días entre intervalos:

Restar días

Operador de Listas {..}

Para convertir las fechas desde-hasta a filas usaremos el operador de listas {desde..hasta}. En estos posts encontrarás información detallada sobre casos de uso:

Convertir desde-hasta en filas (otro modo, con operador de listas y con ejemplos)

Transformar columnas desde-hasta en filas

Como paso previo hay que convertir las fechas a tipo dato entero y después añadiremos un columna personalizada que cree un lista entre ambos números:

Esto crea un columna tipo con datos tipo “List”. Expandimos como nuevas filas y creará tantas líneas como elementos en cada lista.

Si convertimos esta columna y las de fecha a tipo datos fecha de nuevo, apreciaremos mejor el resultado. Además, observamos que haya fechas repetidas, pues el inicio de un día es el fin del anterior:

Creamos una columna que permitan identificar las fechas repetidas para filtrarlas y filtraremos:

Calcular el valor diario

Finalmente, vamos a calcular el valor diario. Tenemos todas las piezas para hacerlo: el valor final, el valor anterior y el número de días entre el cual hay que dividir. Añadimos un columna personalizada:

Ya tenemos el valor diario y la fecha a la que corresponde, pudiendo eliminar el resto de columnas innecesarias:

Y este es el resultado….

Ya tenemos los valores diarios, y tras agregar una tabla de fechas, con un simple Dax podremos reconstruir el acumulado, aprovechando las ventajas de Time Intelligence.

Espero que te sea útil.

Si quieres los archivos puedes descargarlos:

Archivos convertir acumulados a valores diarios

Te puede interesar...

8 comentarios en «Convertir acumulados a valores diarios con Power BI»

  1. Hola, tengo q hacer lo mismo pero por equipo, para eso genero un índice x agrupación. Pero cuando combino las tablas por equipo e índice me desordena los índices de la tabla. Como puedo solucionarlo? Gracias!!!!

    1. Hola Natalia, tras asignar el indice a cada línea puedes intentar construir un id “compuesto” a partir del mismo, del siguiente modo, creando una columna que sea un entero

      Indicecompuesto = (100000*agrupacionid)+indicelinea

      Al ser numérico podrás conservar el orden:

      Suponiendo la agrupacionid=2 y la fila 34 el resultado sería 2000034.

      Es una idea de ejemplo, pero si no sirve , otra posibilidad es tener una tabla de agrupaciones que invoque a una función que procese cada agrupación individualmente y que use como parámetro la columna agrupaciónid de esa tabla. Tras invocar, expandes la columna de la función y deberías obtener el resultado esperado.

      Espero te sirva de ayuda

  2. Hola. Muchas gracias por tu aporte, lo estoy intentando hacer igual y despues de combinar las tablas, me salen las fechas idénticas, no se que estoy haciendo mal. Aparte, en mi caso, tengo tres columnas de valores de distintos conceptos, y tengo que calcular el valor diario de cada una de esas tres columnas,..

    1. Hola Lourdes, ten en cuenta que las columnas de índice creados en cada tabla, en una debe empezar en 0 y el otro en 1 , y previamente han de tener tener la misma ordenación

  3. Excelente aporte! Me quede en la parte de combinar las tablas, tendras el file del ejemplo para compartirlo? Gracias!!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *