Teradata Databaseは集約グループ内の項目ごとに1回ずつ、そのグループの詳細値を入力引数として集約UDFを呼び出します。サマリー情報を累積していくため、メソッドでは呼び出しごとにコンテキストが保持されます。
グループの作成や集約UDFのコーディングでのグループの処理は、Teradataで自動的に処理されるため、特に知識は必要ありません。必要なのは、渡されるデータを組み合わせて、希望する結果を得るための基本的なアルゴリズムを記述することだけです。
基本アルゴリズムは、集約UDFで現れる5つの実行フェーズから構成されています。実行のフェーズと、各フェーズでメソッドが実行する必要のあるアクションを決定するには、phaseの入力引数でgetPhase()メソッドを呼び出します。戻り値は、Phaseクラスの定数です。
集約UDFの処理フローは、次のテーブルに示すとおりです。ウィンドウ集約UDFのフローについては、ウィンドウ集約UDFを参照してください。
フェーズ | phase.getPhase()の値 | 説明 |
---|---|---|
1 | Phase.AGR_INIT | Teradata Databaseが、ある集約グループに対して初めて集約UDFを呼び出した場合です。 メソッドでは、次のことを実行する必要があります。
|
2 | Phase.AGR_DETAIL | このフェーズでは、各グループごとに、集約の対象となる行ごとに1回ずつメソッドが呼び出されます。 メソッドでは、UDFの引数入力データと、そのグループに対して定義されている中間記憶域を結合する必要があります。 |
3 | Phase.AGR_COMBINE | このフェーズでは、特定のグループについて、異なるAMPによる結果を組み合わせします。 メソッドでは、渡された2つの中間記憶域を組み合わせする必要があります。 |
4 | Phase.AGR_FINAL | このグループに対する入力は、もうないはずです。メソッドでは、そのグループの最終結果を作成する必要があります。 |
5 | Phase.AGR_NODATA | このフェーズが関係してくるのは、集約するデータが何もない場合だけです。 |