目的
TD_GETTIMEBUCKETシステム関数は、PTIテーブルからTD_TIMEBUCKET列値を取得します。タイムバケットはハッシュ キーであるため、DBAはTD_TIMEBUCKET列値を使用して、PTIテーブルの行がAMP間でどの程度分散されているかを判断し、スキューを回避することができます。
構文
構文要素
- TD_SYSFNLIB
- 関数が格納されているデータベースの名前。
- table_name
- PTIテーブルの名前。
- TD_TIMECODE
- データが収集された日時を示すPTIテーブル列。
戻り値
この関数の戻り型はBIGINTです。
使用上の注意
TD_TIMEBUCKET列はSQLリクエストで直接参照することはできないため、この関数を使用してTD_TIMEBUCKETの値を確認できます。この関数は、システム関数呼び出しが有効な任意のSQLリクエストで参照できます。
SQLリクエストが複数のPTIテーブルを参照している場合は、table_nameを使用します。TD_TIMECODEは、TD_TIMEBUCKETの取得元のテーブルを指定します。
例: TD_TIMEBUCKET列からのTD_TIMEBUCKET値の取得
create table ocean_buoys(buoyid integer, salinity integer, temperature integer) PRIMARY TIME INDEX(TIMESTAMP(6), DATE '2016-04-19', HOURS(1)); -- The following two adjcent SELECT statements should return the same output: SELECT td_gettimebucket(td_timecode) from ocean_buoys; SELECT td_gettimebucket(ocean_buoys.td_timecode) from ocean_buoys; TD_GETTIMEBUCKET(TD_TIMECODE) ----------------------------- 289 -- The column title contains TIMEBUCKET_COL. SELECT td_gettimebucket(ocean_buoys.td_timecode) as TimeBucket_COL from ocean_buoys; TIMEBUCKET_COL -------------- 289 SELECT buoyid FROM ocean_buoys WHERE td_gettimebucket(td_timecode) > 200; BUOYID ------ 101