リスト-リスト・パーティショニングは、2つの独立したディメンションに沿ってリスト・パーティショニングを適用します。つまり、1つの離散列でパーティション化し、次にもう1つの列でサブパーティション化します。これは、データが自然に2組の離散値にマッピングされる場合に役立ちます。たとえば、部門や販売チャネルなどです。各パーティションおよびサブパーティションにどの値が格納されるかを直接制御したい場合に便利です。
構文
CREATE TABLE [schema.]table_name
table_definition
PARTITION BY LIST {(expr) | COLUMNS(column_list)}
SUBPARTITION BY LIST(expr)
(partition_definition [, partition_definition] ...);partition_definition:
PARTITION partition_name
VALUES IN (value_list)
(subpartition_definition [, subpartition_definition] ...)subpartition_definition:
SUBPARTITION subpartition_name
VALUES IN (value_list)パラメーター
| パラメーター | 説明 |
|---|---|
table_name | 作成するテーブルの名前。 |
expr | パーティション式。INT型である必要があります。文字列型はサポートされていません。 |
column_list | LIST COLUMNS() で使用される列リスト。式はサポートされていません。 |
value_list | パーティションの境界値のリスト。 |
partition_name | パーティション名。テーブル内で一意である必要があります。 |
subpartition_name | サブパーティション名。テーブル内で一意である必要があります。 |
例
リスト-リスト・パーティション表
次の例では、売上テーブルをパーティションレベルでは部門 (dept_no) で、サブパーティションレベルでは部品番号 (part_no) でパーティション化します。dept_no = 1 および part_no = 3 の行は、まずパーティション p0 (これは dept_no の値 1 および 2 を保持します) にルーティングされ、次にサブパーティション partno1 (これは part_no の値 3 および 4 を保持します) にさらにルーティングされます。
CREATE TABLE sales_list_list
(
dept_no INT,
part_no INT,
country VARCHAR(20),
date DATE,
amount INT
)
PARTITION BY LIST (dept_no)
SUBPARTITION BY LIST (part_no)
(
PARTITION p0 VALUES IN (1, 2)(
SUBPARTITION partno0 VALUES IN (1, 2),
SUBPARTITION partno1 VALUES IN (3, 4),
SUBPARTITION partno2 VALUES IN (5, 6)
),
PARTITION p1 VALUES IN (3, 4)(
SUBPARTITION partno3 VALUES IN (1, 2),
SUBPARTITION partno4 VALUES IN (3, 4),
SUBPARTITION partno5 VALUES IN (5, 6)
),
PARTITION p2 VALUES IN (5, 6)(
SUBPARTITION partno6 VALUES IN (1, 2),
SUBPARTITION partno7 VALUES IN (3, 4),
SUBPARTITION partno8 VALUES IN (5, 6)
)
);LIST COLUMNS-リスト・パーティション表
次の例では、LIST COLUMNS を使用して、パーティションレベルでは文字列列 (country) で、サブパーティションレベルでは整数列 (dept_no) でパーティション化します。LIST COLUMNS は、INT式を必要とせずに列値を直接受け入れます。
CREATE TABLE sales_list_columns_list
(
dept_no INT,
part_no INT,
country VARCHAR(20),
date DATE,
amount INT
)
PARTITION BY LIST COLUMNS(country)
SUBPARTITION BY LIST (dept_no)
(
PARTITION europe VALUES IN ('FRANCE', 'ITALY')(
SUBPARTITION p0 VALUES IN (1, 2),
SUBPARTITION p1 VALUES IN (3, 4),
SUBPARTITION p2 VALUES IN (5, 6)
),
PARTITION asia VALUES IN ('INDIA', 'PAKISTAN')(
SUBPARTITION p3 VALUES IN (1, 2),
SUBPARTITION p4 VALUES IN (3, 4),
SUBPARTITION p5 VALUES IN (5, 6)
),
PARTITION americas VALUES IN ('US', 'CANADA')(
SUBPARTITION p6 VALUES IN (1, 2),
SUBPARTITION p7 VALUES IN (3, 4),
SUBPARTITION p8 VALUES IN (5, 6)
)
);