17.10 - 例: CREATE TABLE AS構文を使用した列パーティション テーブルの列グループ化の変更 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1144-171K-JPN
Language
日本語 (日本)

このリクエストは、列をグループ化するパーティションではなく列リストを使用して同じパーティションに割り当てられた列cとdのある列パーティション テーブルを作成します。

     CREATE MULTISET TABLE t37 (
        a INTEGER, 
        b INTEGER, 
       (c INTEGER, 
        d INTEGER)) 
     PARTITION BY (RANGE_N(a BETWEEN 1 
                             AND    10 
                             EACH 1), 
                   COLUMN);

これにより、t37に対して次のテーブル定義が生成されます。

     CREATE MULTISET TABLE t37 ,NO FALLBACK ,NO BEFORE JOURNAL , 
     NO AFTER JOURNAL ,CHECKSUM = DEFAULT ,DEFAULT MERGEBLOCKRATIO (
       a INTEGER,
       b INTEGER,
       c INTEGER,
       d INTEGER)
     NO PRIMARY INDEX
     PARTITION BY (RANGE_N(a BETWEEN 1  
                             AND    10  
                             EACH 1),
                   COLUMN(a,b));

次にテーブルt37aを、テーブルt37からそのデータはコピーせずに定義をコピーして作成します。

     CREATE TABLE t37a AS t37 
     WITH NO DATA;

これにより、t37aに対して次のテーブル定義が生成されます。テーブルt37aは、テーブルt37と同じPARTITION BY句と同じ列グループを持ちます。

     CREATE TABLE t37a ,NO FALLBACK ,NO BEFORE JOURNAL , 
     NO AFTER JOURNAL ,CHECKSUM = DEFAULT ,DEFAULT MERGEBLOCKRATIO (
       a INTEGER,
       b INTEGER,
       c INTEGER,
       d INTEGER)
     NO PRIMARY INDEX
     PARTITION BY (RANGE_N(a BETWEEN 1  
                             AND    10  
                             EACH 1),
                   COLUMN(a,b));

次に、テーブルt37の定義をコピーしてグループ化を変更し、テーブルt37bを作成して、以下のようにテーブル列リストを指定します。

     CREATE TABLE t37b (a, (b, c), d) AS t37 
     WITH NO DATA;

これにより、t37bのテーブル定義が次のように生成されます。テーブルt37bではPARTITION BY句はテーブルt37のように作用しますが、列グループ化はt37bのCREATE TABLEリクエストのSQLテーブル列リストに指定されているようになります。

     CREATE MULTISET TABLE t37b, NO FALLBACK, NO BEFORE JOURNAL , 
     NO AFTER JOURNAL, CHECKSUM = DEFAULT, DEFAULT MERGEBLOCKRATIO (
       a INTEGER,
       b INTEGER,
       c INTEGER,
       d INTEGER)
     NO PRIMARY INDEX
     PARTITION BY (RANGE_N(a BETWEEN 1  
                             AND    10  
                             EACH 1),
                   COLUMN(a,d) ADD 10);