跳到主要內容

伺服器端延伸語法

可以在這裡找到 Qlik 伺服器端延伸 (SSE) 的概要:https://github.com/qlik-oss/server-side-extension

指令碼函數

有八種指令碼函數變體。在載入指令碼中,其行為都應該相同,但在這種情況下通常使用 ScriptEval

載入指令碼用法 LOAD * EXTENSION 對表進表出方法進行操作,並從內部表格定義和中繼資料推斷出正確的資料類型。

使用這些函數作為圖表運算式時,所用的函數相當重要,並且會對請求的結果和效能產生顯著差異。

ScriptEval 和 ScriptAggr 的比較

ScriptEvalScriptAggr 等兩組指令碼函數:

ScriptEval:彙總超立方體後,指定欄中的所有列都會傳送到 SSE 連接器。預期的回應是單欄。如果傳回多欄,將選取與輸入列數相同的第一欄。傳回欄中的列必須與輸入的順序相同。

ScriptAggr:彙總超立方體之前,傳送超立方體中單一維度群組的所有列,預期 SSE 傳回單一 1 欄 1 列回應。每個維度值都會向 SSE 傳送一個請求。雖然有這種使用案例,但很少使用這種方法,因為如果使用大量維度值呼叫 ScriptAggr,會產生效能問題

資料類型

請求有四種變體,可以指定輸入和輸出資料類型組合:

  • ScriptEval(Script, Field 1, [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)