本トピックでは、MaxCompute プロダクト機能に関するリリースノートを提供します。
2025 年 7 月
MaxCompute エンジン V52 が 2025 年 7 月に正式リリースされました。本バージョンでは、以下の機能が追加または強化されています。
データウェアハウスエンジン
新機能
インジェスト時パーティションテーブルのサポートが追加されました。データ書き込み時に、システムが自動的にインジェスト時間を取得します。また、TRUNC_TIME という時間計算関数を指定することで、インジェスト時間に基づいてパーティション列の値を算出できます。これにより、テーブルの自動パーティション分割が可能になります。
自動パーティションテーブルにおけるパーティションプルーニングの強化:自動パーティションテーブルのパーティションプルーニングが強化されました。パーティションプルーニングは、テーブル作成時に DATE、DATETIME、TIMESTAMP、TIMESTAMP_NTZ などの日時・日付列に対して、日時や日付関数を適用することをサポートするようになりました。この計算結果は、パーティションプルーニングのフィルター条件として使用できます。詳細については、「時間計算関数を用いた自動パーティションテーブルのパーティションプルーニング」をご参照ください。
言語および構文
GROUP BY ALL のサポートが追加されました。本機能を利用するには、
SET odps.sql.bigquery.compatible=true;コマンドを実行して BigQuery 互換モードを有効化します。プロジェクトレベルで本機能を有効化することを推奨します。DELETE FROM/UPDATE 構文がテーブルエイリアスをサポートするようになりました。以下の形式が利用可能です。
DELETE FROM <table_name> [[as] alias] [WHERE <condition>];UPDATE <table_name> [[as] alias] SET ...;
ビルトイン関数
日付および時刻関数
ISOYEAR 関数が追加されました。本関数は、日付入力から ISO 8601 年を抽出します。
CURRENT_DATE、CURRENT_TIMESTAMP_NTZ、および CURRENT_MICROS 関数が追加されました。これらの関数は、タイムゾーンパラメーターを受け取り、指定されたタイムゾーンにおける現在時刻を返します。
以下の時系列関数が追加されました:TIME_ADD、TIME_SUB、TIME_DIFF、TO_TIME、FORMAT_TIME、および TIME_TRUNC。これらの関数は、マイクロ秒単位で表現される BIGINT 型の時刻値の構築、変換、および計算をサポートします。
DATEADD、DATEDIFF、DATETRUNC、および LAST_DAY 関数が、追加の date_part 値をサポートするようになりました。
WEEKOFYEAR 関数が、追加の date_part 値をサポートし、DATE 型の入力パラメーターも受け付けるようになりました。
ネットワーク関数
NET ネットワーク関数 のセットが追加されました:NET_IP_FROM_STRING、NET_SAFE_IP_FROM_STRING、NET_IP_NET_MASK、NET_IPV4_TO_INT64、NET_IP_TO_STRING、NET_HOST、NET_PUBLIC_SUFFIX、および NET_REG_DOMAIN。これらの関数は、STRING 型および BINARY 型のネットワーク関連データを処理し、IP アドレスフォーマット変換、URL 解析、ネットワークマスク取得をサポートします。
文字列関数
以下の文字列関数が追加されました:BASE32、CODEPOINT_ARRAY、SAFE_CONVERT_BYTES_TO_STRING、および FORMAT_STRING。これらの関数は、柔軟なバイナリデータ処理および文字列フォーマット機能を提供します。
REGEXP_CONTAINS 関数が追加されました。本関数は、文字列が指定された文字列または正規表現と一致する内容を含むかどうかをチェックします。
数学関数
その他
SET odps.sql.bigquery.compatible=true;コマンドを実行して BigQuery 互換モード を有効化すると、一部の関数の動作が変更されます。BigQuery 互換モードでは、SUBSTR 関数が
position = 0の場合の処理を変更します。BigQuery 互換モードでは、REVERSE 関数が STRING 型データの処理を変更します。
BigQuery 互換モードでは、STDDEV_SAMP 関数が、ウィンドウ内に NULL でない expr 値が 1 つのみ含まれる場合の動作を変更します。
BigQuery 互換モードでは、REGEXP_EXTRACT および REGEXP_EXTRACT_ALL 関数が、
patternにグループがなく、かつgroup_idが指定されていない場合の動作を変更します。
2025 年 4 月
MaxCompute エンジン V51 が 2025 年 4 月に正式リリースされました。本バージョンでは、以下の機能が追加または強化されています。
データウェアハウスエンジン
新機能
時間計算関数を用いた自動パーティションテーブル(AUTO PARTITION)のサポートが追加されました。テーブル内の DATE、DATETIME、TIMESTAMP、TIMESTAMP_NTZ などの日時・日付列に対して特定の時間計算関数を適用できます。システムがその計算結果に基づいてパーティション列の値を自動算出し、テーブルをパーティション分割します。詳細については、「時間計算関数を用いた自動パーティションテーブル」をご参照ください。
機能強化
ALTER TABLE REBUILD INDEX コマンドで BloomFilter インデックスを再構築する際に、複数のパーティションを一度に再構築できるようになりました。詳細については、「BloomFilter インデックスの生成」をご参照ください。
マテリアライズドビューを作成する際に、GETDATE に加えて MAX_PT がサポートされるようになりました。クエリ再書き換え時に、システムはマテリアライズドビュー作成時の MAX_PT 値を使用します。これにより、クエリ再書き換えのカバー率が向上します。詳細については、「マテリアライズドビューの作成(パーティショニングおよびクラスタリング対応)」をご参照ください。
言語および構文
STRUCT 構文が強化され、
STRUCT(*)をサポートするようになりました。この構文により、クエリ内で STRUCT のすべてのフィールドを参照または操作できます。詳細については、「STRUCT データ型」をご参照ください。SHOW HISTORY FOR TASKコマンドを実行してタスク履歴を表示する際に、開始位置および出力長を指定することで、出力をより正確に制御できるようになりました。詳細については、「自動スケジュールされた定期タスクインスタンスの履歴リストの表示」をご参照ください。
ビルトイン関数
TRUNC_TIME 関数が追加されました。本関数は、datepart で指定された時間単位で日付または時刻データを切り捨て、STRING 型で返します。詳細については、「TRUNC_TIME」をご参照ください。
BOOL_AND および BOOL_OR 関数が追加されました。BOOL_AND はブール値の集合に対して論理 AND 演算を実行し、BOOL_OR は論理 OR 演算を実行します。いずれも、すべての NULL でない入力値の論理結果を返します。詳細については、「BOOL_AND」および「BOOL_OR」をご参照ください。
BIT_COUNT 関数が追加されました。本関数は、入力値のバイナリ表現における 1 の個数をカウントします。詳細については、「BIT_COUNT」をご参照ください。
BITWISE_XOR_AGG 関数が追加されました。本関数は、すべての入力値のビット単位 XOR を計算します。詳細については、「BITWISE_XOR_AGG」をご参照ください。
ANY 関数が追加されました。本関数は、入力の要素のうち少なくとも 1 つが TRUE であるかどうかをチェックします。詳細については、「ANY」をご参照ください。
パフォーマンスおよびパラメーターのスペックアップ
Shuffle Removal 機能がさらに強化され、Cluster テーブルへの書き込み時に不要なシャッフルを排除することで、ジョブパフォーマンスが向上しました。
2025 年 2 月
MaxCompute SQL V50 が 2025 年 2 月に正式リリースされました。本バージョンでは、以下の機能が追加または強化されています。
データウェアハウスエンジン
データフォーマット
DECIMAL データ型がより高い scale をサポートするようになりました。DECIMAL(precision,scale) の scale 値は、DECIMAL 値の小数部の桁数を示します。
SET odps.sql.decimal2.extended.scale.enable=true;コマンドを実行することで、scale の範囲を [0, 18] から [0, 38] まで拡張できます。詳細については、「MaxCompute データ型システム バージョン 2.0」をご参照ください。構文および関数の強化
強化された STRUCT 構文:STRUCT 構文が強化され、STRUCT 式構文をサポートするようになりました。この構文により、名前付き式を用いて STRUCT 型のデータを構築できます。これにより、この複雑なデータ型を構築するための新しい方法が提供されます。詳細については、「STRUCT データ型」をご参照ください。
強化された FIND_IN_SET 関数:本関数は、区切り文字で区切られた部分文字列の集合を含む文字列内で、指定した部分文字列を検索し、その位置を返します。以前の MaxCompute SQL バージョンでは、本関数の区切り文字としてカンマ (,) のみが使用可能でした。強化後は、STRING 型のカスタム区切り文字を指定できるようになりました。これにより、より柔軟な文字列検索が可能になります。詳細については、「FIND_IN_SET」をご参照ください。
新規ビルトイン関数 GET_DATA_FROM_OSS:GET_DATA_FROM_OSS ビルトイン関数が追加されました。本関数は、Object Table から Object Storage Service (OSS) オブジェクトデータをダウンロードし、その後の計算のためにバイナリデータを返すことができます。詳細については、「ビジネス計算向けオブジェクトコンテンツのクエリ」をご参照ください。
機能強化
MATERIALIZED CTE:共通テーブル式(CTE)を定義する際に、SELECT 文に MATERIALIZE ヒントを使用して、CTE の計算結果を一時テーブルにキャッシュできます。その後、CTE にアクセスする際には、キャッシュから直接結果を読み取ることができます。これにより、多層 CTE のネストによるメモリ不足(OOM)問題を回避し、CTE 文のパフォーマンスを向上させます。詳細については、「MATERIALIZE CTE」をご参照ください。
Bloom フィルターインデックスの可観測性の強化:Bloom フィルターインデックスのマージに要する時間が LogView の SubStatusHistory タブに表示されるようになりました。詳細については、「Bloom フィルターインデックスの生成」をご参照ください。
強化されたマテリアライズドビュー:マテリアライズドビューが強化されました。マテリアライズドビューのクエリ再書き換え機能が改善され、DISTRIBUTED BY、ORDER BY、ORDER BY + LIMIT、および LIMIT など、より多くのオペレーターをサポートするようになりました。詳細については、「マテリアライズドビューのクエリ再書き換え」をご参照ください。
パフォーマンスおよびパラメーターのスペックアップ
ARRAY_CONTAINS 関数について、最適化機能が文字列検索シナリオにおいて、入力パラメーターが SPLIT 関数によって処理されていることを自動検出します。デフォルトでは、この式を等価な FIND_IN_SET 操作に変換し、追加の区切り文字タイプをサポートします。たとえば、ARRAY_CONTAINS(SPLIT(c1, '_'), c2) は、
ARRAY_CONTAINSの実行パフォーマンスを向上させるために、自動的にFIND_IN_SET(c1, c2, '_')に最適化されます。動的パーティショニングにおける Reshuffle Split 機能がデフォルトで有効化され、動的パーティションの再シャッフルを伴うシナリオの最適化が行われました。この最適化により、動的パーティションのデータフローが分割され、再シャッフルは単一パスのみで実行されるため、動的パーティションの再シャッフルにかかるオーバーヘッドが削減され、過剰な小ファイルの発生も回避されます。
Shuffle Removal 機能がさらに強化され、MAPJOIN および PARTITIONED HASH JOIN シナリオにおいて不要なシャッフルを排除し、ジョブパフォーマンスが向上しました。
ニアリアルタイムデータウェアハウス
Delta Table CDC 機能のリリース
Delta Table Change Data Capture(CDC)は、データベーステーブルのデータ変更を識別・キャプチャする機能です。Delta Table の増分テーブルに対する行単位の INSERT、UPDATE、DELETE 操作を記録します。これにより、テーブルのデータ変更イベントを効果的にキャプチャできます。Delta Table CDC は、作成時に自動的に時間指定スケジューリングタスクを生成します。これらのタスクは非同期ジョブを実行して CDC データを生成します。構文には CREATE、ALTER、DROP が含まれます。CDC イベントを活用して、増分計算、データ同期、データウェアハウスのレイヤリングを駆動できます。詳細については、「CDC(招待プレビュー)」をご参照ください。
新規 Stream データストリームオブジェクト機能
Stream は、MaxCompute が管理するデータストリームオブジェクトです。Delta Table の増分クエリデータのバージョンを自動的に管理します。Stream は、増分テーブルに対する DML 変更(INSERT、UPDATE、DELETE)を記録します。各変更には、変更されたデータに対するアクションを支援するメタデータが含まれます。詳細については、「Stream オブジェクト」をご参照ください。
定期スケジューリングタスク機能のリリース
MaxCompute の定期スケジューリングタスク(Periodic Tasks)により、スケジューリングポリシーを柔軟にカスタマイズできます。SQL ロジックを実行してデータパイプラインを自動構築し、ETL ワークフローを簡素化できます。タスクをテーブルデータの変更およびストリーム読み取りと組み合わせることで、最近変更されたデータを処理する継続的な ETL ワークフローを作成できます。詳細については、「定期スケジューリングタスク(招待プレビュー)」をご参照ください。
Flink からの Delta テーブルへのデータ書き込み
MaxCompute Delta テーブルは、複数のデータ書き込み方法をサポートしています。MaxCompute は、Flink コネクタプラグインの新バージョンを提供しています。この Flink コネクタプラグインを用いることで、Flink から MaxCompute 標準テーブルおよび Delta テーブルへのデータ書き込みが可能になります。これにより、Flink から MaxCompute へのデータ書き込みが容易になります。さらに、Flink CDC データを Delta テーブルに直接書き込むことも可能です。詳細については、「Flink を用いた MaxCompute へのデータアップロード」をご参照ください。
Lakehouse および外部テーブル機能
PARQUET 形式のデータを解析するために外部テーブルを作成する際に、TINYINT、SMALLINT、DATETIME などの一部のデータ型について暗黙的変換がサポートされるようになりました。
MAX_PT 関数を用いて、外部テーブルの最新パーティションをクエリできます。本関数を用いることで、OSS 外部テーブルに存在する最新のデータを含むパーティションをクエリできます。詳細については、「MAX_PT」をご参照ください。
2024 年 11 月
MaxCompute SQL V49 が 2024 年 11 月に正式リリースされました。本バージョンでは、以下の機能が追加または強化されています。
データウェアハウスエンジン
新機能
ビットマップインデックス:重複値の多い低カーディナリティ列に対してビットマップインデックスを作成できます。範囲フィルタリングのシナリオでは、ビットマップインデックスを用いて最大 50 % 以上のデータを除外でき、クエリの高速化に貢献します。詳細については、「ビットマップインデックス(ベータ)」をご参照ください。
Bloom フィルターインデックス:Bloom フィルターは、効率的な確率的データ構造です。MaxCompute では、Bloom フィルターインデックスを用いて大規模なポイントクエリを実行できます。これにより、クエリ時の不要なデータスキャンが削減され、全体的なクエリ効率およびパフォーマンスが向上します。詳細については、「Bloom フィルターインデックス(ベータ)」をご参照ください。
ビルトイン関数
JSON_EXPLODE ビルトイン関数が追加されました。本関数は、JSON 配列または JSON オブジェクト内の各要素を複数の行に展開するために使用されます。詳細については、「JSON_EXPLODE」をご参照ください。
言語強化
CREATE TABLE 文に OR REPLACE 句を使用して、テーブルのメタデータを更新できるようになりました。対象テーブルが既に存在する場合、テーブルを削除せずに直接メタデータを更新できます。これにより、SQL 文の使用が簡素化され、使いやすさが向上します。詳細については、「テーブルの作成および削除」をご参照ください。
MaxCompute SQL スクリプト内で、単一行および複数行のコメントを使用できるようになりました。これにより、コードの可読性が向上します。詳細については、「SQL コメント」をご参照ください。
SUBQUERY_MAPJOIN HINT がサポートされるようになりました。SCALAR、IN、EXISTS などの特定のサブクエリは、実行時に JOIN 操作に変換されます。MAPJOIN アルゴリズムを明示的に指定するヒントを用いることで、実行効率を向上させることができます。詳細については、「SUBQUERY_MAPJOIN HINT」をご参照ください。
新規パラメーター
元のパラメーター
odps.stage.mapper.split.sizeは、マップステージにおける全体設定をサポートします。新しいフラグを用いることで、行または同時実行数に基づくテーブル分割を柔軟に行えるようになりました。この新しいフラグは、テーブル各行のサイズが小さく、その後の計算負荷が重いシナリオにおいて、タスクの同時実行性を向上させます。詳細については、「フラグパラメーター」をご参照ください。クエリが同一のパーティションテーブルを繰り返しアクセスする場合、
set odps.optimizer.merge.partitioned.table=true;コマンドを実行して、パーティションテーブルへのアクセス操作をシステムが統合するように有効化できます。これにより、パーティションテーブルに対する I/O 操作が最小限に抑えられ、クエリパフォーマンスが向上します。詳細については、「フラグパラメーター」をご参照ください。
動作の変更
動的パーティションから静的パーティションへの最適化機能が、すべての DML 操作においてクエリパフォーマンスを向上させ、デフォルトで有効化されるようになりました。この最適化は、UPDATE、DELETE、MERGE INTO 操作の動作に影響を与えます。詳細については、「動的パーティションから静的パーティションへの最適化に関するアナウンス」をご参照ください。
ビッグデータ AI(MaxFrame)
LogView 2.0 は MaxFrame と互換性があり、以下の MaxFrame 関連機能をサポートします。詳細については、「LogView 2.0 を用いた MaxFrame ジョブの表示」をご参照ください。
MaxFrame セッションで送信されたすべての有向非循環グラフ(DAG)の実行記録および実行時間を表示できます。
各 DAG 内のサブ DAG の実行順序、実行時間、オペレーターのトポロジー、およびステータス間の関係をインタラクティブに表示できます。
各サブインスタンスの設定、ステータス、メモリ使用量、CPU 利用率を表示できます。
MaxFrame は、Python ベースのジョブ開発におけるサードパーティパッケージ管理を簡素化する自動パッケージングサービスを提供します。本サービスにより、ジョブ開発時に必要な外部依存関係ファイルを宣言できます。ジョブ実行時には、依存関係ファイルが自動的にパッケージ化され、ジョブ開発環境に統合されます。手動でのパッケージアップロードは不要です。これにより、パッケージ管理が簡素化されます。詳細については、「自動パッケージングサービス」をご参照ください。
Lakehouse および外部テーブル機能
JNI インターフェイスを基にした Parquet 外部テーブルへのデータ書き込み時に、ZSTD 圧縮がサポートされるようになりました。
本機能導入前は、Parquet 外部テーブルを作成する際に、非圧縮ファイルおよび Snappy 圧縮ファイルのみが書き込み可能でした。本機能導入後は、ZSTD 圧縮アルゴリズムで圧縮されたファイルも同様に書き込み可能になりました。これにより、圧縮率および読み書きパフォーマンスが向上し、コスト効率が高まります。詳細については、「ORC 外部テーブル」をご参照ください。
CsvStorageHandler および OpenCsvSerde が提供され、データの読み書きに対応するデータ型が拡充されました。
MaxCompute は、Hive と互換性のある読み書き標準 OpenCsvSerde(CsvSerde とも呼ばれる)を提供します。OpenCsvSerde がサポートするデータ型は、Hive 互換のデータ型です。また、MaxCompute はカスタムの読み書き標準 CsvStorageHandler(CsvHandler とも呼ばれる)も提供します。CsvStorageHandler がサポートするデータ型は、MaxCompute V2.0 データ型エディションでサポートされるデータ型です。CsvSerde および CsvHandler のデータ型は完全には一致しませんが、INT や FLOAT などの基本データ型については、いくつかの共通点があります。ただし、これらのデータ型のパース動作には多くの違いがあります。統一された標準はまだ策定されていません。たとえば、FLOAT 型について、CsvSerde では INF などの特殊値の処理が定義されていますが、CsvHandler では特殊値は処理されず、parseFloat メソッドを用いたパースのみが試行されます。そのため、CsvHandler と CsvSerde の両方を用いる場合、基本データ型のパース動作が異なる可能性があります。
CsvStorageHandler は、BOOLEAN、TIMESTAMP、DATE、DATETIME などの複数の基本データ型をサポートします。これにより、MaxCompute のすべてのデータ型のデータを OSS に CSV 形式でエクスポートし、保存できます。OSS を基にしたクロスリージョンレプリケーションを実行した後、データを MaxCompute に復元できます。
OSS 外部テーブルでは、RAM ロールを引き受けることによる STS 認証が可能になりました。
本機能は最適化され、RAM ロールを引き受けることによる MaxCompute へのアクセス(AccessKey ペア不要)、および外部テーブルを伴うシナリオにおける他クラウドサービスからの RAM ロール引き受けによる MaxCompute へのアクセスが可能になりました。本機能が最適化される前は、上記のシナリオでロールを引き受ける場合、外部テーブルに MaxCompute がピアサービスにアクセスするために統合された RAM ロールが含まれているため、システムが RAM ロールのユーザー情報を取得できず、RAM ロールを引き受けて外部テーブルにアクセスできませんでした。本機能が最適化された後は、外部テーブルを含む場合でも、RAM ロールの使用および RAM ロールに基づくシームレスなアクセスが妨げられません。詳細については、「ORC 外部テーブル」をご参照ください。
オプティマイザーが、クエリ実行中の一時統計テーブルの統計情報をサポートし、小規模テーブルを識別してクエリプランを最適化できるようになりました。
外部テーブルを用いたクエリで取得されるデータは外部データレイクに格納されるため、データのオープン性を確保するために、システムはローカルにメタデータを確立しません。この場合、事前に統計情報を収集しないと、オプティマイザーは保守的なポリシーを採用し、クエリ効率が低下します。オプティマイザーは、クエリ実行中の一時統計テーブルの統計情報をサポートすることで、小規模テーブルを識別できるようになりました。これにより、ハッシュ結合の実行、結合順序の最適化、多数のシャッフル操作の削減、実行パイプラインの短縮など、さまざまな方法を積極的に用いてクエリプランを最適化できます。詳細については、「Paimon 外部テーブル」をご参照ください。