# Top - 圖表函數

Top() 會在表格中某個資料行區段內的第一 (頂端) 列，評估運算式。用來計算的列取決於 offset 的值，如果呈現，預設情況下是頂端的列。對於表格以外的圖表，Top() 會評估圖表連續表同等表格中目前資料行的第一列。

語法：

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

傳回的資料類型： 雙值

引數

| 引數 | 描述 |
| --- | --- |
| expr | 包含待測量之資料的運算式或欄位。 |
| offset | 將 n 的 offset 指定為大於 1，則可將運算式的評估從頂端列往下移動 n 列。<br><br>若指定負值的位移，會讓 Top 函數的作用相當於包含對應正值位移的 Bottom 函數。 |
| count | 將第三個參數 count 指定為大於 1，函數會傳回 count 的範圍值，目前資料行區段的最後 count 列的每列一個值。 在這種形式下，該函數可作為任何特殊範圍函數的引數。 [範圍函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/RangeFunctions/RangeFunctionsInCharts.htm) |
| TOTAL | 如果表格為單一維度或 TOTAL 限定詞作為引數，則目前資料行區段一律等於整個資料行。<br><br>[定義彙總範圍](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

資訊備註資料行區段定義為連續的儲存格子集，針對目前排序順序中的維度具有相同的值。內部記錄圖表函數在資料行區段中進行計算，並排除同等連續表圖表中的最右側維度。如果圖表中只有一個維度，或者如果指定 TOTAL 限定詞，則該運算式會對完整表格進行評估。

資訊備註如果表格或同等表格有多個垂直維度，則目前資料行區段僅會包含在所有維度資料行中與目前列有相同值的列，除了顯示在欄位間排序順序中為最後一個維度的資料行之外。

限制：

* 遞迴呼叫會傳回 NULL。

* 當任何圖表運算式使用了此圖表函數時，就不允許在圖表中依據 Y 值排序，或在表格中依據運算式資料行排序。因此，這些排序替代選項會自動停用。若您在視覺化或表格中使用此圖表函數，視覺化的排序將還原為對此函數的排序輸入。

範例：圖表運算式

| 範例 | 結果 |
| --- | --- |
| `Top( Sum(Sales) )` | 傳回表格中欄區段的第一列 (頂端) 的 `Sales` 值。 |

## 範例 - Top 基礎事項

[](https://help.qlik.com/en-US/cloud-services/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)`，用來計算目前列的銷售值與頂端數來第 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/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-top-example.png)

在長條圖中使用 `Top` 函數可以在視覺上比較目前期間與頂端 (或第一個) 期間的銷售額之間的差異。

## 範例 - Top 使用情境

[](https://help.qlik.com/en-US/cloud-services/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))`，用來計算目前列與頂端 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/cloud-services/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))`，用來將目前 `Customer` 的 `Sum(Sales)` 值與頂端列的 `Customer` 相加。

* `=Sum(Sales)+Top(Sum(Sales), 3)`，用來將目前 `Customer` 的 `Sum(Sales)` 值與頂端數來第三列的 `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`，這是將 `Betacab` 和 `Astrida` 的 `Sum(Sales)` 值相加的結果，即頂端列的 `Customer`。

對於量值 `Sum(Sales)+Top(Sum(Sales), 3)`，引數 `offset` 設定為 `3`。該運算式將目前列和頂端數來第三列的 `Sum(Sales)` 值相加，即 `Canutility`。例如，為客戶 `Divadip` 傳回值 `1440`。這是將 `Divadip` 的 `Sum(Sales)` 值與 `Canutility` 的 `SumSales` 相加的結果 (`757`+`683`)。

## 瞭解更多資訊

* [Bottom - 圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/bottom.htm)
* [Above - 圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/above.htm)
* [Sum - 圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/BasicAggregationFunctions/sum.htm)
* [RangeAvg 指令碼與圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/RangeFunctions/rangeavg.htm)
* [範圍函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/RangeFunctions/RangeFunctionsInCharts.htm)