SELECT - Teradata Database - Teradata Vantage NewSQL Engine - SELECT SQL statement 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テーブルを照会する場合は、GROUP BY TIME句を使用できます。GROUP BY TIME句を参照してください。SELECTの詳細については、Teradata Vantage™ SQLデータ操作言語、B035-1146を参照してください。

SELECT文でPTIテーブルを参照する場合:
  • TD_TIMEBUCKET列で定義されたPTIテーブルからSELECT *を指定すると、システム生成のTD_TIMEBUCKET列を除く、テーブル内のすべての列が返されます。
  • PTIテーブルを照会するときに、システム生成のTD_TIMECODEおよびTD_SEQNO列をSELECT文で指定できます。
  • システム生成のTD_TIMEBUCKET列をSELECT文で指定することはできません。ただし、TD_GETTIMEBUCKET()関数を使用して、TD_TIMEBUCKETデータを取得できます。TD_GETTIMEBUCKETを参照してください。
  • BETWEEN論理述部には上限境界と下限境界が含まれ、複数のタイムバケット境界にまたがることができます。GROUP BY TIME (HOURS(1))を指定すると、各タイムバケットには1時間の範囲の下限境界が含まれます。08:00:00のタイムスタンプは1つのタイムバケットに含まれ、09:00:00のタイムスタンプは次のタイムバケットに含まれます。例えば、BETWEEN 08:00:00 AND 09:00:00を指定し、1時間のタイムバケット(つまり、HOURS(1))が定義されている場合、2つのタイムバケットからの行が返されます。
  • SELECT文と同様に、順序を指定する必要があります。そうしないと、行は順不同で返されます。例えば、SELECT * FROM table_name ORDER BY column_name

2つの期間から時系列データを取得する

この例を使用して、2日間の携帯電話の中継塔の信号強度を、UNIONを使用して取得します。各日の$TD_GROUP_BY_TIME(タイムバケット)の出力を使用して、同一の10分間隔を関連付けます。ユーザーは2日間の各10分間隔について中継塔の信号の変化を対象比較できます。

CREATE TABLE cell_towers_dt_pti (celltwrcell INT, celltwrrange INT, celltwrsignal INT) 
PRIMARY TIME INDEX (TIMESTAMP(0), DATE '1990-01-01', HOURS(1) );

SHOW TABLE cell_towers_dt_pti;

---------------------------------------------------------------------------
CREATE SET TABLE JW.cell_towers_dt_pti ,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(0) NOT NULL GENERATED TIMECOLUMN,
      celltwrcell INTEGER,
      celltwrrange INTEGER,
      celltwrsignal INTEGER)
PRIMARY TIME INDEX (TIMESTAMP(0), DATE '1990-01-01', HOURS(1), NONSEQUENCED);

SELECT
   $TD_TIMECODE_RANGE AS tcrange,
   $TD_GROUP_BY_TIME AS timebucket
   ,first(celltwrcell) AS iotFirst
   ,median(celltwrrange) AS iotTypical
  FROM
    cell_towers_dt_pti
WHERE
   TD_TIMECODE BETWEEN TIMESTAMP '2015-01-01 00:00:00' AND TIMESTAMP
'2015-01-01 23:59:59'
GROUP BY
   TIME(minutes(10))
UNION
SELECT
   $TD_TIMECODE_RANGE AS tcrange2,
   $TD_GROUP_BY_TIME AS timebucket2
   ,first(celltwrcell) AS iotFirst2
   ,median(celltwrrange) as iotTypical2
  FROM
cell_towers_dt_pti
WHERE
   TD_TIMECODE BETWEEN TIMESTAMP '2015-01-02 00:00:00' AND TIMESTAMP
'2015-01-02 23:59:59'
GROUP BY
   TIME(minutes(10))
ORDER BY 2,1
;

*** Query completed. No rows found.
*** Total elapsed time was 1 second.