AnalyticDB for MySQL では、MAX_PT() 関数を使用して、パーティション化された MaxCompute 外部テーブルのレベル 1 パーティションキー列の最大値をクエリできます。これにより、すべてのパーティションのスキャンが回避され、クエリパフォーマンスと全体的なコンピューティング効率が大幅に向上します。
前提条件
V3.2.4.0 以降の AnalyticDB for MySQL クラスターが作成されていること。
説明AnalyticDB for MySQL クラスターのマイナーバージョンを表示および更新するには、AnalyticDB for MySQL コンソールにログインし、クラスター情報 ページの 構成情報 セクションに移動します。
AnalyticDB for MySQL クラスターのマイナーバージョンを表示および更新するには、AnalyticDB for MySQL コンソールにログインし、クラスター情報 ページの 構成情報 セクションに移動します。
AnalyticDB for MySQL クラスターと同じリージョンに MaxCompute プロジェクトが作成されていること。
使用上の注意
MAX_PT()関数は、MaxCompute 外部テーブルにのみ適しています。内部テーブルまたは他のタイプの外部テーブルで MAX_PT() 関数を呼び出すと、エラーが発生します。MaxCompute 外部テーブルの作成方法の詳細については、「CREATE EXTERNAL TABLE」をご参照ください。MAX_PT()関数が使用される MaxCompute 外部テーブルは、パーティションテーブルであり、少なくとも 1 つのパーティションにデータがある必要があります。前述の要件が満たされていない場合、MAX_PT() 関数の実行に失敗します。
構文
MAX_PT(<table_full_name>)パラメーター
<table_full_name>: パーティション化された MaxCompute 外部テーブルの名前。フォーマット: <database>.<tableName> または <tableName>。パラメーターは STRING 型である必要があります。
戻り値
レベル 1 パーティションキー列のアルファベット順で最大の価が返されます。 戻り値のデータ型は、MaxCompute 外部テーブルで定義されたパーティションキー列のデータ型によって決まります。サポートされているデータ型: BOOLEAN、BIGINT、および STRING。
例
20241209、20241210、20241211 というパーティションを持つ customer という名前の外部テーブルを作成します。パーティションキー列の名前を dt に設定します。
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 パーティションにのみアクセスします。 これにより、すべてのパーティションのスキャンが回避され、クエリパフォーマンスと全体的なコンピューティング効率が大幅に向上します。