例: ALTER TABLE TO CURRENTを使用した結合インデックスのパーティションの変更 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 構文規則および例

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

2009年1月1日に次の売上テーブルを作成したとします。

     CREATE SET TABLE sales, NO FALLBACK (
       storeID   INTEGER,
       amount    DECIMAL(10,2),
       sale_date DATE FORMAT 'YYYY/MM/DD')
     PRIMARY INDEX (storeID) 
     PARTITION BY CASE_N(sale_date>=CURRENT_DATE/*latest quarter data*/,
                         sale_date<CURRENT_DATE 
                     AND sale_date>=CURRENT_DATE-INTERVAL '3' MONTH,
                         NO CASE);

次に、2009年1月1日にPPIスパース結合インデックスj_salesを定義し、現行四半期のデータのみを含めるようにします。

     CREATE JOIN INDEX j_sales AS 
       SELECT * 
       FROM sales 
       WHERE sale_date > CURRENT_DATE - INTERVAL '3' DAY
     PRIMARY INDEX (store_ID)
     PARTITION BY CASE_N(sale_date >= CURRENT_DATE, NO CASE);

解決されたCURRENT_DATEが2009年1月1日であると仮定した場合、結合インデックスj_salesには次の行が含まれます。

j_sales      
store_ID amount sale_date PARTITION
1 2000.00 2009-01-01 1
1 3500.00 2009-01-15 1
1 2000.00 2008-12-15 2
1 5000.00 2009-04-01 1

2009年4月1日に、j_salesに対して次のALTER TABLE TO CURRENTリクエストを実行します。

     ALTER TABLE j_sales TO CURRENT;

結合インデックスj_salesの行は次のように調整されます。

j_sales      
store_ID amount sale_date PARTITION
1 2000.00 2009-01-01 2
1 3500.00 2009-01-15 2
1 2000.00 2008-12-15 2
1 5000.00 2009-04-01 1