Above

Above() は、テーブルの列セグメント内の現在の行の上にある行の数式を評価します。どの行が計算されるかは、offset 値により決定されますが、デフォルトは真上の行です。テーブル以外のチャートでは、Above() は、チャートのストレート テーブルに相当するセグメントの現在の行よりも上にある行を評価します。

Syntax:  

Above([TOTAL] expr [ , offset [,count]])

Return data type: デュアル

Arguments:  

引数 説明
expr メジャーの対象となるデータが含まれている数式または項目。
offset

offset n を 0 より大きい値にすると、数式の評価が現在の行から n 行上に移動します。

offset に 0 を指定すると、現在の行で数式を評価します。

offset が負の値である場合、Above 関数は、相応する正の offset 値が付いた Below 関数と同様に機能します。

count

3 番目の引数である count を 1 より大きい値に設定した場合、この関数は、count 値の範囲を返します。つまり、オリジナルのテーブルのセルから上方向に count 行の各値を返します。

この形式では、任意の特別な範囲関数の引数として関数を使用できます。 範囲関数

TOTAL

テーブルが 1 軸の場合、または TOTAL 修飾子が引数として使用される場合は、現在の列セグメントは常に列全体と等しくなります。

集計範囲の定義

列セグメントの最初の行では、上に行がないため、NULL 値が返されます。

注: 列セグメントは、現在のソート順で軸に同じ値を持つ連続したセルのサブセットとして定義されます。レコード間チャート関数は、チャートのストレート テーブルに相当する右端の軸を除外して列セグメントで実行されます。チャートに軸が 1 つしかない場合、または TOTAL 修飾子が指定されていると、数式はテーブル全体を評価します。
注: テーブルまたはテーブルに相当するアイテムに複数の縦軸が含まれる場合、現在の列セグメントには、項目間ソート順の最後の軸を表示する列を除くすべての軸列の現在行と同じ値を持つ行だけが含まれます。

Limitations:  

再帰呼び出しは、NULL を返します。

Examples and results:  

Example 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
例 1 のテーブルのチャート

この例で示されているテーブル チャートの図では、軸 Customer とメジャー Sum(Sales) および Above(Sum(Sales)) からテーブルが作成されています。

Customer の上には行がないため、列 Above(Sum(Sales)) は、Astrida を含む Customer に対して NULL を返します。たとえば、行 Betacab の結果は AstridaSum(Sales) の値を示し、Canutility の結果は Betacab などの Sum(Sales) の値を示します。

Sum(Sales)+Above(Sum(Sales)) というラベルの列では、Betacab 行の結果には、行 AstridaBetacab 値の加算結果 (539+587) が Sum(Sales) に表示されます。行 Canutility の結果は、Canutility + BetacabSum(Sales) の加算結果 (683+539) を示します。

数式 Sum(Sales)+Above(Sum(Sales), 3) を使用して作成された Above offset 3 というラベルのメジャーは、引数 offset3 に設定されており、現在の行より 3 行上の値を取得します。また、現在の CustomerSum(Sales) 値が 3 行上の Customer の値に追加されます。Customer の最初の 3 行で返される値は Null です。

テーブルには、Sum(Sales)+Above(Sum(Sales)) から作られたものと、Higher? というラベルの IF(Sum(Sales)>Above(Sum(Sales)), 'Higher') から作成されたより複雑なメジャーも表示されます。

ヒント: この関数は、棒グラフなどテーブル以外のチャートでも使用できます。
ヒント: その他のチャートの場合、どの行が関数に関連しているかわかりやすくするために、チャートをストレート テーブルに相当するセグメントに変換します。

Example 2:  

この例で示されているテーブル チャートの図では、より多くの軸が次のチャートに追加されています。MonthProduct。 複数の軸が含まれているチャートでは、AboveBelowTopBottom 関数を含む数式の結果は、QlikView における列軸のソート順序によって変わります。QlikView は、最後にソートされた軸の結果である列セグメントに基づいて関数を評価します。列のソート順は、[ソート] で制御され、必ずしも列がテーブルに表示される順序ではありません。

例 2 のテーブルのチャートを示した以下の図では、最後にソートされた軸が Month のため、Above 関数は月に基づいて評価を行います。列セグメントにある各月 (Jan から Aug) の各 Product の値について一連の結果が出されます。この後に次の列セグメントのシリーズ、つまり次の Month の各 Product の値が続きます。各 Product のそれぞれの Customer 値に列セグメントが生成されます。

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
例 2 のテーブルのチャート

Example 3:  

例 3 のテーブル チャートを示した図では、最後にソートされた軸が Product になっています。これは、プロパティ パネルにあるソート タブで Product を位置 3 に移動することで達成できます。Above 関数は各 Product について評価されます。製品は AABB の 2 つしかないため、Null 以外の結果は各シリーズにつき 1 つのみとなります。月が Jan の行 BB では、Above(Sum(Sales)) の値は 46 です。行 AA では、値は Null です。AA の上には Product の値がないため、任意の月の行 AA の値は常に Null になります。2 番目のシリーズは、Customer 値、Astrida について、月 FebAABB で評価されます。Astrida ですべての月を評価したら、2 番目の CustomerBetacab などでもこのステップを繰り返します。

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
例 3 のテーブルのチャート

Example 4:  

結果

Above 関数は、範囲関数への入力として使用できます。例: RangeAvg (Above(Sum(Sales),1,3))

Above() 関数の引数では、offset は 1 に設定され、count は 3 に設定されています。 列セグメントの現在の行のすぐ上の 3 行 (行がある場合) で数式 Sum(Sales) の結果を算出します。この 3 つの値は、RangeAvg() 関数への入力として使用され、指定された数値の範囲で平均値を算出します。

軸として Customer を有するテーブルによって、RangeAvg() の数式について次の結果が得られます。

Astrida
Betacab
Canutility
Divadip:
-
587
563
603

例で使用されているデータ:

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 '|');

月を取得して正しい順番でソートするには、チャートを作成する際に、チャート プロパティの[Sort] タブに移動し、[Sort by] の下で [Expression] チェック ボックスを選択します。数式ボックスに、Monthnumber と入力します。