使用變數的貨幣符號展開
在載入指令碼或圖表運算式中,使用貨幣符號擴充中的變數以便:
-
參考文字
-
參考數值
文字變數
對於指令碼或運算式中的文字取代使用變數時,將使用下列語法:
$(variablename)
$(variablename) 會展開至變數中的值。如果 variablename 不存在,則展開將導致空字串。
範例:文字變數載入指令碼
載入指令碼
在資料載入編輯器中載入下列資料作為內嵌載入:
Set x = 'red'; // Assign the value "red" to variable x
Set y = 'blue'; // Assign the value "blue" to variable y
Set z = '$(x) $(y)'; // Expands x and y, returns "red blue" in variable z
// Expand x and y, return "red green blue" in variable MyString
Let MyString='$(x)'&' green '&'$(y)';
// Create table MyTable, load variable values for x, y, z into fields X, Y, Z
// Concatenate with variable MyString into field NewString
MyTable:
Load '$(x)' as X, '$(y)' as Y, '$(z)' as Z, '$(MyString)' as NewString autogenerate 1;
如需更多關於使用內嵌載入的資訊,請參閱 使用內嵌載入以載入資料。
解釋
此範例示範:
-
如何在變數指派中展開變數。
-
如何展開結合文字操作的變數。
此為建立動態標籤和一般文字字串的實用設定,可合併變數內容與靜態字串。
輸出
在 Qlik Sense 中建立下列表格:
X | Y | Z | NewString |
---|---|---|---|
紅色 | 藍色 | 紅色 藍色 | 紅色 藍色 綠色 |
載入指令碼
在資料載入編輯器中載入下列資料作為內嵌載入:
Set vFunction = 'upper'; // Assign the string “upper” to variable vFunction
Set vField = 'String'; // Assign the string "String" to variable vField
Let vEvaluate = '$(vFunction)'&'('&'$(vField)'&')';
// The variable vEvaluate returns the value "upper(string)"
MyTable: // Create table called MyTable
Load *, $(vEvaluate) as Upper; // vEvaluate expanded as a dynamic expression
Load *, '$(vEvaluate)' as Expression; // vEvaluate expanded as string
Load * inline [
ID, String
1, abc
2, def
3, ghi
4, jkl ];
解釋
Set 和 Let 陳述式用來將值指派到載入指令碼中的變數。兩者之間的差異是,Set 陳述式將字串指派到變數,而 Let 陳述式則在將產生的值指派到變數之前評估字串內容。此範例中的載入內嵌表格以兩個前置 LOAD 陳述式補充,這用來視覺化不同的變數 vEvaluate 評估,兩者作為文字字串和作為對應的運算式。
輸出
在 Qlik Sense 中建立下列表格:
ID | String | Expression | Upper |
---|---|---|---|
1 | abc | upper(String) | ABC |
2 | def | upper(String) | def |
3 | ghi | upper(String) | HIJ |
4 | jkl | upper(String) | JKL |
範例:文字變數圖表運算式
載入指令碼
在資料載入編輯器中載入下列資料作為內嵌載入:
// Create table SalesByCountry
SalesByCountry:
Load * Inline [
Country, Year, Sales
Argentina, 2014, 66295.03
Argentina, 2015, 140037.89
Austria, 2014, 54166.09
Austria, 2015, 182739.87
Belgium, 2014, 182766.87
Belgium, 2015, 178042.33
Brazil, 2014, 174492.67
Brazil, 2015, 2104.22
Canada, 2014, 101801.33
Canada, 2015, 40288.25
Denmark, 2014, 45273.25
Denmark, 2015, 106938.41
Finland, 2014, 107565.55
Finland, 2015, 30583.44
France, 2014, 115644.26
France, 2015, 30696.98
Germany, 2014, 8775.18
Germany, 2015, 77185.68
];
變數
在編輯模式下的工作表中,從資產面板開啟變數對話方塊。
建立下列變數:
名稱 | 定義 |
---|---|
vSales | Sum(Sales) |
vSales2014 | Sum({<Year={2014}>}Sales) |
vSales2015 | Sum({<Year={2015}>} Sales) |
vSalesAllYears | $(vSales2014) +$(vSales2015) |
vSalesDifference | $(vSales2015)/$(vSales2014) - 1 |
建立 KPI 圖表以查看擴充。
數值變數展開
對於數值變數展開,使用下列語法:
(#variablename)
展開一律會產生變數數值的有效小數點表示法,可能還會包含指數標記法 (若是極大或極小的數字)。如果 variablename 不存在或不包含任何數值,將會展開為 0,而非 NULL。
範例:數值變數載入指令碼
載入指令碼
在資料載入編輯器中載入下列資料作為內嵌載入:
Set DecimalSep = ','; // Set decimal comma as separator for this example.
Let X = 7/2; // Assign the expression 7/2 to variable X.
MyTable: // Create an inline table labeled “MyTable”
Load 1 as ID, * inline [
DecimalComma DecimalPoint
$(X) $(#X) ]
(delimiter is '\t');
解釋
#vVariable 展開一律會產生變數數值的有效小數點表示法。若使用逗號 (而非小數點) 作為小數點分隔符號,並且有與逗號分隔清單產生衝突的風險,則這很實用。
在載入內嵌表格中展開這些變數的主要原因是不需要 $(X) 的其他引用。
輸出
在 Qlik Sense 中建立下列表格:
DecimalComma | DecimalPoint |
---|---|
3,5 | 3.5 |
載入指令碼
在資料載入編輯器中載入下列資料作為內嵌載入:
// The three Set statements below are required to mimic and initialize
// Format specifiers that are relevant to this particular example
Set ThousandSep=' '; // Set example thousand separator
Set DecimalSep=','; // Set example decimal separator
Set TimestampFormat='YYYY-MM-DD hh:mm:ss'; // Set example date format
Let vRaw = today()-1/1440; // Timestamp minus one minute
Let vFormat = timestamp($(#vRaw)); // Formatted as timestamp
// Create MyTable as an inline table to expand variables as field values
MyTable:
Load * inline [
DecimalComma DecimalPoint FormattedNumber
$(vRaw) $(#vRaw) $(vFormat) ] (delimiter is '\t');
解釋
#vVariable 展開一律會產生變數數值的有效小數點表示法。若使用逗號 (而非小數點) 作為小數點分隔符號,並且有與逗號分隔清單產生衝突的風險,則這很實用。也很重要的是,應記住,由於在沒有正確的小數點分隔符號下展開變數時截斷的小數部分,數值精確性將會受到影響。
在載入內嵌表格中展開這些變數的主要原因是不需要 $(X) 的其他引用。
輸出
在 Qlik Sense 中建立下列表格:
DecimalComma | DecimalPoint | FormattedNumber |
---|---|---|
44 470,00 | 44469.999305556 | 2021-09-18 23:59:00 |
載入指令碼
在資料載入編輯器中載入下列資料作為內嵌載入:
// The three Set statements below are required to mimic and initialize
// format specifiers that are relevant to this particular example
Set ThousandSep=' '; // Set example thousand separator
Set DecimalSep=','; // Set example decimal separator
Set TimestampFormat='YYYY-MM-DD hh:mm:ss'; // Set example date format
// Assign a numerical value and a valid format specifier to vStart
Let vStart = timestamp#('2021-03-23 12:34:56','$(TimestampFormat)');
// Calculate timestamp (vStart + 3 hours) with valid decimal separator: "."
Let vStop = timestamp($(#vStart)+1/8,'YYYY-MM-DD hh:mm:ss');
// Create MyTable as an inline table to expand variables as field values
MyTable:
Load * inline [
StartTime StopTime
$(vStart) $(vStop) ] (delimiter is '\t');
// This is a tab delimited inline table
// Tab delimited tables are useful for avoiding conflicting list separators
解釋
#vVariable 展開一律會產生變數數值的有效小數點表示法。若使用逗號 (而非小數點) 作為小數點分隔符號,並且有與逗號分隔清單產生衝突的風險,則這很實用。也很重要的是,應記住,由於在沒有正確的小數點分隔符號下展開變數時截斷的小數部分,數值精確性將會受到影響。
在載入內嵌表格中展開這些變數的主要原因是不需要 $(X) 的其他引用。
輸出
在 Qlik Sense 中建立下列表格:
StartTime | StopTime | |
---|---|---|
2021-03-23 12:34:56 | 2021-03-23 15:34:56 |
展開參考替代狀態的變數
變數只有一個值,這用於所有替代狀態。展開變數時,值也相同,獨立於進行位置與物件狀態。
若變數為計算的變數,亦即定義以等號開始,則會以預設狀態進行計算,除非您在變數定義中指定替代狀態。
例如,若您具有名稱為 MyState 的狀態,以及名稱為 vMyVar 的變數:
vMyvar: =only({MyState}MyField)
變數定義內容,連同對於替代狀態名稱的明確參考,可決定會在哪個狀態評估變數內容。