Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Suma de datos correspondientes a horas

Hola, tengo unas dudas y no se cómo solucionarlas.

Tengo la siguiente tabla:

TablaCurvaMarca.PNG.png

Donde tengo fecha, hora cada 15 minutos y un valor de ENERGÍA ACTIVA por cada 15 minutos.

Ahora tengo la siguiente tabla:

TablaCostes.PNG.png

En esta tabla tengo la fecha con una hora y la columna Curva donde cada dato es la suma de ENERGÍA ACTIVA de 4 datos de la anterior tabla correspondiente a las horas ( 0:15, 0:30, 0:45 y 1:00 , en la siguiente será 1:15, 1:30, 1:45 y 2:00 y así sucesivamente ).

Lo que quiero es poder hacer esa "suma correspondiente a los 4 datos de dichos periodos" dentro de Qlikview para automatizar el proceso.

Alguien sabe cómo hacer esto?

Un saludo y gracias.

1 Solution

Accepted Solutions
etendero
Partner - Creator
Partner - Creator

Te he creado un nuevo campo en el script (ID_FECHA), con la composición de la nueva fecha y hora que hemos transformado.

Con este nuevo campo, podrás unir con la otra tabla.

Un saludo y espero haberte sido de ayuda.

View solution in original post

27 Replies
soniacoprosa
Creator
Creator

Hola Juan,

Lo que se me ocurre sería separar las horas del campo "Hora" en un nuevo campo y agrupar por fecha y ése campo.

Un saludo,

etendero
Partner - Creator
Partner - Creator

Hola Juan Vicente,

Yo utilizaría una tabla pivotante con dimensión de Fecha y otra dimensión con la hora (sin minutos), utilizando la función "Hour(Hora)", además del resto de dimensiones que necesites. Y para la expresión de Curva, con hacer un Sum([ENERGIA ACTIVA]) sería suficiente.

Un saludo y espero haberte ayudado.

Not applicable
Author

Muchas gracias por vuestras respuestas tan rápidas.

Eso mismo es lo que he hice, Hour(FECHA) y extraigo la hora, pero el problema lo tengo que de esa forma me cogería la suma de energía de ( 0:00, 0:15, 0:30 y 0:45 ) y lo que yo necesito es que coja la energía correspondiente a ( 0:15, 0:30, 0:45 y 1:00) y así sucesivamente par cada hora.

No se por donde atacar a eso.

Un saludo y gracias.

soniacoprosa
Creator
Creator

Perdona, no me había fijado bien en lo que tenías que sumar.

En ese caso tendrás que crearte el nuevo campo hora teniendo en cuenta que si la hora es por ej. 1:00 en el nuevo campo tendrás que restarle 1 y así te pondría 0 para que se acumule en el grupo de hora 0, y sino pondrías la hora que tenga. Y así sucesivamente te irá haciendo los grupos.  Entiendo que la hora 0:00 no se va acumular no?

Un saludo,

etendero
Partner - Creator
Partner - Creator

Hola de nuevo,

Se me ocurren un par de ideas. La primera sería que en el script crearas un nuevo campo numérico indicando a que rango de hora real pertenece el registro. Después sólo tendrías que modificar la expresión con análisis de conjunto para que sólo sume cuando el valor de Hour(Hora) = NuevoCampo.

La segunda sería utilizar la función FirstSortedValue para descartar los valores que no quieres sumar. Te pongo un ejemplo de como quedaría la expresión:

RangeSum( Sum([ENERGIA ACTIVA])

  , if(FirstSortedValue(Min(Hora), Hora) = 0

  , FirstSortedValue([ENERGIA ACTIVA], Hora) * -1

  )

  , if(FirstSortedValue(Min(Hora), -Hora) = 0

  , FirstSortedValue([ENERGIA ACTIVA], -Hora) * -1

  )

)

Utilizar RangeSum es para que reste a pesar de los nulos y poner los IF, es para descartar cuando el minuto es 0 dentro de la misma hora.

Espero que te sirva de ayuda.

jvitantonio
Luminary Alumni
Luminary Alumni

Hola Juan,

Aqui te adjunto un ejemplo con los datos que has dado. Espero te sea de util.

Saludos

JV

Not applicable
Author

Gracias Sonia, estoy intentando restar la hora, pero me da problemas, no muestra los datos de energía para esas horas.

Podrías poner una especie de ejemplo para guiarme?

Un saludo y muchas gracias.

Not applicable
Author

Muchas gracias Emilio, pero no al poner esa expresión me dice que es incorrecta y por lo que yo veo está bien.

Y no muestra ningún dato.

Podrías poner un pequeño ejemplo para guiarme?

Un saludo y gracias.

soniacoprosa
Creator
Creator

Creo que deberías seguir la solución que te ha dado QL.

La función below() se adapta a tu problema.

Un saludo,