Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Dato actual menos dato anterior

Hola, os presento mi problema a ver si alguien me puede ayudar.

Traigo de excel la siguiente tabla que represento en una tabla pivotante:

Energía mes.PNG.png

Aquí tengo los campos Edificio, Tipo, Periodo, Mes, Energía que va incrementando cada mes, Término de energía que es un dato fijo e importe.

La columna Diferencia Energía es la resta de energía correspondiente a un mes menos la energía del mes anterior y así sucesivamente para todos sus meses. Lo he hecho con la función Above que va restando las filas, pero el problema es que si yo filtro por Tipo o por Periodo, las filas cambian y ya no se estarían restando bien.

Hay alguna forma con análisis de conjuntos u otra solución para restar la energía de un mes menos su anterior? sin que el usuario tenga que filtrar por meses.

Un saludo y gracias.

12 Replies
etendero
Partner - Creator
Partner - Creator

Hola Juan Vicente,

Si tu problema es que al filtrar, deja de restarte justo con el mes anterior, entonces tendrás que utilizar la función de agregado Aggr.

¿Podrías mandar un estracto de la tabla en Excel, para poderte componer un ejemplo?

Un saludo.

Not applicable
Author

Hola Emilio, el excel es el mismo que me ayudaste con la crosstable.

Re: Crosstable de tabla excel

Hago lo siguiente en la expresión:

RangeSum(ABOVE(SUM(Lectura), 0)-ABOVE(SUM(Lectura), 1))

Hasta aquí bien, pero si filtro por Mes o Tipo o cualquier filtro que cambie la estructura de la tabla ya no hace bien las restas.

Lo he intentado con Aggr() poniendo Mes o Tipo o Periodo, pero no hace bien las restas o algunos ni muestra resultados.

Un saludo y gracias.

etendero
Partner - Creator
Partner - Creator

Hola de nuevo,

Lo que pasa es que mi ejemplo es muy concreto y apenas tengo lecturas para este caso, además de tener más campos. Para ir al grano, necesitaría que me exportaras a Excel la tabla que has enseñado.

Una aclaración con la función RangeSum, para que haga su función, tienes que pasarle los operandos como parámetros separados por comas, entonces tu expresión quedaría:

RangeSum(SUM(Lectura), ABOVE(SUM(Lectura)) * (-1))

Saludos.

Not applicable
Author

Hola Emilio, aquí te mando el excel donde los datos en amarillo son de las tablas, es decir, son los que pongo como dimensión.

Los demás datos los calculo en expresiones:

Diferencia Energía:    RangeSum(ABOVE(SUM(Lectura), 0)-ABOVE(SUM(Lectura), 1))

Sale bien, el problema es al filtrar por Tipo, Periodo o Mes que no salen bien las restas.

Siguiente columna:  Aggr(RangeSum(SUM(Lectura), ABOVE(SUM(Lectura)) * (-1)),TIPO,Period,MesLect)

Esto es lo que me comentabas. He probado con cambiar y poner solo TIPO o cualquiera de ellos pero tampoco funciona.

El resto de columnas son simples cálculos.

Lo que necesito es que al filtrar por TIPO, Periodo o Mes calcule bien esas restas.

Se podría hacer con análisis de conjuntos? Porque realmente lo que hace es restar a la energía de un mes la del anterior.

Un saludo y muchas gracias.

etendero
Partner - Creator
Partner - Creator

Pienso que si se puede hacer con análisis de conjuntos, pero tengo que hacer pruebas antes de encontrar la expresión correcta.

Otra idea que puedes hacer es calcular esa diferencia directamente en el script de carga, en un nuevo campo, o ese nuevo campo que muestre el dato del mes anterior. Y después, en el objeto de tabla, sólo tendrías que mostrar ese campo o restarlo.

En cuanto tenga un hueco, te preparo un ejemplo para cada caso.

Saludos.

Not applicable
Author

Emilio, aquí te mando el excel entero.

Voy a seguir probando.

Muchas gracias y un saludo.

etendero
Partner - Creator
Partner - Creator

Hola Juan Vicente,

Te paso un ejemplo con la opción del cálculo en el script de carga.

Si tengo tiempo, te preparo otro con análisis de conjuntos.

Espero que te sirva de ayuda.

Saludos.

Not applicable
Author

Hola Emilio, muchas gracias por el ejemplo, pero sigo con el problema, ya que si filtro por algún mes en concreto los datos procedentes de las restas para saber los datos mensuales son incorrectos.

Cómo se podría hacer con análisis de conjuntos?

Gracias y un saludo.

etendero
Partner - Creator
Partner - Creator

Hola,

Entonces lo que necesitas es acumular las diferencias, a pesar de los filtros aplicados en las dimensiones, ¿verdad?

Saludos.