MAX_PT函数
云原生数据仓库 AnalyticDB MySQL 版支持使用MAX_PT函数查询MaxCompute分区外表中一级分区的最大值,避免扫描所有分区,显著提升查询处理速度及整体计算效率。
前提条件
AnalyticDB for MySQL集群内核版本需为3.2.4.0及以上版本。
说明请在云原生数据仓库AnalyticDB MySQL控制台集群信息页面的配置信息区域,查看和升级内核版本。
请在云原生数据仓库AnalyticDB MySQL控制台的集群信息页面的配置信息区域,查看和升级内核版本。
MaxCompute项目需要AnalyticDB for MySQL集群位于同一地域。
注意事项
MAX_PT
函数仅适用于MaxCompute外表。内表或其他类型的外表,使用MAX_PT函数查询时会报错。创建MaxCompute外表,具体方法请参见CREATE EXTERNAL TABLE。MaxCompute外表必须为分区表,且至少有一个分区数据不为空,否则
MAX_PT
函数将执行失败。
语法
MAX_PT(<table_full_name>)
参数说明:
<table_full_name>
:MaxCompute分区外表的表名。格式可以为<database>.<tableName>
或 <tableName>
。仅支持STRING
数据类型。
返回值说明:
返回一级分区的最大值(按字母顺序排序)。返回值类型取决于MaxCompute外表中定义的分区列类型,支持BOOLEAN
、BIGINT
和STRING
数据类型。
示例
假设customer外表的结构如下,dt列为分区列,该表包含20241209、20241210、20241211三个分区。
CREATE EXTERNAL TABLE IF NOT EXISTS customer (
id int,
name varchar(1023),
age int,
dt STRING
) ENGINE='ODPS'
TABLE_PROPERTIES='{
"accessid":"LTAILd4****",
"endpoint":"http://service.cn-hangzhou.maxcompute.aliyun.com/api",
"accesskey":"4A5Q7ZVzcYnWMQPysX****",
"partition_column":"dt",
"project_name":"test_adb",
"table_name":"person"
}';
查询customer外表中最大分区的记录数。
SELECE COUNT(*) FROM customer WHERE dt=MAX_PT('customer');
AnalyticDB for MySQL在查询MaxCompute外表时,仅需访问20241211
的分区。这种方法避免了全面扫描所有分区,显著提高了查询处理的速度和整体计算效率。