Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: 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