# Bottom — функция диаграммы

Функция Bottom() оценивает выражение в последней (нижней) строке сегмента столбца в таблице. Строка, для которой выполняется вычисление, зависит от значения элемента offset, если таковой имеет место, по умолчанию принимается нижняя строка. Для диаграмм, за исключением таблиц, оценка выполняется в последней строке текущего столбца в эквиваленте прямой таблицы диаграммы.

Синтаксис:

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

Возвращаемые типы данных: двойное значение

Аргументы

| Аргумент | Описание |
| --- | --- |
| expr | Выражение или поле, содержащее данные для измерения. |
| offset | Если задать значение offsetn больше 1, можно будет переместить оценку выражения вверх на n строк выше нижней строки.<br><br>Если задать отрицательное число смещения, функция Bottom будет работать как функция Top с соответствующим положительным числом смещения. |
| count | Если задать для третьего параметра count значение больше 1, функция вернет не одно, а ряд значений элемента count: по одному для каждой последней строки элемента count текущего сегмента столбца. В данной форме функция может использоваться в качестве аргумента для любой специальной функции интервала. [Функции над выборкой](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/RangeFunctions/RangeFunctionsInCharts.htm) |
| TOTAL | Если таблица имеет одно измерение, или если в качестве аргумента используется префикс TOTAL, текущий сегмент столбца всегда равен всему столбцу.<br><br>[Определение объема агрегирования](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

Примечание к информацииСегмент столбца определяется как последовательное подмножество ячеек с теми же значениями для измерений в текущем порядке сортировки. Межзаписные функции диаграмм выполняют вычисления в сегменте столбца за исключением крайнего правого измерения в эквивалентной прямой таблице. Если в диаграмме есть только одно измерение, или если указан квалификатор TOTAL, выражение оценивается по всей таблице.

Примечание к информацииЕсли таблица или эквивалент таблицы имеют несколько вертикальных измерений, текущий сегмент столбца будет включать только строки с теми же значениями, что и текущая строка во всех столбцах измерений, кроме столбца с последним измерением в межполевом порядке сортировки.

Ограничения:

* Рекурсивные вызовы возвращают значение NULL.

* Сортировка по значениям y на диаграммах или сортировка по столбцам выражений в таблицах не допускается, если в любом из выражений диаграммы используется эта функция диаграмм. Данные возможности сортировки автоматически отключаются. Когда используется эта функция диаграмм в визуализации или таблице, сортировка визуализации будет возвращена к сортировке на входе этой функции.

Пример: выражения диаграммы

| Пример | Результат |
| --- | --- |
| `Bottom( Sum(Sales) )` | Возвращает значение `Sales` для последней (нижней) строки сегмента в таблице. |

## Пример. Основы использования функции Bottom

[](https://help.qlik.com/en-US/cloud-services/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)`, чтобы рассчитать сумму продаж в текущем году и значением три года назад.

* `=(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)` возвращает сумму `Sales` для текущей строки и периода три года назад.

* Мера `(Sales - Bottom(Sales)) / Bottom(Sales)` возвращает изменение в `Sales` относительно последнего периода в процентах.

Примечание к подсказкеЭту функцию можно также использовать в диаграммах, кроме таблиц, например, в линейчатых диаграммах.

Выполните следующие действия.

Создайте линейчатую диаграмму и добавьте это поле как измерение:

* `Year`

Создайте следующую меру:

* `=Sum(Sales) - Bottom(Sum(Sales))`, чтобы вернуть разницу в продажах между текущим и последним периодом.

Линейчатая диаграмма, демонстрирующая результаты для функции Bottom.

Линейчатая диаграмма, демонстрирующая результаты для функции Bottom.

Линейчатая диаграмма, демонстрирующая результаты для функции BottomBottom. ![Линейчатая диаграмма, демонстрирующая изменение в продажах между текущим и последним периодом.](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-bottom-example.png)

Использование функции `Bottom` в линейчатой диаграмме позволяет наглядным образом сравнить изменение продаж за текущий период относительно последнего периода.

## Пример. Сценарий использования Bottom

[](https://help.qlik.com/en-US/cloud-services/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/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/bottom.htm)

#### Выражение диаграммы

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Две таблицы, которые называются `Monthnames` и `Sales2013`.

Скрипт загрузки

```
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))`, чтобы добавить значение `Sum(Sales)` текущего `Customer` к значению `Customer` в нижней строке.

* `=Sum(Sales)+Bottom(Sum(Sales), 3)`, чтобы добавить значение `Sum(Sales)` текущего `Customer` к значению `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))` возвращает `757` для всех строк, поскольку это значение нижней строки: `Divadip`.

Для меры `Sum(Sales)+Bottom(Sum(Sales))` строка `Astrida` возвращает `1344`, что является результатом сложения значений `Sum(Sales)` для `Astrida` и `Divadip`, `Customer` в нижней строке.

Мера `Sum(Sales)+Bottom(Sum(Sales), 3)` имеет аргумент `offset`, равный `3`. Это выражение добавляет значение `Sum(Sales)` из текущей строки и третьей строки снизу, `Betacab`. Например, для клиента `Astrida` возвращается значение `1126`. Это результат сложения значения `Sum(Sales)` для `Astrida` и `SumSales` для `Betacab` (`587`+`539`).

## Подробнее

* [Top — функция диаграммы](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/top.htm)