本文为您介绍在实时数仓Hologres中SET_TABLE_PROPERTY的用法。
函数概述
SET_TABLE_PROPERTY用于设置表的属性,包括索引、分布列、行存储、列存储以及生命周期等属性。如果您需要对创建的表进行修改、更新和删除,具体操作请参见ALTER TABLE或DROP TABLE。
命令格式
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参数说明
SET_TABLE_PROPERTY参数说明如下表所示。
| 参数 | 描述 | 
| table_name | 表名称。您也可以使用Schema限定表名称。 表名称只能是小写英文字母 如果表名称有特殊字符,则需要使用双引号 | 
| property | 属性名称。 | 
| orientation | 用于指定数据库的表在Hologres中是列存储、行存储还是行列共存。 该参数仅支持和CREATE TABLE在同一事务中执行。 | 
| clustering_key | 用于在指定的列建立聚簇索引。 该参数仅支持和CREATE TABLE在同一事务中执行。 | 
| segment_key | 用于指定某些列作为分段键,例如,指定时间列作为分段键。 当查询条件包含分段列时,查询可以通过分段键快速找到相应数据对应的存储位置。 该参数仅支持和CREATE TABLE在同一事务中执行。 | 
| bitmap_columns | 用于在指定列构建比特编码,快速过滤分段内部的数据。您可以单独使用该参数。 | 
| 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;