Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
alexis_garcia
Creator II
Creator II

Valores de ciertas horas

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

Tengo valores cada 15 minutos y lo que necesito es coger el máximo entre los siguientes rangos:

Max({MediTotal<Minutos={">=12"},Minutos={"<=17"},PointSliceID={"11229"}>}ActualValue)+

Max({MediTotal<Minutos={">=27"},Minutos={"<=33"},PointSliceID={"11229"}>}ActualValue)+

Max({MediTotal<Minutos={">=42"},Minutos={"<=48"},PointSliceID={"11229"}>}ActualValue)+

Max({MediTotal<Minutos={">=57"},PointSliceID={"11229"}>}ActualValue)

Sumando dichos valores me da el valor que necesito de cada hora.

Funciona para una hora, pero si lo quiero de un día o un mes no funciona.

He probado con set analysis, con If() y con Aggr(,Mes, Dia, Hora), pero no funciona.

Cómo podría hacerlo?

Gracias.

Un saludo.

1 Solution

Accepted Solutions
rubenmarin

Buenos días Alexis, la expresión con el Aggr() me fallaba cuando tenía seleccionada la fecha en el estado Meditotal y a la vez en el estado prederterminado, para evitarlo le he añadido al primer sum el mismo estado alterno que a los Max(). También he puesto el filtro de minutos como decía Emilio.

Adjunto el documento.

Saludos.

View solution in original post

15 Replies
jolivares
Specialist
Specialist

Intenta utilizar la funcion firstsortedvalue().

firstsortedvalue( actualvalue, aqui pones el rango que deseas).

alexis_garcia
Creator II
Creator II
Author

Hola Juan,

gracias por contestar, pero necesito que los 4 valores de cada hora se sumen con los 4 valores de la hora siguiente y así de un mes o un día dependiendo de lo seleccionado.

Y como me comentas no lo consigo hacer.

Gracias.

Un saludo.

Joaquin_Lazaro
Partner - Specialist II
Partner - Specialist II

Hola Aleix:

Lee estos documentos de un gurú de la herramienta, igual te ayudan a resolver tu requerimiento.

How to use - Master-Calendar and Date-Values

The Master Time Table

Saludos,

Joaquín

rubenmarin

Hola Alexis, la opción del Aggr, si estamos hablando de una expresión, debería estar incluída en una función de agregación, supongo que Max(Aggr(....,Mes, Dia, Hora))

jolivares
Specialist
Specialist

Publica un trozo de datos y coloca lo que tu quieres que haga la aplicacion.

alexis_garcia
Creator II
Creator II
Author

Estoy mirando los documentos Joaquín a ver si lo puedo solucionar.

A ver, tengo un dato por cada minuto y lo que necesito es el máximo de entre minutos>=12 y minutos<=17 y sumar el máximo que está entre minutos>=27 y minutos<=33 mas el máximo de entre Minutos=>=42 y Minutos<=48 mas el máximo entre Minutos>=57.

Así saldrán 4 valores cada hora.

Pero lo intento con Set Analysis y Aggr como comenta Rubén, pero no lo consigo.

Gracias.

Un saludo.

rubenmarin

Cuando dices que no lo consigues o que no te funciona ¿significa que no te devuelve ningún valor o que no es el valor que esperas?

Por cierto he releído el tercer post y para sumar los máximos de todas las horas en vez del Max sería un Sum:

Sum(Aggr(....,Mes, Dia, Hora))

También comprueba que el estado MediTotal no tenga alguna selección que esté influyendo.

Unos cuantos datos de ejemplo vendrían bien, aunque hasta mañana no voy a poder revisarlo.

Saludos.

ramoncova06
Partner - Specialist III
Partner - Specialist III

yo te recomiendo crear una bandera para cada intervalo en el backend script y ya sobre ese creas un aggr como sugiere Ruben

etendero
Partner - Creator
Partner - Creator

Hola Alex,

La verdad es que no lo he entendido muy bien lo que quieres hacer, pero lo que si he visto es un error en la expresión que has puesto, lo correcto sería lo siguiente:

RangeSum(

   Max({MediTotal<Minutos = {">=12<=17"}, PointSliceID = {"11229"}>} ActualValue)

  , Max({MediTotal<Minutos = {">=27<=33"}, PointSliceID = {"11229"}>} ActualValue)

  , Max({MediTotal<Minutos = {">=42<=48"}, PointSliceID = {"11229"}>} ActualValue)

  , Max({MediTotal<Minutos = {">=57"}    , PointSliceID = {"11229"}>} ActualValue)

)

Fijate como he filtrado el campo "Minutos" en el análisis de conjunto. Si no lo haces así, la interpretación de QlikView será del último filtro sobre "Minutos" que pongas, es decir, sólo puede aparecer cada campo una sola vez dentro del mismo análisis de conjuntos. He de suponer que "MediTotal" es un marcador sobre el que le aplicas el análisis de conjunto, ¿verdad?

Un saludo y espero haberte ayudado.