伺服器端延伸語法
可以在這裡找到 Qlik 伺服器端延伸 (SSE) 的概要:https://github.com/qlik-oss/server-side-extension。
指令碼函數
有八種指令碼函數變體。在載入指令碼中,其行為都應該相同,但在這種情況下通常使用 ScriptEval。
載入指令碼用法 LOAD * EXTENSION 對表進表出方法進行操作,並從內部表格定義和中繼資料推斷出正確的資料類型。
使用這些函數作為圖表運算式時,所用的函數相當重要,並且會對請求的結果和效能產生顯著差異。
ScriptEval 和 ScriptAggr 的比較
有 ScriptEval 和 ScriptAggr 等兩組指令碼函數:
ScriptEval:彙總超立方體後,指定欄中的所有列都會傳送到 SSE 連接器。預期的回應是單欄。如果傳回多欄,將選取與輸入列數相同的第一欄。傳回欄中的列必須與輸入的順序相同。
ScriptAggr:彙總超立方體之前,傳送超立方體中單一維度群組的所有列,預期 SSE 傳回單一 1 欄 1 列回應。每個維度值都會向 SSE 傳送一個請求。雖然有這種使用案例,但很少使用這種方法,因為如果使用大量維度值呼叫 ScriptAggr,會產生效能問題。
資料類型
請求有四種變體,可以指定輸入和輸出資料類型組合:
-
ScriptEval(Script, Field1, [Field n]): 在此範例中,輸入欄位必須全部為數字,且回應必須為數字。
-
ScriptEvalStr(Script, Field 1, [Field n]): 在此範例中,輸入欄位必須全部為字串,且回應必須為字串。
-
ScriptEvalEx(DataTypes, Script, Field 1, [Field n]): 在此範例中,輸入欄位可以是字串或數字,但第一個參數是資料類型的字串,且回應必須是數字。
-
ScriptEvalExStr(DataTypes, Script, Field 1, [Field n]): 在此範例中,輸入欄位可以是字串或數字,但第一個參數是資料類型的字串,且回應必須是字串。
DataTypes 參數是依欄位順序包含 S 和 N 個字元的字串。
範例
範例:
新增 2 個數字欄位的指令碼:
ScriptEval('Script',num1,num2)
範例:
串連 2 個字串的指令碼:
ScriptEvalStr('Script',str1,str2)
範例:
使用混合字串和數字輸入來預測機率 (數字) 的指令碼:
ScriptEvalEx('SSNN','Script',str1, str2, num1, num2)
範例:
使用混合字串和數字輸入來預測分類 (字串) 的指令碼:
ScriptEvalExStr('SSNN','Script',str1, str2, num1, num2)