本小节将会为您介绍在交互式分析(Hologres)中SET_TABLE_PROPERTY的用法。

命令介绍

set_table_property:设置表属性,包括索引、分布列、行列存属性、生命周期等属性。

阿里云2000元代金券免费领,最新优惠1折抢购,2核4G云服务器仅799元/3年,新老用户同享,立即抢购>>>

命令格式

CALL SET_TABLE_PROPERTY ( table_name, property, value )  where property in     orientation   clustering_key   segment_key   bitmap_columns   dictionary_encoding_columns   time_to_live_in_seconds   distribution_key

参数说明

  • table_name:表名,可以是schema限定的。表名只能是英文的a-zA-Z及数字和下划线(_)的组合,且必须以字母开头,如表名有特殊字符,应该用双引号""转义,由于大小写不敏感,A-Z统一会被看成小写。
  • property:属性名称。
  • orientation,行/列存属性,指定了数据库表在交互式分析中是列存还是行存。该命令只支持和create table在同一事务中执行。
  • clustering_key:聚簇索引, 在指定的列上建立聚簇索引。该命令只支持和create table在同一事务中执行。
  • segment_key,分段属性,指定一些列(例如,时间列)作为分段键,当查询条件包含分段列时,查询可以通过segment_key快速找到相应数据对应的存储位置。该命令只支持和create table在同一事务中执行。
  • bitmap_columns:比特编码,在指定列上构建比特编码,可以对segment内部的数据进行快速过滤。可以单独执行该命令。
  • dictionary_encoding_columns:字典编码,为指定列的值构建字典映射。字典编码可以将字符串的比较转成数字的比较,加速group by、filter等查询设置。可以单独执行该命令。
  • distribution_key:指定数据库表分布策略。该命令只支持和create table在同一事务中执行。
  • time_to_live_in_seconds:表数据的生命周期,单位为秒,必须是非负数字类型,整数或浮点数均可。可以单独执行该命令
  • value:属性值,若包含列名且列名具有大写,则需要加双引号限定。

使用示例

BEGIN; CREATE TABLE ORDERS (    O_ORDERKEY              INTEGER NOT NULL,   O_CUSTKEY        INTEGER NOT NULL,   O_ORDERSTATUS    TEXT NOT NULL,   O_TOTALPRICE     DECIMAL(15,2) NOT NULL,   O_ORDERDATE      DATE NOT NULL,   O_ORDERPRIORITY  TEXT NOT NULL,     O_CLERK          TEXT NOT NULL,    O_SHIPPRIORITY   INTEGER NOT NULL,   O_COMMENT        TEXT NOT NULL); CALL SET_TABLE_PROPERTY ('ORDERS', 'clustering_key', 'O_ORDERKEY:asc,O_CUSTKEY:asc'); CALL SET_TABLE_PROPERTY ('ORDERS', 'segment_key', 'O_ORDERDATE'); CALL SET_TABLE_PROPERTY ('ORDERS', 'bitmap_columns', 'O_ORDERSTATUS,O_ORDERPRIORITY,O_CLERK,O_SHIPPRIORITY'); CALL SET_TABLE_PROPERTY ('ORDERS', 'dictionary_encoding_columns', 'O_ORDERSTATUS,O_ORDERPRIORITY,O_CLERK,O_SHIPPRIORITY'); CALL SET_TABLE_PROPERTY ('ORDERS', 'time_to_live_in_seconds', '172800'); COMMIT;