【问题标题】:How to do range partitioning on varchar column in vertica如何对vertica中的varchar列进行范围分区
【发布时间】:2019-10-04 10:49:21
【问题描述】:

我有一张大表,想对 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。

【问题讨论】:

    标签: vertica dolphindb


    【解决方案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
    
    
    

    【讨论】:

      猜你喜欢
      • 2018-01-05
      • 1970-01-01
      • 2013-01-05
      • 2021-12-22
      • 2016-06-04
      • 1970-01-01
      • 2023-03-24
      • 2021-02-19
      • 1970-01-01
      相关资源
      最近更新 更多