17.00 - 17.05 - 集約UDFの基本アルゴリズム - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL外部ルーチン プログラミング

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1147-170K-JPN
Language
日本語 (日本)

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 このフェーズが関係してくるのは、集約するデータが何もない場合だけです。