メイン コンテンツをスキップする

サーバーサイド拡張構文

このページ上

サーバーサイド拡張構文

Qlikサーバーサイド拡張 (SE) の概要については、こちらを参照してください: https://github.com/qlik-oss/server-side-extension

スクリプト関数

スクリプト機能のバリエーションは 8 種類です。ロード スクリプトでは、これらはすべて同じように動作しますが、このシナリオでは ScriptEval を使用するのが一般的です。

ロードスクリプトの使用法である LOAD * EXTENSION は、テーブル イン テーブル アウトのアプローチで動作し、内部テーブルの定義とメタデータから正しいデータ型を推測します。

これらの関数をチャートの数式として使用する場合、使用する関数は重要であり、リクエストの結果とパフォーマンスに大きな違いがあります。

ScriptEval vs ScriptAggr

スクリプト関数には、ScriptEvalScriptAggr の 2 つのセットがあります。

ScriptEval: hypercube が集約された後、指定された列のすべての行が SSE コネクタに送信されます。推測されるレスポンスは 1 列です。複数の列が返された場合、入力と同じ行数を持つ最初の列が選択されます。返される列の行は、入力と同じ順序である必要があります。

ScriptAggr: hypercube が集約される前に、hypercube 内の 1 つの軸のグループのすべての行が送信され、SSE が 1 列 1 行の応答を返すことが推測されます。軸の値ごとに 1 つの要求が SSE に送信されます。このような使用例もありますが、ScriptAggr が多数の軸の値で呼び出されるとパフォーマンスの問題が発生する可能性があるため、このメソッドを使用することはまれです。

データ型

リクエストには、入力データ型と出力データ型の組合せを指定する 4 つのバリエーションがあります。

  • ScriptEval(Script, Field 1, [Field n]): この例では、入力フィールドは全て数値である必要があり、レスポンスも数値である必要があります。

  • ScriptEvalStr(Script, Field 1, [Field n]): この例では、入力フィールドは全て文字列である必要があり、レスポンスも文字列である必要があります。

  • ScriptEvalEx(DataTypes, Script, Field 1, [Field n]): この例では、入力フィールドは文字列または数値のいずれかにできますが、ただし、最初のパラメータはデータ型の文字列で、レスポンスは数値である必要があります。

  • ScriptEvalExStr(DataTypes, Script, Field 1, [Field n]): この例では、入力フィールドは文字列または数値のいずれかにできますが、ただし、最初のパラメータはデータ型の文字列で、レスポンスは文字列である必要があります。

データ型のパラメータは、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)