Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia Comunidade!!!
Fiz a programação do campo acumulado item na expressão:
( =if(RangeSum(above(TOTAL Column(11),0,NoOfRows(TOTAL))) > 100,'100,00',RangeSum(above(TOTAL Column(11),0,NoOfRows(TOTAL))))) ,
Só que comecei a ter um problema no acesso ao documento, tanto no Qlikdesktopestao como pelo Access Point, estao muito demorado para abrir e no Servidor a CPU vai a 100%.
Então parti para fazer no script, só que estou com dificuldades de ajustar isso porque são 5 campos que entram na soma/multiplicação/subtração para chegar no percentual que preciso para acumular, esses campos vem de 4 tabelas, estou tentando fazer o Concatenate para juntar na mesma informação mas não estou conseguindo ajustar.
Tenho uma coluna aonde eu chego no percentual do item:
meus campos são esses e essas são as tabelas:
=if(sum([Ven. Ult. 365 dias]) + sum([QUANTIDADE_IND]) - sum(QUANTIDADE)< 0,0,
(sum([Ven. Ult. 365 dias]) + sum([QUANTIDADE_IND]) - sum(QUANTIDADE)) / (sum( TOTAL {1}[total de vendas geral]))* 100)
[Ven. Ult. 365 dias]: vem da tabela: [Sugestao_Compra]
[total de vendas]: vem da tabela: [Sugestao_Compra]
[QUANTIDADE]: vem da tabela: [Devoluções]
[QUANTIDADE_IND]: vem da tabela:[Industrializações]
Depois criei a coluna percentual item acumulado com essa expressão: ( muito demorado pra abrir o documento depois de colocada)
( =if(RangeSum(above(TOTAL Column(11),0,NoOfRows(TOTAL))) > 100,'100,00',RangeSum(above(TOTAL Column(11),0,NoOfRows(TOTAL))))) ,
A dimensão que liga é o campo ITEM_ESTOQUE
tentei seguir teu o exemplo do artigo do Mario Soares : Incluindo saldo/acumulado via Script ou via Expressão
mas não estou me achando, Agradeço a ajuda.
Certo;
Não tenho a visão da diferença entre a planilha de compras para a de vendas;
Então posso entender que seja algo na modelagem, nos relacionamentos;
O saldo estava funcionando antes?
sim, estava funcionando. estou analisando aqui também para ver aonde pode ser.
Pode ser a questão da cardinalidade então, havia substituído Left Join por Mapping, porém a técnica não recuperar mais de um valor no AppyMap();
Segue alternativa;
Tab_Temp_Compra1:
//Sugestao_Compra
NoConcatenate Load
ITEM_ESTOQUE,
[Ven. Ult. 365 dias],
[total de vendas geral] As [total de vendas]
From [Lib://QVD/Sugestao_Compra.QVD] (qvd);
Left Join
Load ITEM_ESTOQUE, QUANTIDADE From [Lib://QVD/Devoluções.QVD] (qvd);
Left Join
Load ITEM_ESTOQUE, QUANTIDADE_IND From [Lib://QVD/Industrializações.QVD] (qvd);
Tab_Temp_Compra2:
NoConcatenate Load
ITEM_ESTOQUE,
RangeSum([Ven. Ult. 365 dias], [QUANTIDADE_IND], -QUANTIDADE) As 'Total Geral',
[Ven. Ult. 365 dias],
[total de vendas],
QUANTIDADE,
QUANTIDADE_IND
Resident Tab_Temp_Compra1;
Outer Join
Load Sum([total de vendas]) As 'total de vendas geral' Resident Tab_Temp_Compra1;
Drop Table Tab_Temp_Compra1;
Tab_Temp_Compra3:
NoConcatenate Load
ITEM_ESTOQUE,
[Total Geral],
[total de vendas geral],
Rangesum(
If( RowNo() > 1,
If( [Total Geral] < 0, Peek(Saldo), Rangesum( [Total Geral], Peek(Saldo) ) )
,If( [Total Geral] < 0, 0, [Total Geral] )
)
) As 'Saldo'
Resident Tab_Temp_Compra2 Order By [Total Geral] Desc;
Drop Table Tab_Temp_Compra2;
Tab_Movimento:
NoConcatenate Load
ITEM_ESTOQUE,
[Total Geral],
[total de vendas geral],
[Saldo],
[Total Geral] / [total de vendas geral] * 100 As 'Percentual do item',
[Saldo] / [total de vendas geral] * 100 As 'Percentual do item acumulado'
Resident Tab_Temp_Compra3;
Drop Table Tab_Temp_Compra3;
Bah Mario, mexi de tudo que foi jeito para ver o que poderia ser, mas nao aparece o valor nas colunas de %, nem item e nem acumulado, que loucura.
Testou com o script acima?
Sim.
Mario fiz o seguinte, enxutei bem o documento, vou anexar aqui, não sei se ajuda.
Continua os valores zerados !
Me passa os QVDs;
Deveria ter funcionado o script acima, pelo menos o valor de Saldo, pois só acrescentei.
Segue os QVDs Mario.
Amigo, o erro estava em um conflito com o atributo/campo [total de vendas geral] da tabela Tab_Movimento com Sugestao_Compra, estava gerando chaves sintéticas, num todo 5 tabelas com chaves sintéticas, então tive que renomear para [total de vendas global].
Sugestao_Compra:
LOAD
Grupo,
SubGrupo,
ITEM_ESTOQUE,
Descrição,
"Item + Descrição Item",
Peso,
O.Compra,
"Qtd. Caixa",
"QMI A ou B",
"Dias Calc. Demanda",
"Vda Diaria Ultimos 365 dias",
"Cot. Ult. 365 dias",
"Ofe. Ult. 365 dias",
"Ven. Ult. 365 dias",
"total de vendas geral",
"TARGET PRICE"
FROM [lib://converter_e828745e7c63480e5fbdbf0a85a0fe08/Sugestao_Compra.qvd](qvd);
quantidade_vendida:
LOAD
PED_FILIAL,
ITEM_ESTOQUE,
VEN_QTDE
FROM [lib://converter_e828745e7c63480e5fbdbf0a85a0fe08/quantidade_vendida.qvd](qvd);
Preço_Net:
LOAD
ITEM_ESTOQUE,
"Preço NET Forn.",
"Preço Compra"
FROM [lib://converter_e828745e7c63480e5fbdbf0a85a0fe08/Preço_Net.qvd](qvd);
compra_China:
LOAD
coc_codigo,
coc_numero,
FOR_NOME,
ITEM_ESTOQUE,
ITE_DESCRI,
oci_qtdtot,
ITE_DIASPA,
ITE_DIASCT
FROM [lib://converter_e828745e7c63480e5fbdbf0a85a0fe08/compra_China.qvd](qvd);
Clientes:
LOAD
codigo_cliente,
Nome_Cliente
FROM [lib://converter_e828745e7c63480e5fbdbf0a85a0fe08/Clientes.qvd](qvd);
[Vendas 12 meses]:
LOAD
MESANO_VENDAS_12_MESES,
ANO_VENDAS_12_MESES,
MES_VENDAS_12_MESES,
TOTAL_VENDAS_12_MESES
FROM [lib://converter_e828745e7c63480e5fbdbf0a85a0fe08/Vendas 12 meses.qvd](qvd);
[Vendas Media Item]:
LOAD
ITEM_ESTOQUE,
MESANO_VENDAS_MEDIA_ITEM,
ANO_VENDAS_MEDIA_ITEM,
MES_VENDAS_MEDIA_ITEM,
TOTAL_VENDAS_MEDIA_ITEM,
REG
FROM [lib://converter_e828745e7c63480e5fbdbf0a85a0fe08/Vendas Media Item.qvd](qvd);
DesvioPadrao:
LOAD
ITEM_ESTOQUE,
MESANO_VENDAS_12_DESV,
ANO_VENDAS_12_DESV,
MES_VENDAS_12_DESV,
TOTAL_VENDAS_12_DESV
FROM [lib://converter_e828745e7c63480e5fbdbf0a85a0fe08/DesvioPadrao.qvd](qvd);
CurvaFrequencia:
LOAD
ITEM_ESTOQUE,
"TOTAL NOTAS CURVA FREQUENCIA"
FROM [lib://converter_e828745e7c63480e5fbdbf0a85a0fe08/CurvaFrequencia.qvd](qvd);
QMI:
LOAD
ITEM_ESTOQUE,
codigo_cliente,
CCM_QTD_CONSUMO,
CCM_QTD_POTENCIAL,
CLASS_CLIENTE_QMI
FROM [lib://converter_e828745e7c63480e5fbdbf0a85a0fe08/QMI.qvd](qvd);
// //QVD de Estoque Ausente
// [Estoque]:
// Load
// AutoNumber(ITEM_ESTOQUE&'-'&REVENDA,'SK_EST_REV') As '%SK_EST_REV',
// REVENDA,
// ITEM_ESTOQUE,
// QTD_CONTABIL,
// QTD_PEDIDA,
// DEMANDA_MEDIA,
// DISPONIVEL
// FROM [lib://converter_e828745e7c63480e5fbdbf0a85a0fe08/Estoque.qvd](qvd);
// Apl_negociação:
// LOAD
// AutoNumber(ITEM_ESTOQUE&'-'&REVENDA,'SK_EST_REV') As '%SK_EST_REV',
// //REVENDA,
// //ITEM_ESTOQUE,
// QTD_NEGOCIACAO
// FROM [lib://converter_e828745e7c63480e5fbdbf0a85a0fe08/Apl_negociação.qvd]
// (qvd);
Devoluções:
LOAD
ITEM_ESTOQUE,
QUANTIDADE
FROM [lib://converter_e828745e7c63480e5fbdbf0a85a0fe08/Devoluções.qvd](qvd);
Industrializações:
LOAD
ITEM_ESTOQUE,
QUANTIDADE_IND
FROM [lib://converter_e828745e7c63480e5fbdbf0a85a0fe08/Industrializações.qvd](qvd);
Tab_Temp_Compra1: //Sugestao_Compra
NoConcatenate Load
ITEM_ESTOQUE,
[Ven. Ult. 365 dias],
[total de vendas geral] As [total de vendas]
resident Sugestao_Compra;
Left Join
Load ITEM_ESTOQUE, QUANTIDADE resident Devoluções;
Left Join
Load ITEM_ESTOQUE, QUANTIDADE_IND resident Industrializações;
Drop Table Devoluções, Industrializações;
Tab_Temp_Compra2:
NoConcatenate Load
ITEM_ESTOQUE,
RangeSum([Ven. Ult. 365 dias], [QUANTIDADE_IND], -QUANTIDADE) As 'Total Geral',
[Ven. Ult. 365 dias],
[total de vendas],
QUANTIDADE,
QUANTIDADE_IND
Resident Tab_Temp_Compra1;
Outer Join
Load Sum([total de vendas]) As 'total de vendas global' Resident Tab_Temp_Compra1;
Drop Table Tab_Temp_Compra1;
Tab_Temp_Compra3:
NoConcatenate Load
ITEM_ESTOQUE,
[Total Geral],
[total de vendas global],
Rangesum(
If( RowNo() > 1,
If( [Total Geral] < 0, Peek(Saldo), Rangesum( [Total Geral], Peek(Saldo) ) )
,If( [Total Geral] < 0, 0, [Total Geral] )
)
) As 'Saldo'
Resident Tab_Temp_Compra2 Order By [Total Geral] Desc;
Drop Table Tab_Temp_Compra2;
Tab_Movimento:
NoConcatenate Load
ITEM_ESTOQUE,
[Total Geral],
[total de vendas global],
[Saldo],
Num([Total Geral] / [total de vendas global],'00,00%') As 'Percentual do item',
Num([Saldo] / [total de vendas global],'00,00%') As 'Percentual do item acumulado'
Resident Tab_Temp_Compra3;
Drop Table Tab_Temp_Compra3;
Como criar uma tabela a partir de 2 fontes diferentes
Problema de performance grande Volume de Dados
Poxa Mario, fechou todas, está 100% , não esta mais sobrecarregando a CPU.
entendi tudo o que você fez, realmente preciso me dedicar mais a esta parte de performance e modelagem, estou deixando muito a desejar nessa parte.
Não tenho palavras para agradecer o teu tempo, paciência, empenho e muita boa vontade em me ajudar,
Vou pesquisar mais sobre as dicas que você passou.
Muito obrigado meu amigo, fico te devendo mais 1.
Grande abraço.