Skip to main content
Announcements
See why Qlik is a Leader in the 2024 Gartner® Magic Quadrant™ for Analytics & BI Platforms. Download Now
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Limitar datos mostrados en tabla simple

Buenos días,

     Tengo el siguiente caso, creo una tabla de la siguiente manera

            campo1 campo2 campo3      cálculo1=count(distinct campo4) cálculo2= count(distinct campo5)

                1             a          b               10                                                 0                 --> SI debo mostrarlo

                2             cc        aa              100                                               5                 --> No debo mostrarlo en mi tabla

                3             d           hj               200                                              0                --> Si debo mostrarlo

          Yo necesito que solo se me muestre aquellas filas donde cálculo2  sea 0, y en el caso de que todas sean diferente de 0, no se me muestre ninguna, sino la tabla vacia. En el siguiene tema, me ayudaron con algo similar

                  Limitar IDs en una tabla

          El problema es que ahora es con estados alternos, y no consigo que me filtre bien, intento adaptar la expresión de la siguiente manera:

          

              count({<campo1= {"=count({EstadoB} distinct campo5) = 0"}>} {EstadoB}distinct campo5)

     Pero no me hace bien el filtado

¿Alguien ha hecho algo similar o ve el error en mi expresión?

Un saludo

1 Solution

Accepted Solutions
hector_munoz
Specialist
Specialist

Hola Jonay,

Hay varias formas de lograr lo que (creo) necesitas:

  1. Poner una condición en la expresión para que te calcule la suma solo si el resultado cumple la condición. En tu caso sustituir el "sum(valor)" por "If(sum(valor) > 5, sum(valor), 0)".
  2. Lo ideal es que no se ponga el 5 harcodeado y utilices una variable, p.e. 'vdLimiteInferior'. Así, si este es un límite que se utiliza en varios sitios y a posteriori lo tienes que cambiar, bastaría con actualizarlo solo una vez, p.e. en el script.
  3. Además, y para rizar el rizo (alguna vez nos lo han pedido) y como creo que pides en tu respuesta anterior, podrías tener un cuadro de lista con la operación a realizar sobre el resultado: >, >=, =, <=, < y así que se muestren solo los registros > 'vdLimiteInferior', o >= 'vdLimiteInferior'.
  4. Y como colofón, y esto es una cosa muy simple pero que a los usuarios les encanta, podrías tener una segunda variable que marcase el límite superior: 'vdLimiteSuperior'. Esta utilizada junto con 'vdLimiteInferior', en un deslizador permitiría seleccionar un rango de valores que serían los que se mostrarían en la tabla.

Te paso un ejemplo basado en el adjuntado por ti donde se muestra lo anterior: Tabla 1 con el punto de partida; tabla 2 con la expresión "If(sum(valor) > 5, sum(valor), 0)"; tabla 3 con la expresión "If(sum(valor) > vdLimiteInferior, sum(valor), 0)"; tabla 4 con la expresión condicional en función de la operación seleccionada en el cuadro de lista; y tabla 5 con la expresión en función de los valores seleccionados en el rango del deslizador.

Espero que te sirva.

Saludos,
H

View solution in original post

4 Replies
alexis_garcia
Creator II
Creator II

Hola Jonay,

Puedes adjuntar el documento?

Saludos.

Anonymous
Not applicable
Author

Buenas Alexis,

          Adjunto un ejemplo sencillo de lo que necesito hacer. En este hilo lo que necesitaba era sacar los que dieran 0, pero la problemática me ha surgido más veces y no consigo resolverla, por ejemplo que la expresión sea > 0

        En el ejemplo que monte, necesitaria que la tabla solo se mostrara los valores donde la expresión sea mayor que 5, es decir,

ID1 ID2 ID3 sum(valor)
27
1a28
2b26
3c16
2b14
1a33

En este caso deberia quedar 3 filas:


ID1 ID2  ID3  sum(valor)


1      a      2          8

2      b      2          6

3    c      1          6


Necesito poder limitar lo que se muestra en la tabla en función de la expresión sea  =, >, <    valor


¿Alguna sugerencia?



Un saludo


hector_munoz
Specialist
Specialist

Hola Jonay,

Hay varias formas de lograr lo que (creo) necesitas:

  1. Poner una condición en la expresión para que te calcule la suma solo si el resultado cumple la condición. En tu caso sustituir el "sum(valor)" por "If(sum(valor) > 5, sum(valor), 0)".
  2. Lo ideal es que no se ponga el 5 harcodeado y utilices una variable, p.e. 'vdLimiteInferior'. Así, si este es un límite que se utiliza en varios sitios y a posteriori lo tienes que cambiar, bastaría con actualizarlo solo una vez, p.e. en el script.
  3. Además, y para rizar el rizo (alguna vez nos lo han pedido) y como creo que pides en tu respuesta anterior, podrías tener un cuadro de lista con la operación a realizar sobre el resultado: >, >=, =, <=, < y así que se muestren solo los registros > 'vdLimiteInferior', o >= 'vdLimiteInferior'.
  4. Y como colofón, y esto es una cosa muy simple pero que a los usuarios les encanta, podrías tener una segunda variable que marcase el límite superior: 'vdLimiteSuperior'. Esta utilizada junto con 'vdLimiteInferior', en un deslizador permitiría seleccionar un rango de valores que serían los que se mostrarían en la tabla.

Te paso un ejemplo basado en el adjuntado por ti donde se muestra lo anterior: Tabla 1 con el punto de partida; tabla 2 con la expresión "If(sum(valor) > 5, sum(valor), 0)"; tabla 3 con la expresión "If(sum(valor) > vdLimiteInferior, sum(valor), 0)"; tabla 4 con la expresión condicional en función de la operación seleccionada en el cuadro de lista; y tabla 5 con la expresión en función de los valores seleccionados en el rango del deslizador.

Espero que te sirva.

Saludos,
H

Anonymous
Not applicable
Author

Muchas gracias Hector, me ha sido de enorme ayuda. Era justo lo que necesitaba.

Un saludo