首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按年份和一年中的星期对表进行分区

按年份和一年中的星期对表进行分区
EN

Stack Overflow用户
提问于 2016-01-28 15:10:24
回答 2查看 381关注 0票数 1

我正在尝试ALTER一个表,但它给出了下面的错误:

代码语言:javascript
复制
alter table TABLE_NAME partition by EXTRACT(YEAR FROM to_timestamp(CC)); 

ROLLBACK 2552:  Cannot use meta function or non-deterministic function in PARTITION BY expression 

alter table TABLE_NAME partition by date_part('YEAR',to_timestamp(CC)); 

ROLLBACK 2552:  Cannot use meta function or non-deterministic function in PARTITION BY expression

CC列的数据如下

代码语言:javascript
复制
1441650600 

纪元时间

有人知道原因吗?

EN

回答 2

Stack Overflow用户

发布于 2016-01-29 07:06:09

正如你所知道的那样,Vertica根据函数的行为将其分类为易失性、稳定性和不可变性。更多细节here

现在,正如您可以在管理员指南中查看的那样,here PARTITION BY子句表达式只能使用不可变的函数,而TO_TIMESTAMP() -正如您可以查看here -仅是“稳定的”。

票数 0
EN

Stack Overflow用户

发布于 2016-02-01 18:18:08

就我个人而言,我发现通过执行以下操作可以更容易地进行这些类型的更改: 1.创建一个新的临时表(包含要进行的更改),以镜像我想要更改的表。2.然后将所有数据复制到新表中。3.删除原始表4.将新表重命名为现有名称。

这是我们在我工作的地方使用的版本控制的一个方面,所有的东西都存储在Delta脚本中,所以对我代码的所有更改都有完整的文档记录。

至于使用alter语句创建投影,我不能真正评论,但是我确实有一个脚本,我觉得它可以为您工作,因为我使用的数据格式与您的相似。该列的名称为DateKey,格式为YYYYMMDD00:

代码语言:javascript
复制
2014020100

我想按年和季度进行分区,所以我写了以下内容

代码语言:javascript
复制
CREATE TABLE Schema1.fct_Table1 (
DateKey INT NOT NULL,
col1 INT NOT NULL,
col2 INT NOT NULL,
col3 INT NOT NULL,
col4 INT NOT NULL,
col5 INT NOT NULL
)
ORDER BY DateKey, col1, col2, col3
PARTITION BY left(cast(DateKey as char(10)),4) 
        || case 
        when substring(cast(DateKey as char(10)),5,2) in ('01','02','03') then '01' 
        when substring(cast(DateKey as char(10)),5,2) in ('04','05','06') then '02' 
        when substring(cast(DateKey as char(10)),5,2) in ('07','08','09') then '03' 
        when substring(cast(DateKey as char(10)),5,2) in ('10','11','12') then '04'  end;

因此,我的脚本是按年份和该年的季度进行分区,即1-3个月是Qtr 1,4-6是qtr 2,依此类推。

我想你可以这样写:

代码语言:javascript
复制
PARTITION BY case 
        when substring(cast(DateKey as char(10)),5,2) = '01' then '01'
        when substring(cast(DateKey as char(10)),5,2) = '02' then '02'

等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35054931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档