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

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

Синтаксис:

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

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

Аргументы

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

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

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

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

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

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

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

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

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

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

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

Обзор

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

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

* Набор данных, который загружается в таблицу данных под именем `Example`.

* Следующие поля в таблице данных:

  * `Year`

  * `Sales`

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

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

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:

* `Year`

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

* `=Sum(Sales)`, чтобы рассчитать годовой объем продаж.

* `=Top(Sum(Sales))`, чтобы найти значение продаж за первый год, используется первая (верхняя) строка столбца в таблице.

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

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

* `=(Sales - Top(Sales)) / Top(Sales)` позволяет получить изменение в `Sales` виде отношения / процента в сравнении с первой строкой. Чтобы показать это значение в процентах, в разделе Форматирование чисел выберите Число &gt; Простое форматирование &gt; 12,34%.

Сортировка таблицы по измерению `Year` в порядке возрастания.

Таблица результатов

| Year | Sum(Sales) | Top(Sum(Sales)) | Sum(Sales) - Top(Sum(Sales)) | Sum(Sales)-Top(Sum(Sales), 3) | (Sales - Top(Sales)) / Top(Sales) |
| --- | --- | --- | --- | --- | --- |
| Totals | 7200 | 1000 | 6200 | 6000 | - |
| 2019 | 1000 | 1000 | 0 | -200 | 0.00% |
| 2020 | 1500 | 1000 | 500 | 300 | 50.00% |
| 2021 | 1200 | 1000 | 200 | 0 | 20.00% |
| 2022 | 1800 | 1000 | 800 | 600 | 80.00% |
| 2023 | 1700 | 1000 | 700 | 500 | 70.00% |

По результатам можно сравнить значения `Sales` в текущем периоде с периодом, представленным в верхней (или первой) строке.

* Мера `Sum(Sales) - Top(Sum(Sales))` возвращает изменение в значениях `Sales`, сравнивая текущий период с первым.

* Мера `Sum(Sales)-Top(Sum(Sales), 3)` возвращает сумму `Sales` для текущей строки минус третий период сверху.

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

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

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

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

* `Year`

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

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

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

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

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

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

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/top.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(Top(Sum(SalesValue),1,3))` возвращает среднее значение по трем верхним строкам.

* `=Sum(SalesValue) - RangeAvg (Top(Sum(SalesValue),1,3))`, чтобы рассчитать изменение между текущей строкой и средним значением из трех верхних строк.

* `=Sum(SalesValue)`, чтобы рассчитать итог `SalesValue` для текущей строки.

Таблица результатов

| Product | RangeAvg(Top(Sum(SalesValue),1,3)) | Sum(SalesValue) - RangeAvg (Top(Sum(SalesValue),1,3)) | Sum(SalesValue) |
| --- | --- | --- | --- |
| Totals | 416.67 | 1883.33 | 2300 |
| 2019 | 416.67 | 83.33 | 500 |
| 2020 | 416.67 | --116.67 | 300 |
| 2021 | 416.67 | 33.33 | 450 |
| 2022 | 416.67 | 283.33 | 700 |
| 2023 | 416.67 | -66.67 | 350 |

Результаты показывают, каким образом можно использовать комбинацию функций `RangeSum` и `Top` для анализа и сравнения значений продаж.

## Пример: выражение диаграммы, использующее Top

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/top.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)`, чтобы вычислить сумму продаж.

* `=Top(Sum(Sales))`, чтобы показать сумму продаж для `Customer` в верхней строке.

* `=Sum(Sales)+Top(Sum(Sales))`, чтобы добавить значение `Sum(Sales)` для текущего `Customer` к значению `Customer` в верхней строке.

* `=Sum(Sales)+Top(Sum(Sales), 3)`, чтобы добавить значение `Sum(Sales)` для текущего `Customer` к значению `Customer` в третьей сверху строке.

Таблица результатов

| Customer | Sum(Sales) | Top(Sum(Sales)) | Sum(Sales)+Top(Sum(Sales)) | Sum(Sales)+Top(Sum(Sales), 3) |
| --- | --- | --- | --- | --- |
| Totals | 2566 | 587 | 3153 | 3249 |
| Astrida | 587 | 587 | 1174 | 1270 |
| Betacab | 539 | 587 | 1126 | 1222 |
| Canutilty | 683 | 587 | 1270 | 1366 |
| Divadip | 757 | 587 | 1344 | 1440 |

Мера `Top(Sum(Sales))` возвращает `587` для всех строк, поскольку это значение верхней строки: `Astrida`.

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

Мера `Sum(Sales)+Top(Sum(Sales), 3)` имеет аргумент `offset`, равный `3`. Это выражение добавляет значение `Sum(Sales)` из текущей строки и третьей строки снизу, `Canutility`. Например, для клиента `Divadip` возвращается значение `1440`. Это результат сложения значения `Sum(Sales)` для `Divadip` и `SumSales` для `Canutility` (`757`+`683`).

## Подробнее

* [Bottom — функция диаграммы](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/bottom.htm)
* [Above — функция диаграммы](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/above.htm)
* [Sum — функция диаграммы](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/BasicAggregationFunctions/sum.htm)
* [RangeAvg — функция скриптa и диаграммы](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/RangeFunctions/rangeavg.htm)
* [Функции над выборкой](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/RangeFunctions/RangeFunctionsInCharts.htm)