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.
En este post:
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 diariosApasionado de las tecnologías de análisis de datos y Business Intelligence, y con larga experiencia en el uso de las mismas en empresas de todos los sectores, tamaños, y proyectos de diversa complejidad, en los cuales disfruto creando, planteando y desarrollando soluciones.
Tengo una curiosidad insaciable y demasiadas aficiones, entre ellas tocar el bajo con mi grupo.
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!!!!
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
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,..
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
Excelente aporte! Me quede en la parte de combinar las tablas, tendras el file del ejemplo para compartirlo? Gracias!!
Muchas gracias, Sebastián. Al final del post suelo incluir un link con los archivos utilizados. En todo caso, este es el link:
https://www.biti.es/download/983/?tmstv=1670444711
Un saludo
gracias por compartir tu conocimiento, super aporte a todos
Con mucho gusto! Muchas gracias a ti por leerme. Un cordial saludo