次に、派生期間列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句が構築されて、Teradata Databaseに送信されます。次にサンプルの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);
Teradata DatabaseでテンポラルNoPIステージング テーブルを作成するには、USINGEXTENSION値が必要です。データは取得フェーズ中にステージング テーブルに取り込まれます。取得フェーズが終了すると、アプリケーション フェーズ内でステージング テーブルからテンポラル ターゲット テーブルにデータがマージされます。アプリケーション フェーズが終了したらステージング テーブルを削除できます。