Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
ruzivao1980
Creator
Creator

Comparar 2 loads

Boa tarde amigos....

Tenho 2 loads, um do Faturamento, onde eu tenho os clientes que eu vendi, e outro load do meu cadastro de clientes, contendo todo o meu cadastro. No Load Faturamento eu não tenho todos os clientes que eu tenho no cadastro de clientes, então:

Como eu comparo os 2 loads, ex: quero saber quantos clientes não efetuaram compras ou quantos clientes eu tenho ativo que compraram, lembrando que no cadastro de lientes tem um campo ATIVO.

Obrigado a todos pela ajuda!

Labels (1)
5 Replies
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Na carga podes ler primeiro as notas e depois os clientes.

Em alguma linha do LOAD poderias colocar a linha

LOAD

    CliCod,

    if(Exists(CliCod)=,'Sim','Não')                       as Cliente_Tem_Nota,

    ...

Da uma olhada no help como funciona o Exists(). Ele retorna True se o conteúdo do campo ja foi lido antes. Assim você saberia se o cliente ja foi lido no LOAD das notas e portanto tem nota.

Depois, com

count( distinct  {<Cliente_Tem_Nota={'Não'}>} CliCod )

podes saber quantos não compraram.

furtado@farolbi.com.br
ruzivao1980
Creator
Creator
Author

Bom dia, obrigado pelo retorno, mas nao sei se entendeu....

Tenho a tabela... FATURAMENTO_ATUAL, te me traz o meu faturamento, e a tabela CADASTRO_CLIENTE, que me traz todo cadastro, não entendi como vou comparar com o exists o COD_CLIENTE que tem no CADASTRO_CLIENTE e não tem no FATURAMENTO_ATUAL.

Me desculpe, poderia me explicar melhor....

ruzivao1980
Creator
Creator
Author

Tentei fazer o que vc me falou... mas ele me traz... o mesmo resultado do distinct que eu tinha feito com a positivação....

LOAD

--------

LOAD

    COD_CADASTRO as COD_CLIENTE,

    if(Exists(COD_CADASTRO)='Sim','Não') as Cliente_Tem_Nota

    FROM

$(vPasta)CADASTRO_CLIENTE_ATUAL.qvd

(qvd);

------

cadastro.png

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Roosevelt,

Sim, entendi.

Se voce esta criando o campo COD_CLIENTE na nota então o seu exists()  deveria ser


exists(COD_CLIENTE,COD_CADASTRO)

o Exists() retorno se o conteúdo do campo já existe.Mas tem que ser o campo que esta sendo criado

Segue um modelo exemplo.

2018-11-03 12_43_16-QlikView x64 - [F__tmp_Exists.qvw_].png

Nota:

LOAD * INLINE [

Nota , Valor , Cliente

1001 , 100   , A

1002 , 120   , B

1003 , 130   , C

1004 , 140   , D

1005 , 150   , F

1006 , 160   , H

1007 , 170   , J

];


Cliente:

LOAD

   Cliente,

   Nome,

   if(Exists(Cliente),'Sim','Não')     as Cliente_Tem_Nota

INLINE [

Cliente , Nome

A       , AAAAAAAAAA

B       , BBBBBBBBBB

C       , CCCCCCCCCC

D       , DDDDDDDDDD

E       , EEEEEEEEEE

F       , FFFFFFFFFF

G       , GGGGGGGGGG

H       , HHHHHHHHHH

I       , IIIIIIIIII

J       , JJJJJJJJJJ

];

furtado@farolbi.com.br
felipe_dutra
Partner - Creator
Partner - Creator

Boa noite, Roosevelt!

A solução apresentada pelo Alessandro atenderá sua necessidade, mas lembre de manter a leitura da tabela de faturamento antes da leitura da tabela de usuários.

Eu, particularmente, evito manter essas dependências no script, pois durante o desenvolvimento é comum alterar a posição das abas/seções, então busco, sempre que possível, usar mapeamento, e me preocupo apenas em manter a aba de mapeamentos antes das demais abas.

Para aplicar ao seu caso, basta criar um mapeamento do campo com o código do cliente proveniente da tabela de faturamento e depois aplicar o mapeamento durante a leitura da tabela de clientes.

Ficaria algo assim:

MapClienteFaturamento:

Mapping

Load Distinct

COD_CLIENTE,

'Sim' as Retorno

FROM

$(vPasta)FATURAMENTO_ATUAL.qvd

(qvd);

CADASTRO_CLIENTE_ATUAL:

LOAD *

    COD_CADASTRO as COD_CLIENTE,

    ApplyMap('MapClienteFaturamento', COD_CADASTRO,'Não') AS Cliente_Tem_Nota

    FROM

$(vPasta)CADASTRO_CLIENTE_ATUAL.qvd

(qvd);

Abs,

Felipe