服务器端扩展语法
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 字符组成的字符串。
示例
示例:
添加两个数字字段的脚本:
ScriptEval('Script',num1,num2)
示例:
连接两个字符串的脚本:
ScriptEvalStr('Script',str1,str2)
示例:
用字符串和数字的混合来预测概率(数字)的脚本:
ScriptEvalEx('SSNN','Script',str1, str2, num1, num2)
示例:
用字符串和数字混合来预测分类(字符串)的脚本:
ScriptEvalExStr('SSNN','Script',str1, str2, num1, num2)