# Sintaxe das extensões no lado do servidor

Este tópico de ajuda descreve a sintaxe das extensões do lado do servidor do Qlik.

## Funções de script

Existem oito variações de funções de script. No script de carregamento, todos eles devem se comportar da mesma forma, mas é comum usar ScriptEval neste cenário.

O uso do script de carregamento LOAD \* EXTENSION opera em uma abordagem de tabela em tabela e infere os tipos de dados corretos a partir das definições e metadados da tabela interna.

Ao usar essas funções como expressões de gráfico, a função usada é importante e terá uma diferença significativa nos resultados e no desempenho da solicitação.

## ScriptEval vs ScriptAggr

Existem dois conjuntos de funções de script, ScriptEval e ScriptAggr:

ScriptEval: após o hipercubo ter sido agregado, todas as linhas nas colunas especificadas são enviadas para o conector SSE. A resposta esperada é uma única coluna. Se várias colunas forem retornadas, a primeira coluna com o mesmo número de linhas da entrada será selecionada. As linhas na coluna retornada devem estar na mesma ordem da entrada.

ScriptAggr: antes de o hipercubo ser agregado, todas as linhas para um único grupo de dimensão no hipercubo são enviadas, e o SSE deve retornar uma única resposta de 1 coluna, 1 linha. Haverá uma solicitação enviada ao SSE para cada valor de dimensão. Embora existam casos de uso para isso, é raro que esse método seja usado, pois pode criar problemas de desempenho se ScriptAggr for chamado com um grande número de valores de dimensão.

## Tipos de dados

Existem quatro variações das solicitações que especificam as combinações de tipo de dados de entrada e saída:

* ScriptEval(Script, Field1, [Field n]): neste exemplo, os campos de entrada devem ser todos numéricos, e a resposta deve ser numérica.

* ScriptEvalStr(Script, Field 1, [Field n]): neste exemplo, os campos de entrada devem ser todos string, e a resposta deve ser string.

* ScriptEvalEx(DataTypes, Script, Field 1, [Field n]): neste exemplo, os campos de entrada podem ser string ou numéricos. Porém, o primeiro parâmetro é uma string dos tipos de dados e a resposta deve ser numérica.

* ScriptEvalExStr(DataTypes, Script, Field 1, [Field n]): neste exemplo, os campos de entrada podem ser string ou numéricos. Porém, o primeiro parâmetro é uma string dos tipos de dados e a resposta deve ser string.

O parâmetro DataTypes é uma string em caracteres S e N na ordem dos campos.

## Exemplos

Exemplo:

Um script que adiciona 2 campos numéricos:

ScriptEval('Script',num1,num2)

Exemplo:

Um script que concatena 2 strings:

ScriptEvalStr('Script',str1,str2)

Exemplo:

Um script que prevê uma probabilidade (número) com uma mistura de string e entradas numéricas:

ScriptEvalEx('SSNN','Script',str1, str2, num1, num2)

Exemplo:

Um script que prevê uma classificação (string) com uma mistura de string e entradas numéricas:

ScriptEvalExStr('SSNN','Script',str1, str2, num1, num2)