Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Fala pessoal! Tudo beleza?
Certamente vocês já fizeram algum relatório de Contabilidade e foi solicitado um indicador que possui os valores acumulados mês a mês, seja de Saldo, Lucro, etc.
Sabemos que a maioria dos gráficos possuem a função de acumular na aba de expressões, mas nem sempre esse acumulado vai atender a nossa demanda.
Gráficos que possuem a função de acumular: Barra, Linha, Combinado, Radar, Mekko, Dispersão, Grade e Table Simples.
Gráficos que não possuem a função de acumular: Mostrador, Tabela Dinâmica, Pizza, Funil e Blocos.
Imagine um cenário em que temos: um gráfico de tabela simples com o valor de REALIZADO e o valor de META. Precisamos agora criar mais três colunas: Realizado Acumulado, Meta Acumulada e % de Realizado em relação a meta.
Tranquilo! Gráfico de tabela simples possui a função de acumular a expressão por padrão.
Primeira expressão: Realizado Acumulado!
SUM(VALOR)
Marco Acumular, já era uma.
Segunda expressão: Meta Acumulada!
SUM(META)
Marco Acumular, já era duas!
Terceira expressão: %!
Vou apenas reaproveitar as expressões...
[Realizado Acum.]/[Meta Acum.]
Pronto! Terminei!
Apenas verifico os valores só para ter certeza que não fiz nada errado
Jan/2015
Realizado Acum = 100
Meta Acum = 110
Percentual = 100/110 = 90,91%
Qlikview = 90,91% BOA!
Fev/2015
Realizado Acum = 220
Meta Acum = 240
Percentual = 220/240= 91,66%
Qlikview = 92,31% UÉ!
Bom, acho que preciso marcar o acumulado na expressão do percentual também!
Qlikview = 183,22%
NÃO É POSSÍVEL!
Deve ser algum erro de casa decimal (RSRSRS Eu sempre penso isso kkk!!!)
Refaço as contas e realmente não é erro de casa decimal.
Removo o acumulado das expressões: Realizado Acum e Meta Acum, e refaço o cálculo do percentual
Fev/2015
Realizado Acum = 120
Meta Acum = 130
Percentual = 120/130= 92,31%
Não acredito, o qlikview não consegue reutilizar a expressão com o acumulado. Afff! E agora?
Bom! Teremos então que investigar algumas funções que possam obter o mesmo resultado do acumulado do QlikView.
Hoje trabalharemos com as funções Funções Inter-Registro de Gráficos, são elas:
Above() = Acima - Retorna o valor da expressão avaliada com os valores de dimensão do gráfico da forma como aparecem na linha acima da atual em um segmento de coluna de uma tabela.
Below() = Abaixo - Retorna o valor da expressão avaliado com os valores de dimensão do gráfico que aparecem na linha abaixo da atual dentro de um segmento de coluna em uma tabela.
Before() = Antes - Retorna o valor da expressão avaliada com os valores de dimensão de uma tabela dinâmica como aparecerem na coluna antes da atual.
After() = Depois - Retorna o valor da expressão avaliada com os valores de dimensão de uma tabela dinâmica como aparecerem na coluna depois da atual.
A parte acima grifada é muito importante, pois como queremos trabalhar com valores acumulados, então teremos que pegar o valor da linha/coluna atual e somar com o de linha(s)/coluna(s) anterior(es) e isso nos obriga a utilizar essas funções de intervalo de gráfico especiais.
Essas funções são precedidas da palavra Range, então temos: RangeSum, RangeAvg, RangeCount, RangeMin, RangeMax.... por aí vai.
IMPORTANTE: Essas funções de Range servirão para somar os resultados das funções Inter-Registros. Lembre-se que essas funções Inter-Registros retornaram vários resultados e é por isso que teremos que utilizar as funções de Range. Se tentássemos utilizar somente um SUM, o Qlikview retornaria nulo.
No exemplo em que vou comentar, estarei utilizando um gráfico de tabela simples com a dimensão MêsAno e suas respectivas expressões.
Se estamos trabalhando com um gráfico de tabela simples, então utilizaremos a função Inter-Registro Above(), pois o resultado do mês anterior esta na linha acima, desde que o gráfico esteja ordenado de forma Crescente.
Lembrando: Queremos acumular desde o primeiro MêsAno disponível nos filtros.
Expressão de Realizado: RangeSum(Above(SUM(VALOR), 0, RowNo()))
Vamos entender os parâmetros do Above
Deslocamento é zero, ou seja, estou avaliando a expressão da linha atual
N = RowNo() [RowNo() retorna o número da linha do gráfico]
Se estamos na primeira linha do gráfico, então a expressão estará da seguinte forma: RangeSum(Above(SUM(VALOR), 0, 1)), ou seja, estamos analisando somente a linha atual. Para a expressão RangeSum estamos somando o intervalo da linha atual até a linha atual.
Se estamos na segunda linha do gráfico, então a expressão estará da seguinte forma: RangeSum(Above(SUM(VALOR), 0, 2)), ou seja, estamos analisando a linha atual e a linha anterior. Para a expressão RangeSum estamos somando o intervalo da linha atual até a linha anterior.
Se estamos na terceira linha do gráfico, então a expressão estará da seguinte forma: RangeSum(Above(SUM(VALOR), 0, 3)), ou seja, estamos analisando a linha atual e duas linhas anteriores. Para a expressão RangeSum estamos somando o intervalo da linha atual até duas linhas anteriores.
Expressão de Meta: RangeSum(Above(SUM(META), 0, RowNo()))
A regra se mantém a mesma para a meta.
Agora o percentual fica fácil:
RangeSum(Above(SUM(VALOR), 0, RowNo())) / RangeSum(Above(SUM(META), 0, RowNo()))
Agora teremos o seguinte resultado
Muito bom!
Lembre-se de escolher corretamente a expressão Inter-Registro a ser utilizada, se estiver em uma tabela dinâmica, com o MêsAno pivoteado, então temos que pegar o resultado da COLUNA ANTERIOR, para isso devemos utilizar a função Before().
Abaixo disponibilizei uma aplicação com um exemplo na tabela dinâmica e como acumular somente alguns passos, por exemplo: Somente 1 mês anterior ou somente dois meses anteriores.
Para fazer download da aplicação de exemplo clique aqui!
Se o que você deseja fazer o QlikView oferece, então utilize! Sempre as funções prontas do QlikView oferecem melhor performance, mas nem tudo o QlikView nos oferece de "mão beijada", desta forma é bom estarmos preparados para essas ocasiões.
Até a próxima semana!
Adorei!! Obrigada Yuri! Estou em um projeto que agora precisou contar com estas funções, foi esclarecedor.
Abs,
Obrigado Karla!