Above
Above() Funkcja oblicza wartość wyrażenia w wierszu znajdującym się nad bieżącym wierszem w obrębie segmentu kolumny w tabeli. Wiersz wybierany do obliczeń zależy od wartości opcjonalnego parametru offset — domyślnie jest to wiersz bezpośrednio poprzedzający bieżący. W przypadku wykresów niebędących tabelami funkcja Above() oblicza wartość dla wiersza poprzedzającego bieżący w tabeli prostej odpowiadającej wykresowi.
Składnia:
Above([TOTAL] expr [ , offset [,count]])
Typ zwracanych danych: podwójny
Argumenty:
- expr: Wyrażenie lub pole zawierające mierzone dane.
- offset: Określenie wartości offset n większej niż 0 powoduje przeniesienie oceny wyrażenia o n wierszy w górę od bieżącego wiersza. Podanie argumentu offset równego 0 spowoduje obliczenie wartości wyrażenia dla bieżącego wiersza. Określenie ujemnej wartości argumentu offset sprawia, że funkcja Above działa tak samo jak funkcja Below z odpowiednią dodatnią wartością argumentu offset.
- count: Jeśli trzeci argument count będzie większy od 1, funkcja zwróci zakres wartości count, po jednej dla każdego z count wierszy tabeli liczonych w górę od pierwotnej komórki. W tej postaci funkcja może być używana jako argument dla specjalnych funkcji zakresu. Funkcje zakresu
- TOTAL: Jeśli tabela jest jednowymiarowa lub jako argument zostanie podany kwalifikator TOTAL, bieżący segment kolumny jest zawsze równy całej kolumnie.
W przypadku pierwszego wiersza segmentu kolumny zostanie zwrócona wartość NULL, ponieważ nie ma żadnego wiersza nad tym wierszem.
Ograniczenia:
-
Wywołania rekurencyjne będą zwracać NULL.
-
Sortowanie według wartości Y w wykresach albo sortowanie według kolumn wyrażeń w tabelach jest niedozwolone, gdy w dowolnym z wyrażeń wykresu stosowana jest ta funkcja wykresu. W takiej sytuacji te opcje sortowania są automatycznie wyłączone. Kiedy używasz tej funkcji wykresu w wizualizacji albo tabeli, sortowanie wizualizacji zostanie przywrócone do sortowania danych wejściowych tej funkcji.
Przykłady i wyniki:
Przykład 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 |
W tym przypadku stosowny wykres został utworzony na podstawie wymiaru Customer oraz miar: Sum(Sales) i Above(Sum(Sales)).
W kolumnie Above(Sum(Sales)) zwracane są wartościNULL dla wiersza wymiaru Customer zawierającego wartość Astrida, ponieważ nie ma żadnego wiersza nad tym wierszem. Wynik dla klienta Betacab pokazuje wartość Sum(Sales) dla klienta Astrida, wynik dla klienta Canutility pokazuje wartość Sum(Sales) dla klienta Betacab itd.
W kolumnie zatytułowanej Sum(Sales)+Above(Sum(Sales)) wiersz klienta Betacab pokazuje wynik dodawania wartości Sum(Sales) z wierszy klientów Betacab i Astrida (539+587). Wynik w wierszu klienta Betacab pokazuje wynik dodawania wartości Sum(Sales) z wierszy klientów Canutility i Canutility (683+539).
Miara zatytułowana Above offset 3 utworzona za pomocą wyrażenia Sum(Sales)+Above(Sum(Sales), 3) ma argument offset o wartości 3, co oznacza, że pobiera wartość z wiersza znajdującego się o trzy wiersze powyżej bieżącego wiersza. W efekcie jej działania wartość Sum(Sales) dla bieżącego wiersza w kolumnie Customer jest dodawana do wartości wiersza w kolumnie Customer znajdującej się o trzy wiersze powyżej. Dla pierwszych trzech wierszy w kolumnie Customer zwracane są wartości null.
W tabeli tej przedstawione są również bardziej złożone miary: jedna utworzona na podstawie wyrażenia Sum(Sales)+Above(Sum(Sales)) i jedna zatytułowana Higher?, utworzona na podstawie wyrażenia IF(Sum(Sales)>Above(Sum(Sales)), 'Higher').
Przykład 2:
W tym przypadku do wykresów zostały dodane kolejne wymiary: Month i Product. W przypadku wykresów wielowymiarowych wyniki wyrażeń zawierających funkcje Above, Below, Top i Bottom są zależne od kolejności posortowania wymiarów kolumn przez QlikView. QlikView oblicza wartości funkcji na podstawie segmentów kolumny uzyskanych z wymiaru sortowanego jako ostatni. Kolejność sortowania kolumn określa się w polu Sortowanie i może ona być inna od kolejności wyświetlania kolumn w tabeli.
W wykresie tabeli dotyczącym przykładu 2 ostatnim sortowanym wymiarem jest Month, funkcja Above dokonuje zatem oceny na podstawie miesięcy. Dla każdej wartości w kolumnie Product istnieje szereg wyników dla każdego miesiąca (od Jan do Aug) — segment kolumny. Następnie pojawia się szereg dla następnego segmentu kolumny: dla każdego miesiąca Month dla następnej wartości z kolumny Product. Będzie istnieć segment kolumny dla każdej wartości w kolumnie Customer dla każdej wartości z kolumny 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 |
Przykład 3:
W wykresie tabeli dotyczącej przykładu 3 ostatnim sortowanym wymiarem jest Product. Jest to wynikiem przesunięcia wymiaru Product do pozycji 3 na karcie Sortuj w panelu właściwości. Funkcja Above jest oceniana dla każdej wartości w kolumnie Product. Występują tam tylko dwa produkty ( AA i BB), w każdym szeregu jest zatem tylko jeden wynik niebędący wartością null. W wierszu produktu BB dla miesiąca Jan wartość wyrażenia Above(Sum(Sales)) wynosi 46. W przypadku wiersza AA wartość wynosi null. Wartość w każdym wierszu AA dla dowolnego miesiąca zawsze będzie null, ponieważ nie ma żadnej wartości Product powyżej AA. Drugi szereg jest oceniany dla wartości AA i BB za miesiąc Feb dla znajdującego się w kolumnie Customer klienta Astrida. Po dokonaniu oceny wszystkich miesięcy dla klienta Astrida sekwencja ta zostaje powtórzona dla kolejnego klienta w kolumnie Customer (Betacab) itd.
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 |
Przykład 4:
Funkcję Above można stosować jako źródło danych wejściowych dla funkcji zakresu. Na przykład: RangeAvg (Above(Sum(Sales),1,3)).
W funkcji Above() argument offset jest ustawiony na 1, a count jest ustawiony na 3. Funkcja ta znajduje wyniki wyrażenia Sum(Sales) w trzech wierszach znajdujących się bezpośrednio nad bieżącym wierszem w segmencie kolumny (o ile jest tam wiersz). Wspomniane trzy wartości są stosowane jako dane wejściowe dla funkcji RangeAvg(), która znajduje średnią wartości w określonym szeregu liczbowym.
Tabela z kolumną Customer jako wymiarem zwraca następujące wyniki dla wyrażenia RangeAvg().
Customer | RangeAvg (Above(Sum(Sales),1,3)) |
---|---|
Astrida | - |
Betacab | 587 |
Canutility | 563 |
Divadip | 603 |
Dane zastosowane w przykładach:
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 '|');
Aby miesiące były sortowane we właściwej kolejności, podczas tworzenia arkuszy przejdź do karty Sort we właściwościach wykresu i zaznacz pole wyboru Expression w sekcji Sort by. W polu wyrażenia podaj Monthnumber.