# 在資料載入編輯器中使用變數

Qlik Sense 中的變數是一個容器，儲存靜態值或計算，例如數值或英數值。當您在應用程式中使用變數時，對變數進行的任何變更都會套用至使用變數的每個位置。 您可以在變數概述或在指令碼中使用資料載入編輯器定義變數。您可在資料載入指令碼中使用 Let 或 Set 陳述式設定變數值。

提示備註編輯工作表時，您也可以使用來自變數概覽中的 Qlik Sense 變數。 [在運算式中使用變數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Variables/work-with-variables.htm)



## 概述

如果變數值的第一個字元為等號「=」，Qlik Sense 會嘗試將值評估為公式 (Qlik Sense 運算式)，然後顯示或傳回結果，而非傳回實際的公式文字。

使用時，變數值會替代其變數。變數可用於指令碼中以用作貨幣符號展開，也可用於各種控制陳述式中。如果相同的字串在指令碼中重複多次 (如路徑)，這就非常適用。

Qlik Sense 會在指令碼執行的開端，設定某些特別的系統變數，而不論其先前的值為何。

## 定義變數

變數提供了儲存靜態值或計算結果的能力。定義變數時，請使用下列語法：

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/work-with-variables-in-data-load-editor.htm)[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/work-with-variables-in-data-load-editor.htm)set variablename = string

或

let variable = expression

Set 陳述式用於指派字串。它將等號右側的文字指派給變數。Let 陳述式在指令碼執行時計算等號右側的運算式，並將運算式的結果指派給變數。

變數區分大小寫。

資訊備註不建議將變數命名為與 Qlik Sense 中某個欄位或函數相同的名稱。

範例：

`set x =  3 + 4; //` 變數將取得字串 '3 + 4' 作為值。

`let x = 3 + 4; //` 傳回 7 作為值。

`set x = Today(); //` 傳回 'Today()' 作為值。

`let x = Today(); //` 傳回今天的日期作為值，例如 ‘9/27/2021’。

### 命名變數

作為最佳做法，請考慮對您在應用程式中建立的變數使用標準化命名慣例。例如，您可以確保所有變數名稱都以 v 開頭。例如：vUserText。這有助於確保快速將變數識別為變數並與量值、欄位和函數做出區分。

## 定義變數時的其他選項

本區段列出您可用來增強在載入指令碼中定義之變數的其他功能。

### 限制變數值

您可以使用 Constrain 陳述式來將指令碼變數限制為特定定義，以防止載入不必要的值。Constrain 陳述式可用於品質保證、改善指令碼共同開發期間的共同作業，以及提升分析應用程式的安全性。在 Qlik Cloud 中，Constrain 陳述式也可與開發人員 API 結合使用，以進行動態的載入時間變數更新。

如需詳細資訊，請參閱[Constrain](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)。

### 定義僅限指令碼的變數

您可以使用 ScriptOnlyVariables 系統變數來設定僅限指令碼的變數。僅限指令碼的變數僅在載入指令碼中可用，且不會顯示在應用程式中的工作表檢視 (舉例而言) 中。

如需詳細資訊，請參閱[ScriptOnlyVariables](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemVariables/ScriptOnlyVariables.htm)。

### 捨棄變數

您可以使用 Drop variable 陳述式來捨棄指令碼中的變數。若您只想在資料模型的內容中將變數用於執行計算或定義欄位，則捨棄變數會很實用。

如需詳細資訊，請參閱[Drop variable](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Drop-Variable.htm)。

## 刪除變數

如果您從指令碼中移除變數並重新載入資料，則變數保留在應用程式中。如果您想要完全從應用程式中移除該變數，您可以執行下列任何一項操作：

* 從變數對話方塊中刪除變數。

* 使用 [Drop variable](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Drop-Variable.htm) 陳述式，在指令碼中捨棄變數。

* 透過在指令碼中使用 [ScriptOnlyVariables](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemVariables/ScriptOnlyVariables.htm) 系統變數，將變數對話方塊中不需要的變數設定為僅限指令碼的變數。

如需詳細資訊，請參閱[刪除變數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Variables/delete-variable-using-dialog.htm)。

## 載入變數值作為欄位值

如果您想要在 LOAD 陳述式中載入變數值作為欄位值，且美元展開的結果是文字而不是數字或運算式，那麼您需要在單括號中附上展開變數。

範例：

此範例將包含指令碼錯誤清單的系統變數載入表格中。您可能注意到，If 子句中的 ScriptErrorCount 展開不需要引號，但 ScriptErrorList 的展開需要引號。

```
IF $(ScriptErrorCount) >= 1 THEN
   LOAD '$(ScriptErrorList)' AS Error AutoGenerate 1;
END IF
```

## 變數計算

有數種方法可搭配使用變數與 Qlik Sense 中計算的值，則結果會取決於您定義它的方式，以及您在運算式中調用它的方式。

在此範例中，我們載入部分內嵌資料：

```
LOAD * INLINE [
    Dim, Sales
    A, 150
    A, 200
    B, 240
    B, 230
    C, 410
    C, 330
];
```

讓我們定義兩個變數：

```
Let vSales  = 'Sum(Sales)' ;
```

Let vSales2 = '=Sum(Sales)' ;

在第二個變數中，我們在運算式之前新增等號。這將導致在變數展開之前對它進行計算，並且會評估運算式。

如果您按原樣使用 vSales 變數，那麼在量值中該結果將是字串 Sum(Sales)，也就是說，不會執行任何計算。

如果您新增貨幣符號展開，並在運算式中調用 $(vSales)，則會展開變數，並顯示 Sales 的總和。

最終，如果您調用 $(vSales2)，則會在變數展開之前對它進行計算。這表示所顯示的結果是 Sales 的總和。使用 =$(vSales) 與 =$(vSales2) 作為量值運算式之間的差異可在此圖表中看到，顯示結果：

結果

| Dim | $(vSales) | $(vSales2) |
| --- | --- | --- |
| A | 350 | 1560 |
| B | 470 | 1560 |
| C | 740 | 1560 |

如您可以看到的，$(vSales) 產生維度值的部分總和，而 $(vSales2) 結果產生總和。

下列指令碼變數可用：

* [錯誤變數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ErrorVariables/ErrorVariables.htm)
* [數字解譯變數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/number-interpretation-variables.htm)
* [系統變數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemVariables/system-variables.htm)
* [值處理變數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ValueHandlingVariables/value-handling-variables.htm)

## 瞭解更多資訊

* [貨幣符號擴充](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/dollar-sign-expansions.htm)
* [在運算式中使用變數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Variables/work-with-variables.htm)