Syntax für serverseitige Erweiterungen
Einen Überblick über die serverseitigen Erweiterungen (SSE) von Qlik finden Sie hier: https://github.com/qlik-oss/server-side-extension.
Skriptfunktionen
Es gibt acht Skriptfunktionsvariationen. Im Ladeskript sollten sie sich alle gleich verhalten, aber in der Regel wird in diesem Szenario ScriptEval verwendet.
Bei Verwendung von LOAD * EXTENSION im Ladeskript wird mit Tabelleneingaben und Tabellenausgaben gearbeitet, und die korrekten Datentypen werden aus den internen Tabellendefinitionen und Metadaten abgeleitet.
Wenn Sie diese Funktionen als Diagrammformeln verwenden, ist es wichtig, welche Funktion genutzt wird, und es ergeben sich signifikante Unterschiede in den Ergebnissen und der Leistung der Anforderung.
ScriptEval im Vergleich zu ScriptAggr
Es gibt zwei Sätze von Skriptfunktionen, ScriptEval und ScriptAggr:
ScriptEval: Nach der Aggregierung des Hypercube werden alle Zeilen in den angegebenen Spalten an den SSE-Konnektor gesendet. Als Antwort wird eine einzelne Spalte erwartet. Wenn mehrere Spalten zurückgegeben werden, wird die erste Spalte gewählt, die die gleiche Anzahl Zeilen wie die Eingabe aufweist. Die Zeilen in der zurückgegebenen Spalte müssen die gleiche Reihenfolge wie die Eingabe haben.
ScriptAggr: Bevor der Hypercube aggregiert wird, werden alle Zeilen für eine Gruppe mit einer Dimension im Hypercube gesendet, und es wird erwartet, dass die SSE eine einzelne Antwort mit einer Spalte und einer Zeile zurückgibt. Für jeden Dimensionswert wird eine Anforderung an die SSE gesendet. Es gibt zwar einige Anwendungsfälle hierfür, aber diese Methode wird nur selten verwendet, da sie Leistungsprobleme verursachen kann, wenn ScriptAggr mit einer großen Anzahl an Dimensionswerten aufgerufen wird.
Datentypen
Es gibt vier Variationen der Anforderungen, welche die Kombinationen der Eingabe- und Ausgabedatentypen angeben:
-
ScriptEval(Script, Field1, [Field n]): In diesem Beispiel müssen die Eingabefelder alle numerisch sein, und die Antwort muss numerisch sein.
-
ScriptEvalStr(Script, Field 1, [Field n]): In diesem Beispiel müssen die Eingabefelder alle Strings sein, und die Antwort muss ein String sein.
-
ScriptEvalEx(DataTypes, Script, Field 1, [Field n]): In diesem Beispiel können die Eingabefelder entweder String oder numerisch sein, der erste Parameter ist aber ein String der Datentypen, und die Antwort muss numerisch sein.
-
ScriptEvalExStr(DataTypes, Script, Field 1, [Field n]): In diesem Beispiel können die Eingabefelder entweder String oder numerisch sein, der erste Parameter ist aber ein String der Datentypen, und die Antwort muss ein String sein.
Der Parameter DataTypes ist ein String für S und N Zeichen in der Reihenfolge der Felder.
Beispiele
Beispiel:
Ein Skript, das 2 numerische Felder hinzufügt:
ScriptEval('Script',num1,num2)
Beispiel:
Ein Skript, das 2 Strings zusammenfasst:
ScriptEvalStr('Script',str1,str2)
Beispiel:
Ein Skript, das eine Wahrscheinlichkeit (Zahl) prognostiziert, mit einer Kombination aus String- und numerischen Eingaben:
ScriptEvalEx('SSNN','Script',str1, str2, num1, num2)
Beispiel:
Ein Skript, das eine Klassifizierung (String) prognostiziert, mit einer Kombination aus String- und numerischen Eingaben:
ScriptEvalExStr('SSNN','Script',str1, str2, num1, num2)