Qlik Community

Qlik Brasil

Welcome to the group for Brazil users. .All discussions will be in Portuguese.

Not applicable

Totais mesma coluna

Bom dia, criei algumas variaveis para fazer o calculo de determinadas linhas da tabela:

SET vVendaServico = =fabs(Sum ({$ <cod_desc_nivel3={'1.1.1-VENDA DE SERVIÇOS'}>} VALOR));
SET vCustoServico = =fabs(Sum ({$ <cod_desc_nivel3={'1.2.1-CUSTO DOS SERVIÇOS'}>} VALOR));
SET vReceitaLiquida = =vVendaServico - vCustoServico;
SET vContribuicaoMarginal = =fabs(Sum ({$ <cod_desc_nivel1={'5-CONTRIBUIÇÃO MARGINAL'}>} VALOR));

SET vCustosServicosPrestados = =fabs(Sum ({$ <cod_desc_nivel1={'6-CUSTOS DOS SERVICOS PRESTADOS'}>} VALOR));

SET vMargemBruta = =vContribuicaoMarginal - vCustosServicosPrestados;
SET vDespesasOPeracionais = =fabs(Sum ({$ <cod_desc_nivel1={'8-DESPESAS OPERACIONAIS'}>} VALOR));
SET vEbitida = =vMargemBruta - vDespesasOPeracionais;
SET vDepreciacao = =fabs(Sum ({$ <cod_desc_nivel1={'10-DEPRECIAÇÃO'}>} VALOR));
SET vRAJIR = =vEbitida - vDepreciacao;
SET vResultadoFinanceiro = =fabs(Sum ({$ <cod_desc_nivel1={'12-RESULTADO FINANCEIRO'}>} VALOR));
SET vResultadoOperacional = =vRAJIR - vResultadoFinanceiro;

Como que eu posso proceder para deixar esses totais, todos na mesma coluna, para mostrar os valores tive que colocar em expressões separadas.

Capturaree.PNG

dai na expressao eu coloquei IF(cod_desc_nivel1='3-RECEITA OPERACIONAL LIQUIDA',vReceitaLiquida ).

Existe alguma maneira de unir todos os totais em um lugar? Fico no aguardo.

Tags (1)
1 Solution

Accepted Solutions
rvsilvestre
Contributor III

Re: Totais mesma coluna

Fato:

//VendaServico

LOAD

     'RECEITA OPERACIONAL BRUTA' as Nivel,

     1    as Order_Tab,    // esse é um campo apenas para você criar uma ordenação, poder classificar por ele

     fabs(sum(valor)) as Valor ,

     fabs(sum(valor)) as Valor_1 // Campo temporário apenas para cálculo da receita liquida

from tabela

where cod_desc_nivel3 = '1.1.1-VENDA DE SERVIÇOS' ;

concatenate(Fato)

// CustoServico

LOAD

     'CUSTO DOS SERVIÇOS' as Nivel,

     2    as Order_Tab,    // esse é um campo apenas para você criar uma ordenação, poder classificar por ele

     fabs(sum(valor)) as Valor ,

     fabs(sum(valor)) as Valor_2 // Campo temporário apenas para calculo da receita liquida

from tabela

where cod_desc_nivel3 = '1.2.1-CUSTO DOS SERVIÇOS' ;


concatenate(Fato)

//Receita liquida

LOAD

     'RECEITA LIQUIDA'  as Nivel

     3    as Order_Tab,    // esse é um campo apenas para você criar uma ordenação, poder classificar por ele

sum(Valor_1) - sum( Valor_2) as Valor

resident Fato;

drop fields Valor_1 , Valor_2 ; // apagando os campos temporários que não serão mais usados...

concatenate(Fato)


....

/* e assim por diante.... aqui eu to fazendo cada linha do nivel 1 um load , se forem muitos níveis você pode fazer

um load para todos níveis que já existem e dai outros loads para os que precisam de cálculo.*/

7 Replies
Marcio_Campestrini
Valued Contributor

Re: Totais mesma coluna

Boa tarde Gabriel

