すべて展開 / 折りたたむ
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 修飾子が指定されていると、数式はテーブル全体を評価します。
情報メモ テーブルまたはテーブルに相当するアイテムに複数の縦軸が含まれる場合、現在の列セグメントには、項目間ソート順の最後の軸を表示する列を除くすべての軸列の現在行と同じ値を持つ行だけが含まれます。
制限事項:
例: チャートの数式
Above( Sum(Sales) )
現在の行より上の行の Sales の値を返します。
例 - Above の基本
チャートの数式
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。
ロード スクリプトには次が含まれています:
ロード スクリプト
Example:
LOAD * INLINE [
Year, Sales
2019, 1000
2020, 1500
2021, 1200
2022, 1800
2023, 1700
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:
次のメジャーを作成します:
=Sum(Sales) 、年間売上高を見つけます。
=Above(Sum(Sales)) 、前年の売上高を見つけます。
=Sum(Sales) - Above(Sum(Sales)) 、今年と前年の Sales の値の差異を計算します。
=RangeSum(Above(Sales, 1, 2)) 、過去 2 年間の売上の 2 年間の累計を表示します。
=(Sales - Above(Sales)) / Above(Sales) 、Sales の変化を比率/パーセンテージとして返します。 この値をパーセンテージで表示するには、 [数値書式 ] で、 [数値] > [書式設定 [シンプル]] > [12.34%] を選択します。
結果テーブル
Year
Sum(Sales)
Above(Sum(Sales))
Sum(Sales) - Above(Sum(Sales))
RangeSum(Above(Sales, 1, 2)
(Sales - Above(Sales)) / Above(Sales)
Totals 7200 - - 0 -
2019
1000
-
-
0
-
2020 1500 1000 500 1000 50.00% 2021 1200 1500 -300 2500 -20.00% 2022 1800 1200 600 2700 50.00% 2023 1700 1800 -100 3000 -5.56%
結果を見ると、現在の期間の Sales 値を前の期間と比較できます。
Sum(Sales)- Above(Sum(Sales)) メジャーは、現在の期間と前の期間を比較して、Sales 値の変化を返します。
RangeSum(Above(Sales, 1, 2)) メジャーは、前の 2 つの Sales 値の合計を返します。
(Sales - Above(Sales)) / Above(Sales) メジャーは、前の期間と比較した Sales の変化をパーセンテージで返します。
ヒント メモ この関数は、棒グラフなどテーブル以外のチャートでも使用できます。
次の手順を実行します。
棒グラフを作成し、この項目を軸として追加します。
次のメジャーを作成します:
Above 関数の結果を示す棒グラフ
棒グラフで Above 関数を使用すると、現在の期間と前の期間の売上の差異を視覚的に比較できます。
例 - Above のシナリオ
チャートの数式
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。
ロード スクリプトには次が含まれています:
ロード スクリプト
Example:
LOAD * INLINE [
SalesYear, SalesAmount
2019, 500
2020, 800
2021, 400
2022, 700
2023, 600
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:
次のメジャーを作成します:
=Sum(SalesAmount) 、売上を集計します。
=RangeSum(Above(SalesAmount, 0, RowNo())) 、SalesAmount 値の累計を計算します。
結果テーブル
SalesYear
Sum(SalesAmount)
RangeSum(Above(SalesAmount, 0, RowNo()))
Totals 3000 0
2019
500
500
2020 800 1300 2021 400 1700 2022 700 2400 2023 600 3000
結果は、RangeSum 関数と Above 関数を組み合わせて累積合計を作成する方法を示しています。
ヒント メモ この関数は、棒グラフなどテーブル以外のチャートでも使用できます。
次の手順を実行します。
棒グラフを作成し、この項目を軸として追加します。
次のメジャーを作成します:
年ごとの累計売上高を示す棒グラフ
例: Above を使用したチャートの数式
チャートの数式
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。
ロード スクリプトには次が含まれています:
ロード スクリプト
Monthnames:
LOAD *, Dual(MonthText,MonthNumber) as Month INLINE [
MonthText, 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 (MonthText, 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 '|');
結果
データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:
次のメジャーを作成します:
=Sum(Sales) 、売上の合計を計算します。
=Above(Sum(Sales)) 、前の行の売上合計を表示します。
=Sum(Sales)+Above(Sum(Sales)) 、現在の行より上の顧客行の売上合計と売上値の合計を合計します。
=Sum(Sales)+Above(Sum(Sales), 3) 、現在の Customer の Sum(Sales) 値と、3 行上にある Customer の値を合計します。
=IF(Sum(Sales)>Above(Sum(Sales)), 'Higher') 、上の行の顧客の Sum(Sales) よりも Sum(Sales) 結果が大きい顧客に「Higher 」というラベルを追加します。
結果テーブル
Customer
Sum(Sales)
Above(Sum(Sales))
Sum(Sales)+Above(Sum(Sales))
Sum(Sales)+Above(Sum(Sales), 3)
IF(Sum(Sales)>Above(Sum(Sales)), 'Higher')
Totals 2566 - - - -
Astrida
587
-
-
-
-
Betacab 539 587 1126 - - Canutility 683 539 1222 - Higher Divadip 757 683 1440 1344 Higher
メジャー Above(Sum(Sales)) は、その上に行がないため、顧客 Astrida に対して NULL を返します。顧客 Betacab の結果には、Astrida の Sum(Sales) の値が表示されます。Canutility の結果には Betacab の Sum(Sales) の値が表示され、以下同様に続きます。
メジャー Sum(Sales)+Above(Sum(Sales)) の場合、Betacab の行は、行 Betacab + Astrida (539+587 ) の Sum(Sales) 値を加算した結果を返します。Canutility 行の結果は、Canutility + Betacab (683+539 ) の Sum(Sales) 値を加算した結果を示します。
メジャー Sum(Sales)+Above(Sum(Sales), 3) には引数 offset があり、3 に設定されています。これは、現在の行の 3 つ上の行の値を取得します。また、現在の Customer の Sum(Sales) 値が 3 行上の Customer の値に追加されます。たとえば、Divadip の Sum(Sales) は、Divadip の 3 行上の顧客である Astrida の Sum(Sales) に追加されます。最初の 3 つの Customer 行に返される値は、データがないため null になります。
メジャー IF(Sum(Sales)>Above(Sum(Sales)), 'Higher') は、顧客 Canutility と Divadip の販売実績が、それぞれ上の行の顧客 Betacab と Canutility の販売合計よりも高いため、これらの顧客に対して値 Higher を返します。
ヒント メモ この関数は、棒グラフなどテーブル以外のチャートでも使用できます。
ヒント メモ その他のチャートの場合、どの行が関数に関連しているかわかりやすくするために、チャートをストレート テーブルに相当するセグメントに変換します。
例 - ソート順に基づく Above のシナリオチャートの数式 概要
データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。
ロード スクリプトには次が含まれています:
ロード スクリプト
Monthnames:
LOAD *, Dual(MonthText,MonthNumber) as Month INLINE [
MonthText, 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 (MonthText, 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 '|');
Product:
LOAD * inline [
Customer|Product|OrderNumber|UnitSales|UnitPrice
Astrida|AA|1|4|16
Astrida|AA|7|10|15
Astrida|BB|4|9|9
Betacab|CC|6|5|10
Betacab|AA|5|2|20
Betacab|BB||| 25
Canutility|AA|||15
Canutility|CC| ||19
Divadip|CC|2|4|16
Divadip|DD|3|1|25
] (delimiter is '|');
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
次のメジャーを作成します:
結果テーブル Customer Product Month Sum(Sales) Above(Sum(Sales)) Totals - - 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 Astrida AA Sep 78 65 Astrida AA Oct 12 78 Astrida AA Nov 78 12 Astrida AA Dec 22 78 Astrida BB Jan 46 - Astrida BB Feb 60 46
複数の軸が含まれているチャートでは、Above 、Below 、Top 、Bottom 関数を含む数式の結果は、Qlik Sense における列軸のソート順序によって変わります。Qlik Sense は、最後にソートされた軸の結果である列セグメントに基づいて関数を評価します。列のソート順は、[ソート ] のプロパティ パネルで制御され、必ずしも列がテーブルに表示される順序ではありません。
結果テーブルでは、最後にソートされた軸は Month なので、Above 関数は月に基づいて評価します。列セグメントにある各月 (Jan からDec ) の各 Product の値について一連の結果が出されます。この後に次の列セグメントのシリーズ、つまり次の Product の各 Month の値が続きます。各 Product のそれぞれの Customer 値に列セグメントが生成されます。
例 - 異なるソート順を使用した Above のシナリオ チャートの数式 概要
データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。
ロード スクリプトには次が含まれています:
ロード スクリプト
Monthnames:
LOAD *, Dual(MonthText,MonthNumber) as Month INLINE [
MonthText, 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 (MonthText, 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 '|');
Product:
LOAD * inline [
Customer|Product|OrderNumber|UnitSales|UnitPrice
Astrida|AA|1|4|16
Astrida|AA|7|10|15
Astrida|BB|4|9|9
Betacab|CC|6|5|10
Betacab|AA|5|2|20
Betacab|BB||| 25
Canutility|AA|||15
Canutility|CC| ||19
Divadip|CC|2|4|16
Divadip|DD|3|1|25
] (delimiter is '|');
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
次のメジャーを作成します:
プロパティ パネルでテーブルのソート順を変更します。[ソート ] を選択し、 [製品 ] 軸をソート順の 3 番目の位置にドラッグします。
結果テーブル Customer Product Month Sum(Sales) Above(Sum(Sales)) Totals - - 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 Astrida AA May 78 - Astrida BB May 78 78 Astrida AA Jun 20 - Astrida BB Jun 20 20 Astrida AA Jul 45 - Astrida BB Jul 45 45
結果のテーブルでは、最後にソートされた軸は Product です。Above 関数は各 Product について評価されます。製品は AA と BB の 2 つしかないため、Null 以外の結果は各シリーズにつき 1 つのみとなります。月が Jan の行 BB では、Above(Sum(Sales)) の値は 46 です。行 AA では、値は Null です。AA の上には Product の値がないため、任意の月の行 AA の値は常に Null になります。2 番目のシリーズは、Customer 値、Astrida について、月 Feb の AA と BB で評価されます。Astrida のすべての月を評価したら、2 番目の顧客 Betacab などに対してもこのステップを繰り返します。
情報メモ テーブルの結果には、データの一部のみが表示されます。完全な結果を確認するには、アプリで例を試してください。
例 - RangeAvg で Above 関数を使用する チャートの数式 概要
Above 関数は、範囲関数への入力として使用できます。この例では、RangeAvg で関数を使用します。
データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。
ロード スクリプトには次が含まれています:
ロード スクリプト
Monthnames:
LOAD *, Dual(MonthText,MonthNumber) as Month INLINE [
MonthText, 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 (MonthText, 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 '|');
Product:
LOAD * inline [
Customer|Product|OrderNumber|UnitSales|UnitPrice
Astrida|AA|1|4|16
Astrida|AA|7|10|15
Astrida|BB|4|9|9
Betacab|CC|6|5|10
Betacab|AA|5|2|20
Betacab|BB||| 25
Canutility|AA|||15
Canutility|CC| ||19
Divadip|CC|2|4|16
Divadip|DD|3|1|25
] (delimiter is '|');
結果
データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:
次のメジャーを作成します:
結果テーブル* Customer RangeAvg (Above(Sum(Sales),1,3)) Totals - Astrida - Betacab 587 Canutility 563 Divadip 603
Above 関数の引数では、offset は 1 に、count は 3 に設定されています。この関数は、列セグメントの現在行のすぐ上の 3 行 (行がある場合) で数式 Sum(Sales) の結果を算出します。この 3 つの値は、RangeAvg 関数への入力として使用され、指定された数値の範囲で平均値を算出します。