17.10 - 例2 – ANSIテンポラル構文 - Parallel Transporter

Teradata® Parallel Transporterリファレンス

Product
Parallel Transporter
Release Number
17.10
Release Date
2021年10月
Content Type
プログラミング リファレンス
Publication ID
B035-2436-061K-JPN
Language
日本語 (日本)

次に、派生期間列JOBDURATIONをVALIDTIME列として含むターゲット テンポラル テーブルの定義に関するANSIテンポラルの例を示します。

CREATE MULTISET TABLE TARGET_EMP_TABLE(
	EMP_ID      INTEGER,
	EMP_NAME    CHAR(30),
	EMP_DEPT    INTEGER,
	JOB_START   DATE NOT NULL,
	JOB_END     DATE NOT NULL,
	PERIOD FOR  JOBDURATION(JOB_START, JOB_END) AS VALIDTIME)
PRIMARY INDEX(EMP_ID);

次に、サンプルのターゲットANSIテンポラル テーブル定義に対するTeradata PTスキーマ定義の例を示します。

DEFINE SCHEMA EMPLOYEE_SCHEMA
DESCRIPTION 'SAMPLE EMPLOYEE SCHEMA'
(
	EMP_ID       INTEGER,
	EMP_NAME     CHAR(30),
	EMP_DEPT     INTEGER,
	JOB_START    INTDATE,
	JOB_END      INTDATE USINGEXTENSION('PERIOD FOR JOBDURATION
							 (JOB_START, JOB_END) AS VALIDTIME')
);

サンプルのTeradata PTスキーマ定義では、JOB_END列にUSINGEXTENSIONオプションが指定されています。USINGEXTENSIONオプションには「PERIOD FOR JOBDURATION (JOB_START, JOB_END) AS VALIDTIME」の値が設定されています。

このジョブでは、テンポラル修飾子(SEQUENCED、NONSEQUENCED、またはCURRENT)を使用してDML文を指定する必要があります。次に、SEQUENCEDテンポラル修飾子を含むサンプルのDML文を示します。

SEQUENCED VALIDTIME INSERT INTO TARGET_EMP_TABLE (:EMP_ID, :EMP_NAME, :EMP_DEPT, :JOB_START, :JOB_END);

UpdateオペレータによってUSING句が構築されて、データベースに送信されます。次にサンプルのUSING句を示します。

USING EMP_ID(INTEGER),EMP_NAME(CHAR(30)), EMP_DEPT(INTEGER),
	JOB_START(DATE), JOB_END(DATE PERIOD FOR JOBDURATION(JOB_START,
	JOB_END) AS VALIDTIME)
SEQUENCED VALIDTIME INSERT INTO TARGET_EMP_TABLE (:EMP_ID,
	:EMP_NAME, :EMP_DEPT, :JOB_START, :JOB_END);

データベースでテンポラルNoPIステージング テーブルを作成するには、USINGEXTENSION値が必要です。データは取得フェーズ中にステージング テーブルに取り込まれます。取得フェーズが終了すると、アプリケーション フェーズ内でステージング テーブルからテンポラル ターゲット テーブルにデータがマージされます。アプリケーション フェーズが終了したらステージング テーブルを削除できます。