跳到主要內容
在資料載入編輯器中使用變數

在此頁面

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

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

提示備註編輯工作表時,您也可以使用來自變數概覽中的 Qlik Sense 變數。 在運算式中使用變數

概述

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

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

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

定義變數

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

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’。

刪除變數

若您從指令碼中移除變數並重新載入資料,則變數會留在應用程式中。如果您要從應用程式中完全移除變數,則還必須從變數對話方塊中刪除變數。

如需詳細資訊,請參閱 刪除變數

載入變數值作為欄位值

如果您想要在 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)
A3501560
B4701560
C7401560

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

下列指令碼變數可用:

另請參見: