Skip to main content
Announcements
Global Transformation Awards! Applications are now open. Submit Entry
cancel
Showing results for 
Search instead for 
Did you mean: 
sacosta5
Contributor III
Contributor III

condición en tabla pivotante - distinct

Hola...

teniendo la siguiente información

Load * inline

[Persona,Pract,dpto,cant

27000000,330101,LA CAPITAL,1

28000000,320101,LA CAPITAL,1

28000000,320101,INTERIOR,1

29000000,330000,INTERIOR,1

28000000,340000,INTERIOR,1

];

solamente quiero mostrar aquellas personas que tienen la misma practica en distinto departamento, en el caso del ejemplo quiero mostrar en un gráfico  la siguiente información:

Persona     Practica   LA CAPITAL       INTERIOR

28000000   320101             1                       1               --> suma de misma práctica en diferente dpto.

Utilizando la expresión if(Count(Distinct dpto )>1,sum(cant),0) logro determinar la persona que se hizo la misma práctica en distinto dpto  pero no logro mostrar en que departamentos. Me está faltando condicionar la dimensión? o de que manera lo puedo solucionar?.

Gracias.

1 Solution

Accepted Solutions
adriansalas
Contributor III
Contributor III

Se me ocurre una dimensión calculada con la función aggr para que sepas que tiene mas de un curso en diferente dpto.

Captura03.PNG

Si no son muchos dptos puedes hacerlas en columnas con diferentes expresiones.

Captura04.PNG

O puedes dejar la dimensión dpto y verlo por renglón

Captura05.PNG

View solution in original post

3 Replies
adriansalas
Contributor III
Contributor III

Se me ocurre una dimensión calculada con la función aggr para que sepas que tiene mas de un curso en diferente dpto.

Captura03.PNG

Si no son muchos dptos puedes hacerlas en columnas con diferentes expresiones.

Captura04.PNG

O puedes dejar la dimensión dpto y verlo por renglón

Captura05.PNG

rodri_morales
Creator II
Creator II

Otra solución sería en el script hacer un join con la misma tabla por el campo Persona y luego crear una flag evaluando Practica y Depto.

Sería algo así:

Ejemplo:

Load * inline

[Persona,Pract,dpto,cant

27000000,330101,LA CAPITAL,1

28000000,320101,LA CAPITAL,1

28000000,320101,INTERIOR,1

29000000,330000,INTERIOR,1

28000000,340000,INTERIOR,1

];

left join (Ejemplo)

LOAD

    Persona,

    Pract2,

    dpto2,

    cant2

Resident Ejemplo;

EjemploFinal:

LOAD

    Persona,

    Pract,

    dpto,

    cant,

    if(Pract=Pract2 and dpto<>dpto2, 1, 0)    as FlagPractica

Resident Ejemplo;

DROP Table Ejemplo;

De esta forma los registros que tengan la flag en 1 corresponden a personas que se hicieron la misma practica en dos deptos distintos. Luego queda jugar con las cantidades para ver como contar y obtener el resultado que necesitas.

Saludos!

sacosta5
Contributor III
Contributor III
Author

Adrián,

a partir de tu respuesta logré resolverlo condicionando las dimensiones de la siguiente manera:

=aggr(if(COUNT(DISTINCT dpto)>1,Persona),Persona,Pract).

Muchas gracias.