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のAGR_COMBINE集約フェーズでは、集約の対象となるグループごとに、2つの中間集約記憶域を結合して1つの記憶域にする必要があります。関数が結合する記憶域は、特定のグループに対する異なるAMPからの結果です。

それらの記憶域は、FNC_Context_t関数コンテキスト構造体パラメータのinterim1およびinterim2によって参照されます。interim2のポインタは、interim1によって指定される集約記憶域と組み合わせする対象となる集約記憶域を参照します。

最終結果は、集約関数の処理対象となるグループごとに1つずつ、集約記憶域を作成することです。

標準偏差関数のサンプルでは、FNC_Context_t.interim2関数引数を参照するAGR_Storageへの、さらに別のポインタを定義できます。引数名をfctxとすると、s2という名前でAGR_Storageへのポインタを定義する文は次のとおりです。

AGR_Storage *s2 = fctx->interim2;

集約記憶域を組み合わせする文は、次のとおりです。

s1->n     += s2->n;
s1->x_sq  += s2->x_sq;
s1->x_sum += s2->x_sum;
AGR_COMBINE集約フェーズは、ウィンドウ集約関数には適用しません。