本文為您介紹MaxCompute產品功能的發布資訊。
2025年07月
2025年07月正式發布MaxCompute引擎 V52版本,新增功能如下:
數倉引擎
新功能
支援基於資料寫入時間的自動分區表(Ingestion Time Partition),支援在資料寫入時自動擷取寫入時間,並結合使用者指定的時間計算函數(TRUNC_TIME),根據計算結果產生分區列的值,從而實現對錶的分區。
自動分區表(AUTO PARTITION)分區裁剪能力增強,支援對建表時產生分區列的時間/日期類型資料列進行Function Compute,並將計算結果作為過濾條件支援分區裁剪,詳情請參見基於時間計算函數的自動分區表分區裁剪。
語言/文法
支援GROUP BY ALL操作,使用時需要執行
SET odps.sql.bigquery.compatible=true;命令開啟BigQuery相容模式,建議在project層級開啟。DELETE FROM/UPDATE文法支援使用表別名(ALIAS),命令格式分別為:
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系列函數,包含TIME_ADD、TIME_SUB、TIME_DIFF、TO_TIME、FORMAT_TIME、TIME_TRUNC函數,支援對以微秒為單位用BIGINT類型表示的時間值的構造、轉換和運算。
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函數,用於判斷一個字串是否包含與指定字串或Regex匹配的內容。
數學函數
其他
執行
SET odps.sql.bigquery.compatible=true;命令開啟BigQuery相容模式時,部分函數的行為發生變化:SUBSTR函數在Bigquery相容模式下,處理
position為0時行為變更。REVERSE函數在Bigquery相容模式下,處理STRING類型資料行為變更。
STDDEV_SAMP函數在Bigquery相容模式下,當視窗僅包含1條expr值非NULL的資料時行為變更。
REGEXP_EXTRACT/REGEXP_EXTRACT_ALL函數在Bigquery相容模式下,當
pattern中沒有分組且未指定group_id時行為變更。
2025年04月
2025年04月正式發布MaxCompute引擎 V51版本,新增功能如下:
數倉引擎
新功能
支援基於時間計算函數的自動分區表(AUTO PARTITION),支援對錶中的時間/日期類型(DATE、DATETIME、TIMESTAMP、TIMESTAMP_NTZ)的資料列,使用特定的時間計算函數進行截斷處理,自動根據資料列計算後的結果產生分區列的值,從而實現表分區。詳情請參見基於時間計算函數的自動分區表。
功能增強
使用ALTERTABLE REBUILD INDEX進行BLOOMFILTER索引重建時,支援REBUILD多個分區。詳情請參見產生Bloomfilter index。
建立物化視圖時,在支援GETDATE基礎上,新增支援使用MAX_PT,且在改寫時用建立時刻的MAX_PT值,提升物化視圖改寫覆蓋率。詳情請參見建立物化視圖(支援分區和聚簇)。
語言/文法
STRUCT文法功能增強:支援
STRUCT(*)文法,用於在查詢中引用或操作結構體STRUCT的所有欄位。詳情請參見STRUCT資料類型。使用
SHOW HISTORY FOR TASK命令顯示TASK的記錄時,支援指定起始位置和長度,更精確地控制顯示結果。詳情請參見查看定時調度任務(Periodic Task)自動調度執行個體的歷史列表。
內建函數
新增 TRUNC_TIME函數,支援將日期或時間類型資料按照datepart指定的時間單位進行截取後,返回STRING類型資料。詳情請參見TRUNC_TIME。
新增 BOOL_AND和BOOL_OR函數,分別對一組布爾值執行邏輯與(AND)和邏輯或(OR)操作,返回所有非空輸入值的邏輯與(AND)和邏輯或(OR)結果。詳情請參見BOOL_AND、BOOL_OR。
新增 BIT_COUNT 函數,用於計算給定輸入值的二進位表示中包含1的個數。詳情請參見BIT_COUNT。
新增 BITWISE_XOR_AGG 函數,對所有輸入值按位異或(XOR)計算結果。詳情請參見BITWISE_XOR_AGG。
新增 ANY 函數,用於判斷輸入中是否存在至少一個為True的元素。詳情請參見ANY。
效能/參數升級
進一步增強Shuffle Removal能力,在寫Cluster表的情境下消除不必要的Shuffle,提升作業效能。
2025年02月
2025年02月正式發布MaxCompute SQL V50版本,新增功能如下:
數倉引擎
資料格式
Decimal資料類型支援更高精度的scale:Decimal小數部分的位元scale,取值範圍從[0, 18]擴大至[0, 38],需要通過Flag參數
SET odps.sql.decimal2.extended.scale.enable=true;進行設定。詳情請參見2.0資料類型版本。語言/函數增強
STRUCT文法功能增強:支援STRUCT Expression文法,使用Named Expression命名運算式構造STRUCT類型資料,提供構造複雜類型STRUCT資料的一種新方法。詳情請參見STRUCT資料類型。
FIND_IN_SET函數功能增強:支援在以分隔字元分隔的字串中尋找指定的字串,並返回其位置。相比原先僅支援逗號(,)分隔字元,現支援使用者自訂STRING類型的分隔字元,實現更靈活的字串位置尋找。詳情請參見FIND_IN_SET。
新增內建函數GET_DATA_FROM_OSS:支援使用函數下載Object Table表中的OSS對象檔案資料,返回BINARY位元據以供後續計算。詳情請參見查詢對象內容進行業務計算。
功能增強
支援MATERIALIZED CTE功能:定義CTE時,可在SELECT語句中使用MATERIALIZE HINT將CTE的計算結果緩衝至一張暫存資料表中。後續訪問該CTE時,可直接從緩衝中讀取結果,從而避免了多層CTE嵌套情境下的記憶體超限問題,同時提升了CTE語句的效能。詳情請參見MATERIALIZE CTE。
Bloomfilter index可觀測性增強:支援在Logview中的SubStatusHistory查看Bloomfilter index彙總花費時間。詳情請參見產生Bloomfilter index。
物化視圖功能增強:完善查詢改寫能力,支援更多運算元,包括DISTRIBUTED BY、ORDER BY、ORDER BY+LIMIT、LIMIT。詳情請參見物化視圖查詢改寫。
效能/參數升級
對於ARRAY_CONTAINS函數,在字串尋找情境下,最佳化器將自動識別輸入參數進行SPLIT的情境,並預設將其最佳化為等價的FIND_IN_SET操作,同時適配了更多的分隔字元情境。例如:
ARRAY_CONTAINS(SPLIT(c1, '_'), c2)被自動最佳化為FIND_IN_SET(c1, c2, '_'),提升了ARRAY_CONTAINS的執行效能。預設開啟動態分區Reshuffle Split能力,實現動態分區Reshuffle情境最佳化。通過對動態分區資料分路,僅對單路進行Reshuffle寫入,從而減少動態分區Reshuffle開銷,同時避免小檔案過多的問題。
進一步增強Shuffle Removal能力,在MAPJOIN和PARTITIONED HASH JOIN情境下消除不必要的Shuffle,提升作業效能。
近即時數倉
Delta Table增量表格式CDC特性發布
Delta Table CDC(Change Data Capture)定義了識別並捕獲資料庫表中資料的變更情境,用於記錄Delta Table增量錶行層級的插入、更新和刪除等操作,從而有效捕捉該表的資料變化事件。Delta Table CDC支援在建立時自動產生定時調度任務,調度任務會執行非同步任務產生CDC。相關文法包括CREATE、ALTER、DROP等,使用者可以基於CDC事件驅動,輔助實現增量計算、資料同步以及數倉分層等業務需求。詳情請參見CDC(邀測)。
Stream資料流對象新特性發布
Stream是MaxCompute自動管理Delta Table增量查詢資料版本的流對象,記錄對增量表所進行的資料操作語言(DML)更改,包括插入、更新和刪除操作,並附帶每次更改的中繼資料,以便於您基於更改後的資料採取相應的操作。詳情請參見流對象(Stream)。
周期性調度任務特性發布
MaxCompute周期調度任務(Periodic Task)可以靈活自訂任務調度策略,執行對應的SQL計算邏輯,自動構建資料管道,簡化ETL鏈路。使用者可將任務與表資料變更以及流讀情境相結合,從而實現連續的ETL工作流程,以處理最近更改的資料。詳情請參見周期調度任務(邀測)。
Flink資料寫入Delta Table生態支援
MaxCompute Delta Table支援多種資料寫入方式,MaxCompute提供了新版的Flink Connector外掛程式,支援將Flink資料寫入至MaxCompute的普通表和Delta Table類型表,提高了Flink資料寫入MaxCompute的便捷性。另外,支援Flink CDC直接寫入Delta Table。詳情請參見使用Flink寫入資料到MaxCompute。
湖倉一體和外部表格能力
建立外部表格解析PARQUET格式資料檔案時,支援部分資料類型的隱式轉換,如TINYINT、SMALLINT、DATETIME等類型。
外部表格支援使用MAX_PT函數查詢最新分區,可使用MAX_PT函數查詢OSS外部表格的最新的有資料的分區。詳情請參見MAX_PT。
2024年11月
2024年11月正式發布MaxCompute SQL V49版本,新增功能如下:
數倉引擎
新功能
支援Bitmap index(位元影像索引):在基數較大(存在大量相同值)的列上建立索引,範圍過濾情境下最多可過濾掉超過50%以上的資料,從而起到查詢加速的效果。詳情請參見Bitmap Index(Beta)。
支援Bloomfilter index:布隆過濾器(Bloomfilter)是一種高效的機率型資料結構,MaxCompute支援使用Bloomfilter index處理大規模資料點查情境,減少查詢過程中不必要的資料掃描,從而提高整體的查詢效率和效能。詳情請參見Bloomfilter index(Beta)。
內建函數
新增內建函數JSON_EXPLODE:支援將JSON數組或JSON對象中的每個元素拆解(展開)成多行記錄。詳情請參見JSON_EXPLODE。
語言增強
CREATE TABLE支援使用OR REPLACE更新表資訊:如果目標表已存在,可以直接更新Meta資訊。不需要先刪除表後再建立,簡化使用者SQL語句的使用,提升易用性。詳情請參見建立和刪除表。
支援一次性注釋SQL中的單行或多行內容,增強代碼的可讀性。詳情請參見SQL注釋。
支援SUBQUERY_MAPJOIN HINT:部分子查詢(如SCALAR/IN/EXISTS)會在執行過程中被轉換成JOIN進行計算,支援使用者在SUBQUERY中通過顯式指定Hint來使用MAPJOIN演算法提升執行效率。詳情請參見SUBQUERY_MAPJOIN HINT。
新增參數
行為變更
預設對所有DML操作開啟動態分區轉靜態分區最佳化功能,以提升查詢效能。該最佳化對於UPDATE/DELETE/MERGE INTO操作有行為變更影響。詳情請參見動態分區轉靜態分區最佳化公告。
巨量資料AI(MaxFrame)
Logview 2.0適配MaxFrame,支援以下MaxFrame的相關功能,詳情請參見通過Logview 2.0查看MaxFrame作業:
查看MaxFrame Session中提交的所有DAG的執行記錄、運行耗時等資訊。
互動式查看每個DAG中的SubDAG的執行順序、已耗用時間、運算元拓撲和狀態關係。
支援查看每個子執行個體的設定、運行狀態、記憶體和CPU等資源使用方式。
MaxFrame支援自動化打包服務:簡化了Python開發中第三方包的管理操作。該服務支援在作業開發時聲明所需的外部依賴包,在作業運行時,這些包會自動被打包並整合到作業環境中,無需手動上傳,從而減少繁瑣的打包管理工作。詳情請參見自動化打包服務。
湖倉一體和外部表格能力
JNI寫入Parquet外部表格時支援ZSTD壓縮
相比原先Parquet外部表格寫入僅支援Uncompressed和Snappy壓縮格式的檔案 ,現新增對ZSTD壓縮格式的支援,即建立Parquet外部表格時支援寫入ZSTD壓縮格式的檔案,以提升壓縮率及讀寫效能,實現降本增效。詳情請參見ORC外部表格。
CsvStorageHandler/OpenCsvSerde資料讀寫補充資料類型支援
MaxCompute具備與Hive相容的OpenCSV讀寫標準(以下簡稱CsvSerde),其資料類型為Hive相容資料類型。此外,MaxCompute還提供了自訂的CsvStorageHandler讀寫標準(以下簡稱CsvHandler),其資料類型為ODPS2.0資料類型。儘管資料類型並不完全相同,但仍存在多種基本類型欄位的交集,例如INT和FLOAT等。然而,二者在對這些資料類型的解析行為上仍存在諸多差異,並且尚未形成統一標準。例如對於FLOAT類型,CsvSerde規定了對INF等特殊值的處理,而CsvHandler則沒有處理特殊值,僅嘗試使用parseFloat方法進行解析,這導致使用者在混合使用CsvHandler和CsvSerde時,會遇到基礎資料型別 (Elementary Data Type)解析行為不一致的問題。
此外,CsvStorageHandler支援BOOLEAN、TIMESTAMP、DATE、DATETIME等多種基礎資料型別 (Elementary Data Type),便於將所有資料類型從MaxCompute匯出至OSS,並以CSV格式儲存。通過OSS進行跨地區複製後,資料可恢複至MaxCompute。
OSS外部表格支援使用RAMRole身份進行STS鑒權
為了支援客戶通過RAMRole身份(免AK)訪問MaxCompute,或者通過雲上其他產品使用RAM Role身份訪問MaxCompute時,在外部表格情境下能夠順利進行,現已最佳化了功能。原先由於外部表格中包含MaxCompute訪問對端產品的表屬性集成的RAMRole,在角色扮演過程中無法擷取到訪問者的RAMRole身份中的使用者資訊,導致不支援直接以RAMRole身份訪問這些外部表格。現在,即便是在涉及外部表格的情況下,也能確保RAMRole身份的有效利用與無縫訪問。詳情請參見ORC外部表格。
Optimizer支援在Query執行中臨時統計表的Stats,從而發現小表,最佳化查詢計劃
由於外部表格查詢的資料位元於外部資料湖,為了確保資料的開放性,系統不在本地建立中繼資料。同時由於缺乏預先統計資訊,查詢最佳化工具採用保守策略,導致查詢效率低。現支援Optimizer在Query執行中臨時統計表的Stats(統計資訊)以發現小表,從而可以主動使用HashJoin、最佳化Join Order、減少大量Shuffle或縮短執行的Pipeline等方法,最終最佳化查詢計劃。詳情請參見Paimon外部表格。