Skip to main content
Announcements
Qlik Community Office Hours - Bring your Ideation questions- May 15th, 11 AM ET: REGISTER NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
GuilhermeCamargo
Contributor II
Contributor II

Calcular a Venda Projetada de um Período

Tenho uma meta de pedidos baseada na quantidade de vendas, e esta tabela de pedido tem data inicial e data final.

Preciso saber a quantidade de dias totais tem cada meta e quantos dias já se passaram até a data de ontem desta meta

o Cadastro de meta vem do sistema com o grupo fornecedor ou o cod fornecedor.

O problema que está dando é que não traz certo a quantidade de dias total da meta, acredito que seja por estar ligando a tabela de vendas com o calendário.

 

Segue abaixo o script:

[Meta_Grupo_1]:
LOAD
ID,
CodFilial as Filial,
Categoria,
GrupoFor,
SubGrupo,
//CodInterno, // Vazio
DataInicial,
DataFinal,
TipoMeta,
Meta,
TipoBonificacao,
ValorBonifica,
TipoPagto,
TipoCusto,
Nome as metaNome,
upper(Comprador) as Comprador
FROM [lib://*** (qvd) Where GrupoFor > 0 and Meta > 0;
// ************Fazendo Cartesiano aqui **********
join (Meta_Grupo_1)
LOAD
"Codigo-Grupo-Fornecedor" as GrupoFor,
"Codigo-Fornecedor" as CodForn
FROM [lib://*** Where Exists(GrupoFor,"Codigo-Grupo-Fornecedor");
//--------------------------------------------------------------------------------------------------

Meta_Grupo:
NoConcatenate
Load
*,
if(TipoMeta = 'Qtde', metaMes) as metaMesQtde,
if(TipoMeta = 'valor', metaMes) as metaMesvalor;

LOAD
*,
round(Meta / qtdeMeses,1) as metaMes;
LOAD
*,
if(Year(Inicio) <> Year(today()),
((Year(Final) - Year(Inicio)) * 12) +
(num(month(Final) ) + 1 - num(month(Inicio))),
(num(month(Final) ) + 1 - num(month(Inicio)))) as qtdeMeses,
date(MonthStart(Inicio,(IterNo()-1)),'MMM/YYYY') as Periodo,
year(MonthStart(Inicio,(IterNo()-1))) as Ano,
month(MonthStart(Inicio,(IterNo()-1))) as Mês
While MonthStart(Inicio,(IterNo()-1)) <= MonthStart(Final);
load
*,
date#(DataInicial) as Inicio,
date#(DataFinal) as Final
Resident Meta_Grupo_1 wHERE not IsNull(Categoria);
Drop Table Meta_Grupo_1;

 

//----------------------------------------------------------------------------------------------------
Meta_Fornec_1:
NoConcatenate
LOAD
ID,
CodFilial as Filial,
Categoria,
applymap('Map_CodGF',CodForn) as GrupoFor,
CodForn,
SubGrupo,
//CodInterno,
DataInicial,
DataFinal,
TipoMeta,
Meta,
TipoBonificacao,
ValorBonifica,
TipoPagto,
TipoCusto,
Nome as metaNome,
upper(Comprador) as Comprador
FROM [lib://*** (qvd) Where CodForn > 0 and Meta > 0;
//----------------------------------------------------------------------------------------------------
Meta_Fornec:
NoConcatenate
Load
*,
if(TipoMeta = 'Qtde', metaMes) as metaMesQtde,
if(TipoMeta = 'valor', metaMes) as metaMesvalor;
LOAD
*,
round(Meta / qtdeMeses,1) as metaMes;
LOAD
*,
if(Year(Inicio) <> Year(today()),
((Year(Final) - Year(Inicio)) * 12) +
(num(month(Final) ) + 1 - num(month(Inicio))),
(num(month(Final) ) + 1 - num(month(Inicio)))) as qtdeMeses,
date(MonthStart(Inicio,(IterNo()-1)),'MMM/YYYY') as Periodo,
year(MonthStart(Inicio,(IterNo()-1))) as Ano,
month(MonthStart(Inicio,(IterNo()-1))) as Mês
While MonthStart(Inicio,(IterNo()-1)) <= MonthStart(Final);
// ***** While vai ler a mesma linha tantas vezes conforme a quantidade da funcão IterNo() retornar *****
LOAD
*,
date#(DataInicial) as Inicio,
date#(DataFinal) as Final
Resident Meta_Fornec_1 wHERE not IsNull(Categoria);
Drop Table Meta_Fornec_1;

 

NoConcatenate

//------------------------------------------------------------------------------------------------
// Tabela FATO com todos os movimentos Pedidos/Compras/Metas
//------------------------------------------------------------------------------------------------

Dados:
LOAD *
Resident Meta_Grupo;

Concatenate (Dados)

LOAD *
Resident Meta_Fornec;

Drop Table Meta_Grupo,Meta_Fornec;

//------------------------------------------------------------------------------------------------

 

//======================================================================================================
NomeMeta:
LOAD Distinct
GrupoFor,
CodForn,
metaNome,
Ano,
Mês
Resident Dados;
//======================================================================================================
Estoque:
LOAD
RecNo() as Estoque_Seq,
CodForn,
//
GrupoFor,
SubGrupo,
//
Comprador,
"Estoque - Dt. Mov.",
date(MonthStart("Estoque - Dt. Mov."),'MMM/YYYY') as Periodo,
Ano,
Mês,
"Estoque - Qtde",
"Estoque - Total",
"Estoque - Ultimo Dia"
FROM [lib://*** (qvd) where Exists(CodForn);
left join (Estoque)
LOAD
GrupoFor,
CodForn,
metaNome,
Ano,
Mês
Resident NomeMeta;
//----------------------------------------------------------------------------------------------------
// Inclui na tabela FATO (Dados) as informações de Estoque
//----------------------------------------------------------------------------------------------------
//
Concatenate (Dados)
LOAD
*
Resident Estoque;
//
Drop Table Estoque;
//
//

 

//
Tmp_Vendas:
LOAD
RecNo() as Vendas_Seq,
"Grupo-Cliente",
"Nome-Cliente",
"CNPJ-Cliente",
"Codigo-Cliente",
Filial,
Mês,
Ano,
Dia,
Data,
"Data-Venda",
"Quantidade-Venda",
"Custo-Total-Venda",
"Total-Venda",
"LB-Total-Venda",
TotalLiquido,
Qtd_Pedido_Faturado,
Qtd_Saldo_Pedido,
"Valor-Pedido-Faturado",
"Valor-Saldo-Pedido",
"Saldo-Pedido",
"Cod-Pedido",
"Quantidade-Pedido",
"Valor-Pedido",
"Quantidade-Entregue",
"Quantidade-Fatuarada",
"Quantidade-Cancelada",
"Valor-Unitario-Pedido",
"Natureza-Pedido",
Programado,
Flag_Pedido,
dataPedido,
Comprador,
codFab,
//
CodForn,
applymap('Map_CodGF',CodForn) as GrupoFor,

GrupoFor as GrupoFor_Carga,
SubGrupo,
//
date(MonthStart(Data),'MMM/YYYY') as Periodo,
AutoNumberHash128(dataPedido,Ano,Mês,Dia,Comprador) as Chave
FROM [lib://*** (qvd) Where Exists(CodForn);
left join (Tmp_Vendas)
LOAD
GrupoFor,
CodForn,
metaNome,
Ano,
Mês
Resident NomeMeta;
//
Concatenate (Dados)
LOAD * Resident Tmp_Vendas;
//
Drop Table NomeMeta,Tmp_Vendas;
//

 

//Carga da tabela calendario com dados de vinculos entre outras tabelas com a exclusão de algumas filiais
Calendario:
Load *,
AutoNumberHash128("Calendario - Data",Ano,Mês,Dia,COMPRADOR) as Chave
where Ano >= Year(Today() - 1);
Load
"Calendario - Data",
"Calendario - Ano" as Ano,
"Calendario - Mes" as Mês,
"Calendario - Dia" as Dia,
%ChaveFilial as Filial,
Upper(COMPRADOR) as COMPRADOR,
"Calendario - DiaUtil"
FROM [lib://*** (qvd)
where WildMatch([%ChaveFilial],'16','47','111','59','121')=0;
//================================================================================//
left join (Calendario)
LOAD
Ano,
[Mês],
Count(DISTINCT "Calendario - Data") as Dias_Totais,
Count(DISTINCT if([Calendario - DiaUtil] = '1',"Calendario - Data"))as Dias_Uteis
Resident Calendario Group by Ano,[Mês];

0 Replies