Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
LSTR
Partner - Contributor II
Partner - Contributor II

En base a dos condiciones, sumar cero

Buenas tardes,

Tengo un campo EST_COB con dos string 'CSP' y 'CCP'.

En script o set analysis quiero saber la forma de contabilizar 1 si solo se encuentra el string 'CSP' y si se encuentran  'CSP' y 'CCP' que el conteo sea 0.

La relacion que busco es 2=0 y 1=1

Gracias!

Labels (1)
1 Solution

Accepted Solutions
LSTR
Partner - Contributor II
Partner - Contributor II
Author

@uroboros Buenas Tardes!

Ya lo solucione con set analysis. Comparto la resolución para quien lo necesite:

=COUNT
(
{<
MOV={'I'}


>}
DISTINCT SINIESTRO)


-

(COUNT
(
{<
MOV={'I'},
EST_COB={'CSP'},
EST_COB={'CPP'}


>}
DISTINCT SINIESTRO
)

+

(COUNT
(
{<
MOV={'I'},
EST_COB={'CSP'},
EST_COB={'EN_J'}



>}
DISTINCT SINIESTRO
))))

View solution in original post

9 Replies
uroboros
Creator
Creator

Hola @LSTR , tienes varias opciones, te diré dos.

1. un if en la gráfica, con la condición que dices: if(2=0 and 1=1, sum(),0)

2. Transferir esa condición al Script, de esa manera cuando lo pases a la gráfica harías solo Sum.

Si puedes pasanos más información para poder ayudarte de una mejor manera!

Saludos!

LSTR
Partner - Contributor II
Partner - Contributor II
Author

Hola @uroboros !! Gracias por la respuesta. Voy a hacer una explicacion mas completa para ver como me podes ayudar.

Caso1 – Siniestro con una sola cobertura:

 

Tengo el siniestro 1 con cobertura 001 y estado =”CSP”

 

Siniestro              Cobertura           Mov                                      ESTADO_COBERTURA

1                             001                         I                                              CSP

 

Ok, entonces cuento todas las cobertura con movimiento “I”(Total=1), y cuento las coberturas con movimiento “I” y estado = “CSP”(Total=1). Entonces 1=1, y este siniestro SI lo cuento como “CSP”

 

 

 

Caso2 – Siniestro con más de una cobertura(2 ó más):

 

Tengo el siniestro 2 con cobertura “001” y estado =”CSP, y otra cobertura “002” en otro estado distinto.

 

Siniestro              Cobertura           Mov                                      EST_COB

2                             001                         I                                              CSP

2                             002                         I                                              CPP( ó algún estado distinto de “CSP”)

 

Ok, entonces como hice para el siniestro “1”, cuento todas las cobertura con movimiento “I”(Total=2), y cuento todas las coberturas con movimiento “I” y estado = “CSP”(Total=1). Entonces tengo que  2=1, y  este siniestro NO   lo cuento como “CSP”.

 

Gracias!

uroboros
Creator
Creator

Bueno ahora lo leo un poco mejor, tengo un entendimiento más claro de tu situación.

Según lo que interpreto es que estas intentando realizar una especie de marcación.

Siendo así, la primera condición es si Mov = I, Siguiente,  es válidar si el estado es CSP

De esta manera lo haría así:

Data:
Load *,
if(MarcaMov = 1 and MarcaEs=1,1,0) as MarcaConteo;
Load
Siniestro,
Cobertura,
Mov,
Est_Cob,
If(Mov='I',1,0) as MarcaMov,
if(EST_COB='CSP',1,0) as MarcaEs
Resident DataOrigin;

Luego le haces conteo a MarcaConteo en tu gráfica y tendrás el resultado que buscas

 

 

LSTR
Partner - Contributor II
Partner - Contributor II
Author

@uroboros buenas tardes!

Probe de esa manera adaptando el script al mio pero me da un resultado completamente diferente.

Debe ser 0 segun el caso 2. Si tengo una Cobertura con otro ESTADO_COBERTURA que no sea 'CSP'

Caso2 – Siniestro con más de una cobertura(2 ó más):

 

Tengo el siniestro 2 con cobertura “001” y estado =”CSP, y otra cobertura “002” en otro estado distinto.

 

Siniestro              Cobertura           Mov                                      EST_COB

2                             001                         I                                              CSP

2                             002                         I                                              CPP( ó algún estado distinto de “CSP”)

Quizas transcribi mal tu script.

Lo deje asi:

Data:
Load *,
if(MarcaMov = 1 and MarcaEs=1,1,0) as MarcaConteo;

Mitabla:

LOAD

(todos los campos),

If(Mov='I',1,0) as MarcaMov,
if(EST_COB='CSP',1,0) as MarcaEs

From MiQVD;

uroboros
Creator
Creator

De acuerdo a lo que me estas contando, sería realizar un conteo de los estados, yo harìa algo más o menos de la siguiente manera:

Data:
Load *,
if(MarcaMov = 1 and MarcaEs=1,1,0) as MarcaConteo;
Load
Siniestro,
Cobertura,
Mov,
Est_Cob,
If(Mov='I',1,0) as MarcaMov,
if(EST_COB='CSP',1,0) as MarcaEs
Resident DataOrigin;

left join(Data)
Load
Siniestro,
Cobertura,
Mov,
count(Est_Cob) as MarcaEst_Cob
resident Data
Group by Siniestro,
Cobertura,
Mov;

Y por ultimo le decimos que nos retire los datos que no necesitamos

NoConcatenate

Data2:
Load *
if(MarcaEst_Cob>1,0,MarcaMov) as ConteoDefinitivo
Resident Data;

Drop table Data;

LSTR
Partner - Contributor II
Partner - Contributor II
Author

Buenas tardes @uroboros !!! Gracias por la ayuda, pero me trae muchos mas valores de los que deberia. Realmente es un misterio.

LSTR
Partner - Contributor II
Partner - Contributor II
Author

Pregunta, en el nuevo script, en base a que campo deberia hacer el conteo?

 

Gracias!

LSTR
Partner - Contributor II
Partner - Contributor II
Author

Por lo que veo, no estamos considerando la cobertura, si para un mismo siniestro hay dos numeros de coberturas diferentes y tiene diferentes campos en ESTADO_COBERTURA, este dato debe ser 0.

LSTR
Partner - Contributor II
Partner - Contributor II
Author

@uroboros Buenas Tardes!

Ya lo solucione con set analysis. Comparto la resolución para quien lo necesite:

=COUNT
(
{<
MOV={'I'}


>}
DISTINCT SINIESTRO)


-

(COUNT
(
{<
MOV={'I'},
EST_COB={'CSP'},
EST_COB={'CPP'}


>}
DISTINCT SINIESTRO
)

+

(COUNT
(
{<
MOV={'I'},
EST_COB={'CSP'},
EST_COB={'EN_J'}



>}
DISTINCT SINIESTRO
))))