30日間の無料評価版をお試しいただけます。

 

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;
    }
  
}

 

 

 

  • No labels