17.00 - 17.05 - 記憶域に保存するものの定義 - 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
日本語 (日本)

集約UDFが保存する必要のある中間結果の型は、UDFが行なう計算の型と、メソッドがバイト アレイとして中間結果を表現しようとしているのか、オブジェクトとして表現しようとしているのかによって決まります。

下記の式を使用して標準偏差を計算する関数STD_DEV(x)があるとします。



この計算式に基づいて、UDFでは次のデータを記憶する必要があります。
  • N
  • sum(X 2)
  • sum(X)

次のサンプルは、agr_storageと呼ばれるJavaクラスの例で、このクラスは必要な中間値に適合したフィールドを持っています。

class agr_storage implements Serializable{
   double count;
   double x_sq;
   double x_sum;

   public agr_storage(double a, double b, double c){
      count = a;
      x_sq = b;
      x_sum = c;
   }
}

別の方法として、特にパフォーマンスを改善する必要のある場合は、集約UDFを実装するメソッドは中間結果を格納するのにByteBufferを使用できます。ByteBufferのputDouble()とgetDouble()メソッドを必要な中間値の格納に使用します。