本小节将会为您介绍在交互式分析(Interactive Analytics)中对分区表的命令操作。

创建分区表

交互式分析创建分区表的父表和子表的语法如下。
-- 典型的create partition table语句
create table [if not exists] [schema_name.]table_name partition by list (column_name) ([
  {
   column_name column_type [column_constraints, [...]]
   | table_constraints
   [, ...]
  }
]);

-- 典型的create child partition table语句
create table [if not exists] [schema_name.]table_name partition of parent_table
  for values in (partition_value);
示例语句如下:
begin;
create table hologres_parent(a text primary key, b int, c timestamp, d text) partition by list(a);
call set_table_property('hologres_parent', 'orientation', 'column');
call set_table_property('hologres_parent', 'clustering_key', 'a,b'); 
call set_table_property('hologres_parent', 'segment_key', 'c');
call set_table_property('hologres_parent', 'bitmap_columns', 'a,d'); 
call set_table_property('hologres_parent', 'dictionary_encoding_columns', 'a,d'); 
call set_table_property('hologres_parent', 'time_to_live_in_seconds', '86400');
create table hologres_child1 partition of hologres_parent for values in('a');
create table hologres_child2 partition of hologres_parent for values in('b');
create table hologres_child3 partition of hologres_parent for values in('c');
commit;
  1. 分区父表和分区子表的定义需要包含在事务中且需要在同一个事务中。
  2. 不能向父表插入任何数据。
  3. DROP父表将默认同时DROP子表。
  4. 只有text/varchar类型才能作为分区键(partition key)。
  5. 一个分区规则只能创建一个分区表。
  6. 分区值(partition value)必须是单个字符串类型的值,如‘a‘,‘abc‘等。

修改分区表

交互式分析支持三种更改分区表的操作:
ALTER TABLE [IF EXISTS] table_name RENAME to new_table_name;
ALTER TABLE [IF EXISTS] table_name ATTACH PARTITION new_partition_name FOR VALUES in (<string_literal>);
ALTER TABLE [IF EXISTS] table_name DETACH PARTITION paritition_name;
  1. ATTACH PARTITION partition_name FOR VALUES in (<string_literal>)

    这种形式使用与CREATE TABLE相同的 partition_bound_spec语法, 将现有的表(可能本身是分区)作为目标表的分区。 分区绑定规范必须对应于目标表的分区策略和分区键。 要绑定的表必须与目标表具有相同的列,而不能多或少;此外, 列类型也必须匹配。此外,它必须具有目标表的所有NOT NULL约束。如果附加一个不接受NULL值的列表分区,除非它是一个表达式, 否则向分区键列添加NOT NULL约束。

  2. DETACH PARTITION partition_name

    该形式分离目标表的指定分区。分离的分区作为独立表继续存在,但不再与分离的表相关联。

删除分区表

删除分区表(DROP PARTITION TABLE)的操作与删除常规表的操作一致,参见创建和管理表

示例如下:
DROP PARTITION TABLE test;