17.10 - 生成されたスキーマ - Parallel Transporter

Teradata® Parallel Transporter ユーザー ガイド

Product
Parallel Transporter
Release Number
17.10
Release Date
2021年6月
Content Type
ユーザー ガイド
Publication ID
B035-2445-061K-JPN
Language
日本語 (日本)

前のセクションの2つ目と3つ目の例が示すように、Teradata PTはテーブルの列記述から生成するTeradata PTスキーマの代用としてデータベース テーブルの名前を受け入れます。 これらの生成されたスキーマには、キーボード入力にかかる時間やキーストロークのミスを減らし、この結果ジョブ スクリプトの記述を簡易化する効果があります。このため、スキーマ列が多い場合には非常に便利です。

データベース テーブルからTeradata PT DEFINE SCHEMA文を生成する場合、Teradata PTはデータベースにHELP TABLE呼び出しを行なってテーブルの列の記述を取得し、このテーブル名を介してスキーマを指定するテンプレート オペレータのすべてのスクリプトの呼び出しについて、生成したスキーマ名を使用してDEFINE SCHEMA文を構成します。 その後、同じスキーマを共有するこのテンプレートへのすべての参照のために、Teradata PTはスクリプトにインポートするプロデューサ テンプレート定義のコピーで、生成された名前を使用します。

例1

ここでは、データベース テーブルInvoice_Countsに、4つの整数型が含まれる4つの列があると想定します。 Teradata PTによって構成されたそのDEFINE SCHEMA文は次のとおりです。

DEFINE SCHEMA $SCHEMA_GEN_TBL001
DESCRIPTION 'SOURCE INFORMATION SCHEMA'
(
  "IC1"    BYTEINT,
  "IC2"    SMALLINT,
  "IC4"    INTEGER,
  "IC8"    BIGINT
);   

テーブル名'Invoice_Counts'を介してスキーマを指定したスクリプトにインポートされたプロデューサ テンプレートのコピーの場合、

SCHEMA $SCHEMA_GEN_TBL001

これがスキーマの指定です。 生成されるシーケンス名には、シーケンス番号(この例では'001')が含まれます。この番号はジョブ スクリプトが生成するスキーマの番号を列挙した番号です。 生成されたスキーマの列名は、Teradata PTの予約語と競合するのを避けるために二重引用符で囲まれます。

もし、上記でスキーマを生成したデータベース テーブルInvoice_Countsの例が区切り形式データ ファイル ソースのターゲット テーブルとなる場合、ジョブ スクリプトに区切り記号付きファイル形式バージョンのスキーマが必要となります。このスキーマは、上記の3つ目のプロデューサ テンプレート参照例に示されているように、DELIMITEDキーワードによって要求できます。コードは次のようになります。

... FROM OPERATOR( $FILE_READER( DELIMITED 'Invoice_Counts' ) ) ...

この場合、データベースのターゲット テーブルでターゲット列がどのように定義されているかに関係なく、プロデューサ用に生成されるスキーマの列はすべて、データの文字形式と同じVARCHAR型とします。(データベースは、ロード時にVARCHARから非文字データ型の表現への必要なデータ変換を実行します。)上記の例のようにDELIMITEDキーワードが存在する場合、Teradata PTはテーブルInvoice_Countsのために、次の区切り記号付きファイル形式のバージョンのスキーマを生成します。

DEFINE SCHEMA $SCHEMA_GEN_D_TBL003
DESCRIPTION 'SOURCE INFORMATION SCHEMA'
(
  "IC1"    VARCHAR(4),
  "IC2"    VARCHAR(6),
  "IC4"    VARCHAR(11),
  "IC8"    VARCHAR(20)
);

生成されたスキーマの名前には"_D"が追加されていることに注意してください。これは、ジョブ スクリプトがスキーマの両方のバージョンを必要とする場合に、区切り記号付きではないバージョンのスキーマの名前と区別するためです。

例2

次の2つのDEFINE SCHEMA文で示すように、Teradata PTはスクリプト コンテキストを1つ追加してデータベース テーブルからスキーマを生成します。

DEFINE SCHEMA TODAYS_TRANSACTIONS FROM TABLE 'Daily_Trans';
DEFINE SCHEMA INVOICE_COUNTS FROM TABLE DELIMITED 'Invoice_Counts';

Teradata PTは、指定されたデータベース テーブルの列記述に基づいてDEFINE SCHEMA文を生成し、スクリプトで、省略された元のDEFINE SCHEMA文の代わりに使用します。

プロデューサ テンプレート参照から生成されたスキーマとの唯一の違いは、生成されたスキーマは、生成された名前ではなく元のDEFINE SCHEMA文で提供された名前を持つということです。 上記2つの例ではそれぞれ、TODAYS_TRANSACTIONSとINVOICE_COUNTSがそうです。 データベース テーブルで定義されるスキーマと、完全に記述されたDEFINE SCHEMA文によって定義されるスキーマの間に、機能上の違いはありません。