Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
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!

Tags (1)
1 Solution

Accepted Solutions
mauroponte
Contributor II

Re: Contador no Sense

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.


8 Replies
maiconmello
Contributor III

Re: Contador no Sense

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
Contributor II

Re: Contador no Sense

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
Valued Contributor

Re: Contador no Sense

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.

Not applicable

Re: Contador no Sense

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
Contributor II

Re: Contador no Sense

Carlos,

Voce está utilizando o sense ou o Qlikview?

Not applicable

Re: Contador no Sense

O Sense

mario_sergio_ti
Valued Contributor

Re: Contador no Sense

mauroponte
Contributor II

Re: Contador no Sense

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.