Как сделать разделение диапазона на столбце varchar в vertica - PullRequest
1 голос
/ 17 мая 2019

У меня есть большая таблица, и я хочу сделать разбиение на столбцы 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)

, патенты будутab bc и cd.

1 Ответ

1 голос
/ 17 мая 2019

Вы можете использовать любую детерминированную функцию в предложении 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


...