select max_pt('tableName')对于分区的表,此函数返回该分区表的一级分区的最大值,按字母排序,且该分区下有对应的数据文件。说明: tableName:String 类型,指定表名(必须带上 project 名,例如:prjsrc),用户必须拥有该表的读权限。返回值:最大的一级分区的值。例:tab 是分区表,该表对应的分区如下,且都有数据文件。pt='20080807' pt='20080808' select from tab where pt=max_pt('projecttab');该语句 max_pt 值为“20080808”,阿里云 ODPS 数据库 SQL 语句读出 pt='20080808' 分区下的数据。备注:如果只是用 alter table 的方式新加了一个分区,但是此分区中并无任何数据文件,则此分区不会做为返回值。
max_pt 是个非常好用的函数,可以获取分区表的最新分区,正因为好用,促成使用人员养成了在任意场景下都使用 max_pt 来替代 '${bizdate}' 的习惯。什么场景下会使用?1 当天数据无法及时产出,想使用最近一个分区的数据。2使用最新分区的数据,回刷历史某一天的数据。
使用 max_pt 可能引发的风险:1 部分任务会产出未来日期的分区,比如某业务订单表 ccbOrder 有 20080808 分区,把未完结订单都放在20080808 分区里,此时用 max_pt 可能会取不到想要的数据。2 同一个结果表,分多段 insert 数据至同一结果表,当多段任务并未完成时,使用 max_pt 获取不到全量数据。3当 datax 同步任务刚添加好分区,数据未完成同步,使用 max_pt,只获取了部分数据。4回刷数据,确保数据源自历史分区数据状态,使用 max_pt 达不到这个目的。
以上就是关于ODPS SQL获取max_pt全部的内容,包括:ODPS SQL获取max_pt、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)