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

Cálculo con interseccion, union y exclusión

Hola, tengo una duda de como hacer una operación entre conjuntos. La operación que necesito realizar es la siguiente

     B -  (A interseccion B)

Lo que quiero es sacar los IDs que salgan de esa operación.

A --> puedo sacarlo facilmente porque son ID que cumpla una condicion

B --> a su vez seria una unión

       count({<campo1 = $:: campo1> + <campo2 = $::campo2>} ID)



Ahora mi duda es, que sintaxis debo usar para poder construir toda la operación. Partiendo de que tengo B y debe ser correcto en principio, como le puedo añadir interseccion (*) y al resultado de eso hacer la exclusión


Las operaciones en si las conozco *,+, -, pero lo que dudo es como poder consturir una expresión algo compleja como esa



Un saludo

1 Solution

Accepted Solutions
jolivares
Specialist
Specialist

Te hice un ejemplo bastantes sencillo que puedes utilizar colocarlo en tu aplicacion:

Si tienes un conjunto  A= 1..7, B=5..10

Capture.PNG

Expresion de A = Only({<F1={"<=7"}>} F1)

Expresion de B = Only({<F1={">=5"}>} F1)


Entonces A Inters B

Only({<F1={"<=7"}>*<F1={">=5"}>}F1)


B - (A Inters B)

Only({<F1={">=5"}>-<F1={"<=7"}>*<F1={">=5"}>}F1)

View solution in original post

5 Replies
jolivares
Specialist
Specialist

Te hice un ejemplo bastantes sencillo que puedes utilizar colocarlo en tu aplicacion:

Si tienes un conjunto  A= 1..7, B=5..10

Capture.PNG

Expresion de A = Only({<F1={"<=7"}>} F1)

Expresion de B = Only({<F1={">=5"}>} F1)


Entonces A Inters B

Only({<F1={"<=7"}>*<F1={">=5"}>}F1)


B - (A Inters B)

Only({<F1={">=5"}>-<F1={"<=7"}>*<F1={">=5"}>}F1)

ramoncova06
Specialist III
Specialist III

Puedes usar exclude para lograr lo que quieres

count({<ID =e ({< ID = {"=count({<Campo_a ={'A'}>*<Campo_b ={'b'}>}ID) > 0"}>}) >} ID)

Anonymous
Not applicable
Author

Buenas Juan,

Entiendo bien el ejemplo que has construido, la cuestión es que siempre esta condicionado a que F1 sea <,>,<=, etc que un valor.

En mi caso, yo no tengo que condicionarlo a un valor. Te intento explicra mejor. Tengo 3 tablas:

Tabla1: ID,IDComun,campo1, campo2...

Tabla2:IDComun,campo3,campo4

Tabla3:IDComun,campo5,campo6

Como ves todas las tablas tienen un campo,que es un IDComun, entonces lo que yo estaba haciendo era algo del tipo

    count ({<campo2 = $::campo2>}IDComun)

De esa forma le estaba indicando que quiero que me cuente los IDComun, pero solo aquellos que esten en la Tabla1

Es decir, yo no puedo fijarlo en base a un valor, sino que tengo que fijar en base a alguno de los campos que tiene y que los diferencia del resto

Siento que no haya quedado claro antes

¿alguna sugerencia?

Un saludo

jolivares
Specialist
Specialist

Igual no importa, puedes hacer la referencia con el campo que quieres y colocar los cojuntos de esa manera, lo hice asi para que vieras mejor como funciona.

Basicamente si ya tienes los cojuntos armados lo que tienes que hacer es colocarlos de esa manera.

Anonymous
Not applicable
Author

Muchas gracias por tu ayuda. Aunque mis conjuntos son más complejos, con tu ejemplo sencillo lo entendí perfectamente. Y solo faltaba una vez teniendo seleccionado lo que quiero, un count, con aggr,

Un saludo