Синтаксис серверных расширений
Обзор Qlik серверных расширений (SSE) приводится здесь: https://github.com/qlik-oss/server-side-extension.
Функции скрипта
Существует восемь вариантов функций скрипта. В скрипте загрузки все они должны вести себя одинаково, но в данном сценарии обычно используется функция ScriptEval.
Использование функции LOAD * EXTENSION в скрипте загрузки позволяет применить подход «таблица на входе — таблица на выходе», что обеспечивает получение правильных типов данных из внутренних определений таблицы и метаданных.
Когда эти функции используются в качестве выражений диаграммы, используемая функция играет важную роль и определяет существенное отличие результатов и производительности запроса.
ScriptEval и ScriptAggr
Существует два набора функций скрипта, ScriptEval и ScriptAggr.
ScriptEval: все строки в указанных столбцах отправляются в коннектор SSE после агрегирования гиперкуба. Ожидаемый ответ — один столбец. Если возвращается несколько столбцов, будет выбран первый столбец, в котором будет столько же строк, сколько во входном. Строки в возвращенном столбце должны следовать в том же порядке, что и во входном.
ScriptAggr: все строки одной группы измерений в гиперкубе отправляются перед агрегированием гиперкуба, и ожидается, что SSE вернет один ответ, содержащий 1 столбец и 1 строку. Для каждого значения измерения будет отправляться один запрос в SSE. Хотя имеются примеры использования этого метода, он применяется редко, так как при вызове функции ScriptAggr с большим количеством значений измерений могут возникнуть проблемы с производительностью.
Типы данных
Существует четыре варианта запросов, которые задают комбинации типов входных и выходных данных:
-
ScriptEval(Script, Field1, [Field n]): в этом примере все поля ввода должны быть числовыми, и ответ должен быть числовым.
-
ScriptEvalStr(Script, Field 1, [Field n]): в этом примере все поля ввода должны быть строковыми, и ответ должен быть строкой.
-
ScriptEvalEx(DataTypes, Script, Field 1, [Field n]): в этом примере поля ввода могут быть строковыми или числовыми, однако первый параметр — это строка типов данных, а ответ должен быть числовым.
-
ScriptEvalExStr(DataTypes, Script, Field 1, [Field n]): в этом примере поля ввода могут быть строковыми или числовыми, однако первый параметр — это строка типов данных, а ответ должен быть строкой.
Параметр DataTypes представляет собой строку с символами S (строка) и N (число), соответствующими порядку полей.
Примеры
Пример:
Скрипт, добавляющий 2 числовых поля:
ScriptEval('Script',num1,num2)
Пример:
Скрипт, объединяющий 2 строки:
ScriptEvalStr('Script',str1,str2)
Пример:
Скрипт, прогнозирующий вероятность (число) со смешанным строковым и числовым вводом:
ScriptEvalEx('SSNN','Script',str1, str2, num1, num2)
Пример:
Скрипт, прогнозирующий классификацию (строка) со смешанным строковым и числовым вводом:
ScriptEvalExStr('SSNN','Script',str1, str2, num1, num2)