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') |