# 計算欄位處理器

根據 Qlik 指令碼運算式新增欄位。

計算欄位處理器可讓您在資料的結構描述中建立新欄位，並使用 Qlik 指令碼運算式填入每個欄位。您的指令碼可以使用輸入結構描述中的所有內容，從而允許您使用現有欄位的組合或轉換版本。

## 用法

* 計算欄位處理器需要一個輸入流程，且只能產生一個輸出流程。

* 按一下處理器組態面板中的 + 圖示以建立多個計算欄位。

## 限制

* 計算欄位處理器會在載入指令碼內容中執行運算式。諸如 `firstSortedValue`、 `sum`、 `avg` 和 `count` 等彙總函數在此處理器中不起作用，因為它會個別處理每一列，而不是在 GROUP BY 彙總內處理。若要使用彙總函數，請參閱 [彙總處理器](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataFlow/data-flow-processor-aggregate.htm)。

* 圖專用函數在此處理器中不起作用，因為它在資料載入圖層中運作。

* 目前無法在同一個計算欄位處理器中建立新欄位並對其進行參照。建議使用兩個不同的處理器。

## 屬性

要設定以計算新欄位的屬性。

組態

| 屬性 | 組態 |
| --- | --- |
| 名稱 | 為新建立的欄位指定自訂名稱。 |
| 運算式 | 在欄位中輸入您的 Qlik 指令碼運算式，以設定新欄位的值。如需 Qlik 指令碼語法的詳細資訊，請參閱 [指令碼語法和圖函數](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/script-syntax-functions.htm)。 |
| 開啟編輯器 | 使用此選項可使用功能更強大的指令碼編輯器，您可以在其中受益於協助您更輕鬆建立運算式的工具。如需詳細資訊，請參閱 [使用運算式編輯器](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataFlow/data-flow-processor-calculate-fields.htm#Using)。 |

若要重新命名處理器或編輯其說明，請將滑鼠游標移至 屬性 面板中要變更的名稱或說明上，然後按一下 the 編輯 icon 圖示。

## 使用運算式編輯器

按一下組態面板中的 開啟編輯器 按鈕會開啟 運算式編輯器，這是一個功能強大的指令碼編輯器，可協助您建立新欄位。輕鬆插入欄位名稱或函數、開啟說明文件並檢查運算式的有效性。

![使用運算式編輯器建立計算欄位](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/Dataflow/calculate_fields_expression_editor.png)

在左側面板中，您可以檢視目前載入至資料流程中的欄位，並瀏覽各種 Qlik 指令碼函數。此面板分為兩個索引標籤：

* 欄位，其中列出了此流程點可用的欄位。將滑鼠游標移至任何欄位名稱上，然後按一下 + 以直接將其插入運算式中。

* 函數，您可以在其中瀏覽 Qlik 函數。您可以使用搜尋欄位來尋找特定函數，或使用 函數類別 下拉式功能表來篩選它們。

  將滑鼠游標移至任何函數上，然後按一下 + 以直接將其插入運算式中。

* 如果您選取 說明指南 切換開關，按一下函數時將會顯示簡短說明和說明文件的連結。

在頂部面板中，您可以啟用或停用三個工具，以在撰寫指令碼時為您提供協助和引導，以及用於修正潛在錯誤的復原和重做按鈕。

* 搜尋和取代，以自動尋找特定值並在需要時進行取代。

  ![運算式編輯器的搜尋和取代功能](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/Dataflow/calculate_fields_search_replace.png)

* 說明模式，將您在指令碼中撰寫的任何函數轉換為可按一下的連結，這些連結將帶您前往說明文件。

  ![在指令碼編輯器中啟用說明模式](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/Dataflow/calculate_fields_help_mode.png)

* 自動完成，在您輸入時顯示建議，並附有函數的簡短說明和範例。

  ![使用自動完成撰寫指令碼函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/Dataflow/calculate_fields_autocomplete.png)

底部面板說明了指令碼的任何潛在錯誤，例如不正確的欄位名稱或無效的運算式。

![顯示指令碼中錯誤的驗證工具](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/Dataflow/calculate_fields_expression_validation.png)

當狀態面板顯示綠色的 確定 時，表示您的運算式有效。按一下 確認 以將此運算式用於您的計算欄位，並返回資料流程編輯器。然後，您可以驗證處理器組態。

## 範例

* 設定遞增值以用作新欄位列的識別碼：

  ```
  RecNo()
  ```

  如需詳細資訊，請參閱 [計數器函數](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/CounterFunctions/counter-functions.htm)。

* 使用 if/then/else 條件。在此範例中，您已載入包含溫度的資料，並希望根據這些值包含其他資訊：

  ```

  If(Temperature <= 0 , 'Freezing',
  If(Temperature >= 100, 'Boiling',
  If(Temperature >0 AND Temperature < 100, 'Between')))
  ```

  如需詳細資訊，請參閱 [if - 指令碼和圖函數](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/if.htm)。

* 在單一處理器中執行多個數學運算。在包含已售單位數量、單位價格和單位成本欄位的資料集中，您可以為總收入和總成本建立兩個新欄位。

  1. 在第一個欄位中，輸入 total\_revenue 作為新欄位名稱，以及以下運算式：

     ```
     [Units Sold] * [Unit Price]
     ```

  2. 按一下處理器組態面板中的 + 圖示以建立另一個計算欄位。

  3. 在第二個欄位中，輸入 total\_cost 作為新欄位名稱，以及以下運算式：

     ```
     [Units Sold] * [Unit Cost]
     ```

如需更多指令碼運算式的範例，請參閱 [常規陳述式](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartLevelScripting/modifier-regular-statements.htm) 和 [指令碼和圖函數](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/functions-in-scripts-chart-expressions.htm)。