VERTICA:改变预测

时间:2016-07-18 20:19:13

标签: projection vertica

我需要更改表格中的超级投影(错误的顺序和细分)。 所以我试着这样做。

  1. 重命名现有投影:

    ALTER PROJECTION schema.table_b0 RENAME TO table_b0_2;
    ALTER PROJECTION schema.table_b1 RENAME TO table_b1_2;
    
  2. 创建新投影:

    CREATE PROJECTION schema.table
    as select * from schema.table
    order by ...
    segmented by hash (...) all nodes;
    
  3. 刷新:

    select refresh('schema.table');
    
  4. 删除旧的:

    DROP PROJECTION table_b0_2;
    DROP PROJECTION table_b1_2;
    
  5. 我想这几乎是我想要的,但是......

    1. 我得到两个后缀" _b0"和" _b1",但通常(如果创建表已经完成),有两个带有后缀的投影" _b0"和" _super"。为什么呢?

    2. 在投影创建之后,我无法在cascade语句中删除没有drop table参数的表格。所以我有点把我的预测作为分开的对象。我能解决的问题是什么(创建投影,好像它们是从一开始就使用正确的create table语句创建的)?

1 个答案:

答案 0 :(得分:1)

  1. 这只是一个名字。在创建默认超级投影时,会将其命名为_super。 (我认为这个命名约定是新的)。默认投影不会是最佳的,您将要使用DBD替换它们。我假设你已经知道b0 vs b1和ksafety。

  2. 默认项目是您未明确创建的对象。您可以通过查看projections视图来确定这些是默认投影。他们会说DELAYED CREATION。由于您没有明确创建它们,因此Vertica允许将它们与表一起删除。但是,如果您通过手动或使用DBD明确创建投影,则需要先放弃投影或使用cascade

  3. 一些笔记。首先,创建投影应该是投影名称,而不是表名。如果它们是同一名称,您将获得一个已存在的对象错误。其次,在放弃旧投影之前,您可能需要使用select make_ahm_now();移动古代历史标记。

    希望这有帮助。