例: ANSI system-timeテーブルでのAS OF問合わせ - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - ANSIテンポラル テーブル サポート

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/kit1592007446534.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1186
Product Category
Software
Teradata Vantage

次のAS OF問合わせでは、問合わせで指定された時点でオープンで有効であったすべてのテーブルの行を、それらの行が現在オープンかクローズかに関係なく取得します。

SELECT * 
FROM employee_systime 
FOR SYSTEM_TIME AS OF TIMESTAMP'2005-01-01 00:00:01.000000-08:00';

 eid ename  deptno                        sys_start                          sys_end
---- ------ ------ -------------------------------- --------------------------------
1002 Ash       333 2003-07-01 12:11:00.000000-08:00 9999-12-31 23:59:59.999999+00:00
1001 Sania     111 2002-01-01 00:00:00.000000-08:00 9999-12-31 23:59:59.999999+00:00
1003 SRK       111 2004-02-10 00:00:00.000000-08:00 2006-03-01 00:00:00.000000-08:00
1004 Fred      222 2002-07-01 12:00:00.350000-08:00 2005-05-01 12:00:00.350000-08:00
1005 Alice     222 2004-12-01 00:12:23.120000-08:00 2005-05-01 12:00:00.450000-08:00

sys_end値と違って、これらの行のデータは2005年1月1日に存在したテーブルの状態を反映しています。その時点でFredとAliceはdeptno 222に属し、SRKがまだ採用されていました(SRK行はまだ削除されていませんでした)。

Fred、Alice、およびSRKの行のsys_end値は9999-12-31 23:59:59.999999+00:00より小さいため、この情報が2005年1月1日のもので、最新ではないことがわかります。AS OF日付以降にこれらの行への1つ以上の変更が発生し、これらの変更の最初の時間がsys_end値によって反映されます。9999-12-31 23:59:59.999999+00:00のsys_end日付の行はAS OF日付以降に変更または削除されていません。

テーブルの問合わせAS OF 2005-05-02は、FredとAliceの部門が変わった直後のテーブルの問合わせを反映します。

SELECT * 
FROM employee_systime 
FOR SYSTEM_TIME AS OF TIMESTAMP'2005-01-01 00:00:01.000000-08:00';

 eid ename  deptno                        sys_start                          sys_end
---- ------ ------ -------------------------------- --------------------------------
1002 Ash       333 2003-07-01 12:11:00.000000-08:00 9999-12-31 23:59:59.999999+00:00
1001 Sania     111 2002-01-01 00:00:00.000000-08:00 9999-12-31 23:59:59.999999+00:00
1003 SRK       111 2004-02-10 00:00:00.000000-08:00 2006-03-01 00:00:00.000000-08:00
1004 Fred      555 2005-05-01 12:00:00.350000-08:00 9999-12-31 23:59:59.999999+00:00
1005 Alice     555 2005-05-01 12:00:00.450000-08:00 9999-12-31 23:59:59.999999+00:00

AS OF問合わせは所定の時点のテーブルの状態を反映するため、返されるクローズ行に発生した変更の性質を示すものではありません。system-timeテーブルの行への変更の性質を判断するには、変更の前後に存在した行を見る必要があります。残りのテンポラル問合わせ修飾子、BETWEEN ... AND、FROM TO、およびCONTAINED INを使用して、インスタンスではなく、有効時間の期間を指定できます。指定された期間中に行が変更された場合、古いバージョンと新しいバージョンの両方の行が返されるため、システム時間で行をクローズする原因になった変更の性質を判断することができます。