Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Seguindo o tutorial Recipe for a Pareto Analysis
Consegui aplicar perfeitamente em minha base de dados de produtos.
Agora estou tentando classificar a curva ABC por quantidade de vendas e não mais pelo total R$ de vendas.
O resultado que preciso é saber a quantidade total de produtos para cada curva conforme exemplo abaixo:
CURVA | QUANTIDADE DE PRODUTOS |
---|---|
A | 1.000 |
B | 4.000 |
C | 5.000 |
Marcio, entendo que seria apenas uma mudança de expressão, passando a considerar um COUNT
Marcio, entendo que seria apenas uma mudança de expressão, passando a considerar um COUNT
Bom dia Marcio Morais, geralmente utilizo o Rank.
rank(campo) define como inteiro. Gráfico tabela simples.
Foi a primeira coisa que tentei mas não funcionou, os valores não batem
o problema é que preciso contar a partir de uma classificacao já existente conforme o exemplo do tutorial Recipe for a Pareto Analysis
Se possível poste um qvw de exemplo.
Segue o QVW
A tabela ABC Vendas está correta.
Mas a tabela ABC Quantitativa está informando as quantidades erradas.
A curva A não possui 1001 produtos e sim 117
A curva B o certo seriam 177, curva C o certo 266
Acredito que a melhor forma de fazer isso é definir sua classificação já no script , criando um campo ABC.
Mas caso você precise fazer na aplicação mesmo, eu traria os dados já de forma decrescente pelo campo MEDIA e tentaria algo assim na dimensão:
if( aggr(RangeSum(Above(sum(MEDIA), 1, RowNo())) / sum(total MEDIA) , CODPROD) <= 0.50 , 'A' , ....
A classificação está fazendo tudo certinho acho que falta algum detalhe nas configurações no tempo de execução na tabela ABC Quantitativa. Parece que o qlikview não está entendendo da forma que deveria.
olhando sua dimensão da tabela ABC Quantitativa, imagino que seu if esta sendo interpretado assim:
if( rank / total de produtos <= 0.5 , 'A' ...
1001 / 2000 (total de produtos) = 0.5005 (arredonda pra 0.5)
ou seja tudo que o resultado do rank for <= 1001 vai contar
if( rank / total de produtos <= 0.7 , 'B' ...
1401/ 2000 = 0.7005 (arredonda pra 0.7) ou seja tudo que nao é A (rank até 1001) e o resultado do rank é <= 1401, vai contar , ou seja , 1401-1001 = 400 ....
e assim por diante....
pra chegar no resultado que você quer por uma expressão, a única maneira que eu consigo ver no momento é se seus dados dessa tabela já vierem classificados no script de forma decrescente pelo campo MEDIA, dai essa expressão funcionaria:
if( aggr(RangeSum(Above(sum(MEDIA), 1, RowNo())) / sum(total MEDIA) , CODPROD) <= 0.50 , 'A' , ...
Não sei se deu pra entender a idéia....
Mas ainda acho que a melhor maneira é criar esse campo de classificação no script.