MAX_PT

作者: Djbfifjd | 来源:发表于2021-04-14 16:15 被阅读0次

    一、简述

    select max_pt('tableName')对于分区的表,此函数返回该分区表的一级分区的最大值,按字母排序,且该分区下有对应的数据文件。

    说明:
    tableName:String 类型,指定表名(必须带上 project 名,例如:prj.src),用户必须拥有该表的读权限。
    返回值:最大的一级分区的值。

    例:tab 是分区表,该表对应的分区如下,且都有数据文件。
    pt='20080807'
    pt='20080808'

    select * from tab where pt=max_pt('project.tab');该语句 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 达不到这个目的。

    相关文章

      网友评论

          本文标题:MAX_PT

          本文链接:https://www.haomeiwen.com/subject/yklqaktx.html