Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
mena_ricardo
Partner - Contributor II
Partner - Contributor II

Count con Set Analisys

Hola,

tengo una tabla con lo siguiente:

ID_CLIENT          SOURCE

1                              S1

1                              S2

2                              S1

3                              S4

4                              S1

5                              S3

6                              S1

6                              S5

7                              S1

Un cliente puede provenir de varios orígenes, véase el cliente 1 que tiene 2 orígenes (S1 y S2).

Necesitaría saber en un KPI la cantidad de clientes que tienen más de un origen, en el ejemplo, serían sólo 2 clientes, por lo que el KPI debería sacar un 2

Muchas gracias

1 Solution

Accepted Solutions
hector_munoz
Specialist
Specialist

Hola Ricardo,

Con tu ejemplo prueba la siguiente expresión:

     Sum(If(Aggr(Count(DISTINCT SOURCE), ID_CLIENT) > 1, 1, 0))

Lo que haces es:

  • Crear una tabla temporal donde tienes por cada valor de ID_CLIENT el número de valores distintos de SOURCE (Aggr(Count(DISTINCT SOURCE), ID_CLIENT)).
  • Después con el If() marcas con un 1 aquellos ID_CLIENT que tienen más de un valor distinto de SOURCE.
  • Finalmente sumas el número total de 1s.

Espero que te sirva...

Saludos,
H

View solution in original post

6 Replies
jubarrosor
Partner Ambassador
Partner Ambassador

Hola:

Usaría una segunda tabla donde contaría el numero de origenes y usaría este nuevo campo para calcular el KPI deseado:

A:

LOAD * INLINE [

ID_CLIENT  ,        SOURCE

1  ,                            S1

1   ,                           S2

2    ,                          S1

3     ,                         S4

4      ,                        S1

5       ,                       S3

6        ,                      S1

6         ,                     S5

7          ,                    S1]

;

B:

LOAD

    ID_CLIENT,

    COUNT(SOURCE) AS NUM_SOURCES

RESIDENT A

GROUP BY ID_CLIENT;   

Un saludo,

Juan P. Barroso

hector_munoz
Specialist
Specialist

Hola Ricardo,

Con tu ejemplo prueba la siguiente expresión:

     Sum(If(Aggr(Count(DISTINCT SOURCE), ID_CLIENT) > 1, 1, 0))

Lo que haces es:

  • Crear una tabla temporal donde tienes por cada valor de ID_CLIENT el número de valores distintos de SOURCE (Aggr(Count(DISTINCT SOURCE), ID_CLIENT)).
  • Después con el If() marcas con un 1 aquellos ID_CLIENT que tienen más de un valor distinto de SOURCE.
  • Finalmente sumas el número total de 1s.

Espero que te sirva...

Saludos,
H

hector_munoz
Specialist
Specialist

Perdona Ricardo,

Esto lo harías en diseño: en un gráfico, objeto de texto, etc. y se le aplicaría cualquier selección que el usuario hiciera. Si quieres que esto no pase nunca o no en todos los casos, tendrías que combinarlo con análisis de conjuntos.

Saludos,
H

mena_ricardo
Partner - Contributor II
Partner - Contributor II
Author

Lo haría en un objeto KPI, voy a probar lo que me habéis propuesto y os cuento

Muchísimas gracias

mena_ricardo
Partner - Contributor II
Partner - Contributor II
Author

Ha funcionado perfectamente

Gracias de nuevo!

mena_ricardo
Partner - Contributor II
Partner - Contributor II
Author

Gracias, esto también me sirve si quiero poner en modo tabla el resultado, la verdad es que me ha ayudado mucho