Skip to main content
Announcements
Qlik Introduces a New Era of Visualization! READ ALL ABOUT IT
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Contador no Sense

Galera, bom dia.

Estou com uma dúvida acredito que seja básica para os feras aqui da Comunidade.

Tenho 2 tabelas uma chamada " Atendimentos " e outra chamada " Clientes " , onde possuem o mesmo nome de coluna chamada 'Pessoa' que trás o nome dos clientes.

Acontece que preciso fazer uma contagem de quantos clientes eu possuo somente na tabela " Clientes " e não na tabela " Atendimentos" .

Quando uso :

Count(distinct Pessoa)

Ele logicamente faz a contagem das 2 tabelas pois possuem o mesmo campo " Pessoa".

Pensei em alterar o nome do campo de uma das tabelas porém vou perder o relacionamento.

Conforme for a resposta nesse tópico usarei pra outras situações onde preciso usar apenas contagens de tabelas específicas.

Forte Abraço amigos!

1 Solution

Accepted Solutions
mauroponte
Creator II
Creator II

Carlos,

Voce tem algunas opçoes para isso, vou te dar duas.

A primeira é manter o nome original do campo Pessoa para nao perder o relacionamento, porem duplicanodo ela na tabela de clientes e renomeando, por exemplo no load para esse campo voce teria duas linhas:

Pessoa,

Pessoa    as Cliente_Pessoa,

Daí voce conta o campo Cliente_Pessoa.

Outra alternativa seria voce ter um campo que indique a tabela de origem dos registros da tabela de clientes, acrescentndo no load a seguinte linha por exemplo:

'CL'          as Tb_Cliente,

Nesse caso a expressão para contagem seria:

Count({<Tb_Cliente={'CL'}>}distinct Pessoa)


Espero ter ajudado.


View solution in original post

8 Replies
maiconmello
Creator III
Creator III

Bom dia Carlos,

Em seu Load cria uma string assim :

Load campos, 'Cliente' as TipoPessoa from tabela;

Na outra cria

'Atendimento' as TipoPessoa

No seu count pode usar assim : count({<TipoPessoa = {'Cliente'}Pessoa}>} assim ele irá buscar somente cliente.

mauroponte
Creator II
Creator II

Carlos,

Voce tem algunas opçoes para isso, vou te dar duas.

A primeira é manter o nome original do campo Pessoa para nao perder o relacionamento, porem duplicanodo ela na tabela de clientes e renomeando, por exemplo no load para esse campo voce teria duas linhas:

Pessoa,

Pessoa    as Cliente_Pessoa,

Daí voce conta o campo Cliente_Pessoa.

Outra alternativa seria voce ter um campo que indique a tabela de origem dos registros da tabela de clientes, acrescentndo no load a seguinte linha por exemplo:

'CL'          as Tb_Cliente,

Nesse caso a expressão para contagem seria:

Count({<Tb_Cliente={'CL'}>}distinct Pessoa)


Espero ter ajudado.


mario_sergio_ti
Partner - Specialist
Partner - Specialist

Amigo;

Não é recomendado realizar um Count() em campos chaves entre tabelas, por conta das cardinalidades;

No seu caso, utilize o Count() sobre um campo com densidade 100% (representando um registro por pessoa) e que não tenha ligação com a outras tabelas;

O ideal (boa prática) é criar um campo inteiro e sequencial na tabela que deseja contar;

Ex.:

Clientes:

Load

    RowNo() As 'SEQ_CLIENTE',

    Pessoa,

    ...

;

Se o registro de pessoa repetir na tabela Cliente, terá que utilizar Distinct;

De preferência em contar números.

Abraço.

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
Not applicable
Author

Obrigado Mauro, fiz conforme sua primeira dica e deu certo.

Consegue me tirar uma outra dúvida rápida por aqui por gentileza?

Tenho nessa mesma tabela de 'Clientes' a data de cadastro deles. Fiz uma linha do tempo mas gostaria que ela fosse acumulando a soma de um periodo para o outro.

Exemplo:

Atualmente ele me mostra assim:

2015 = 10 clientes

2016 = 5 clientes

2017 = 6 clientes

Porém gostaria que fosse:

2015 =10 clientes

2016 = 10 + 5 = 15 clientes

2017 = 10 + 5 + 6 = 21 clientes

TO usando um Count Distinct Pessoa.

porém teria que usar alguma função de soma após o count acredito eu.

mauroponte
Creator II
Creator II

Carlos,

Voce está utilizando o sense ou o Qlikview?

Not applicable
Author

O Sense

mario_sergio_ti
Partner - Specialist
Partner - Specialist

Incluindo saldo/acumulado via Script ou via Expressão

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
mauroponte
Creator II
Creator II

Carlos,

Tente o seguinte:

RangeSum(Above(count(ID_PEDI),0,NoOfRows(TOTAL)))

Analise a tabela e o grafico do QVF que estou anexando.

Sugiro tambem que de uma lida no post sugerido pelo mário.