ユーザー定義のテンプレートを含め、テンプレートの使用可能な範囲の制限により、ConsumerオペレータやStandaloneオペレータをジョブ スクリプトで定義する理由はありません。 一方、Producerオペレータ テンプレートの使用については、制限される可能性があります。これは、Producerオペレータの定義には、明示的な(スクリプト定義の)スキーマをDEFINE OPERATOR構文の一部として指定する必要があるためです。
Standaloneオペレータはスキーマを使用しないため、スキーマの指定は不要です。 Consumerオペレータでは次のようにスキーマを指定します。
SCHEMA *
これは、オペレータをデータ ソースに接続するデータ ストリームで、オペレータに送るいかなるデータのスキーマもオペレータが受け取るということです。 一方、Producerオペレータは、次の構文フェーズを使用して、データ ストリームに配置するデータを記述するスクリプト定義のスキーマを識別する必要があります。
SCHEMA schemaName
schemaNameは、ジョブ スクリプトのDEFINE SCHEMA文で定義されるスキーマの名前です。 プロデューサ テンプレートで実際にスキーマが指定されている場合、そのテンプレートの使用は、特定のスキーマの定義を含むスクリプトに限定されるうえ、そのスキーマが適切であるテンプレートに限定されます。
Producerオペレータ テンプレートの使用に関するこの潜在的に厳しい制限を解消するために、Teradata PTはAPPLY文にProducerオペレータ テンプレートへの参照の一部として明示的に、または暗黙にスキーマを指定できる機能をサポートしています。次に3つの例を示します。
... FROM OPERATOR( $FILE_READER( DAILY_SALES ) ) ... ... FROM OPERATOR( $EXPORT( 'Product_Shipments' ) ) ... ... FROM OPERATOR( $FILE_READER( DELIMITED 'Gross_Receipts_YTD' ) ) ...
- 最初の例(テンプレート名$FILE_READERへのこの特定の参照による、DataConnector producerオペレータの実行)では、'DAILY_SALES'がそのスキーマとして使用されます。 このような明示的なスキーマ参照は、ジョブ スクリプトでDEFINE SCHEMA文を使用してあらかじめ定義されたスキーマに対してのみ行なうことができます。
- 2つ目の例(テンプレート名$EXPORTへのこの特定の参照による、Exportオペレータの実行)では、Teradata DatabaseテーブルProduct_Shipmentsの列記述に基づき、Teradata PTによって生成されたスキーマが使用されます。 このような暗黙的なスキーマ参照は、必ず、ジョブのサブミット時にすでに存在するTeradata Databaseテーブルの名前を介して行なう必要があります。
- 3つ目の例(DataConnector Producerオペレータの実行)では、既存のTeradata DatabaseテーブルGross_Receipts_YTDの列記述に基づき、Teradata PTによって生成されたスキーマの区切り記号付きファイル形式のバージョンが使用されます。