NORMALIZE
CREATE TABLE文のNORMALIZE句は、非PTIテーブルに対して使用するのと同様に、PTIテーブルに対して使用できます。NORMALIZE句は、行の他のすべての値が互いに等価である場合に、一致または重複するPeriodデータ型列の値を持つテーブルの行をまとめます。NORMALIZE句の詳細については、<Teradata Vantage™ SQLデータ定義言語の構文規則および例、B035-1144>を参照してください。
例: 正規化されたPTIテーブル
この例では、5つの挿入行を2行にまとめます。
CREATE TABLE flight_sensors ( FlightID INTEGER, SensorID INTEGER, SensorData INTEGER, duration PERIOD(TIMESTAMP(6)), NORMALIZE ALL BUT(SensorData) ON duration ON MEETS OR OVERLAPS) PRIMARY TIME INDEX (TIMESTAMP(6), DATE '2016-10-15', COLUMNS(flightID, SensorID), NONSEQUENCED); INSERT INTO flight_sensors (TIMESTAMP '2017-01-06 08:10:00.000000', 67,4,1, PERIOD (timestamp '2017-01-06 08:10:00.000000', timestamp '2017-01-06 08:10:00.000010')); INSERT INTO flight_sensors (TIMESTAMP '2017-01-06 08:10:00.000000', 67,4, 1, PERIOD (timestamp '2017-01-06 08:10:00.000000', timestamp '2017-01-06 08:10:00.000020')); INSERT INTO flight_sensors (TIMESTAMP '2017-01-06 08:10:02.000000', 67,5, 99, PERIOD (timestamp '2017-01-06 08:10:02.000000', timestamp '2017-01-06 08:10:02.000030')); INSERT INTO flight_sensors (TIMESTAMP '2017-01-06 08:10:02.000000', 67,5, 99, PERIOD (timestamp '2017-01-06 08:10:02.000000', timestamp '2017-01-06 08:10:02.000040')); INSERT INTO flight_sensors (TIMESTAMP '2017-01-06 08:10:02.000000', 67,5, 99, PERIOD (timestamp '2017-01-06 08:10:02.000000', timestamp '2017-01-06 08:10:02.000050')); SELECT * FROM flight_sensors;
TD_TIMECODE | flightID | SensorID | SensorData | 期間 |
---|---|---|---|---|
2017-01-06 08:10:00.000000 | 67 | 4 | 1 | ('2017-01-06 08:10:00.000000','2017-01-06 08:10:00.000020') |
2017-01-06 08:10:02.000000 | 67 | 5 | 99 | ('2017-01-06 08:10:02.000000','2017-01-06 08:10:02.000050') |
EXPAND ON
SELECT文のEXPAND ON句をPTIテーブルに対して使用し、EXPAND ON句での仕様に従って、返される各テーブル行の結果セットに複数の行を作成できます。
例: 正規化されたPTIテーブルでのSELECT...EXPAND ON句の使用
この例では、上記のNORMALIZEの例のテーブルを使用して、2つの行を持つ新しいPTIテーブルを作成します。
SELECT...EXPAND ONクエリーは、flight_sensorsテーブルの2つの行を、それぞれの元の行に関連付けられた0.00001単位の期間を満たす複数の行に展開します。
SELECT td_timecode, flightID, SensorData, tsp FROM flight_sensors EXPAND ON duration AS tsp BY INTERVAL '0.00001' SECOND FOR PERIOD (timestamp '2017-01-06 08:10:00.000000', timestamp '2017-01-06 08:10:02.000050');
TD_TIMECODE | FlightID | SensorData | tsp |
---|---|---|---|
2017-01-06 08:10:00.000000 | 67 | 1 | ('2017-01-06 08:10:00.000000', '2017-01-06 08:10:00.000010') |
2017-01-06 08:10:00.000000 | 67 | 1 | ('2017-01-06 08:10:00.000010', '2017-01-06 08:10:00.000020') |
2017-01-06 08:10:02.000000 | 67 | 99 | ('2017-01-06 08:10:02.000000', '2017-01-06 08:10:02.000010') |
2017-01-06 08:10:02.000000 | 67 | 99 | ('2017-01-06 08:10:02.000010', '2017-01-06 08:10:02.000020') |
2017-01-06 08:10:02.000000 | 67 | 99 | ('2017-01-06 08:10:02.000020', '2017-01-06 08:10:02.000030') |
2017-01-06 08:10:02.000000 | 67 | 99 | ('2017-01-06 08:10:02.000030', '2017-01-06 08:10:02.000040') |
2017-01-06 08:10:02.000000 | 67 | 99 | ('2017-01-06 08:10:02.000040', '2017-01-06 08:10:02.000050') |