Yellowfinのカスタマイズされた高度な関数は、「com.hof.mi.interfaces.AnalyticalFunction」を拡張します。Yellowfinで高度な関数を使用するためには、以下のメソッドを実装しなくてはいけません。
メソッド | 説明 |
public String getName() | 高度な関数の名前を定義します。 |
public String getDescription() | 高度な関数の説明を定義します。 |
public String getCategory() | どのカテゴリー配下に高度な関数を表示するのか指定、または定義します。例:「統計」「分析」「テキスト」。指定されたカテゴリーが存在しない場合は、新規カテゴリーが作成されます。 |
public int getReturnType() | レポートに返されるデータ型を指定します。高度な関数のデータ型を参照してください。 |
public String getColumnHeading(String colName) | レポートヘッダーのカラム(列)名を設定します。「colName」パラメーターは、選択されたカラム(列)の元の名前です。 |
public boolean acceptsNativeType(int type) | この関数はどの型のカラム(列)で実行できるのかを指定します。受け入れ可能な各パラメーター型へtrueを返します。高度な関数のデータ型を参照してください。 |
public Object applyAnalyticFunction(int index, Object value) throws Exception | カラム(列)の各ロウ(行)に表示される値を返します。この関数は、選択されたカラム(列)内の現在のインデックスに含まれるオブジェクトが値の、データセットの各ロウ(行)で実行されます。例外が発生した場合は、ロウ(行)は空白として表示されます。 |
以下のメソッドはオプションですが、より複雑なプロセスの実行に頻繁に必要とされます。
メソッド | 説明 |
public void preAnalyticFunction(Object[] selectedCol) | この関数は、高度な関数を適用する前に実行され、データセット全体に渡り操作を実行するために使用されます。「applyAnalyticFunction」で使用するインスタンス変数にデータを保存します。 |
protected void setupParameters() | この関数は、ユーザー入力パラメーターを作成するために使用されます。パラメーターオブジェクトを作成し、それぞれに「addParameter()」を呼び出します。 |
例
こちらは、シンプルな高度な関数の記述例です。
import com.hof.mi.interfaces.AnalyticalFunction; public class AccumulativeTotal extends AnalyticalFunction{ private Double total = 0.0; public String getName() { return "Accumulative Total"; } public String getDescription() { return "Calculates the accumulative total for the selected field"; } public String getCategory() { return "Analysis"; } public String getColumnHeading(String colName) { return "Accumulative Total of " + colName; } public int getReturnType() { return TYPE_NUMERIC; } public boolean acceptsNativeType(int type) { return type == TYPE_NUMERIC; } public Object applyAnalyticFunction(int index, Object value) throws Exception { if (value == null) return null; this.total += Double.valueOf(value.toString()); return this.total; } }