Above - チャート関数

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

構文:  

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

戻り値のデータ型: デュアル

引数:  

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

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

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

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

count

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

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

TOTAL

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

参照項目: 集計範囲の定義

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

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

制限:  

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

例と結果:  

例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))というラベルの列では、Astrida 行の結果には、行 BetacabBetacab 値の加算結果 (539+587) がSum(Sales) に表示されます。Canutility行の結果には、行 CanutilityBetacab 値の加算結果 (683+539) が Sum(Sales) に表示されます。

数式 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') から作成されたより複雑なメジャーも表示されます。

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

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

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

例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と入力します。