MAX_PT函数

更新时间:

云原生数据仓库 AnalyticDB MySQL 版支持使用MAX_PT函数查询MaxCompute分区外表中一级分区的最大值,避免扫描所有分区,显著提升查询处理速度及整体计算效率。

前提条件

注意事项

  • 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外表中定义的分区列类型,支持BOOLEANBIGINTSTRING数据类型。

示例

假设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的分区这种方法避免了全面扫描所有分区,显著提高了查询处理的速度和整体计算效率。