本文為您介紹在實時數倉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;