Talvez funcione utilizando outra variável com parâmetros. Dê uma olhada em Variables with Parameters

Márcio Rodrigo Campestrini
Highlighted
rvsilvestre
Contributor III

Re: Totais mesma coluna

Cara, melhor maneira de fazer isso no meu ponto de vista é direto no script. Vai criando vários LOADs usando a condicional no where e concatenando um no outro, com os campos em comum, um campo valor e um de nivelamento... Pode parecer mais trabalhoso no começo, mas muito melhor em questão de performance , usabilidade na aplicação e até mesmo para você dar manutenção depois.

Not applicable

Re: Totais mesma coluna

Boa tarde Rodrigo, obrigado pelo retorno, você conseguiria algum exemplo que eu pudesse ter como base?

rvsilvestre
Contributor III

Re: Totais mesma coluna

Fato:

//VendaServico

LOAD

     'RECEITA OPERACIONAL BRUTA' as Nivel,

     1    as Order_Tab,    // esse é um campo apenas para você criar uma ordenação, poder classificar por ele

     fabs(sum(valor)) as Valor ,

     fabs(sum(valor)) as Valor_1 // Campo temporário apenas para cálculo da receita liquida

from tabela

where cod_desc_nivel3 = '1.1.1-VENDA DE SERVIÇOS' ;

concatenate(Fato)

// CustoServico

LOAD

     'CUSTO DOS SERVIÇOS' as Nivel,

     2    as Order_Tab,    // esse é um campo apenas para você criar uma ordenação, poder classificar por ele

     fabs(sum(valor)) as Valor ,

     fabs(sum(valor)) as Valor_2 // Campo temporário apenas para calculo da receita liquida

from tabela

where cod_desc_nivel3 = '1.2.1-CUSTO DOS SERVIÇOS' ;


concatenate(Fato)

//Receita liquida

LOAD

     'RECEITA LIQUIDA'  as Nivel

     3    as Order_Tab,    // esse é um campo apenas para você criar uma ordenação, poder classificar por ele

sum(Valor_1) - sum( Valor_2) as Valor

resident Fato;

drop fields Valor_1 , Valor_2 ; // apagando os campos temporários que não serão mais usados...

concatenate(Fato)


....

/* e assim por diante.... aqui eu to fazendo cada linha do nivel 1 um load , se forem muitos níveis você pode fazer

um load para todos níveis que já existem e dai outros loads para os que precisam de cálculo.*/

Not applicable

Re: Totais mesma coluna

Bom dia Rodrigo, obrigado pelo retorno, como eu poderia proceder no caso, 1.1.1-VENDA DE SERVIÇOS e 1.2.1-CUSTO DOS SERVIÇOS, estão na nivel 3, que é uma tabela do banco de dados, dai o valor desses dois preciso apresentar na tabela nivel 1, 3-RECEITA OPERACIONAL LIQUIDA. Esse é o unico calculo que preciso fazer, que não estão todos na mesma tabela. Todos os outros ficam na mesma tabela nivel 1. Outra duvida, não estou criando os QVD deles, seria interessante criar? Cada um dos niveis é uma tabela do banco. Espero que possa me ajudar.

Capturar.PNG

Re: Totais mesma coluna

Gabriel, no post abaixo existe um detalhe de como criar essas estruturas de DRE, vai ficar mais fácil de você compreender.

How to Create a Profit and Loss Statement in QlikView

Not applicable

Re: Totais mesma coluna

Boa tarde Yuri, tentei me basear pelo exemplo mas não tive sucesso, dai criei variáveis para o cálculos

Script:

SET vReceitaBruta='=fabs(Sum ({$ <NIVEL1_ID={1}>} VALOR))';

SET vDeducoesReceita = =fabs(Sum ({$ <NIVEL1_ID={2}>} VALOR));

SET vCustoVarVendas = =fabs(Sum ({$ <NIVEL1_ID={4}>} VALOR));

SET VendaServico = =fabs(Sum ({$ <NIVEL3_ID={1}>} VALOR));

SET vIncentivo = =fabs(Sum ({$ <NIVEL3_ID={2}>} VALOR));

