記憶域に保存するものの定義 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/qwr1571437338192.ditamap
dita:ditavalPath
ja-JP/qwr1571437338192.ditaval
dita:id
B035-1147
Product Category
Software
Teradata Vantage

集約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()メソッドを必要な中間値の格納に使用します。