Skip to main content
Announcements
Qlik Introduces a New Era of Visualization! READ ALL ABOUT IT
cancel
Showing results for 
Search instead for 
Did you mean: 
imoratal
Creator
Creator

valor de una tabla

Hola tengo una tabla de esta forma:

PEDIDO  PRODUCTO TONO    €

1                     A                   Azul      10

1                    B                                  10

2                     C                 Verde   20

Quiero sacar los pedidos cpmpletos que tengan algún valor en Tono vacío, por ejemplo mediante un botón que ponga pedidos no fabricados... Lo estaba haciendo con un campo dentro de la tabla que IF(tono='', 'NO FABRICADO',  'FABRICADO') pero eso me pone el valor en cada linea y yo quiero que si hay alguna linea en el pedido que no tenga tono entonces el pedido entero es NO FABRICADO

 

2 Solutions

Accepted Solutions
JGMDataAnalysis
Creator III
Creator III

CalculatedDimension_QC.PNG

 

 

=If(Aggr(NoDistinct Min({1} Len(Trim([TONO]))), [PEDIDO]), 'FABRICADO', 'NO FABRICADO')

View solution in original post

JGMDataAnalysis
Creator III
Creator III

La función Aggr me permite generar una tabla virtual con la expresión Min({1} Len(Trim([TONO]))) agrupada por el campo [PEDIDO].

Len(Trim([TONO])) devuelve la cantidad de caracteres por cada valor del campo [TONO]. Para null y cadena vacía el resultado será cero.

De acuerdo a esto, la función Min devolverá cero para todos los [PEDIDOs] que tengan al menos un registro con valor null o cadena vacía en el campo [TONO]. Para los [PEDIDOs] que no cumplan con esto, Min devolverá un valor distinto de cero.

Luego, la función If recibe como condición lógica los valores devueltos por la función Min (en combinación con Aggr) que incluyen ceros (valor si falso) y números distintos de cero (valor si verdadero).

Cabe señalar que el identificador de conjunto {1} de la función Min se añade para evitar que las selecciones del usuario afecten la clasificación de los pedidos.

 

View solution in original post

8 Replies
rubenmarin

Buenas, podrías cargar los pedidos incompletos en un tabla mapping y aplicar la tabla al cargar los pedidos:

mapPedidoIncompleto:
Mapping LOAD PEDIDO, 1 as esPedidoIncompleto
From/Resident ...
Where Len(Trim(TONO))=0;

Pedidos:
LOAD ...,
  ApplyMap('mapPedidoIncompleto', PEDIDO, 0) as esPedidoIncompleto
From/Resident...;

O cargar los pedidos incompletos en un campo para comprobar con exists:

chkPedidoIncompleto:
LOAD Distinct PEDIDO as chkPedidoIncompleto
From/Resident ...
Where Len(Trim(TONO))=0;

Pedidos:
LOAD ...,
  If(Exists('chkPedidoIncompleto', PEDIDO), 1, 0) as esPedidoIncompleto
From/Resident...;

DROP Table chkPedidoIncompleto;

Saludos.

imoratal
Creator
Creator
Author

Pero sin tocar el script directamente en el gráfico no se puede hacer con alguna funcion como EXISTS?

JGMDataAnalysis
Creator III
Creator III

CalculatedDimension_QC.PNG

 

 

=If(Aggr(NoDistinct Min({1} Len(Trim([TONO]))), [PEDIDO]), 'FABRICADO', 'NO FABRICADO')

rubenmarin

No, exists es solo una función de script y mapping también. Lo recomendable sería tenerlos marcados en el script.

También hay que tener en cuenta si el valor es un valor nulo o un valor vacío, que son cosas distintas. ¿De qué clase de valor estamos hablando? ¿Puedes subir un ejemplo aunque sea con datos creados manualmente para ver el caso concreto?

imoratal
Creator
Creator
Author

El valor es nulo por eso pongo ' '

rubenmarin

Eso sería un valor vacío, no un valor nulo, es decir, el campo tiene valor, pero es un valor vacío, nulo sería ni no tuviese absolutamente nada.

De todas formas la expresión de JGMDataAnalysis te puede servir en ambos casos.

imoratal
Creator
Creator
Author

que significa (Aggr(NoDistinct Min({1} Len(Trim([TONO])))????

JGMDataAnalysis
Creator III
Creator III

La función Aggr me permite generar una tabla virtual con la expresión Min({1} Len(Trim([TONO]))) agrupada por el campo [PEDIDO].

Len(Trim([TONO])) devuelve la cantidad de caracteres por cada valor del campo [TONO]. Para null y cadena vacía el resultado será cero.

De acuerdo a esto, la función Min devolverá cero para todos los [PEDIDOs] que tengan al menos un registro con valor null o cadena vacía en el campo [TONO]. Para los [PEDIDOs] que no cumplan con esto, Min devolverá un valor distinto de cero.

Luego, la función If recibe como condición lógica los valores devueltos por la función Min (en combinación con Aggr) que incluyen ceros (valor si falso) y números distintos de cero (valor si verdadero).

Cabe señalar que el identificador de conjunto {1} de la función Min se añade para evitar que las selecciones del usuario afecten la clasificación de los pedidos.