Qlik Community

New to Qlik Sense

Discussion board where members can get started with Qlik Sense.

Announcements
See why BI users voted Qlik #1 in 11 categories. GET REPORT
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Partner
Partner

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
Highlighted
Partner
Partner

@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
Highlighted
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!

Highlighted
Partner
Partner

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!

Highlighted
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

 

 

Highlighted
Partner
Partner

@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;

Highlighted
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;

Highlighted
Partner
Partner

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

Highlighted
Partner
Partner

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

 

Gracias!

Highlighted
Partner
Partner

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.

Highlighted
Partner
Partner

@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