# Above - チャート関数

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

構文:

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

戻り値データ型： デュアル

引数

| 引数 | 説明 |
| --- | --- |
| expr | メジャーの対象となるデータが含まれている数式または項目。 |
| offset | offset n を 0 より大きい値にすると、数式の評価が現在の行から n 行上に移動します。<br><br>offset に 0 を指定すると、現在の行で数式が評価されます。<br><br>offset が負の値である場合、Above 関数は、相応する正の offset 値が付いた Below 関数と同様に機能します。 |
| count | 3 番目の引数 count を 1 より大きい値にすると、この関数は count 値の範囲を返します。つまり、オリジナルのテーブルのセルから上方向に count 行の各値を返します。<br><br>この形式では、特別な範囲関数の引数として関数を使用できます。 [範囲関数](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/RangeFunctions/RangeFunctionsInCharts.htm) |
| TOTAL | テーブルが 1 軸の場合、または TOTAL 修飾子が引数として使用される場合は、現在の列セグメントは常に列全体と等しくなります。<br><br>[集計範囲の定義](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

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

情報メモ列セグメントは、現在のソート順で軸に同じ値を持つ連続したセルのサブセットとして定義されます。レコード間チャート関数は、チャートのストレート テーブルに相当する右端の軸を除外して列セグメントで実行されます。チャートに軸が 1 つしかない場合、または TOTAL 修飾子が指定されていると、数式はテーブル全体を評価します。

情報メモテーブルまたはテーブルに相当するアイテムに複数の縦軸が含まれる場合、現在の列セグメントには、項目間ソート順の最後の軸を表示する列を除くすべての軸列の現在行と同じ値を持つ行だけが含まれます。

制限事項:

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

* チャートの式いずれかにこのチャート関数が使用されている場合、チャートの y 値のソート、またはテーブルの式列ごとのソートは許可されません。よって、これらのソート機能は自動的に無効になります。ビジュアライゼーションまたはテーブルでこのチャート関数を使用すると、ビジュアライゼーションのソートは、レコード間の関数に対するソートされた入力の状態に戻ります。

例: チャートの数式

| 例 | 結果 |
| --- | --- |
| `Above( Sum(Sales) )` | 現在の行より上の行の `Sales` の値を返します。 |

## 例 - Above の基本

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/above.htm)

#### チャートの数式

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* 「`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` の変化を比率/パーセンテージとして返します。 この値をパーセンテージで表示するには、 [数値書式] で、 [数値] &gt; [書式設定 [シンプル]] &gt; [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 関数の結果を示す棒グラフ

AboveAbove 関数の結果を示す棒グラフ ![売上高合計の前年比の差異を示す棒グラフ](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-above-example.png)

棒グラフで `Above` 関数を使用すると、現在の期間と前の期間の売上の差異を視覚的に比較できます。

## 例 - Above のシナリオ

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/above.htm)

#### チャートの数式

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* 「`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()))`、累計売上高を返します。

年ごとの累計売上高を示す棒グラフ

年ごとの累計売上高を示す棒グラフ

年ごとの累計売上高を示す棒グラフ ![売上年ごとの累計売上高を示す棒グラフ。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-above-example2.png)

## 例: Above を使用したチャートの数式

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/above.htm)

#### チャートの数式

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* `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)&gt;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 のシナリオ

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/above.htm)

#### チャートの数式

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* 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 のシナリオ

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/above.htm)

#### チャートの数式

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* 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 関数を使用する

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/above.htm)

#### チャートの数式

概要

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 関数への入力として使用され、指定された数値の範囲で平均値を算出します。

## 詳細を見る

* [Below - チャート関数](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/below.htm)
* [Bottom - チャート関数](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/bottom.htm)
* [Top - チャート関数](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/top.htm)
* [RangeAvg スクリプトおよびチャート関数](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/RangeFunctions/rangeavg.htm)