Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
phpazini
New Contributor III

Contar número de registros que forem iguais

Bom dia pessoal, alguma dica de como eu posso fazer para contar um determinando número de registros porém seguindo as premissas abaixo:

o script vai importando os dados começando com 1 para a primeira vez que aparecer o código que está na coluna 2.
E quando na coluna 2 encontrar um segundo registro de mesmo código ele conta 2, e assim sucessivamente até ler todo o arquivo.

Base de dados:

000078 01744 26/03/2018 11:58

000079 02158 26/03/2018 11:58

000080 02211 26/03/2018 11:58

000081 00692 26/03/2018 11:59

000082 02284 26/03/2018 11:59

000083 00140 26/03/2018 11:59

000084 01744 26/03/2018 12:00

000085 02179 26/03/2018 12:00

000086 02265 26/03/2018 12:00

000087 00944 26/03/2018 12:00

000088 00771 26/03/2018 12:00

000089 01998 26/03/2018 12:01

000090 02175 26/03/2018 12:01

000091 02200 26/03/2018 12:02

000092 02046 26/03/2018 12:03

000093 01744 26/03/2018 12:04

000094 02155 26/03/2018 12:04

000095 02298 26/03/2018 12:05

000096 02266 26/03/2018 12:07

000097 00178 26/03/2018 12:07

000098 02143 26/03/2018 12:09

000099 02159 26/03/2018 13:00

000100 02310 26/03/2018 13:00

000101 01227 26/03/2018 13:01

000102 02211 26/03/2018 13:04

000103 00140 26/03/2018 13:08

000104 02104 26/03/2018 13:09

000105 02158 26/03/2018 13:12

000106 01744 26/03/2018 13:12

Exemplo que gostaria que ficasse, na tabela abaixo foi encontrado o mesmo código (1744) 4 vezes.

000078 01744 26/03/2018 11:58 1

000079 02158 26/03/2018 11:58 1

000080 02211 26/03/2018 11:58 1

000081 00692 26/03/2018 11:59 1

000082 02284 26/03/2018 11:59 1

000083 00140 26/03/2018 11:59 1

000084 01744 26/03/2018 12:00 2

000085 02179 26/03/2018 12:00 1

000086 02265 26/03/2018 12:00 1

000087 00944 26/03/2018 12:00 1

000088 00771 26/03/2018 12:00 1

000089 01998 26/03/2018 12:01 1

000090 02175 26/03/2018 12:01 1

000091 02200 26/03/2018 12:02 1

000092 02046 26/03/2018 12:03 1

000093 01744 26/03/2018 12:04 3

000094 02155 26/03/2018 12:04 1

000095 02298 26/03/2018 12:05 1

000096 02266 26/03/2018 12:07 1

000097 00178 26/03/2018 12:07 1

000098 02143 26/03/2018 12:09 1

000099 02159 26/03/2018 13:00 1

000100 02310 26/03/2018 13:00 1

000101 01227 26/03/2018 13:01 1

000102 02211 26/03/2018 13:04 1

000103 00140 26/03/2018 13:08 1

000104 02104 26/03/2018 13:09 1

000105 02158 26/03/2018 13:12 1

000106 01744 26/03/2018 13:12 4

É possível?

Tags (1)
1 Solution

Accepted Solutions
mario_sergio_ti
Valued Contributor

Re: Contar número de registros que forem iguais

temp_Tab_Dados:

Load * Inline [

NUM1 NUM2 DATA HORA

000078 01744 26/03/2018 11:58

000079 02158 26/03/2018 11:58

000080 02211 26/03/2018 11:58

000081 00692 26/03/2018 11:59

000082 02284 26/03/2018 11:59

000083 00140 26/03/2018 11:59

000084 01744 26/03/2018 12:00

000085 02179 26/03/2018 12:00

000086 02265 26/03/2018 12:00

000087 00944 26/03/2018 12:00

000088 00771 26/03/2018 12:00

000089 01998 26/03/2018 12:01

000090 02175 26/03/2018 12:01

000091 02200 26/03/2018 12:02

000092 02046 26/03/2018 12:03

000093 01744 26/03/2018 12:04

000094 02155 26/03/2018 12:04

000095 02298 26/03/2018 12:05

000096 02266 26/03/2018 12:07

000097 00178 26/03/2018 12:07

000098 02143 26/03/2018 12:09

000099 02159 26/03/2018 13:00

000100 02310 26/03/2018 13:00

000101 01227 26/03/2018 13:01

000102 02211 26/03/2018 13:04

000103 00140 26/03/2018 13:08

000104 02104 26/03/2018 13:09

000105 02158 26/03/2018 13:12

000106 01744 26/03/2018 13:12

](delimiter is ' ');

Tab_Dados:

Load

   NUM1,

   NUM2,

   DATA,

   HORA,

   If(Peek(NUM2)=NUM2, RangeSum(Peek(QtdNum2), 1), 1) As 'QtdNum2'

Resident temp_Tab_Dados

Order By NUM2, NUM1, DATA, HORA;

