# First - 圖表函數

First() 傳回以樞紐分析表的維度值評估而得的運算式值，這些值會顯示在樞紐分析表中目前列區段的第一個資料行中。此函數在所有圖表類型中都會傳回 NULL，除了樞紐分析表以外。

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

語法：

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

引數

| 引數 | 描述 |
| --- | --- |
| expression | 包含待測量之資料的運算式或欄位。 |
| offset | 將一個 offset n 指定為大於 1，則可將運算式的評估從第一欄往右移動 n 欄。<br><br>若將位移指定為 0，將會評估目前列區段的第一欄的運算式。<br><br>若將位移指定為 0，則會根據目前列來評估運算式。<br><br>若指定負值的位移，會讓 First 函數的作用相當於包含對應正值位移的 Last 函數。 |
| count | 將第三個參數 count 指定為大於 1，函數會傳回一系列值，從原始儲存格往右算，每個表格欄的值最多為 count 個。 |
| TOTAL | 如果表格為單一維度或 TOTAL 限定詞作為引數，則目前資料行區段一律等於整個資料行。<br><br>[定義彙總範圍](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

如果樞紐分析表有多個水平維度，則目前列區段僅會包括在所有維度列中與目前資料行有相同值的資料行 (顯示欄位間排序順序之最後一個水平維度的列除外)。樞紐分析表中水平維度的欄位間排序順序，可簡單透過維度從上至下的順序來定義。。

範例：圖表運算式

| 範例 | 結果 |
| --- | --- |
| `First( Sum(Sales ))` | 傳回目前列區段第一欄的 `Sales` 總和。 |
| `First( Sum(Sales ), 2)` | 傳回在目前列區段中距離第一欄右側兩個欄的 `Sales` 總和。 |
| `First( Total Sum( Sales ))` | 傳回目前列區段第一欄的 `Sales` 總和總計。 |
| `RangeAvg (First(Sum(x),1,5))` | 根據目前列區段的最左方五個資料行，傳回所評估 `sum(x)` 函數之結果的平均值。 |

## 範例 - First 基礎事項

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

#### 圖表運算式

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 載入到稱為 `Example` 之資料表格的資料集。

* 資料表格中的欄位如下：

  * `Year`

  * `Quarter`

  * `Sales`

載入指令碼

```
Example:
Load * inline [
Year, Quarter, Sales
2023, Q1, 5000
2023, Q2, 4000
2023, Q3, 6000
2023, Q4, 7000
2024, Q1, 4500
2024, Q2, 3250
2024, Q3, 6500
2024, Q4, 7250
];
```

結果

載入資料並開啟工作表。建立新的樞紐分析表並將此欄位新增為列維度：

* `Year`

新增此欄位作為欄維度：

* `Quarter`

建立下列量值：

* `=Sum(Sales)`，用來計算銷售總和。

* `=First(Sum(Sales))`，用來計算目前列區段第一欄的銷售總和。

結果表格

| 年 | Q1 | Q2 | Q3 | Q4 |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Sum(Sales) | First(Sum(Sales)) | Sum(Sales) | First(Sum(Sales)) | Sum(Sales) | First(Sum(Sales)) | Sum(Sales) | First(Sum(Sales)) |  |
| 2023 | 5000 | 5000 | 4000 | 5000 | 6000 | 5000 | 7000 | 5000 |
| 2024 | 4500 | 4500 | 3250 | 4500 | 6500 | 4500 | 7250 | 4500 |

查看結果，您可以看到 `First` 函數如何傳回每季每個列區段第一欄的銷售值總和。例如，在 `Q4` 中，該期間的 `Sum(Sales)` 值為 `7000`。`Q4` 的 `First(Sum(Sales)` 值為 `5000`，這是 `Q1` 中 `Sum(Sales)` 的值，即目前列的第一欄值 `2023`。

## 範例 - First 使用情境

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

#### 圖表運算式

概述

資料集包含三年期間各種產品的年度銷售數據。該公司希望呈現本年度的總銷售額以及自該期間第一年以來的銷售成長率。

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 載入到稱為 `Example` 之資料表格的資料集。

* 資料表格中的欄位如下：

  * `Date`

  * `Product`

  * `Sales`

載入指令碼

```
Example:
Load * inline [
Date, Product, Sales
2021, Apple, 100
2021, Banana, 150
2021, Carrot, 120
2022, Carrot, 80
2022, Banana, 200
2022, Apple, 110
2023, Carrot, 160
2023, Banana, 300
2023, Apple, 150
];
```

結果

載入資料並開啟工作表。建立新的樞紐分析表並將此欄位新增為列維度：

* ` Product
                                       `

新增此欄位作為欄維度：

* `Date`

建立下列量值：

* `=Sum(Sales)`，用來計算年度銷售額。

* `=(Sum(Sales) - First(Sales)) / First(Sales)`，用來計算資料集中自第一年起的銷售成長率。 若要將此值顯示為百分比，請在數字格式之下，選取數字 &gt; 簡單格式 &gt; 12.34%。

結果表格

| 產品 | 2021 | 2022 | 2023 |  |  |  |
| --- | --- | --- | --- | --- | --- | --- |
| Sum(Sales) | (Sum(Sales) - First(Sales)) / First(Sales) | Sum(Sales) | (Sum(Sales) - First(Sales)) / First(Sales) | Sum(Sales) | (Sum(Sales) - First(Sales)) / First(Sales) |  |
| 蘋果 | 100 | 0.00% | 110 | 10.00% | 150 | 50.00% |
| 香蕉 | 150 | 0.00% | 200 | 33.33% | 300 | 100.00% |
| 紅蘿蔔 | 120 | 0.00% | 80 | -33.33% | 160 | 33.33% |

結果顯示了每年的年銷售數據以及與第一年的銷售值相比每年的成長率 (百分比)。例如，`Apple` 的銷售額從 `2021` 的初始值 `100` 增加到 `2023` 的值 `150`，即增加了 `50%`。`Carrot` 的銷售額從 `2021` 的 `120` 下降至 `2022` 的 `80`，減少了 `33.33%`。

## 範例 - 使用範圍總和來呈現預算數據的 First 使用情境

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

#### 圖表運算式

概述

資料集包含兩年期間依產品類別和季度劃分的預算數據。該公司希望呈現本季的預算以及每年的預算總計。

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 載入到稱為 `Example` 之資料表格的資料集。

* 資料表格中的欄位如下：

  * `BudgetYear`

  * `BudgetQuarter`

  * `QuarterNo`

  * `BudgetAmount`

  * `Category`

載入指令碼

```
Example:
Load * inline [
BudgetYear, BudgetQuarter, QuarterNo, BudgetAmount, Category
2023, Q1, 1, 2100, Online
2023, Q2, 2, 2500, Online
2023, Q3, 3, 3100, Online
2023, Q4, 4, 4100, Online
2023, Q1, 1, 5100, Store
2023, Q2, 2, 5500, Store
2023, Q3, 3, 6100, Store
2023, Q4, 4, 7100, Store
2024, Q1, 1, 2300, Online
2024, Q2, 2, 2800, Online
2024, Q3, 3, 3300, Online
2024, Q4, 4, 4400, Online
2024, Q1, 1, 5300, Store
2024, Q2, 2, 5800, Store
2024, Q3, 3, 6300, Store
2024, Q4, 4, 7400, Store
];
```

結果

載入資料並開啟工作表。建立新的樞紐分析表並將這些欄位新增為列維度：

* ` BudgetYear
                                       `

* `Category`

新增此欄位作為欄維度：

* `BudgetQuarter`

建立下列量值：

* `=Sum(BudgetAmount)`，用來計算預算銷售數據。

* `=RangeSum(First(Sum(BudgetAmount), 1, QuarterNo))`，用來加總從第一季到 `QuarterNo` 的範圍以對每季進行評估，藉此計算每季預算銷售額的累積總計。

結果表格

| BudgetYear<br><br>類別 | Q1 | Q2 | Q3 | Q4 |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Sum(BudgetAmount) | RangeSum(First(Sum(BudgetAmount), 1, QuarterNo)) | Sum(BudgetAmount) | RangeSum(First(Sum(BudgetAmount), 1, QuarterNo)) | Sum(BudgetAmount) | RangeSum(First(Sum(BudgetAmount), 1, QuarterNo)) | Sum(BudgetAmount) | RangeSum(First(Sum(BudgetAmount), 1, QuarterNo)) |  |
| (-) 2023 | 7200 | 7200 | 8000 | 15200 | 9200 | 24400 | 11200 | 35600 |
| 線上 | 2100 | 2100 | 2500 | 4600 | 3100 | 7700 | 4100 | 11800 |
| 儲存 | 5100 | 5100 | 5500 | 10600 | 6100 | 16700 | 7100 | 23800 |
| (-) 2024 | 7600 | 7600 | 8600 | 16200 | 9600 | 25800 | 11800 | 37600 |
| 線上 | 2300 | 2300 | 2800 | 5100 | 3300 | 8400 | 4400 | 12800 |
| 儲存 | 5300 | 5300 | 5800 | 11100 | 6300 | 17400 | 7400 | 24800 |

結果顯示每個 `Year` 和 `Category` 的預算數據以及 `Quarter` 的累積總計。例如，在 `2023` 的 `Q2` 中，`QuarterNo` 是 `2`。因此，函數運算式評估為 `RangeSum(First(Sum(BudgetAmount), 1, 2))`，這加總 `Q1` (`7200`) 和 `Q2` (`8000`) 的 `BudgetAmount` 欄，並傳回值 `15200`。結果傳回 `Q1` 和 `Q2` 的 `Sum(BudgetAmount)` 欄的總計。在 `2024` 中，對於 `Category Online`，`Q1` 的 `Sum(BudgetAmount)` 為 `2300`，而對於 `Q2`，則為 `2800`。因此，`RangeSum` 運算式傳回 `5100`。