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 値が返されます。
制限事項:
-
再帰呼び出しは NULL を返します。
-
チャートの式いずれかにこのチャート関数が使用されている場合、チャートの y 値のソート、またはテーブルの式列ごとのソートは許可されません。よって、これらのソート機能は自動的に無効になります。ビジュアライゼーションまたはテーブルでこのチャート関数を使用すると、ビジュアライゼーションのソートは、レコード間の関数に対するソートされた入力の状態に戻ります。
| 例 | 結果 |
|---|---|
|
Above( Sum(Sales) ) |
現在の行より上の行の Sales の値を返します。 |
例 - Above の基本
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。
ロード スクリプトには次が含まれています:
-
「Example」というデータ テーブルにロードされるデータセット。
-
データ テーブル内の次の項目:
-
Year
-
Sales
-
ロード スクリプト
Example:
LOAD * INLINE [
Year, Sales
2019, 1000
2020, 1500
2021, 1200
2022, 1800
2023, 1700
];結果
データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:
-
Year
次のメジャーを作成します:
-
=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 の変化をパーセンテージで返します。
次の手順を実行します。
棒グラフを作成し、この項目を軸として追加します。
-
Year
次のメジャーを作成します:
-
=Sum(Sales) - Above(Sum(Sales))、前年比の差異を返します。
Above 関数の結果を示す棒グラフ

棒グラフで Above 関数を使用すると、現在の期間と前の期間の売上の差異を視覚的に比較できます。
例 - Above のシナリオ
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。
ロード スクリプトには次が含まれています:
-
「Example」というデータ テーブルにロードされるデータセット。
-
データ テーブル内の次の項目:
-
SalesYear
-
SalesAmount
-
ロード スクリプト
Example:
LOAD * INLINE [
SalesYear, SalesAmount
2019, 500
2020, 800
2021, 400
2022, 700
2023, 600
];結果
データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:
-
SalesYear
次のメジャーを作成します:
-
=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 関数を組み合わせて累積合計を作成する方法を示しています。
次の手順を実行します。
棒グラフを作成し、この項目を軸として追加します。
-
SalesYear
次のメジャーを作成します:
-
=RangeSum(Above(SalesAmount, 0, RowNo()))、累計売上高を返します。
年ごとの累計売上高を示す棒グラフ

例: Above を使用したチャートの数式
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。
ロード スクリプトには次が含まれています:
-
Monthnames と Sales2013 と呼ばれる 2 つのデータ テーブル。
ロード スクリプト
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 '|');結果
データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:
-
Customer
次のメジャーを作成します:
-
=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、Sales2013、Product と呼ばれる 3 つのデータ テーブル。
ロード スクリプト
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))、前の行の売上合計を表示します。
| 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、Sales2013、Product と呼ばれる 3 つのデータ テーブル。
ロード スクリプト
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))、前の行の売上合計を表示します。
プロパティ パネルでテーブルのソート順を変更します。[ソート] を選択し、 [製品] 軸をソート順の 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、Sales2013、Product と呼ばれる 3 つのデータ テーブル。
ロード スクリプト
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))
| 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 関数への入力として使用され、指定された数値の範囲で平均値を算出します。