例: PTI非タイム バケット テーブルをPTIタイム バケット テーブルにマージ - Teradata Database - Teradata Vantage NewSQL Engine - MERGE SQL statement examples for time series tables

Teradata Vantage™ 時系列テーブルおよび操作

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/sfz1493079039055.ditamap
dita:ditavalPath
ja-JP/sfz1493079039055.ditaval
dita:id
B035-1208
Product Category
Software
Teradata Vantage

この例に使用するテーブル定義は、次のとおりです。

以下は、シーケンス化PTIテーブルの定義です。ここでは、2016年10月15日のタイム ゼロ指定であるDATE '2016-10-15'と、1時間のタイムバケット期間であるHOURS(1)が使用されています。

CREATE TABLE src_s (
      TD_TIMEBUCKET BIGINT NOT NULL GENERATED SYSTEM TIMECOLUMN,
      TD_TIMECODE TIMESTAMP(1) NOT NULL GENERATED TIMECOLUMN,
      TD_SEQNO INT NOT NULL GENERATED TIMECOLUMN,
      c1 INTEGER,
      c2 INTEGER)
 PRIMARY TIME INDEX (TIMESTAMP(1), DATE '2016-10-15', HOURS(1), SEQUENCED(500));

このシーケンス化PTIテーブルtgt_nb_sの定義には、2016年10月15日のタイム ゼロ指定であるDATE '2016-10-15'が含まれていますが、タイムバケット期間はありません。

CREATE TABLE tgt_nb_s (
      TD_TIMECODE TIMESTAMP(1) NOT NULL GENERATED TIMECOLUMN,
      TD_SEQNO INT NOT NULL GENERATED TIMECOLUMN,
      c1 INTEGER,
      c2 INTEGER)
 PRIMARY TIME INDEX (TIMESTAMP(1), DATE '2016-10-15', COLUMNS(c1), SEQUENCED(500));

この非PTIテーブルtgt_r2の定義には、列c1で構成されるプライマリ インデックスに加えて、timecodeおよびseqnoという名前の列が含まれています。

CREATE TABLE tgt_r2( 
   timecode TIMESTAMP(1),
   seqno INTEGER,
   c1 INTEGER,
   c2 INTEGER)
PRIMARY INDEX ( c1 );

この例では、タイムバケットを持つシーケンス化PTIテーブルsrc_sが、タイムバケットを持たないシーケンス化PTIテーブルtgt_nb_sにマージされます。

MERGE INTO
tgt_nb_s AS tgt
USING (SELECT TD_TIMECODE, TD_SEQNO, c1, c2 FROM src_s)AS src
ON tgt.TD_TIMECODE = src.TD_TIMECODE AND
   tgt.TD_SEQNO = src.TD_SEQNO AND
   tgt.c1 = src.c1
WHEN MATCHED THEN UPDATE SET c2 = 70
WHEN NOT MATCHED THEN
INSERT (src.TD_TIMECODE, src.TD_SEQNO, src.c1, src.c2);