テーブル関数とユーザー定義のテーブル演算子の主な違いは、次のとおりです。
- テーブル関数の入力と出力は、列ではなく、行セットまたはテーブルです。行のデフォルト形式は標識データ形式です。
- テーブル関数では、行反復子は関数の外部にあり、反復子が関数を呼び出します。
テーブル演算子では、反復子はコーダーが処理します。テーブル演算子自体は1回だけ呼び出されます。
- テーブル演算子では、入力列と出力列は、演算子の構文解析を行なうときにテーブル演算子のパーサー関数を呼び出すことによって設定されます。演算子は入力に基づいて出力を決定し、この情報をパーサーに返します。
- テーブル演算子では、カスタム引数句を使用して多様性を持たせることができます。
テーブル演算子は再帰処理を行なう必要があるため、テーブル演算子は単純なAMPステップと同じように構築する必要があります。ライターには行の読み取り/書き込みインターフェースが提供されます。
パーサー関数は標準のスカラーUDFに似ており、1つの引数セット(入力列タイプおよび呼び出しメタデータ)にアクセスし、出力列タイプのリストを返します。ただし、テーブル関数と同様に、出力テーブル形式は、実行時にユーザーが指定することによって設定することもできます。