Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
jeff_tavares
Contributor II
Contributor II

Script - Soma Total

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.

1 Solution

Accepted Solutions
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

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.


furtado@farolbi.com.br

View solution in original post

7 Replies
Thiago_Justen_

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...

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
jeff_tavares
Contributor II
Contributor II
Author

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);

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

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.


furtado@farolbi.com.br
jeff_tavares
Contributor II
Contributor II
Author

Boa Tarde! Alessandro.

Obrigado por ajudar... deu certinho...

Thiago_Justen_

Não esqueça de fechar a thread marcando a resposta do Furtado como correta.

Abs e Sucesso!!

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
jeff_tavares
Contributor II
Contributor II
Author

Me surgiu uma dúvida.

A solução funcionou perfeitamente, agora eu consigo fazer a contagem por Grupo.

Exemplo:

     

Rótulos de Linha-CriticoOKSuper Critico
Aju11081010
Total Geral1081010
Thiago_Justen_

A dúvida é se você consegue agrupar a contagem por Situação?

Se sim,teste isso:

Count(Aggr(Count(Distinct Situacao),Situacao))

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago