Below
Below() は、テーブルの列セグメント内の現在の行の下にある行の数式を評価します。どの行が計算されるかは、offset 値により決定されますが、デフォルトは真下の行です。テーブル以外のチャートでは、Below() は、チャートのストレート テーブルに相当するセグメントの現在の行よりも下にある行を評価します。
構文:
Below([TOTAL] expression [ , offset [,count ]])
戻り値データ型: デュアル
引数:
- expr: メジャーの対象となるデータが含まれている数式または項目。
- offset:offset n を 0 より大きい値に指定すると、数式の評価が現在の行から n 行上に移動します。offset に 0 を指定すると、現在の行で数式を評価します。 offset を負の値に指定すると、Above 関数は、対応する正の offset 値が付いた Below 関数と同様に機能します。
- count: 3 番目の引数である count を 1 より大きい値に設定した場合、この関数は、count 値の範囲を返します。つまり、オリジナルのテーブルのセルから上方向に count 行の各値を返します。 この形式では、任意の特別な範囲関数の引数として関数を使用できます。 範囲関数
- TOTAL: テーブルが 1 軸の場合、または TOTAL 修飾子が引数として使用される場合は、現在の列セグメントは常に列全体と等しくなります。
列セグメントの最後の行では下に行が存在しないため、NULL 値が返されます。
制限事項:
-
再帰呼び出しは、NULL を返します。
-
チャートの式いずれかにこのチャート関数が使用されている場合、チャートの y 値のソート、またはテーブルの式列ごとのソートは許可されません。よって、これらのソート機能は自動的に無効になります。ビジュアライゼーションまたはテーブルでこのチャート関数を使用すると、ビジュアライゼーションのソートは、レコード間の関数に対するソートされた入力の状態に戻ります。
例と結果:
例1:
Customer | Sum(Sales) | Below(Sum(Sales)) | Sum(Sales) + Below(Sum(Sales)) | Below offset 3 | Higher? |
---|---|---|---|---|---|
- | 2566 | - | - | 1344 | - |
Astrida | 587 | 539 | 1126 | - | Higher |
Betacab | 539 | 683 | 1222 | - | - |
Canutility | 683 | 757 | 1440 | - | - |
Divadip | 757 | - | - | - | - |
この例 1 で示されているテーブル チャートの図では、軸 Customer とメジャー Sum(Sales) および Below(Sum(Sales)) からテーブルが作成されています。
Divadip を含む Customer 行の下には行がないため、列 Below(Sum(Sales)) はこの行に対して NULL を返します。たとえば、行 Canutility の結果は Divadip の Sum(Sales) の値を示し、Betacab の結果は Canutility などの Sum(Sales) の値を示します。
テーブルには、より複雑なメジャーも含まれます (列 Sum(Sales)+Below(Sum(Sales)), Below +Offset 3 および Higher? というラベルのコラムを参照) これらの数式は、次の説明のとおり機能します。
Sum(Sales)+Below(Sum(Sales)) というラベルの列では、Astrida 行の結果には、行 Astrida と Betacab 値の加算結果 (539+587) が Sum(Sales) に表示されます。行 Betacab の結果は、Canutility + Betacab の Sum(Sales) の加算結果 (539+683) を示します。
数式 Sum(Sales)+Below(Sum(Sales), 3) を使用して作成された Below +Offset 3 というラベルのメジャーは、引数 offset が 3 に設定されており、現在の行より 3 つ下の行の値を取得します。現在の Customer の Sum(Sales) 値を 3 行下の Customer の値に加えます。Customer の最後の 3 行の値は Null です。
Higher? というラベルのメジャーは、IF(Sum(Sales)>Below(Sum(Sales)), 'Higher') という数式から作成されています。これは、メジャー Sum(Sales) の現在の行の値をその下の行と比較します。現在の行の値が大きい場合、「Higher」が出力されます。
複数の軸が含まれているチャートでは、Above、Below、Top、Bottom 関数を含む数式の結果は、QlikView における列軸のソート順序によって変わります。QlikView は、最後にソートされた軸の結果である列セグメントに基づいて関数を評価します。列のソート順は、[ソート] で制御され、必ずしも列がテーブルに表示される順序ではありません。詳細については、Above 関数の例 2 を参照してください。
例2:
Below 関数は、範囲関数への入力として使用できます。例: RangeAvg (Below(Sum(Sales),1,3))。
Below() 関数の引数では、offset は 1 に設定され、count は 3 に設定されています。 列セグメントの現在行のすぐ下の 3 行 (行がある場合) で数式 Sum(Sales) の結果を算出します。この 3 つの値は、RangeAvg() 関数への入力として使用され、指定された数値の範囲で平均値を算出します。
軸として Customer を有するテーブルにより、数式に次の結果が得られます。
Customer | RangeAvg (Below(Sum(Sales),1,3)) |
---|---|
Astrida | 659.67 |
Betacab | 720 |
Canutility | 757 |
Divadip | - |
例で使用されているデータ:
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 と入力します。