列パーティション テーブルでの列グループの指定に関するルール - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
ft:locale
ja-JP
ft:lastEdition
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage
  • COLUMN指定で列グループを指定しない場合、Teradata Databaseは、CREATE TABLE文で列リストに指定された列および列グループごとに別個の列パーティションを定義します。
  • PARTITION BY句のCOLUMN指定で列をグループ化すると、どのパーティションに列を割り当てるかを指定できます。また、これらの列をテーブルから選択するときに選択リストの中でアスタリスク文字を指定した場合にこれらの列が表示される順序を指定できます。

    テーブルの列リストの中で列をグループ化することもできます。列リストの中でグループ化を指定する方法は、PARTITION BY句のCOLUMN指定で列をグループ化するよりも簡単ですが、柔軟性が劣ります。

    列リストとPARTITION BY句の両方で列をグループ化することはできません。

  • COLUMN指定に列のグループ化を指定する場合は、同じCREATE TABLE文で定義されている列の名前だけを指定できます。

    列リストで指定した名前以外の名前で列を指定しようとすると、リクエスト元にエラーが返されます。

  • PARTITION BY句ではなく、テーブル定義の列リストでグループ化を定義する場合は、以下の列グループ化ルールが適用されます。
    • 列パーティションの形式は、COLUMNかROWの任意のになります。

      同じ列パーティション内で両方の形式を混在させることはできません。

      一方、列パーティション テーブルの異なるパーティションを別々の形式にすることは可能です。たとえば、列パーティション テーブルの各パーティションは、すべてをCOLUMN形式にしてコンテナに格納したり、すべてをROW形式にして副行に格納したりできるほか、1つの列にCOLUMN形式を適用し、その他の列にROW形式を適用するということも可能です。

    • PARTITION BY句のパーティション レベルとしてCOLUMNを指定した場合、列グループは指定されず、グループを定義する括弧によって列定義が区切られていない場合、Teradata Databaseは各列を、自動圧縮が指定され、システムによって決定されたCOLUMNまたはROW形式を持つ単一の列パーティションとして扱います。
    • Teradata Databaseは、列パーティションを、列グループ リストに指定された非グループ化列パーティションおよびグループ化列パーティションに対してそれぞれ定義します。

      1つの列に対して定義された列パーティションにパーティションの形式(COLUMNまたはROW)やNO AUTO COMPRESSを指定するには、列定義を括弧で区切って単一列グループとして指定する必要があります。

      グループを区切る括弧を使用して、列定義を列パーティションにグループ化することもできます。

      または、PARTITION BY句の中のCOLUMN指定で1つ以上の列定義をグループ化することもできます。

    • COLUMN形式の列リストで列グループを指定する場合、グループ化によって列パーティションが定義されます。Teradata Databaseは1つの物理コンテナに1つ以上の列パーティション値を格納します。
    • ROW形式の列リストで列グループを指定する場合、グループ化によって列パーティションが定義され、1つの物理的な副行に1つだけの列パーティション値が格納されます。
    • 列リストの列グループに対してCOLUMN形式とROW形式のどちらも指定しない場合、グループ化によって列パーティションが定義され、列パーティションに対してCOLUMN形式とROW形式のどちらを適用するかをTeradata Databaseが決めます。
    • 列リスト句の中で列グループを指定できるのは、PARTITION BY句でCOLUMNパーティション化も同時に指定する場合だけです。

      したがって、列パーティション テーブルの列リストの中で、列や制約をグループ化することはできません。

    • 同じCREATE TABLE文の列リスト、およびPARTITION BY句のCOLUMNの両方で列のグループ化を指定することはできません。すべてのグループ化を、リクエストのPARTITION BY句の中で指定するか、リクエストの列リストの中で指定するか、そのどちらかにしてください。
  • CREATE TABLE … AS文の列リストでは、ターゲット テーブルにソース テーブルと同じ列のグループ化を指定することも、異なる列のグループ化を指定することもできます。
  • 次の表は、グループ列に対するALL BUTオプションの使用に関するルールを示しています。
    条件 Teradata Databaseの動作
    ALL BUTを指定する 列グループ リストで指定されていない列に対してNO AUTO COMPRESSがデフォルトで指定されていない限り、自動圧縮が指定された単一の列パーティションを定義します。

    列グループ リストに指定されていない列については、システムが決定したCOLUMN形式またはROW形式を定義します。

    ALL BUTを指定しない 列グループ リストに指定されていない列をグループ化して1つの列パーティションに入れ、自動圧縮を適用し、システムが決定したCOLUMN形式またはROW形式を定義します。