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: 
alexis_garcia
Creator II
Creator II

Resta de valor de fecha máxima menos mínima

Hola, tengo un problema que no se me ocurre cómo poder solucionarlo.

Utilizo la siguiente expresión para calcular la energía del periodo seleccionado, ya que la energía es acumulativa y hay k hacer la resta entre la fecha máxima y la mínima.

Sum({<UTCDateTime={$(=max((UTCDateTime)))}>} Energía)-Sum({<UTCDateTime={$(=min((UTCDateTime)))}>} Energía))

Pero me he encontrado con el problema de que si selecciono por ejemplo 2 días que no sean correlativos (  ej: 2 y 9 ya que quiero comparar el mismo día de la semana) no hace bien la resta que quiero, ya que quiero restar la máxima fecha menos la mínima de cada día y sumarlas.

Con las horas me pasa lo mismo.

Cómo podría hacer esto?

Os lo agradecería mucho.

Un saludo y gracias.

25 Replies
alex_millan
Creator III
Creator III

Veo los datos que pusiste, tienes para cada día, varias horas y una medición de energía para cada medidor, aunque como dices la energía no se va incrementando.

Ahora sólo parar entender bien la pregunta:

- Quieres comparar para cada medidor, las diferencias de energía entre varios días.

- Tomas como energía del día: la diferencia entre el máximo del día y el mínimo del día.

Si como ejemplo, dejando de lado los medidores, tienes datos para cuatro días:

Día 1, mín día 100, máx 300, diferencia 200

Día 2, mín día 350, máx 450, diferencia 100

Día 3, mín día 500, máx 750, diferencia 250

Día 4, mín día 800, máx 825, diferencia 25

¿Si seleccionas los días 1, 2 y 4, que resultado esperarías obtener?

alexis_garcia
Creator II
Creator II
Author

Obtendría la suma de esos 3, es decir, 200+100+25=325.

Yo calculo el máximo menos el mínimo porque la energía se va acumulando, que quiere decir que el valor va incrementando siempre.

Pero no se qué pasa que al elegir varios dias o horas no consecutivos no lo calcula bien.

Un saludo y gracias.

alex_millan
Creator III
Creator III

En mi ejemplo, la suma de los diferenciales de los días seleccionados, la obtendrías con la expresión:

=Sum(TOTAL Aggr(Aggr(Max(Energia),UCTDate) - Aggr(Min(Energia),UCTDate),UCTDate))

Eso daría la suma de los diferenciales de los días seleccionados.

alexis_garcia
Creator II
Creator II
Author

Muchas gracias por la ayuda Alex, pero no lo consigo ni con tu fórmula, ni probando muchas modificaciones como nuevas agrupaciones y demás.

¿ Hay alguna otra forma de calcular la energía sin tener que restar el máximo menos el mínimo....?

Un saludo y gracias.

alex_millan
Creator III
Creator III

Hola Alexis,

el ejemplo que te subo es lo que he entendido que necesitas.

La expresión en mi proyecto es:

Aggr(Sum( TOTAL <Medidor> Aggr(Max(Energia)-Min(Energia),UCTDate,Medidor)),Medidor,UCTDate)

Revisa el fichero que te adjunto y me cuentas.

Un saludo,

alex_millan
Creator III
Creator III

Hola Alexis,

¿pudiste probar en tu proyecto la lógica que seguí en el mío?

¿Te funcionó?

alexis_garcia
Creator II
Creator II
Author

Hola Alex, disculpa por no responderte, pero he estado ocupado con otros temas.

Lo probé en un momento y en un principio no me funcionaba, pero tengo que volverlo a probar y a ver si consigo ver de dónde viene el error.

Gracias y un saludo.

alex_millan
Creator III
Creator III

Tranquilo, solo era curiosidad 😉

De todas maneras, la expresión es para el ejemplo que yo puse. Según tu estructura de datos, probablemente necesites ajustarlo.

Echa un vistazo al fichero, mínimo te dará pistas sobre cómo conseguirlo.

Un saludo y ánimo!

alex_millan
Creator III
Creator III

Hola Alexis,

¿hiciste algún avance en este tema? ¿Pudiste probar el fichero que te mandé?

gabriel_as
Contributor III
Contributor III

Segun entiendo quieres manejar por dia de la semana, ej, Lunes, martes, etc y en un rango de fechas dado.

Si es así tienes que tambien hacer una consulta para cada dia, me explico, tu clausula WHERE debe tener

WHERE DATENAME([weekday], UTCDateTime)  = 'Lunes';

se veria algo así:

LOAD

  year(UTCDateTime)&'-'&Month(UTCDateTime) as MesAño,

  Day(UTCDateTime)&'/'&Month(UTCDateTime)&'/'&Year(UTCDateTime) as FechaC,

  week(UTCDateTime)&'-'&Date(DayName(UTCDateTime),'www') as [semana-dia],

  UTCDateTime AS fecha,

  month(UTCDateTime) as Mes,

  week(UTCDateTime) as semana,

  day(UTCDateTime) as dia,

  Year(UTCDateTime) as Año,

  Hour(UTCDateTime) as Hora,

  Date(DayName(UTCDateTime),'www') as diaN,

  Energia as ELunes

;

SELECT

  UTCDateTime,

  Energia

FROM <TU_TABLA>

WHERE DATENAME([weekday], hora_embarque)  = 'Lunes';

Ahora si a ver por dia de semana y por rango de fechas.

Saludos