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

Ultimo valor introducido

Hola,

Llevo ya mucho tiempo intentándolo y no encuentro como poder hacerlo.

Tengo una tabla con diferentes indicadores en cada uno de ellos se introducen valores (de cada uno se introducen valores con diferente periodicidad)

Querría sacar el valor del ultimo dato introducido, es decir el valor introducido que corresponda a la fecha max (fecha)

Muchas gracias de antemano

1 Solution

Accepted Solutions
jaimeaguilar
Partner - Specialist II
Partner - Specialist II

Hola,

Creo que enviaste el documento  sin recargar, ya que a mi me aparece en blanco. Pero bueno, viendo la imagen de ejemplo me puedo dar una mejor idea. El uso de if anidados es una posible solución, sin embargo el tener varios niveles en el if puede afectar el desempeño de la gráfica y de tu aplicación en general.

En QlikView existen 2 funciones que cuando se usan en conjunto permiten generar un funcionamiento similar a lo que te daría un case o un switch. Estas funciones son pick y match. Una de las ventajas que tiene el uso de esta función es que el tiempo de respuesta suele ser más rápido, sólo hay que tener en consideración que es útil únicamente cuando tienes varios resultados posibles en un condicional. En tu caso quedaría así (esta expresión ponla directamente en tu straight table de la imagen):

pick(match(Operacion, 1,2,3), sum(Valor),avg(Valor),avg(Valor))

lo que harían estas funciones es primero match busca las coincidencias del campo Operación con los valores 1,2,3 (cuando tus valores de campo son numéricos no es necesario ponerle comillas simples. Además si necesitaras usar búsquedas con wildcard puedes usar la función wildmatch que te buscan coincidencias en strings completos o en partes, por ejemplo puedes buscar '3*' ahí te estaría regresando todos los valores que empiecen con 3). La segunda parte de la fórmula le asigna una expresión diferente a cada valor del campo Operación. Solo como nota, en ocasiones cuando las fórmulas son complejas (cuando usas ciertos elementos de set analysis o agregaciones avanzadas como aggr, es posible que debas guardar tus expresiones en variables y mandarlas llamar en esta parte).

Te anexo un ejemplo con otros datos pero lo puedes adaptar a lo que tu necesitas,

saludos

View solution in original post

6 Replies
jer_2011
Creator II
Creator II

Hola,

te paso este ejemplo esperemos que funcione contigo

en Qlikview selecciona un nuevo objeto de hoja, selecciona grafico, y selecciona tabla simple

en tus dimension selecciona tu campo (lo que entendí es la descripción del indicador)

agregas en la dimensión también el campo fecha y seleccionas la opción editar y agregas el siguiente codigo

=aggr(max(date(FECHA,'DD/MM/YYYY')), campo), campo es la primera dimensión que pusiste

en tu expresión colocas el campo del valor de tu indicador, ejemplo: sum(valor_indicador)

te deveria quedar algo parecido

ejemplo:

ejemplo1.png

con esta opción solo dejas la fecha máxima.

jaimeaguilar
Partner - Specialist II
Partner - Specialist II

Hola,

para poder ayudarte mejor, sería posible que puedas subir un archivo con datos de prueba?

gracias y saludos

Not applicable
Author

Hola,

Lo primero gracias por contestar.

Creo que me explique mal, dependiendo del tipo de indicador, tiene una operación asociada, (sumatorio, media, o ultimo valor introducido) las dos primeras son fáciles, les pongo un If, y dependiendo del valor elijo una o la otra, pero la de ultimo valor introducido es la que nos e como hacer:

18-07-2014 8-31-05.png

La tabla seria algo asi (con algunos datos mas pero esos son los importantes), si en operación es valor 1, media, si es 2 sumatorio, y 3 ultimo valor, esto tanto para valor, como objetivo mínimo......

El if es bastante simple:

if (Operacion = '1', avg (Valor),

      if (Operacion = '2', sum (Valor),

            if (Operacion = '3', avg (Valor) //<- aquí ultimo valor

                )))

Dejo también el archivo con datos.

Gracias
Carlos

Not applicable
Author

Es una solución fea pero funciona:

puse esto en el script

TOPVALOR:

LOAD

  IdIndicador,

  ValorTOP;

SQL

select Top 1 IdIndicador, Valor as ValorTOP

from Pers_Indicadores_Lineas

where IdIndicador = '12'

UNION

select Top 1 IdIndicador, Valor as ValorTOP

from Pers_Indicadores_Lineas

where IdIndicador = '25';

y en el if:


if (Operacion = '3', ValorTOP //<- aquí ultimo valor

Seguro que hay alguna opción mejor.

Con esta tengo que estar modificando el script cada vez que introduzca algún indicador nuevo que quiera que muestre el ultimo valor, si alguien se le ocurre alguna opción mejor se lo agradecería.

Carlos

jaimeaguilar
Partner - Specialist II
Partner - Specialist II

Hola,

Creo que enviaste el documento  sin recargar, ya que a mi me aparece en blanco. Pero bueno, viendo la imagen de ejemplo me puedo dar una mejor idea. El uso de if anidados es una posible solución, sin embargo el tener varios niveles en el if puede afectar el desempeño de la gráfica y de tu aplicación en general.

En QlikView existen 2 funciones que cuando se usan en conjunto permiten generar un funcionamiento similar a lo que te daría un case o un switch. Estas funciones son pick y match. Una de las ventajas que tiene el uso de esta función es que el tiempo de respuesta suele ser más rápido, sólo hay que tener en consideración que es útil únicamente cuando tienes varios resultados posibles en un condicional. En tu caso quedaría así (esta expresión ponla directamente en tu straight table de la imagen):

pick(match(Operacion, 1,2,3), sum(Valor),avg(Valor),avg(Valor))

lo que harían estas funciones es primero match busca las coincidencias del campo Operación con los valores 1,2,3 (cuando tus valores de campo son numéricos no es necesario ponerle comillas simples. Además si necesitaras usar búsquedas con wildcard puedes usar la función wildmatch que te buscan coincidencias en strings completos o en partes, por ejemplo puedes buscar '3*' ahí te estaría regresando todos los valores que empiecen con 3). La segunda parte de la fórmula le asigna una expresión diferente a cada valor del campo Operación. Solo como nota, en ocasiones cuando las fórmulas son complejas (cuando usas ciertos elementos de set analysis o agregaciones avanzadas como aggr, es posible que debas guardar tus expresiones en variables y mandarlas llamar en esta parte).

Te anexo un ejemplo con otros datos pero lo puedes adaptar a lo que tu necesitas,

saludos

Not applicable
Author

Gracias