17.10 - テーブル演算子の構文 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-171K-JPN
Language
日本語 (日本)
[ database_name. | user_name. ] { table_operator_name | function_mapping_name } (
  [ on_clause [...] ]
  [ EXECUTE MAP = map_name [ COLOCATE USING colocation_name ] ]
  [ out_table_clause [...] ]
  [ USING using_spec [...] ]
) [AS] correlation_name [ ( column_name [,...] ) ]

構文要素

database_name
user_name
必要に応じて、包含データベースまたはユーザーを指定できます。database_nameまたはuser_nameを指定しない場合、優先順位に従ってデータベースまたはユーザーのデフォルトは次のいずれかになります。
  • セッションの現在のデフォルト データベース
  • SYSLIB
  • TD_SYSFNLIB
table_operator_name
テーブル演算子の名前。 この名前には、Teradataの予約語は使用できません。
function_mapping_name
関数マッピング名。
関数マッピングの作成方法の詳細については、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。
on_clause
ON { table_name | view_name | ( query_expression ) }
  [ AS correlation_name ]
  [ hash_or_partition_by | DIMENSION ]
  [ [ LOCAL ] ORDER BY order_by_spec [,...] ]
最大16のON句を使用できます。保護モードと非保護モードのテーブル演算子でサポートされているすべての言語で複数のON句を使用できます。
複数のON句を使用する場合、ON句の順序は、使用するテーブル演算子のストリーム番号の順序に一致させる必要があります。
cogroupは、複数のON句を含むテーブル演算子に使用します。cogroupの詳細については、<Teradata Vantage™ - SQL演算子およびユーザー定義関数、B035-1210>を参照してください。
複数のON句、またはPARTITION BYあるいはHASH BYを使用するON句が含まれるテーブル演算子でスカラー サブクエリーを使用することはできません。
関数マッピングとON句を参照してください。
EXECUTE MAP
連続マップまたはスパース マップ、また、必要に応じて、テーブル演算子の実行にコロケーション名を指定します。 テーブル演算子は、マップ内のAMPでのみ実行されます。 入力行がマップごとにまだ分散されていない場合、データベースは指定したマップまたはデフォルトのマップでテーブル演算子を実行する前に、入力行を指定したマップまたはデフォルトのマップのAMPに分散します。
指定されたマップが許可されている必要があります。
EXECUTE MAP句が指定されていない場合、実行マップはテーブル演算子で定義されたとおりになります。<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>のユーザー定義関数文のCREATE FUNCTIONおよびREPLACE FUNCTION (テーブル形式)にあるEXECUTE MAPオプションを参照してください。
map_name
連続マップまたはスパース マップの名前。
TD_DataDictonaryMapまたはTD_GlobalMapを指定することはできません。
colocation_name
他の関数、テーブル、結合インデックス、またはハッシュ インデックスと同じAMP上の関数を共同設置するために指定します。
このオプションは、スパース マップに対してのみ指定できます。連続したマップの場合、コロケーションのためのコロケーション名は不要であり、colocation_nameはNULLに設定されます。
コロケーション名を指定しない場合、名前はdatabase_operatorのデフォルト名となり、ここでdatabaseはデータベースまたはユーザーの名前で下線(_)が続き、operatorはテーブル演算子の名前です。databaseが63文字を超える場合、databaseは63文字に切り捨てられます。operatorが64文字を超える場合、operatorは64文字に切り捨てられます。
out_table_clause
OUT TABLE name ( [ database_name. | user_name. ] output_table )
出力テーブル句は、関数マッピングに対してのみ指定できます。<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。
using_spec
name ( { value [,...] | scalar_subquery } )
変数を指定できます。関数処理中に、変数値は、関数マッピング定義の対応するパラメータに置き換えられます。変数は関数処理には送信されません。関数マッピングおよびUSING句を参照してください。
correlation_name
column_nameが参照する列の別名。
column_name
列名。
table_name
テーブル演算子への入力となるテーブル。
view_name
テーブル演算子への入力となるビューの式。
query_expression
テーブル演算子への入力となる問合わせ式。
correlation_name
on_clause内。
テーブルの別名。
hash_or_partition_by
{ { HASH | PARTITION } BY
    { column_name | column_position | column_expression } [,...] |

  PARTITION BY ANY
}
order_by_spec
{ column_name | column_position | column_expression }
  [ ASC | DESC ] [ NULLS { FIRST | LAST } ]
name
out_table_clause内。
関数マッピング定義内のOUT TABLE名のいずれかと一致する必要がある出力引数名。
database_name
out_table_clause内。
出力テーブルを含むデータベースの名前。
user_name
out_table_clause内。
出力テーブルを含むユーザーの名前。
output_table
out_table_clause内。
出力テーブルの名前。
name (value)
1つ以上の名前と値のペア。
name (scalar_subquery)
単一行を返すサブクエリーを指定することもできます。各名前につきサブクエリーは1つに限定されます。サブクエリーは1行のみ返さなければならず、サブクエリーのWHERE句は固有プライマリ インデックスか固有セカンダリ インデックスを参照しなければなりません。行には複数の値(列)を持つ可能性がありますが、すべての値は同じデータ型でなければなりません。
HASH_BY column
column_position
column_expression
テーブル関数またはテーブル演算子に入力する列をグローバルに順序をハッシュする列名のオプションのセット。
複数のON句、またはPARTITION BYあるいはHASH BYを使用するON句が含まれるテーブル演算子でスカラー サブクエリーを使用することはできません。
複数のHASH BY句を含む複数の入力テーブル演算子を使用する場合は、次の制限が適用されます。
  • すべてに同じ数のパーティション属性が必要です。
  • 対応する属性は、同じ型であるか、または暗黙のキャストを使用して一致させる必要があります。
