Uso de Variáveis em Expressões Repetidas

De Qknow
Ir para: navegação, pesquisa

This post is available in English. Click on flag at side.

EnglishFlag.jpg

Introdução

Variáveis são ponteiros de memória que armazenam dados temporariamente para uso em algum momento da aplicação. No QlikView estes ponteiros podem armazenar dados convencionais como telefone, cidade, CEP, etc., mas também fórmulas que serão invocadas a partir de expressões de gráficos e tabelas. Em nível de script as variáveis são definidas pelas instruções SET e LET seguido do valor desejado. As variáveis podem, adicionalmente, serem definidas e manipuladas pela interface de desenvolvimento do QlikView sem depender dos scripts, bastando acessar o menu Configurações e selecionar a opção Visão Geral da Variáveis.

Não raramente as mesmas expressões são utilizadas em diversos elementos gráficos para expor ao usuário diferentes percepções dos números apresentados variando as dimensões que agrupam os valores calculados. Em termos de desempenho, se uma expressão simples como SUM(Vendas) é digitada de maneira diferente em duas expressões de gráficos separados, o QlikView criará dois ponteiros na memória cache contendo os valores calculados para cada formato escrito. Ou seja, Sum(Vendas) (com uma letra em maiúsculo) é diferente de SUM(Vendas) (com todas letras em maiúsculo) em termos de reuso os valores no cache de dados.

O uso de variáveis padroniza as expressões de maneira que haja uma única ocorrência no cache de dados, otimizando o uso da memória em especial para fórmulas mais complexas. Adicionalmente, a mudança da fórmula pode ser realizada em um único ponto que refletirá em todos os elementos que utilizam a variável como origem da expressão.

Criação de Variáveis

Variáveis podem ser criadas em nível de script pela instrução LET que interpreta e armazena o resultado da fórmula na variável. Ou seja, antes do valor ser atribuído a o cálculo da expressão (fórmula) é previamente realizado, adicionando à variável o resultado calculado. Variáveis também podem ser definidas via instrução SET conforme apresentado nos exemplos a seguir.

LET vResultado = 1 + 1;

SET vResultado = 1 + 1;
VariablesSETandLET.PNG

O valor de vResultado será 2 ao invés da string 1 + 1. Já a expressão SET define as variáveis de acordo com a informação passada no lado direito da igualdade, tal como for informada. Assim, o resultado da operação com SET será 1 + 1 ao invés do resultado da fórmula. As caixas de texto ao lado apresentam as variáveis de acordo como foram definidas. Outra maneira simples para definir variáveis é utilizar a janela de Visão Geral das Variáveis acessível pelo menu Configurações da versão Desktop. Nesta janela, ao acionar o botão Incluir defini-se o nome da variável para posteriormente incluir o conteúdo desejado, tal como na figura abaixo.

VariablesWindow.PNG

Uma vez informado o nome da variável é possível incluir o valor desejado na parte inferior da janela. É recomendável um clique sobre o nome da variável para assegurar que a entrada se dará a variável correta. Valores absolutos podem ser definidos entrando basicamente com o número ou texto desejado. Alternativamente, fórmulas podem ser inseridas incluindo ou não o sinal de igual no início da expressão, dependendo do comportamento desejado. Por exemplo, a entrada de uma expressão como Sum(Quantidade) difere de uma entrada com o sinal de igual na fórmula, como por exemplo em =Sum(Quantidade).

No primeiro caso a variável poderá ser utilizada a partir de qualquer local que aceite uma expressão e retornará os valores considerando eventuais dimensões que existirem em um gráfico ou tabela simples/pivot. Porém, se o sinal de igual for utilizado na definição da variável as dimensões em uso serão ignoradas e o gráfico apresentará o valor total, respeitando-se os filtros, para todas as ocorrências de dimensões.

Variáveis podem ainda serem acrescidas de parâmetros que serão informados pelas chamadas das expressões no momento em que forem utilizadas. O caractere $ (dólar) seguido de um número inteiro que classifica o parâmetro, é utilizado para receber o valor que será incorporado a fórmula da expressão. Neste formato as variáveis atuam como funções onde se passa parâmetros e obtêm-se resultados a partir dos parâmetros informados.





Definição de Variáveis para Reuso

Para simular os procedimentos descritos por este artigo, inclua a seguinte massa de dados a um novo projeto QlikView.