SET CustoServico = =fabs(Sum ({$ <NIVEL3_ID={3}>} VALOR));

SET vReceitaLiquida = =vReceitaBruta - vDeducoesReceita;

SET vContribuicaoMarginal = =fabs(Sum ({$ <NIVEL1_ID={5}>} VALOR));

SET vCustosServicosPrestados = =fabs(Sum ({$ <NIVEL1={'6-CUSTOS DOS SERVICOS PRESTADOS'}>} VALOR));

SET vMargemBruta = =+vContribuicaoMarginal - vCustosServicosPrestados;

SET vDespesasFixas = =fabs(Sum ({$ <NIVEL1_ID={8}>} VALOR));

SET vEbitda = =-vMargemBruta - vDespesasFixas;

SET vDepreciacao = =fabs(Sum ({$ <NIVEL1_ID={10}>} VALOR));

SET vRAJIR = =+vEbitda - vDepreciacao;

SET vResultadoFinanceiro = =fabs(Sum ({$ <NIVEL1_ID={12}>} VALOR));

SET vResultadoOperacional = =+vRAJIR - vResultadoFinanceiro;

SET vOutrosResultados = =fabs(Sum ({$ <NIVEL1_ID={14}>} VALOR));

SET vProvisao = =fabs(Sum ({$ <NIVEL1_ID={15}>} VALOR));

SET vDistLucros = =fabs(Sum ({$ <NIVEL1_ID={16}>} VALOR));

SET vInvestimentos = =fabs(Sum ({$ <NIVEL1_ID={18}>} VALOR));

e na expressao da tabela eu coloquei:

IF(NIVEL1='1-RECEITA OPERACIONAL BRUTA',sum(VALOR))&

IF(NIVEL1='2-DEDUÇÕES DA RECEITA',sum(VALOR)) &

IF(NIVEL1='3-RECEITA OPERACIONAL LIQUIDA',sum(vReceitaBruta - vDeducoesReceita))&

IF(NIVEL1='4-CUSTO VARIÁVEIS DE VENDAS',sum(VALOR)) &

IF(NIVEL1='5-CONTRIBUIÇÃO MARGINAL',sum(VALOR)) &

IF(NIVEL1='6-CUSTOS DOS SERVIÇOS PRESTADOS',sum(VALOR))&

IF(NIVEL1='7-MARGEM BRUTA',sum(+vContribuicaoMarginal - vCustosServicosPrestados)*-1)&

IF(NIVEL1='8-DESPESAS OPERACIONAIS FIXAS',sum(VALOR))&

IF(NIVEL1='9-EBTIDA', sum(-vMargemBruta - vDespesasFixas))&

IF(NIVEL1='10-DEPRECIAÇÃO',sum(VALOR))&

IF(NIVEL1='11-RAJIR',sum(vEbitda - vDepreciacao)) &           

IF(NIVEL1='12-RESULTADO FINANCEIRO',sum(VALOR))&

IF(NIVEL1='13-RESULTADO OPERACIONAL',sum(vRAJIR - vResultadoFinanceiro))&

IF(NIVEL1='14-OUTROS RESULTADOS OPER e NÃO OPERACIONAIS',sum(VALOR))&

IF(NIVEL1='15-PROVISAO PARA IRPJ E CSLL',sum(VALOR))&

IF(NIVEL1='16-DISTRIBUIÇÃO DE LUCROS',sum(VALOR))&

IF(NIVEL1='17-RESULTADO LIQUIDO',vResultadoOperacional + vOutrosResultados + vDistLucros + vProvisao)&

IF(NIVEL1='18-INVESTIMENTOS',sum(VALOR))

Dessa maneira consegui, fazer os calculos do DRE, mas quando utilizo algum filtro, ele elimina da tabela aqueles que possuem o calculo feito por conta.

completo.PNG

FIltro.PNG

Tambem não tenho o total na tabela, sera que se eu colocar Set Analisys esses dados ficam? Essa foi a unica maneira que eu consegui fazer funcionar. Fiz o calculo por script, mas como tem alguns que possui o valor 0, dai nao estava fechando. Obrigado por enquanto.