Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Olá boa tarde!
Sou novo na comunidade e preciso de ajuda para solucionar uma situação que não consigo resolver.
Tenho uma expressão (abaixo) que verifica a situação de um determinado Grupo e sinaliza se o Status está OK, Critico ou Super Critico, porém eu gostaria de efetuar este calculo direto no Load da Aplicação.
IF((SUM(Total<Div> Receita) / SUM(Total<Div> Receita_2017)-1) < ((SUM(Receita)/sum(Receita_2017))-1),'OK',
IF((SUM(Total<Div> Receita) / SUM(Total<Div> Receita_2017)-1) - ((SUM(Receita)/sum(Receita_2017))-1)>0.10,'Super Critico','Critico'))
alguém pode me orientar de como posso resolver essa questão.
obrigado.
Jefferson,
podes usar o Resident para ler a mesma tabela fazendo o calculo que queres e colocando o resultado na mesma tabela.
ex:
FATO:
LOAD
BPCS,
Negócio,
[SSS/NS] as Seals,
Divisão as Div,
Receita,
Itens,
Cupons,
Data,
Mês,
O,
P,
Q,
ApplyMap('MAPA_MENSAGEM',BPCS,'N/A') AS Receita_2017,
ApplyMap('MAPA_DIV',BPCS,'N/A') AS Divisão
FROM [lib://vendas diarias_ciclo.xlsx] (ooxml, embedded labels, table is BD_2018);
left join (FATO)
LOAD
Div,
SUM(Receita) as Total_Div,
SUM(Receita_2017) as Total_Receita2017
Resident FATO Group by Div;
left join (FATO)
LOAD
*,
IF(((Total_Div) / (Total_Receita2017)-1) < (((Receita)/(Receita_2017))-1),'OK',
IF(((Total_Div) / (Total_Receita2017)-1) - (((Receita)/(Receita_2017))-1)>0.10,'Super Critico','Critico')) as Situacao
Resident FATO;
Claro que o ultimo "left join" poderia ser também um group by com os campos que queres somado. Neste caso não sei se a tabela tem item a item e o calculo é pelo item ou pela "capa" (Cupom ?).
exemplo:
left join (FATO)
LOAD
BPCS,
Negócio,
Seals,
Div,
Cupons,
IF((SUM(Total_Div) / SUM(Total_Receita2017)-1) < ((SUM(Receita)/sum(Receita_2017))-1),'OK',
IF((SUM(Total_Div) / SUM(Total_Receita2017)-1) - ((SUM(Receita)/sum(Receita_2017))-1)>0.10,'Super Critico','Critico')) as Situacao
Resident FATO Group by BPCS,Negócio,Seals,Div,Cupons;
Mas seria uma ideia de como fazer.
Consegue disponibilizar um qvf com uma amostra de dados? Do jeito que a expressão está não vai funcionar no script, mas talvez a gente arrume uma alternativa...
Fala Thiago, tudo bem:?
É algo bem simples, fazendo pela expressão eu consigo solucionar, porém quero jogar no LOAD.
MAPA_MENSAGEM:
MAPPING LOAD DISTINCT
BPCS,
Receita
FROM [lib://vendas diarias_ciclo.xlsx]
(ooxml, embedded labels, table is BD_2017);
MAPA_DIV:
MAPPING LOAD DISTINCT
[BPCS Novo],
Divisao
FROM [lib://Estrutura Gerencial.xlsx]
(ooxml, embedded labels, table is Estrutura);
FATO:
LOAD
BPCS,
Negócio,
[SSS/NS] as Seals,
Divisão as Div,
Receita,
Itens,
Cupons,
Data,
Mês,
O,
P,
Q,
ApplyMap('MAPA_MENSAGEM',BPCS,'N/A') AS Receita_2017,
ApplyMap('MAPA_DIV',BPCS,'N/A') AS Divisão
FROM [lib://vendas diarias_ciclo.xlsx]
(ooxml, embedded labels, table is BD_2018);
Jefferson,
podes usar o Resident para ler a mesma tabela fazendo o calculo que queres e colocando o resultado na mesma tabela.
ex:
FATO:
LOAD
BPCS,
Negócio,
[SSS/NS] as Seals,
Divisão as Div,
Receita,
Itens,
Cupons,
Data,
Mês,
O,
P,
Q,
ApplyMap('MAPA_MENSAGEM',BPCS,'N/A') AS Receita_2017,
ApplyMap('MAPA_DIV',BPCS,'N/A') AS Divisão
FROM [lib://vendas diarias_ciclo.xlsx] (ooxml, embedded labels, table is BD_2018);
left join (FATO)
LOAD
Div,
SUM(Receita) as Total_Div,
SUM(Receita_2017) as Total_Receita2017
Resident FATO Group by Div;
left join (FATO)
LOAD
*,
IF(((Total_Div) / (Total_Receita2017)-1) < (((Receita)/(Receita_2017))-1),'OK',
IF(((Total_Div) / (Total_Receita2017)-1) - (((Receita)/(Receita_2017))-1)>0.10,'Super Critico','Critico')) as Situacao
Resident FATO;
Claro que o ultimo "left join" poderia ser também um group by com os campos que queres somado. Neste caso não sei se a tabela tem item a item e o calculo é pelo item ou pela "capa" (Cupom ?).
exemplo:
left join (FATO)
LOAD
BPCS,
Negócio,
Seals,
Div,
Cupons,
IF((SUM(Total_Div) / SUM(Total_Receita2017)-1) < ((SUM(Receita)/sum(Receita_2017))-1),'OK',
IF((SUM(Total_Div) / SUM(Total_Receita2017)-1) - ((SUM(Receita)/sum(Receita_2017))-1)>0.10,'Super Critico','Critico')) as Situacao
Resident FATO Group by BPCS,Negócio,Seals,Div,Cupons;
Mas seria uma ideia de como fazer.
Boa Tarde! Alessandro.
Obrigado por ajudar... deu certinho...
Não esqueça de fechar a thread marcando a resposta do Furtado como correta.
Abs e Sucesso!!
Me surgiu uma dúvida.
A solução funcionou perfeitamente, agora eu consigo fazer a contagem por Grupo.
Exemplo:
Rótulos de Linha | - | Critico | OK | Super Critico |
Aju1 | 10 | 8 | 10 | 10 |
Total Geral | 10 | 8 | 10 | 10 |
A dúvida é se você consegue agrupar a contagem por Situação?
Se sim,teste isso:
Count(Aggr(Count(Distinct Situacao),Situacao))