使用上の注意 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL演算子およびユーザー定義関数

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
2021年1月
Language
日本語
Last Update
2021-03-31
dita:mapPath
ja-JP/xwv1596137968859.ditamap
dita:ditavalPath
ja-JP/xwv1596137968859.ditaval
dita:id
B035-1210
Product Category
Software
Teradata Vantage
CALCMATRIXは、1つの入力行列または複数の入力行列を表わすデータを処理します。後者の場合、特定の入力行がどの行列に属するかを識別する1つ以上の列が、入力に含まれている必要があります。これらの列はmatrix id columnsと呼ばれ、行列ID列の1組の値はmatrix idと呼ばれます。同じ行列のすべての行は、行列IDが同じである必要があります。

CALCMATRIXは、LOCALフェーズおよびCOMBINEフェーズで機能します。

  • LOCALフェーズでは、各AMPのソース テーブルに存在する入力データを個別に処理し、そのAMP用に要約したデータ行を出力します。AMP間でデータが移動することはありません。
  • COMBINEフェーズでは、各AMPからのサマリー データ(つまりLOCALフェーズからの出力)を処理し、それを組み合わせて最終出力となる行を形成します。

    1つの結果の行列(または、複数の行列ID列がある場合には、行列IDごとの1つの結果の行列)を取得するには、COMBINEフェーズで、HASH BY句と、場合によってはLOCAL ORDER BY句を使用する必要があります。

LOCALフェーズの詳細

  • LOCALフェーズへの入力は、0個以上の行列ID列、および1つ以上のデータ列(この数をnと呼びます)で構成されている必要があります。行列ID列がある場合は、行列ID列をLOCAL ORDER BYリストに配置する必要があります。
  • LOCALフェーズからの出力は、行列ID列(存在する場合)、rownumという名前のINT列、rownameという名前のVARCHAR(128)列、c(カウントの略)という名前のBIGINT列、s(合計の略)という名前のREAL列、および各入力データ列のREAL列で構成されています。
  • LOCALフェーズのCALCTYPEとOUTPUTのカスタム値は、常に、それぞれ'SSCP'と'COLUMNS'に設定されます。これらのキーにそれ以外の値を使用しても無視されます。
  • 行のいずれかのデータ列にNULLがある場合、その行の処理はNULL_HANDLINGの設定によって異なります。

COMBINEフェーズの詳細

  • COMBINEフェーズへの入力は、LOCALフェーズから出力される列と正確に一致する必要があります。ゼロ個以上の行列ID列、INT rownum列、VARCHAR(128) rowname列、c(カウントの略)という名前のBIGINT列、s(合計の略)という名前のREAL列、および各入力データ列のREAL列です。

    データ内に行列ID列がある場合は、その列をHASH BYリストおよびLOCAL ORDER BYリストに指定する必要があります。ない場合は、ON句およびHASH BYリストに、定数値と、「1 as p」のような別名を持つ列を追加する必要があります。

  • CALCTYPEおよびOUTPUTのカスタム値によって、COMBINEフェーズからの出力列が制御されます。
  • OUTPUTを'COLUMNS'に設定すると、'COMBINE'フェーズから出力される列は、行列ID列(存在する場合)、INT rownum列、VARCHAR(128) rowname列、各入力データ列のREAL列、およびCALCTYPEが'ESSCP'の場合にはc (カウントの略)という名前のBIGINT列、s (合計の略)という名前のREAL列になります。

    OUTPUTを'VARBYTE'に設定すると、'COMBINE'フェーズから出力される列は、INT rowname列、VARCHAR(128) rowname列、およびv.という名前のVARBYTE列になります。

  • 行列ID列がない場合、COMBINEフェーズの最終出力はn行で構成されます。nは、入力に含まれるデータ列の数です。rownumフィールドの値は1~nです。このため、各出力行は処理の結果得られる行列の1行になります。行列ID列がある場合、COMBINEフェーズの最終出力は行列IDごとにn行で構成されます。rownumフィールドの値は1~nです。

VARBYTE出力

出力が‘VARBYTE’である場合、出力行は行列ID列(ある場合)および次のフィールドで構成されます。

  • INT rownum
  • VARCHAR(128) rowname
  • VARBTYE value

LOCALフェーズとCOMBINEフェーズの両方の詳細

  • rownum列の値は1~nであり、nは入力に含まれるデータ列の数です。rownum列の値がxである場合、rowname列はx番目のデータ列名になります。
  • ON句の列が式である場合、その列には別名が必要です。LOCAL ORDER BYリストまたはHASH BYリストの列は、ON句からの列か別名、または順序数である必要があります。