Składnia rozszerzeń po stronie serwera
Przegląd rozszerzeń po stronie serwera (SSE) Qlik można znaleźć tutaj: https://github.com/qlik-oss/server-side-extension.
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)