Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal, boa tarde!
Estou com uma dúvida, onde peço ajuda de vocês para se possível me ajudar. Bom, estou fazendo um Join entre algumas tabela para classificar os dados, visando facilidade de trabalhar no Set Analysis. A primeira deu certo, contudo, gostaria de fazer uma outra condição e é aí que estou travando. Abaixo disponibilizo o script:
// ----- CLASSIFICAÇÃO SITUAÇÃO PDV ----- //
Table1:
LOAD clienteID,
statusPDV
FROM
Join
Table2:
// SISTEMA 1
LOAD clienteID,
numeroTerminal
FROM
Where
(Situação = 'Ativo' or
Situação = 'Credenciado' );
Join
Table3:
// SISTEMA 2
LOAD clienteID,
numeroTerminal
FROM
Where
(Situacao = 'Em Instalacao' or
Situacao = 'Em Operacao' or
Situacao = 'Inoperante' );
Join
Table4:
//VENDA LOCAL 1
LOAD clienteID,
valorBruto,
tipoProduto
FROM
Where
(Negócio <> 'Produto Fisico');
Join
Table5:
//VENDA LOCAL 2
LOAD clienteID,
valorBruto,
tipoProduto
FROM
Join
Table6:
//VENDA LOCAL 3
LOAD clienteID,
valorBruto,
tipoProduto
FROM
[VERIFICAÇÃO SITUAÇÃO PDV]: ------------ FUNCIONOU
LOAD clienteID,
if(statusPDV = 'INATIVO' and isnull(valorBruto) and isnull(numeroTerminal),null(),'Sim') as verificacaoSituacaoPDV
Resident Table1;
[VERIFICAÇÃO TIPO CLIENTE]: ------------ NÃO FUNCIONOU
LOAD clienteID,
if(statusPDV = 'INATIVO' and isnull(valorBruto) and isnull(numeroTerminal),null(),if(isnull(valorBruto) and isnull(numeroTerminal),'Físico','Eletrônico')) as verificacaoTipoCliente
Resident Table1;
DROP Table Table1;
O problema é que ele acaba sinalizando tanto cliente Físico quanto Eletrônico, porém notem que pela regra acima não deveria ocorrer isso no cliente abaixo:
Saberiam me dizer onde estou errando?
Seu IF esta estranho...
Descreva qual seria a regra para o campo verificacaoTipoCliente
Rafael, boa noite.
Sem um qvd para analisar, fica difícil (pelo menos para mim).
Tem um join com o numeroterminal e depois as vendas. Neste caso, me parece que vai ocorrer um "produto cartesiano" entre todos os terminais (numeroterminal) e os produtos vendidos.
LOAD clienteID,
numeroTerminal
FROM
Join
LOAD clienteID,
valorBruto,
tipoProduto
Acho que teria que rever estes joins. Talvez esteja influenciando no seu if.....
Yuri, bom dia!
A regra no campo "vericacaoTipoCliente" é a seguinte:
- Se o Cliente não vendeu (valorBruto) e não tem Terminal alocado (numeroTerminal) considero ele como um cliente do tipo "Físico", caso contrário do tipo "Eletrônico".
Obrigado, Abraço!
Opa Alessandro, bom dia!
Pode ser também, mas tive que agregar vários Join's, pois eu preciso agregar várias tabelas para composição da Regra. Exemplo: Tenho uma tabela para Terminais (de dois sistemas diferentes), outra tabela com vendas, etc...
Se tiver sugestão para ajustar os Join's
# Não consigo enviar o QVD pelo fato de ser uma base corporativa.
Obrigado, Abraço!
Rafael,
eu não sei o que é o terminal de vendas. Se for o que o nome diz, ele não deveria estar no arquivo de vendas (data, valor , produto , terminal) ?
Imagina um cliente com 10 terminais. As vendas realizadas de/para este cliente como nao tem o terminal e o join vai ligar ao cliente / terminal, gerando muito mais registros que o necessário ("replicando" as vendas para cada terminal do cliente). Se ao inves de dar um join no terminal simplesmente desse um load e deixasse em outra tabela, nao diminuiria a quantidade de registros da sua tabela final (ver em CTRL ALT D tabelas)
Pessoal,
Como tinha uma fórmula no Set Analysis que estava dando certo, tentei realizar via Group By. Funcionou até certa parte!
Só não está funcionando 100% pois não estou conseguindo inserir uma condição no IF. A fórmula que estou utilizando no Set é a seguinte:
If(Count(numeroTerminal) = 0 and Sum(tipoProduto={'Eletrônico'}>} valorBruto) = 0,'Físico','Eletrônico')
Porém não estou conseguindo adicionar a parte da condicional do valorBruto no Script (em vermelho). Alguém já conseguiu fazer funcionar?
# Ao tirar a condição do valorBruto a informação bate 100%.
Abraço!
Então o IF ficaria dessa forma:
Considerando que o valorBruto esteja nulo caso não tenha venda.
if(isnull(valorBruto) and isnull(numeroTerminal),'Físico','Eletrônico') as verificacaoTipoCliente
Por que não faz um left join group by no script e se tiver valor coloca 1 senão zero e na expressão verifica se 1 ou 0
Yuri,
Estava fazendo exatamente isso, só tinha uma condicional antes (parte vermelha):
if(statusPDV = 'INATIVO' and isnull(valorBruto) and isnull(numeroTerminal),null(),if(isnull(valorBruto) and isnull(numeroTerminal),'Físico','Eletrônico')) as verificacaoTipoCliente
A parte azul é praticamente igual a sua sugestão. Estou tentando fazer uma condição através do Group By, onde está quase dando certo. A única situação é que não consigo adicionar a parte condicional do valorBruto (sinalizado em vermelho) no script.
Sum({$<tipoProduto={'Eletrônico'}>} valorBruto) = 0
Saberia alguma forma para adicionar isso no script?
Obrigado, Abraço!