DROP Table temp_Tab_Dados;

10 Replies
thiago_justen
Valued Contributor III

Re: Contar número de registros que forem iguais

Assim:

PONTO:

LOAD * INLINE [

ID,     COD,   DATA,       HORA

000078, 01744, 26/03/2018, 11:58

000079, 02158, 26/03/2018, 11:58

000080, 02211, 26/03/2018, 11:58

000081, 00692, 26/03/2018, 11:59

000082, 02284, 26/03/2018, 11:59

000083, 00140, 26/03/2018, 11:59

000084, 01744, 26/03/2018, 12:00

000085, 02179, 26/03/2018, 12:00

000086, 02265, 26/03/2018, 12:00

000087, 00944, 26/03/2018, 12:00

000088, 00771, 26/03/2018, 12:00

000089, 01998, 26/03/2018, 12:01

000090, 02175, 26/03/2018, 12:01

000091, 02200, 26/03/2018, 12:02

000092, 02046, 26/03/2018, 12:03

000093, 01744, 26/03/2018, 12:04

000094, 02155, 26/03/2018, 12:04

000095, 02298, 26/03/2018, 12:05

000096, 02266, 26/03/2018, 12:07

000097, 00178, 26/03/2018, 12:07

000098, 02143, 26/03/2018, 12:09

000099, 02159, 26/03/2018, 13:00

000100, 02310, 26/03/2018, 13:00

000101, 01227, 26/03/2018, 13:01

000102, 02211, 26/03/2018, 13:04

000103, 00140, 26/03/2018, 13:08

000104, 02104, 26/03/2018, 13:09

000105, 02158, 26/03/2018, 13:12

000106, 01744, 26/03/2018, 13:12

];

FINAL:

Load

*,

If(Previous(COD)=COD,Peek(Frequencia)+1,1) as Frequencia

Resident PONTO ORDER BY COD ASC;

drop Table PONTO;

Resultado:

Capturar.PNG

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
mario_sergio_ti
Valued Contributor

Re: Contar número de registros que forem iguais

temp_Tab_Dados:

Load * Inline [

NUM1 NUM2 DATA HORA

000078 01744 26/03/2018 11:58

000079 02158 26/03/2018 11:58

000080 02211 26/03/2018 11:58

000081 00692 26/03/2018 11:59

000082 02284 26/03/2018 11:59

000083 00140 26/03/2018 11:59

000084 01744 26/03/2018 12:00

000085 02179 26/03/2018 12:00

000086 02265 26/03/2018 12:00

000087 00944 26/03/2018 12:00

000088 00771 26/03/2018 12:00

000089 01998 26/03/2018 12:01

000090 02175 26/03/2018 12:01

000091 02200 26/03/2018 12:02

000092 02046 26/03/2018 12:03

000093 01744 26/03/2018 12:04

000094 02155 26/03/2018 12:04

000095 02298 26/03/2018 12:05

000096 02266 26/03/2018 12:07

000097 00178 26/03/2018 12:07

000098 02143 26/03/2018 12:09

000099 02159 26/03/2018 13:00

000100 02310 26/03/2018 13:00

000101 01227 26/03/2018 13:01

000102 02211 26/03/2018 13:04

000103 00140 26/03/2018 13:08

000104 02104 26/03/2018 13:09

000105 02158 26/03/2018 13:12

000106 01744 26/03/2018 13:12

](delimiter is ' ');

Tab_Dados:

Load

   NUM1,

   NUM2,

   DATA,

   HORA,

   If(Peek(NUM2)=NUM2, RangeSum(Peek(QtdNum2), 1), 1) As 'QtdNum2'

Resident temp_Tab_Dados

Order By NUM2, NUM1, DATA, HORA;

DROP Table temp_Tab_Dados;

thiago_justen
Valued Contributor III

Re: Contar número de registros que forem iguais

mario.sergio.ti‌também tinha feito algo com o RangeSum() mas o que postei gerou o mesmo resultado.

O que seria, na tua opinião, mais performático? Há muita diferença?

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
mario_sergio_ti
Valued Contributor

Re: Contar número de registros que forem iguais

Foi rápido em... rsrs

mario_sergio_ti
Valued Contributor

Re: Contar número de registros que forem iguais

Sim, mesmo resultado. Depois que terminei de postar, a sua resposta apareceu...

As funções "Range*" são performáticas, recomendo utiliza-los.

Acrescentei mais campos no Order By para caso a origem dos dados possam vir diferentes em algum momento.

thiago_justen
Valued Contributor III

Re: Contar número de registros que forem iguais

Entendido mestre!

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
mario_sergio_ti
Valued Contributor

Re: Contar número de registros que forem iguais

Mas essa diferença só é significativa para grandes volumes de dados.

phpazini
New Contributor III

Re: Contar número de registros que forem iguais

E agora marco resposta correta pra quem? kkkk

mario_sergio_ti
Valued Contributor

Re: Contar número de registros que forem iguais

kkkkk... Pode ser qualquer um... o importante é marcar a resposta como correta.

Abraço amigo.