Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
jeff_tavares
New 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.

Tags (1)
1 Solution

Accepted Solutions
MVP
MVP

Re: Script - Soma Total

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.


7 Replies
thiago_justen
Valued Contributor III

Re: Script - Soma Total

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
WhatsApp: 24 98152-1675
Skype: justen.thiago
jeff_tavares
New Contributor II

Re: Script - Soma Total

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

MVP
MVP

Re: Script - Soma Total

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.


jeff_tavares
New Contributor II

Re: Script - Soma Total

Boa Tarde! Alessandro.

Obrigado por ajudar... deu certinho...

thiago_justen
Valued Contributor III

Re: Script - Soma Total

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

Abs e Sucesso!!

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

Re: Script - Soma Total

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
Valued Contributor III

Re: Script - Soma Total

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
WhatsApp: 24 98152-1675
Skype: justen.thiago