# Składnia rozszerzeń po stronie serwera

Ten temat pomocy przedstawia składnię rozszerzeń po stronie serwera Qlik.

## Funkcje skryptów

Istnieje osiem odmian funkcji skryptu. W skrypcie ładowania wszystkie powinny działać tak samo, ale w tym zastosowaniu typowe jest użycie ScriptEval.

Użycie skryptu ładowania LOAD \* EXTENSION działa na zasadzie tabela wejściowa-tabela wyjściowa (TITO) i wnioskuje prawidłowe typy danych z wewnętrznych definicji tabeli i metadanych.

Podczas używania tych funkcji jako wyrażeń wykresu używana funkcja jest ważna i będzie mieć znaczny wpływ na wyniki i wydajność żądania.

## ScriptEval a ScriptAggr

Istnieją dwa zestawy funkcji skryptowych: ScriptEval i ScriptAggr:

ScriptEval: po zagregowaniu hiperkostki wszystkie wiersze w określonych kolumnach są wysyłane do łącznika SSE. Oczekiwana odpowiedź to pojedyncza kolumna. W przypadku zwrócenia większej liczby kolumn zostanie wybrana pierwsza kolumna, która ma taką samą liczbę wierszy jak dane wejściowe. Wiersze w zwróconej kolumnie muszą być w tej samej kolejności co dane wejściowe.

ScriptAggr: przed agregacją hiperkostki wysyłane są wszystkie wiersze dla pojedynczej grupy wymiarów hiperkostki i oczekuje się, że SSE zwróci pojedynczą odpowiedź: 1 kolumna i 1 wiersz. Dla każdej wartości wymiaru zostanie wysłane do SSE jedno żądanie. Chociaż istnieją zastosowania takiego przypadku, ta metoda jest rzadko używana, ponieważ może powodować problemy z wydajnością, jeśli funkcja ScriptAggr zostania wywołana z dużą liczbą wartości wymiarów.

## Typy danych

Istnieją cztery warianty żądań, które określają kombinacje typów danych wejściowych i wyjściowych:

* ScriptEval(Script, Field1, [Field n]): w tym przykładzie wszystkie pola wejściowe muszą być liczbowe i odpowiedź również musi być liczbowa.

* ScriptEvalStr(Script, Field 1, [Field n]): w tym przykładzie wszystkie pola wejściowe muszą być ciągiem i odpowiedź również musi być ciągiem.

* ScriptEvalEx(DataTypes, Script, Field 1, [Field n]): w tym przykładzie pola wejściowe mogą być ciągiem lub liczbą, jednak pierwszy parametr jest ciągiem typów danych, a odpowiedź musi być liczbowa.

* ScriptEvalExStr(DataTypes, Script, Field 1, [Field n]): w tym przykładzie pola wejściowe mogą być ciągiem lub liczbą, jednak pierwszy parametr jest ciągiem typów danych, a odpowiedź musi być ciągiem.

Parametr DataTypes to ciąg składający się ze znaków S i N w kolejności pól.

## Przykłady

Przykład:

Skrypt, który dodaje 2 pola liczbowe:

ScriptEval('Script',num1,num2)

Przykład:

Skrypt, który konkatenuje 2 ciągi znaków:

ScriptEvalStr('Script',str1,str2)

Przykład:

Skrypt, który przewiduje prawdopodobieństwo (liczbę) przy użyciu kombinacji danych wejściowych w postaci ciągów i liczb:

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

Przykład:

Skrypt, który przewiduje klasyfikację (ciąg znaków) przy użyciu kombinacji danych wejściowych w postaci ciągów i liczb:

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