Vendas:
LOAD * INLINE [
Cidade, Empresa, IdPedido, Quantidade, Valor, AnoVenda
Aachen, Gluderstedt, 10538, 1, '11,58', 2010
Buenos Aires, Los Pantalones Magicos, 10782, 1, '8,19', 2010
Buenos Aires, Los Espandrilos Fantasticos, 10531, 2, '7,9', 2010
Lisboa, El Traige do Benfica, 10963, 2, '4,78', 2010
London, The sharped dressed man, 10462, 1, '27,09', 2011
Luleå, Urras Shop, 10524, 2, '7,49', 2011
Madrid, La Moda Alucinante, 10281, 1, '9,9', 2011
Madrid, La Moda Alucinante, 10917, 1, '26,2', 2011
México D.F., La Tienda de la Esquina, 10308, 1, '2,12', 2012
México D.F., Los Sombreros Gigantes, 10259, 1, '4,37', 2012
México D.F., Don Balón, 10676, 2, '6,48', 2012
Portland, Too Hot 4U, 10665, 1, '8,03', 2012
Torino, Il Pantaloni di la Cammorra, 10807, 1, '20,11', 2012];

Assumindo que dois gráficos são necessários a análise do usuário de negócios a partir do produto da quantidade pelo valor, é possível definir uma simples expressão que apresente o resultado que será utilizado por diferentes dimensões. Assim, na janela de Visão Geral das Variáveis inclua uma variável com o nome vResultado contendo a seguinte expressão:

SUM(Quantidade * Valor)

A partir deste momento é possível referenciar esta variável a partir de qualquer local onde uma expressão é válida. Por exemplo, para um primeiro elemento gráfico se deseja saber quanto foi vendido para cada cidade, derivando um gráfico de barras semelhante ao apresentado abaixo. No entanto, ao invés de entrar com a fórmula da expressão, é possível substituí-la pela variável recém criada utilizando o operador de interpretação do QlikView no seguinte formato: $(vResultado).

Expression Properties 3.PNG

Assim, a variável poderá ser utilizada em muitos elementos gráficos em qualquer local onde uma expressão é válida. Por exemplo, em uma caixa de texto pode-se apresentar o total comercializado acionando a variável vResultado com o interpretador de funções $(), tal como:

=Num($(vResultado), '#.##0,00')

Variáveis com Parâmetros

Variables 1.PNG

Embora o padrão de variáveis seja armazenar um valor temporariamente, a seção anterior descreve o uso de variáveis para armazenar instruções QlikView que podem ser chamadas de expressões em gráficos e tabelas (simples e dinâmica). Adicionalmente, variáveis podem receber parâmetros que serão informados no momento em que são invocadas. Parâmetros são essencialmente úteis para permitir que uma pequena mudança na variável não exija a criação de novos ponteiros, simplificando a manutenção.

Utilizando a carga INLINE da seção anterior criar-se-a uma nova variável para comparar as vendas do ano atual (ou ano selecionado no filtro) versus o ano anterior. Ou seja, a ideia é comparar se há crescimento ou redução dos valores em relação ao período anual atual. A partir desta regra de negócio a nova variável contendo um parâmetro informará, de alguma forma, a que ano se refere a operação. No exemplo em questão, a variável vVariacaoAnual calcula o maior ano de venda menos um valor de parâmetro informado (na sintaxe representado por $1).

Sum({$<AnoVenda={'$(=Max(AnoVenda)-$1)'}>} Quantidade * Valor)

Na definição da variável o parâmetro é inserido pela inclusão do símbolo $1. Múltiplos parâmetros podem ser configurados em uma única variável, bastando para isso enumerar os valores como $1, $2, $3, $n. Utilizando o exemplo anterior, para obter o resultado de venda do ano atual, basta chamar a variável passando como parâmetro o valor zero (0). Já para obter o valor do ano anterior basta informar a chamada com valor 1, que será utilizado no lugar do parâmetro $1 para subtrair da fórmula que obtém a maior data =Max(AnoVenda). Para dois anos anteriores, basta passar o valor 2 e assim por diante. Logo, a fórmula para obter a variação em relação ao ano anterior, a fórmula utilizada é:

=Num(($(vVariacaoAnual(0)) - $(vVariacaoAnual(1))) / $(vVariacaoAnual(1)), '#.##0,00%')

A fórmula acima faz a chamada a variável vVariacaoAnual passando como parâmetro (entre parênteses) quantos anos devem ser descontados do ano atual. Quando o valor zero é informado (0) o parâmetro $1 é substituído por zero e o maior ano é retornado, pois o maior ano menos zero é igual ao maior ano. Já quando o valor 1 é passado como parâmetro, o valor de um será reduzido do maior ano. O restante é aplicação de fórmula onde o valor do Ano Atual é subtraído do Ano Anterior e dividido pelo Ano Anterior, resultado em um percentual de variação formatado pela função Num.


Assuntos Relacionados


Outros Assuntos


Idea 1.jpg

Entenda mais!

Aplique as técnicas deste artigo criando setas para comparações entre períodos de datas em gráficos de barras.


Envelope01.jpg
Procurando Algo? Fale Conosco!

Voltar | Página Principal | Topo