我正在寻找一种方法来定义自定义模式,该模式实现了一个基于月的日期分区。文档只提供了在timestamp或date级别执行此操作的方法。
是否有一种无文档化的方法来定义处理此问题的自定义架构文件?或者是在白天级别迁移,然后在BigQuery中插入到用月份分区定义的表中呢?
发布于 2022-05-03 16:11:53
正如回答中提到的那样:
在Teradata中,您可能会发现trunc()是一个简单的方法: 选择a.id,a.name,a.number,a.date from (选择a.*,row_number() over (按trunc( date,'MON')按日期顺序划分)作为seqnum从tableA a)a a,其中seqnum = 1; Teradata还支持“资格”: 从a.id,a.name,a.number,a.date中选择tableA a tableA row_number() MON(按trunc( date,'MON')按日期顺序排列)=1
正如在文档中提到的,您可以参考以下解释:
分区主索引使Teradata能够对表或未压缩的联接索引的行进行分区,这样就可以有效地访问行子集,而无需进行全表扫描。如果分区表达式使用可更新的当前日期或可更新的当前时间戳定义,则可以将包含最近行的分区定义为尽可能窄,以优化对这些行的有效访问。分区的可更新当前日期或可更新当前时间戳的另一个优点是,分区表达式的设计方式可以使其不需要作为时间函数进行更改。您可以在表或未压缩的连接索引的分区表达式中指定日期、CURRENT_DATE或CURRENT_TIMESTAMP函数,然后定期更新其值的分辨率。这使得在确定日期、CURRENT_DATE或CURRENT_TIMESTAMP函数的新解析值是否需要协调时,可以对它们进行重新分区。您可以通过向当前语句提交适当的ALTER来更新分区方案的分辨率。
有关更多信息,您可以参考文档。
https://stackoverflow.com/questions/72042301
复制相似问题