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: 
rperezlaso
Contributor III
Contributor III

Contar id repetidos y mostrar consecutivos

Buenas Tardes,

tengo el siguiente problema :

  • Necesito calcular las veces que se va repitiendo un valor en funcion del id y que sea consecutivo.

 

partiendo de la siguiente información : 

TABLE:
LOAD * Inline
[
Id,casas
1, 213234
2, 234234
2, 345546
2, 234245
3, 345556
4, 543666
4, 543566
];

 

y necesito que el resultado sea :

id, casas, count consecutivo 
1, 213234,1
2, 234234,1
2, 345546,2
2, 234245,3
3, 345556,1
4, 543666,1
4, 543566,2

he probado distintos códigos en script pero no llego a la solución.

un saludo.

 

1 Solution

Accepted Solutions
rubenmarin

Hola, creo que solo necesitas:
Final:
LOAD Id, casas, If(Peek(Id)=Id, Peek(Contador)+1, 1) as Contador
Resident TABLE order by Id;

DROP Table TABLE;

View solution in original post

5 Replies
rubenmarin

Hola, creo que solo necesitas:
Final:
LOAD Id, casas, If(Peek(Id)=Id, Peek(Contador)+1, 1) as Contador
Resident TABLE order by Id;

DROP Table TABLE;
rperezlaso
Contributor III
Contributor III
Author

Muchas Gracias, 

esto es lo que necesitaba.

un saludo.

rperezlaso
Contributor III
Contributor III
Author

Buenos días,

para este resultado como me puedo quedar con los valores no repetidos ? 

id, casas, count consecutivo 
1, 213234,1
2, 234234,1
2, 345546,2
2, 234245,3
3, 345556,1
4, 543666,1
4, 543566,2 <-- este valor necesitaría eliminarlo ya que es igual al anterior ! 

rubenmarin

Buenas, en este caso los valores no son iguales, si queires quitar valores iguales dentro de un mismo id puedees usar:
Final:
LOAD * where not duplicado;
LOAD Id, casas, If(Peek(Id)=Id, Peek(Contador)+1, 1) as Contador, If(Peek(casas)=casas,1,0) as duplicado
Resident TABLE order by Id, casas;

Si quieres quedarte solo con primer código independientemente del id puedes usar:
Final:
LOAD Id, casas, If(Peek(Id)=Id, Peek(Contador)+1, 1) as Contador, casas as chkCasas
Resident TABLE where not Exists(chkCasas,casas) order by Id;
rperezlaso
Contributor III
Contributor III
Author

Disculpa ,

olvide poner iguales los 2 campos .

lo solucione haciendo un peek dentro de otro peek y asignando valor nulo y ocultandolo mas tarde en visualizacion o en una nueva tabla residente.

 

contador:
NoConcatenate
LOAD id,
casas,
If(Peek(id)=id,
If( Peek(casas)=casas ,
Null(),
Peek(Contador)+1
),
1
) as Contador
Resident TABLE order by id,casas;