Sintaxis de las extensiones del lado del servidor
Puede encontrar una descripción general de las Extensiones del lado del servidor (SSE) de Qlik aquí: https://github.com/qlik-oss/server-side-extension.
Funciones de script:
Hay ocho variantes de funciones de script. En el script de carga, todas deberían comportarse igual, pero es muy típico usar ScriptEval en este escenario.
El uso del script de carga LOAD * EXTENSION opera en una tabla en el enfoque de salida de tabla e infiere los tipos de datos correctos de las definiciones y metadatos de la tabla interna.
Cuando se utilizan estas funciones como expresiones de gráfico, la función utilizada es importante y tendrá una diferencia significativa en los resultados y el rendimiento de la solicitud.
ScriptEval vs ScriptAggr
Hay dos conjuntos de funciones de script, ScriptEval y ScriptAggr:
ScriptEval: una vez agregado el hipercubo, todas las filas de las columnas especificadas se envían al conector SSE. La respuesta que se espera es una sola columna. Si devuelve varias columnas, se seleccionará la primera columna que tenga el mismo número de filas que lo introducido. Las filas de la columna devuelta deben estar en el mismo orden que la entrada.
ScriptAggr: antes de que se agregue el hipercubo, se envían todas las filas para un grupo de una sola dimensión en el hipercubo y se espera que SSE devuelva una única respuesta de 1 columna y 1 fila. Se enviará una solicitud al SSE para cada valor de dimensión. Si bien hay casos de uso para esto, es raro que se use este método, ya que puede crear problemas de rendimiento si se invoca ScriptAggr con una gran cantidad de valores de dimensión.
Tipos de datos
Hay cuatro variaciones de las solicitudes, que especifican las combinaciones de tipos de datos de entrada y salida:
-
ScriptEval(Script, Field1, [Field n]): En este ejemplo, los campos de entrada deben ser todos numéricos y la respuesta debe ser numérica.
-
ScriptEvalStr(Script, Field 1, [Field n]): En este ejemplo, todos los campos de entrada deben ser una cadena y la respuesta debe ser una cadena.
-
ScriptEvalEx(DataTypes, Script, Field 1, [Field n]): En este ejemplo, los campos de entrada pueden ser de cadena o numéricos, sin embargo, el primer parámetro es una cadena de tipos de datos y la respuesta debe ser numérica.
-
ScriptEvalExStr(DataTypes, Script, Field 1, [Field n]): En este ejemplo, los campos de entrada pueden ser de cadena de texto o numéricos, sin embargo, el primer parámetro es una cadena de tipos de datos y la respuesta debe ser una cadena de texto.
El parámetro DataTypes es una cadena de caracteres S y N en el orden de los campos.
Ejemplos
Ejemplo:
Un script que agrega 2 campos numéricos:
ScriptEval('Script',num1,num2)
Ejemplo:
Un script que concatena 2 cadenas de texto:
ScriptEvalStr('Script',str1,str2)
Ejemplo:
Un script que predice una probabilidad (un número) con una combinación de entradas numéricas y de cadena de texto:
ScriptEvalEx('SSNN','Script',str1, str2, num1, num2)
Ejemplo:
Un script que predice una clasificación (cadena de texto) con una mezcla de cadenas de texto y entradas numéricas:
ScriptEvalExStr('SSNN','Script',str1, str2, num1, num2)