サーバーサイド拡張構文
Qlikサーバーサイド拡張 (SE) の概要については、こちらを参照してください: https://github.com/qlik-oss/server-side-extension。
スクリプト関数
スクリプト機能のバリエーションは 8 種類です。ロード スクリプトでは、これらはすべて同じように動作しますが、このシナリオでは ScriptEval を使用するのが一般的です。
ロードスクリプトの使用法である LOAD * EXTENSION は、テーブル イン テーブル アウトのアプローチで動作し、内部テーブルの定義とメタデータから正しいデータ型を推測します。
これらの関数をチャートの数式として使用する場合、使用する関数は重要であり、リクエストの結果とパフォーマンスに大きな違いがあります。
ScriptEval vs ScriptAggr
スクリプト関数には、ScriptEval と ScriptAggr の 2 つのセットがあります。
ScriptEval: hypercube が集約された後、指定された列のすべての行が SSE コネクタに送信されます。推測されるレスポンスは 1 列です。複数の列が返された場合、入力と同じ行数を持つ最初の列が選択されます。返される列の行は、入力と同じ順序である必要があります。
ScriptAggr: hypercube が集約される前に、hypercube 内の 1 つの軸のグループのすべての行が送信され、SSE が 1 列 1 行の応答を返すことが推測されます。軸の値ごとに 1 つの要求が SSE に送信されます。このような使用例もありますが、ScriptAggr が多数の軸の値で呼び出されるとパフォーマンスの問題が発生する可能性があるため、このメソッドを使用することはまれです。
データ型
リクエストには、入力データ型と出力データ型の組合せを指定する 4 つのバリエーションがあります。
-
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)