# Bottom - チャート関数

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

構文:

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

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

引数

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

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

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

制限事項:

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

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

例: チャートの数式

| 例 | 結果 |
| --- | --- |
| `Bottom( Sum(Sales) )` | テーブル内の列セグメントの最後の (一番下の) 行の `Sales` の値を返します。 |

## 例 - Bottom の基本

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

#### チャートの数式

概要

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

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

* 「`Example`」というデータ テーブルにロードされるデータセット。

* データ テーブル内の次の項目:

  * `Year`

  * `Sales`

ロード スクリプト

```
Example:
LOAD * INLINE [
Year, Sales
2019, 1000
2020, 1500
2021, 1200
2022, 1800
2023, 1700
];
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:

* `Year`

次のメジャーを作成します:

* `=Sum(Sales)`、年間売上高を見つけます。

* `=Bottom(Sum(Sales))`、昨年の売上高を見つけます。

* `=Sum(Sales) - Bottom(Sum(Sales))`、今年と昨年の `Sales` の値の差異を計算します。

* `=Sum(Sales)+Bottom(Sum(Sales), 3)`、今年の売上高と 3 年前の売上高の合計を計算します。

* `=(Sales - Bottom(Sales)) / Bottom(Sales)`、前年と比較した `Sales` の変化を比率/パーセンテージとして返します。 この値をパーセンテージで表示するには、 [数値書式] で、 [数値] &gt; [書式設定 [シンプル]] &gt; [12.34%] を選択します。

テーブルを `Year` の軸で昇順にソートします。

結果テーブル

| Year | Sum(Sales) | Bottom(Sum(Sales)) | Sum(Sales) - Bottom(Sum(Sales)) | Sum(Sales)+Bottom(Sum(Sales), 3) | (Sales - Bottom(Sales)) / Bottom(Sales) |
| --- | --- | --- | --- | --- | --- |
| Totals | 7200 | 1700 | 5500 | 8400 | - |
| 2019 | 1000 | 1700 | -700 | 2200 | -41.18% |
| 2020 | 1500 | 1700 | -200 | 2700 | -11.76% |
| 2021 | 1200 | 1700 | -500 | 2400 | -29.41% |
| 2022 | 1800 | 1700 | 100 | 3000 | 5.88% |
| 2023 | 1700 | 1700 | 0 | 2900 | 0.00% |

結果を見ると、現在の期間の `Sales` 値を前の期間または最新の期間と比較できます。

* `Sum(Sales) - Bottom(Sum(Sales))` メジャーは、現在の期間と最新の期間を比較して、`Sales` 値の変化を返します。

* `Sum(Sales)+Bottom(Sum(Sales), 3)` メジャーは、現在の行と 3 番目に最近の期間の `Sales` の合計を返します。

* `(Sales - Bottom(Sales)) / Bottom(Sales)` メジャーは、最新の期間と比較した `Sales` の変化をパーセンテージで返します。

ヒント メモこの関数は、棒グラフなどテーブル以外のチャートでも使用できます。

次の手順を実行します。

棒グラフを作成し、この項目を軸として追加します。

* `Year`

次のメジャーを作成します:

* `=Sum(Sales) - Bottom(Sum(Sales))`、現在の期間と最新の期間の売上高の差異を返します。

Bottom 関数の結果を示す棒グラフ

Bottom 関数の結果を示す棒グラフ

BottomBottom 関数の結果を示す棒グラフ ![現在の期間と前の期間の売上高の差異を示す棒グラフ。](https://help.qlik.com/ja-JP/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-bottom-example.png)

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

## 例 - Bottom のシナリオ

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

#### チャートの数式

概要

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

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

* 「`Example`」というデータ テーブルにロードされるデータセット。

* データ テーブル内の次の項目:

  * `OrderID`

  * `Product`

  * `SalesValue`

  * `OrderDate`

ロード スクリプト

```
Example:
LOAD * INLINE [
OrderID, Product, SalesValue, OrderDate
1, "Product A", 500, '2023-01-10'
2, "Product B", 300, '2023-01-15'
3, "Product C", 450, '2023-02-01'
4, "Product D", 700, '2023-02-20'
5, "Product E", 350, '2023-03-05'
];
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:

* `Product`

次のメジャーを作成します:

* `=RangeAvg (Bottom(Sum(SalesValue),1,3))`、最新の 3 行の平均を返します。

* `=Sum(SalesValue) - RangeAvg (Bottom(Sum(SalesValue),1,3))`で、現在の行と直近の3行の平均との分散を計算します。

* `=Sum(SalesValue)` は現在の行の合計 `SalesValue` を計算します。

結果テーブル

| Product | RangeAvg (Bottom(Sum(SalesValue),1,3)) | Sum(SalesValue) - RangeAvg (Bottom(Sum(SalesValue),1,3)) | Sum(SalesValue) |
| --- | --- | --- | --- |
| Totals | 500 | 1800 | 2300 |
| 2019 | 500 | 0 | 500 |
| 2020 | 500 | -200 | 300 |
| 2021 | 500 | -50 | 450 |
| 2022 | 500 | 200 | 700 |
| 2023 | 500 | -150 | 350 |

結果は、`RangeSum` 関数と `Bottom` 関数の組み合わせを使用して、売上値を分析および比較する方法を示しています。

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/bottom.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)`、売上の合計を計算します。

* `=Bottom(Sum(Sales))`、一番下の行に `Customer` の売上合計を表示します。

* `=Sum(Sales)+Bottom(Sum(Sales))`、現在の `Customer` の `Sum(Sales)` 値と一番下の行の `Customer` を加算します。

* `=Sum(Sales)+Bottom(Sum(Sales), 3)`、現在の `Customer` の `Sum(Sales)` 値と、下から 3 番目の `Customer` の値を加算します。

結果テーブル

| Customer | Sum(Sales) | Bottom(Sum(Sales)) | Sum(Sales)+Bottom(Sum(Sales)) | Sum(Sales)+Bottom(Sum(Sales), 3) |
| --- | --- | --- | --- | --- |
| Totals | 2566 | 757 | 3323 | 3105 |
| Astrida | 587 | 757 | 1344 | 1126 |
| Betacab | 539 | 757 | 1296 | 1078 |
| Canutilty | 683 | 757 | 1440 | 1222 |
| Divadip | 757 | 757 | 1514 | 1296 |

メジャー `Bottom(Sum(Sales))` は、一番下の行の値 `Divadip` であるため、すべての行に対して `757` を返します。

メジャー `Sum(Sales)+Bottom(Sum(Sales))` の場合、行 `Astrida` は `1344` を返します。これは、`Astrida` の `Sum(Sales)` 値と `Divadip` (一番下の行の `Customer`) を追加した結果です。

メジャー `Sum(Sales)+Bottom(Sum(Sales), 3)` の場合、引数 `offset` は `3` に設定されます。この数式は、現在の行の `Sum(Sales)` 値と下から 3 番目の行の `Betacab` 値を加算します。たとえば、顧客 `Astrida` に対しては、値 `1126` が返されます。これは、`Astrida` の `Sum(Sales)` 値と、`Betacab` の `SumSales` を加算した結果です (`587` + `539`)。

## 詳細を見る

* [Top - チャート関数](https://help.qlik.com/ja-JP/sense/November2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/top.htm)