如何对vertica中的varchar列进行范围分区

How to do range partitioning on varchar column in vertica

我有一个很大的 table 并且想在 varchar 上进行分区 columns.I 已经尝试使用这个脚本在垂直方向上对其进行分区:

create table tb1(
symbol varchar not null,
...
mmid varchar)
PARTITION BY symbol;

我相信 PARTITION BY 在符号列上进行了值分区,当我将数据加载到 table 时,它失败了,因为分区过多,正如预期的那样。

如何对符号列进行范围分区?

例如我知道 DolphinDB 可以使用下面的脚本来做到这一点

sym = `a`abc`aaa`bbc`bac`b`c`cd`cab`abd
val = rand(1.0, 10)
t=table(sym, val)
db=database("/tmp/db", RANGE, `a`b`c`d)
db.createPartitionedTable(t, `table, `sym)

分区将是 a-b b-c 和 c-d。

您可以在 PARTITION BY 子句中使用任何确定性函数。

例如:

CREATE TABLE tb1 (
  symbol varchar NOT NULL
) PARTITION BY LEFT(symbol,2);

INSERT /*+direct*/ INTO tb1 SELECT 'abc';
INSERT /*+direct*/ INTO tb1 SELECT 'bbc';
INSERT /*+direct*/ INTO tb1 SELECT 'bca';

SELECT DISTINCT partition_key
FROM partitions
WHERE projection_name LIKE 'tb1%';

 partition_key 
---------------
 ab
 bb
 bc