Above
Above() avalia uma expressão na linha acima da linha atual dentro de um segmento de coluna em uma tabela. A linha para a qual ela é calculada depende do valor de offset; se estiver presente, o padrão será a linha diretamente acima. Para gráficos que não sejam tabelas, Above() avalia a linha acima da linha atual, na tabela estática equivalente do gráfico.
Sintaxe:
Above([TOTAL] expr [ , offset [,count]])
Tipo de dados de retorno: dual
Argumentos:
- expr: A expressão ou campo que contém os dados a serem medidos.
- offset: Especificar um offset n, maior que 0, move a avaliação da expressão n linhas acima da atual. A especificação de um deslocamento igual a 0 avaliará a expressão na linha atual. Especificar um número de compensação negativa faz a função Above atuar como a função Below com o número de compensação positiva correspondente.
- count: Especificando um terceiro argumento count maior que 1, a função retornará uma série de valores count, um para cada uma das linhas da tabela count, contado para cima a partir da célula original. Dessa forma, a função pode ser usada como um argumento para qualquer uma das funções de intervalo especiais. Funções de intervalo
- TOTAL: Se a tabela for unidimensional ou se o qualificador TOTAL for usado como argumento, o segmento de coluna atual será sempre igual à coluna inteira.
Na primeira linha de um segmento de coluna, um valor NULL é retornado, já que não há uma linha acima dela.
Limitações:
-
As chamadas recursivas retornarão NULL.
-
A classificação por valores y em gráficos ou por colunas de expressão em tabelas não é permitida quando essa função de gráfico é usada em qualquer uma das expressões do gráfico. Essas alternativas de classificação estão, portanto, automaticamente desabilitadas. Quando você usar essa função de gráfico em uma visualização ou tabela, a classificação da visualização será revertida para a entrada classificada dessa função.
Exemplos e resultados:
Exemplo 1:
Customer | Sum(Sales) | Above(Sum(Sales)) | Sum(Sales) + Above(Sum(Sales)) | Above offset 3 | Higher? |
---|---|---|---|---|---|
- | 2566 | - | - | - | - |
Astrida | 587 | - | - | - | - |
Betacab | 539 | 587 | 1126 | - | - |
Canutility | 683 | 539 | 1222 | - | Higher |
Divadip | 757 | 683 | 1440 | 1344 | Higher |
Na representação do gráfico da tabela mostrada neste exemplo, a tabela é criada a partir da dimensão Customer e das medições: Sum(Sales) e Above(Sum(Sales)).
A coluna Above(Sum(Sales)) retorna NULL para a linha Customer contendo Astrida, porque não há nenhuma linha acima dela. O resultado para a linha Betacab mostra o valor de Sum(Sales) para Astrida, o resultado para Canutility mostra o valor para Sum(Sales) para Betacab e assim por diante.
Para a coluna rotulada Sum(Sales)+Above(Sum(Sales)), a linha para Betacab mostra o resultado da soma dos valores Sum(Sales) para as linhas Betacab + Astrida (539+587). O resultado da linha Canutility mostra o resultado da adição de valores de Sum(Sales) para Canutility + Betacab (683+539).
A medição rotulada Above offset 3 criada usando a expressão Sum(Sales)+Above(Sum(Sales), 3) tem o argumento offset, definido como 3 e tem o efeito de obter o valor na linha três linhas acima da linha atual. Ele soma o valor Sum(Sales) para o atual Customer ao valor Customertrês linhas acima. Os valores retornados para as três primeiras linhas Customer são null.
A tabela também mostra medidas mais complexas: uma criada a partir de Sum(Sales)+Above(Sum(Sales)) e uma rotulada como Higher?, que é criada a partir de IF(Sum(Sales)>Above(Sum(Sales)), 'Higher').
Exemplo 2:
Nas representações dos gráficos de tabela mostrados neste exemplo, foram adicionadas mais dimensões aos gráficos: Month e Product. Para gráficos com mais de uma dimensão, os resultados de expressões que contêm as funções Above, Below, Top e Bottom dependem da ordem em que as dimensões da coluna são classificadas pelo QlikView. O QlikView avalia as funções com base nos segmentos de coluna que resultam da dimensão que é classificada por último. A ordem de classificação da coluna é controlada no painel de propriedades em Classificação e não é necessariamente a ordem em que as colunas aparecem na tabela.
Na representação a seguir do gráfico de tabela para o Exemplo 2, a última dimensão classificada é Month, portanto a função Above avalia com base em meses. Há uma série de resultados para cada valor Product para cada mês (Jan a Aug) - um segmento de coluna. Isso é seguido por uma série para o próximo segmento de coluna: para cada Month para o próximo Product. Haverá um segmento de coluna para cada valor Customer para cada Product.
Customer | Product | Month | Sum(Sales) | Above(Sum(Sales)) |
---|---|---|---|---|
- | - | - | 2566 | - |
Astrida | AA | Jan | 46 | - |
Astrida | AA | Feb | 60 | 46 |
Astrida | AA | Mar | 70 | 60 |
Astrida | AA | Apr | 13 | 70 |
Astrida | AA | May | 78 | 13 |
Astrida | AA | Jun | 20 | 78 |
Astrida | AA | Jul | 45 | 20 |
Astrida | AA | Aug | 65 | 45 |
Exemplo 3:
Na representação do gráfico de tabela para o Exemplo 3, a última dimensão classificada é Product. Isto é feito movendo a dimensão Product para a posição 3 na guia Classificação do painel de propriedades. A função Above é avaliada para cada Product, e como existem apenas dois produtos, AA e BB, há apenas um resultado não "null" em cada série. Na linha BB para o mês Jan, o valor para Above(Sum(Sales)), é 46. Para a linha AA, o valor é null. O valor em cada linha AA para qualquer mês será sempre null, porque não há valor de Product acima de AA. A segunda série é avaliada emAA e BB para o mês Feb para o valor Customer, Astrida. Quando todos os meses forem avaliados para Astrida, a sequência é repetida para o segundo CustomerBetacab, e assim por diante.
Customer | Product | Month | Sum(Sales) | Above(Sum(Sales)) |
---|---|---|---|---|
- | - | - | 2566 | - |
Astrida | AA | Jan | 46 | - |
Astrida | BB | Jan | 46 | 46 |
Astrida | AA | Feb | 60 | - |
Astrida | BB | Feb | 60 | 60 |
Astrida | AA | Mar | 70 | - |
Astrida | BB | Mar | 70 | 70 |
Astrida | AA | Apr | 13 | - |
Astrida | BB | Apr | 13 | 13 |
Exemplo 4:
A função Above pode ser usada como entrada para as funções range. Por exemplo: RangeAvg (Above(Sum(Sales),1,3)).
Nos argumentos para a função Above(), offset é definido como 1 e count é definido como 3. A função encontra os resultados da expressão Sum(Sales) nas três linhas imediatamente acima da linha atual no segmento de coluna (onde há uma linha). Estes três valores são usados como entrada para a função RangeAvg(), que encontra a média de valores na variação de números fornecidos.
Uma tabela com Customer como dimensão dá os seguintes resultados para a expressão RangeAvg().
Customer | RangeAvg (Above(Sum(Sales),1,3)) |
---|---|
Astrida | - |
Betacab | 587 |
Canutility | 563 |
Divadip | 603 |
Dados usados nos exemplos:
Monthnames:
LOAD * INLINE [
Month, Monthnumber
Jan, 1
Feb, 2
Mar, 3
Apr, 4
May, 5
Jun, 6
Jul, 7
Aug, 8
Sep, 9
Oct, 10
Nov, 11
Dec, 12
];
Sales2013:
crosstable (Month, Sales) LOAD * inline [
Customer|Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec
Astrida|46|60|70|13|78|20|45|65|78|12|78|22
Betacab|65|56|22|79|12|56|45|24|32|78|55|15
Canutility|77|68|34|91|24|68|57|36|44|90|67|27
Divadip|57|36|44|90|67|27|57|68|47|90|80|94
] (delimiter is '|');
Para obter os meses para classificar na ordem correta, ao criar seus gráficos, acesse a aba Sort das propriedades do gráfico e marque a caixa de seleção Expression em Sort by. Na caixa de expressões, escreva Monthnumber.