HASH BY句とともにLOCAL ORDER BY句を指定する場合は、次の制限が適用されます。
  • すべての句に同じ数のLOCAL ORDER BY列が必要です。
  • 列のデータ型は、同じ型であるか、または暗黙のキャストを使用して一致させる必要があります。
PARTITION BY column_name
column_position
column_expression
テーブル演算子への入力として指定されたテーブルをパーティション化します。
列は名前または場所で指定するか、または列に解決される式を使用します。
複数のON句、またはPARTITION BYあるいはHASH BYを使用するON句が含まれるテーブル演算子でスカラー サブクエリーを使用することはできません。
行レベル セキュリティ制約列をパーティション列として指定することはできません。
複数のPARTITION BY句がある場合は、次の制限が適用されます。
  • すべてに同じ数のパーティション属性が必要です。
  • 対応する属性は、同じ型であるか、または暗黙のキャストを使用して一致させる必要があります。
PARTITION BY句とともにORDER BY句を指定する場合は、次の制限が適用されます。
  • すべての句に同じ数のORDER BY列が必要です。
  • 列のデータ型は、同じ型であるか、または暗黙のキャストを使用して一致させる必要があります。
パーティション キーは、パフォーマンスにとって重要です。パーティション キーが同じAMPにハッシュされると、一部のAMPが他のAMPよりオーバーロードになることがあります。パーティション キーがVARCHARの場合、VARCHARは他のデータ型より比較に時間がかかることがあるので、パフォーマンスが影響を受ける場合もあります。
PARTITION BY ANY
パーティション属性またはORDER BY属性なしでテーブルを指定します。
PARTITION BY ANYは、AMPにおける行の既存の配置を維持します。PARTITION BY ANY句の後のORDER BY句は、そのパーティションのすべての行がORDER BY句によって並べ替えられることを意味し、機能的にはHASH BY句を使用せずにLOCAL ORDER BY句を使用する場合と同じです。
次の制限が適用されます。
  • 同じON句にPARTITION BY ANY句とLOCAL ORDER BY句を指定することはできません。
  • テーブル演算子で複数のON句を指定する場合は、PARTITION BY ANY句を1つのみ指定できます。他のすべての句はDIMENSIONにする必要があります。
DIMENSION
関数が動作するすべてのパーティションにディメンション テーブルの重複コピーを作成することを指定します。
ON句ごとにゼロ個以上のDIMENSION句を指定できます。
DIMENSION入力は、入力テーブルがファクトの小さな検索テーブルであるか、またはマシンの学習用に使用されるなどのトレーニング モデルである場合に役立ちます。DIMENSIONを使用する検索テーブルでは、行はすべてのAMPに複製されます。各AMPがメモリに検索テーブルの1つのインスタンスを保持し、それを別の入力の各行を処理するために使用します。
マシンの学習では、特定のデータ集合の結果を予測するデータベースにモデルを格納し、格納されたモデルを関数へのディメンション入力として使用できます。
次の制限が適用されます。
  • 同じON句でLOCAL ORDER BY句とDIMENSION句を使用することはできません。
  • テーブル演算子の入力としてON句が1つだけある場合、その中でDIMENSIONを使用することはできません。DIMENSIONを使用するには、2番目のON句に少なくとも1つのPARTITION BY句またはHASH BY句が必要です。
  • 複数のON句を使用し、その1つでLOCAL ORDER BYのみを指定する場合、他のすべてのON句で指定できるのはDIMENSIONのみです。
  • SCRIPTテーブル演算子を使用する場合は、ON句でDIMENSIONを使用できません。

    SCRIPTテーブル演算子については、<Teradata Vantage™ - SQL演算子およびユーザー定義関数、B035-1210>を参照してください。

LOCAL ORDER BY column_name
column_position
column_expression
テーブル関数への入力に備えて、修飾された行が各AMPに対して順序付けされることを指定します。
同じON句にPARTITION BY ANY句とLOCAL ORDER BY句を指定することはできません。
同じON句にDIMENSION句とLOCAL ORDER BY句を指定することはできません。
複数のON句を使用し、その1つでLOCAL ORDER BYのみを指定する場合、他のすべてのON句で指定できるのはDIMENSIONのみです。
複数のON句を使用する場合、同じON句でDIMENSION句とともにLOCAL ORDER BY句を使用することはできません。
LOCAL ORDER BY句とともに複数のHASH BY句を指定する場合は、次の制限が適用されます。
  • すべての句に同じ数のLOCAL ORDER BY列が必要です。
  • 列のデータ型は、同じ型であるか、または暗黙のキャストを使用して一致させる必要があります。
ORDER BY
結果セットのソート方法を定義します。この句を使用していない場合、結果行はソートされずに返されます。
ORDER BY句をON句の唯一のオプションとして指定することはできません。ORDER BY句は、PARTITION BY句、PARTITION BY ANY句、HASH BY句、またはDIMENSION句と組み合わせる必要があります。
PARTITION BY句とともにORDER BY句を指定する場合は、次の制限が適用されます。
  • すべての句に同じ数のORDER BY列が必要です。
  • 列のデータ型は、同じ型であるか、または暗黙のキャストを使用して一致させる必要があります。
問合わせでNORMALIZEおよびORDER BYが指定されると、最初に行が正規化され、結果は正規化された結果に対して順序付けされます。