例: フライト時系列データを保持するPTIテーブル
航空会社の安全部門は、飛行中のすべての航空機(特定の便ではない)の全体的なステータスを取得したいと考えています。そのため、このテーブルのPTIは、timebucket_duration値を含むように定義されます。SEQUENCEDもNONSEQUENCEDもPTI定義に含まれていないため、時系列データはNONSEQUENCEDとみなされ、各行に固有のタイムスタンプが付けられます。
CREATE TABLE flightinfo( flightid integer, airspeed integer, altitude integer) PRIMARY TIME INDEX(TIMESTAMP(6), DATE '2016-04-19', MINUTES(1));
例: 海洋ブイ時系列データを保持するPTIテーブル
海洋ブイ センサーからのデータは、長期的な連続する時系列の例です。そのため、このテーブルのPTIは、timebucket_durationとテーブルからの2つのデータ列を含むように定義されています。テーブルの複数の行が同じタイムスタンプを共有する可能性があるため、PTIテーブルはSEQUENCEDとして定義されます。
CREATE TABLE buoyinfo( buoyid integer, salinity integer, temperature integer) PRIMARY TIME INDEX(TIMESTAMP(1), DATE '2016-04-19', HOURS(1), COLUMNS(buoyid, salinity), SEQUENCED);
このテーブルのSHOW TABLE文の出力は、Teradata Databaseによって自動的に生成されるTD_TIMEBUCKET、TD_TIMECODE、およびTD_SEQNO列を示しています。この場合、PTI定義にはtimebucket_duration値が含まれているため、TD_TIMEBUCKET列が生成されます。TD_TIMEBUCKET列は非表示になっており、DMLにアクセスできません。すべてのPTIテーブルには、時系列からタイムスタンプ データを保持するために生成されたTD_TIMECODE列が含まれています。PRIMARY TIME INDEX句にSEQUENCEDパラメータが含まれているため、TD_SEQNO列が生成されます。
SHOW TABLE buoyinfo; CREATE SET TABLE buoyinfo, NO FALLBACK, NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM = DEFAULT, DEFAULT MERGEBLOCKRATIO, MAP = TD_MAP1 ( TD_TIMEBUCKET BIGINT NOT NULL GENERATED SYSTEM TIMECOLUMN, TD_TIMECODE TIMESTAMP(1) NOT NULL GENERATED TIMECOLUMN, TD_SEQNO INT NOT NULL GENERATED TIMECOLUMN, buoyid integer, salinity integer, temperature integer) PRIMARY TIME INDEX(TIMESTAMP(1), DATE '2016-04-19', HOURS(1), COLUMNS(buoyid, salinity), SEQUENCED(20000));
例: PTIテーブルは非PTIテーブルの機能をサポートする
PTIテーブルはグローバル一時テーブルまたは揮発テーブルで、セカンダリ インデックスや非PTIテーブルのような制約を含めることができます。この例では、PTI句のtimebucket_durationの値に、HOURS(1)ではなく、短縮表現の1hrが使用されていることに注意してください。
CREATE SET GLOBAL TEMPORARY TABLE nonseqtab ,FALLBACK, CHECKSUM = HIGH, FREESPACE = 50, DATABLOCKSIZE = 21249, BLOCKCOMPRESSION = DEFAULT ( buoyid INTEGER NOT NULL, salinity INTEGER NOT NULL, temperature INTEGER, CONSTRAINT pk_1 PRIMARY KEY (buoyid), CONSTRAINT ch_1 CHECK (salinity > 50), CONSTRAINT uq_1 UNIQUE(salinity) ) PRIMARY TIME INDEX (TIMESTAMP(6), DATE '2016-04-19', 1hr, COLUMNS(buoyid, salinity)) UNIQUE INDEX (buoyid) INDEX (buoyid, salinity) ORDER BY (buoyid) ON COMMIT DELETE ROWS;