本文为您介绍在实时数仓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;