Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Possuo uma tabela de vendas que tem os seguintes campos
VENDAS:
vendedor
produto
mês
ano
qtde
valor
Tenho outra tabela de metas assim
METAS:
vendedor
mês
meta
Preciso fazer uma comparação da meta com a soma das vendas mês a mês, vendedor a vendedor.
Pode acontecer do vendedor ter meta para aquele mês e não ter venda alguma.
Também vou precisar somar vários vendedores de um grupo para ver a venda acumulada versus a meta acumulada do grupo.
Já tentei linkar as duas tabelas porém ao multiplicar VENDAS x METAS as metas estão sendo somadas. Por exemplo, se o vendedor fez 3 vendas, a meta dele é triplicada quando não deveria.
Alguma dica ?
Olá, poderia sim, mas por questões de boa prática e performance em QlikView, sempre devemos utilizar o campo chave como numérico.
Se você seguir como esta no blog não terá problemas, nem de duplicação de registro e nem o problema de ter venda e não ter meta ou vice-versa.
Abraços.
Tonial.
Obrigado pela resposta.
Sua dica é válida e resolve o problema da referência circular entre as tabelas. Mas e a questão da multiplicação das linhas ? Também gostaria de saber porque usar a função autonumber() ? Não bastaria simplesmente concatenar os campos para formar a nova chave ?
No seu exemplo você usa a seguinte expressão
AutoNumber(Data&'|'&[Código Vendedor]) as %ChaveLinkTable
Porque não simplesmente
(Data&'|'&[Código Vendedor]) as %ChaveLinkTable
?
Aqui na empresa temos o mesmo caso que o seu, segue o script :
[Previsão]:
LOAD
TEXT(ID_VENDEDOR) AS ID_VENDEDOR,
TEXT(ID_CLIENTE) AS ID_CLIENTE,
TEXT(ID_MUNICIPIO) AS ID_MUNICIPIO,
ANO,
MES,
TEXT(ID_CULTURA) AS ID_CULTURA,
TEXT(ID_PRODUTO) AS ID_PRODUTO,
QTD_PREVISAO AS [Quantidade Previsão],
QT_LT_KGV,
VALOR_PREVISAO AS [Valor Previsão]
;
[Movimento]:
LOAD
TEXT(OPERACAO) AS ID_OPERACAO,
TEXT(NOTA_FISCAL) AS NR_NOTAFISCAL,
TEXT(SERIE) AS NR_SERIE,
ANO,
MES,
TEXT(ID_VENDEDOR) AS ID_VENDEDOR,
TEXT(ID_PRODUTO) AS ID_PRODUTO,
TEXT(ID_CLIENTE) AS ID_CLIENTE,
TEXT(ID_MUNICIPIO) AS ID_MUNICIPIO,
TEXT(ID_CULTURA) AS ID_CULTURA,
QUANT_V AS QT_VENDA,
VALOR_V AS VL_VENDA,
QUANT_D AS QT_DEVOLUCAO,
VALOR_D AS VL_DEVOLUCAO,
QUANT_VF AS QT_VENDAFUTURA,
VALOR_VF AS VL_VENDAFUTURA,
VALOR_DVF AS VL_DEV_VENDAFUTURA,
QUANT_SR AS QT_REMESSA,
VALOR_SR AS VL_REMESSA,
QUANT_PV AS QT_PEDIDO,
VALOR_PV AS VL_PEDIDO
;
Olá, poderia sim, mas por questões de boa prática e performance em QlikView, sempre devemos utilizar o campo chave como numérico.
Se você seguir como esta no blog não terá problemas, nem de duplicação de registro e nem o problema de ter venda e não ter meta ou vice-versa.
Abraços.
Tonial.
Fernando, estou vendo que preciso aprender urgente essa "pratica" de carga de dados, vou começar a praticar com frequencia..
No caso o código de vendedor que uso não é 100% numérico. Sendo assim, imagino que a função autonumber() não pode ser usada. Estou correto ?
Boa tarde João.
A função AutoNumber pode ser utilizada idependente se o campo é numérico ou não.
No caso apresentado pelo Fernando Tonial, em que esta função é feita com a concatenação de campos de uma tabela, a função AutoNumber irá transformar esta concatenação em um registro único numérico.
Abraço!
Então a função autonumber() gera um hash code único a partir dos argumentos fornecidos como parâmetro, é isso ?
De fato o problema da referência circular foi resolvido. Porém, continuo tendo uma multiplicação da meta.
Assim, se o vendedor tem meta de 100 mil reais, se ele fez 3 vendas, a meta aparece 300 mil reais e não 100 mil. Ou seja, a associação da tabela de meta com a tabela de vendas continua sendo m:n quando deveria ser 1:n.