我有一张大桌子,想对varchar列进行分区。我尝试使用垂直以下脚本对此分区:
create table tb1(
symbol varchar not null,
...
mmid varchar)
PARTITION BY symbol;
我相信PARTITION BY对符号列进行了值分区,并且当我将数据加载到表中时,它失败了,并且分区数量超出了预期。
如何在符号列上进行范围分区?
例如,我知道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。
答案 0 :(得分:1)
您可以在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