全部產品
Search
文件中心

MaxCompute:表操作

更新時間:Mar 21, 2026

表是MaxCompute的資料存放區單元。資料倉儲的開發、分析及營運都需要處理表資料。本文通過具體樣本介紹如何建立、刪除和查看錶等常用表操作。

執行工具

本文中的命令可以在如下工具平台執行:

常用命令

  1. 表操作

    類型

    功能

    角色

    建立表

    建立非分區表、分區表、外部表格或聚簇表等。

    具備專案空間建立表許可權(CreateTable)的使用者。

    修改表的所有人

    修改表的所有人,即表Owner。

    專案空間Owner

    刪除表

    刪除非分區表或分區表。

    具備刪除表許可權(DROP)的使用者。

    查看錶或視圖資訊

    查看MaxCompute內部表、視圖或外部表格的資訊。

    具備讀取表元資訊許可權(Describe)的使用者。

    查看分區資訊

    查看某個分區表具體的分區資訊。

    具備讀取表元資訊許可權(Describe)的使用者。

    列出專案空間下的表和視圖

    列出專案空間下所有的表、視圖或符合某規則(支援Regex)的表、視圖。

    具備專案空間查看對象列表許可權(List)的使用者。

    列出所有分區

    列出一張表中的所有分區。

    具備專案空間查看對象列表許可權(List)的使用者。

  2. 分區操作

  3. 列操作

  4. 表的生命週期操作

建立表

建立非分區表、分區表、外部表格或聚簇表。

適用範圍

  • 分區表的分區層級不能超過6級。例如某張表以日期為分區列,分區層級為年/月/周/日/時/分

  • 一張表允許的分區個數支援按照具體的專案配置,預設為6萬個。

更多表的限制條件,請參見SQL使用限制項

命令格式

建立內部表

建立內部表(包含非分區表和分區表)

CREATE [OR REPLACE] TABLE [IF NOT EXISTS] <table_name> (
<col_name> <data_type>, ... )
[comment <table_comment>]
[PARTITIONED BY (<col_name> <data_type> [comment <col_comment>], ...)]
[AUTO PARTITIONED 
   BY (<auto_partition_expression> [AS <auto_partition_column_name>])
  [TBLPROPERTIES('ingestion_time_partition'='true')]
];

建立聚簇表

建立聚簇表

CREATE TABLE [IF NOT EXISTS] <table_name> (
<col_name> <data_type>, ... )
[CLUSTERED BY | RANGE CLUSTERED BY (<col_name> [, <col_name>, ...]) 
[SORTED BY (<col_name> [ASC | DESC] [, <col_name> [ASC | DESC] ...])] 
INTO <number_of_buckets> buckets];

建立外部表格

建立外部表格

以OSS外部表格為例,通過內建文本資料解析器建立外部表格。詳情請參見ORC外部表格

CREATE EXTERNAL TABLE [IF NOT EXISTS] <mc_oss_extable_name> ( 
<col_name> <data_type>, ... ) 
STORED AS '<file_format>' 
[WITH SERDEPROPERTIES (options)]  
LOCATION '<oss_location>';

建立表並指定表類型

  • 指定表為Transactional表。後續可以對該表執行更新或刪除表資料操作,但是Transactional表有部分使用限制,請根據需求建立。

    CREATE [EXTERNAL] TABLE [IF NOT EXISTS] <table_name> (
    <col_name <data_type> [NOT NULL] [DEFAULT <default_value>] [comment <col_comment>], ...   
    [comment <table_comment>]
    [TBLPROPERTIES ("transactional"="true")];
  • 指定表為Delta Table表。結合PRIMARY KEY,後續可以做upsert、增量查詢和Time Travel等操作。

    CREATE [EXTERNAL] TABLE [IF NOT EXISTS] <table_name> (
    <col_name <data_type> [NOT NULL] [DEFAULT <default_value>] [comment <col_comment>], ...   
    [PRIMARY KEY (<pk_col_name>[, <pk_col_name2>, ...] )]) 
    [comment <table_comment>]
    [CLUSTERED BY (<pk_col_name>[, <pk_col_name2>, ...] )]
    [TBLPROPERTIES ("transactional"="true" 
    [, "write.bucket.num" = "N", "acid.data.retain.hours"="hours"...])] [LIFECYCLE <days>];
    • PK Delta Table 支援使用 PK 子集作為 Hash Cluster Key。

      在 PK Delta Table 中,資料預設採用 Hash Cluster 方式分布,預設聚簇列(Cluster Key)為整個主鍵(PK)列集合。在部分業務情境中,查詢SQL 可能會頻繁使用 PK 列的子集過濾。這類情境可以通過顯式指定 PK 列的子集為聚簇列,使資料在分布和儲存上按照該列子集聚簇,從而提升基於該列子集的過濾效率。

    • 顯式指定聚簇列時,表資料將按照指定列進行 Hash 分桶(bucket)分布,聚簇列必須是 PK 列的子集。

      未顯式指定時,系統預設使用完整的 PK 列集合作為聚簇列。

      表建立後不支援再修改聚簇列,需在建表時一次性指定。

基於已存在表建立新表

  • 基於已存在的表建立新表並複製資料,但不複製分區屬性。支援外部表格和湖倉一體外部項目中的表。

    CREATE TABLE [IF NOT EXISTS] <table_name> [LIFECYCLE <days>] AS <select_statement>;
  • 基於已存在的表建立具備相同結構的新表,但不複製資料。支援外部表格和湖倉一體外部項目中的表。

    CREATE TABLE [IF NOT EXISTS] <table_name> [LIFECYCLE <days>] LIKE <existing_table_name>;

參數說明

通用參數

通用參數

參數

是否必填

說明

備忘

OR REPLACE

  • 若<table_name>已經存在,則對現有表使用DROP TABLE,然後建立具有相同名稱的新表進行替換。

  • CREATE OR REPLACE TABLE暫不支援和以下文法共用。

    • CREATE TABLE ... IF NOT EXISTS。

    • CREATE TABLE ... AS SELECT。

    • CREATE TABLE ... LIKE。

等效於執行如下兩條命令:

DROP TABLE IF EXISTS <tableName>;  -- 假如目標表存在,則先刪除它
CREATE TABLE <tableName> ...;      -- 建立表

EXTERNAL

建立的表為外部表格。

IF NOT EXISTS

確認庫中是否已存在建立表名。

如果不指定IF NOT EXISTS選項而存在同名表,會報錯。如果指定IF NOT EXISTS,只要存在同名表,即使原表結構與要建立的目標表結構不一致,均返回成功。已存在的同名表的中繼資料資訊不會被改動。

table_name

表名。

表名大小寫不敏感,不能有特殊字元,只能包含a~z、A~Z、數字和底線(_)。建議以字母開頭,名稱的長度不超過128位元組,否則報錯。

PRIMARY KEY(pk)

表的主鍵。

可以定義一個或多個列作為主鍵,表示這些列的組合在表中必須唯一,文法遵循標準SQL primary key文法,pk列必須設定NOT NULL,不允許修改。

重要

該參數僅適用於Delta Table。

col_name

表的列名。

  • 列名大小寫不敏感,不能有特殊字元,只能包含a~z、A~Z、數字、底線(_)或中文。建議以字母開頭,名稱的長度不超過128位元組,否則報錯。

  • 執行SET odps.sql.bigquery.compatible=true;命令開啟BigQuery相容模式,列名的長度不超過256位元組。否則報錯。

col_comment

列名的注釋。

注釋內容為長度不超過1024位元組的有效字串,否則報錯。

data_type

列的資料類型。

包含BIGINT、DOUBLE、BOOLEAN、DATETIME、DECIMAL和STRING等多種資料類型,詳情請參見資料類型版本說明

NOT NULL

禁止該列的值為NULL。

更多修改非空屬性資訊,請參見分區操作

default_value

列的預設值。

insert操作不指定該列時,將該列寫入預設值。

說明

當前預設值不支援函數,例如GETDATE()NOW()等。

table_comment

表注釋。

注釋內容為長度不超過1024位元組的有效字串,否則報錯。

LIFECYCLE

表的生命週期。

僅支援正整數。單位為天。

  • 非分區表:自最後一次修改表資料開始計算,經過days天后資料無改動,則您無需幹預此表,MaxCompute會自動回收(類似drop table操作)。

  • 分區表:系統根據各分區的LastModifiedTime判斷是否需要回收分區。不同於非分區表,分區表的最後一個分區被回收後,該表不會被刪除。生命週期只能設定到表層級,不支援在分區層級設定生命週期。

分區表參數

分區表參數

MaxCompute支援普通分區表和自動分區表(AUTO PARTITION)兩種分區表類型,您可根據不同情境下預期的分區列產生方式,選擇不同的分區表類型。詳情請參見分區表概述

普通分區表參數

參數

是否必填

說明

備忘

PARTITIONED BY

指定普通分區表的分區。

僅支援選擇PARTITIONED BY和AUTO PARTITIONED BY兩者中的一種方式指定分區。

col_name

表的分區列名。

  • 列名大小寫不敏感,不能有特殊字元,只能包含a~z、A~Z、數字、底線(_)或中文。建議以字母開頭,名稱的長度不超過128位元組,否則報錯。

  • 執行SET odps.sql.bigquery.compatible=true;命令開啟BigQuery相容模式,列名的長度不超過256位元組。否則報錯。

data_type

分區列的資料類型。

MaxCompute 1.0版本僅支援STRING類型。MaxCompute 2.0版本擴充了分區類型,包含TINYINT、SMALLINT、INT、BIGINT、VARCHAR和STRING類型。詳情請參見資料類型版本說明。當使用分區欄位對錶進行分區時,新增分區、更新分區內資料和讀取分區資料均不需要做全表掃描,提高處理效率。

col_comment

分區列的注釋內容。

注釋內容為長度不超過1024位元組的有效字串,否則報錯。

說明

分區值不能包含雙位元組字元(如中文),必須以字母開頭,包含字母、數字和允許的字元,長度不超過255位元組。允許的字元包括空格、冒號(:)、底線(_)、貨幣符號($)、井號(#)、英文句點(.)、驚嘆號(!)和at(@),其他字元的行為未定義,例如逸出字元\t\n/

AUTO PARTITION表參數

自動分區表(AUTO PARTITION)的分區列支援基於一定方式自動產生。更多關於AUTO PARTITION表的使用說明,請參見分區表類型

參數

是否必填

說明

備忘

AUTO PARTITIONED BY

指定AUTO PARTITION表的分區。

僅支援選擇PARTITIONED BY和AUTO PARTITIONED BY兩者中的一種方式指定分區。

auto_partition_expression

定義如何進行分區列計算的運算式。

當前僅支援使用TRUNC_TIME函數產生分區列,僅支援一個分區列。

TRUNC_TIME函數支援對錶中的時間/日期類型的列的資料,按照指定的時間單位進行截取計算,並產生分區列。

auto_partition_column_name

產生分區列的列名。

若未指定分區列的列名,則系統會以_pt_col_0_ 為預設列名,依次檢查表中是否存在該列名,若存在則自動遞增尾碼(如 _pt_col_1__pt_col_2_ 等),直到找到未被佔用的列名為止。

使用分區運算式進行分區計算後,會根據計算結果產生一個STRING類型的分區列,列名可以顯式指定,列類型和列的取值均不支援直接操作。

TBLPROPERTIES('ingestion_time_partition'='true')

是否按資料寫入時間產生分區列。

按資料寫入時間產生分區的使用方式,請參見基於資料寫入時間的自動分區表

聚簇表參數

聚簇表參數

聚簇表分為Hash聚簇表和Range聚簇表兩種。

HASH聚簇表

參數

是否必填

說明

備忘

CLUSTERED BY

指定Hash Key。

MaxCompute將對指定列進行Hash運算,按照Hash值分散到各個Bucket中。為避免資料扭曲和熱點,並取得較好的並存執行效果,CLUSTERED BY列適宜選擇取值範圍大,重複索引值少的列。此外,為了達到join最佳化的目的,也應該考慮選取常用的Join或Aggregation Key,即類似於傳統資料庫中的主鍵。

SORTED BY

指定Bucket內欄位的排序方式。

建議SORTED BYCLUSTERED BY保持一致,以取得較好的效能。此外,當指定SORTED BY子句後,MaxCompute將自動產生索引,並且在查詢時利用索引來加快執行。

number_of_buckets

指定雜湊桶的數量。

該值必須填寫,且由資料量大小決定。此外,MaxCompute預設支援最多1111個Reducer,所以此處最多隻支援1111個雜湊桶。您可以使用set odps.stage.reducer.num =<並發數>;來提升這個限制,但最大不得超過4000,否則會影響效能。

說明

選擇雜湊桶數目時,請您遵循以下兩個原則:

  • 雜湊桶大小適中:建議每個Bucket的大小為500 MB左右。例如,分區大小估計為500 GB,粗略估算Bucket數目應該設為1000,這樣平均每個Bucket大小約為500 MB。對於特別大的表,500 MB的限制可以突破,每個Bucket在2 GB~3 GB左右比較合適。同時,可以結合set odps.stage.reducer.num=<並發數>;來突破1111個桶的限制。

  • 對於join最佳化情境,去除Shuffle和Sort步驟能顯著提升效能。因此要求兩個表的雜湊桶數目成倍數關係,例如256和512。建議雜湊桶的數量統一使用2n,例如512、1024、2048或4096,這樣系統可以自動進行雜湊桶的分裂和合并,也可以去除Shuffle和Sort的步驟,提升執行效率。

RANGE聚簇表

參數

是否必填

說明

備忘

RANGE CLUSTERED BY

指定範圍聚簇列。

MaxCompute將對指定列進行分桶運算,按照分桶編號分散到各個Bucket中。

SORTED BY

指定Bucket內欄位排序方式。

使用方法與Hash聚簇表相同。

number_of_buckets

指定雜湊桶的數量。

Range聚簇表的Bucket桶數沒有Hash聚簇表的2n最佳實務,在資料量分布合理的情況下,任何桶數都可以。Range聚簇表的Bucket數不是必須的,可以省略,此時系統會根據資料量自動決定最佳的Bucket數目。

當Join或Aggregation的對象是Range聚簇表,且Join Key或Group Key是Range Clustering Key或其首碼時,可以通過控制Flag消除資料的重分布,即Shuffle Remove,提升執行效率。您可以通過set odps.optimizer.enable.range.partial.repartitioning=true/false;進行設定,預設關閉。

說明
  • 聚簇表的優點:

    • 最佳化Bucket Pruning。

    • 最佳化Aggregation。

    • 最佳化儲存。

  • 聚簇表的限制:

    • 不支援INSERT INTO,只能通過INSERT OVERWRITE來添加資料。

    • 不支援Tunnel直接上傳(UPLOAD)到Range聚簇表,因為Tunnel上傳資料是無序的。

    • 不支援備份恢複功能。

外部表格參數

外部表格參數

本樣本以OSS外部表格建立參數為例。更多外部表格建立參數,請參見外部表格

參數

是否必填

說明

STORED AS '<file_format>'

按照外部表格資料格式指定file_format。

WITH SERDEPROPERTIES(options)

外部表格的授權、壓縮、字元解析等相關參數。

oss_location

外部表格資料OSS儲存位置,詳情請參見OSS外部表格

Transaction Table與Delta Table表參數

Transaction Table與Delta Table表參數
Delta Table表參數

Delta Table是一種可支援近即時讀寫,增量儲存和讀寫,即時更新等能力的表格式,目前只支援主鍵表。

參數

是否必填

說明

備忘

PRIMARY KEY(PK)

建立Delta Table主鍵表時必填,可包含多列。

文法遵循標準SQL primary key文法,PK列必須設定not null,不允許修改。 設定後,後續表資料會根據PK列進行去重,Unique約束在單個partition範圍內有效,或非分區表內有效。

transactional

建立Delta Table類型表時必填,必須設定為true。

表示符合MaxCompute的ACID表的事務特性,採用MVCC交易管理模式,保證快照隔離等級。

write.bucket.num

預設取值為16,取值範圍為(0, 4096]

表示每個partition或者非分區表的分桶數量,也表示資料寫入的並發節點數量。分區表支援修改,新分區預設生效,非分區表不支援修改。該參數用法可參考如下建議:

  • 如果是通過Tunnel匯入,代表Tunnel並發節點數,設定結果會影響匯入流量,也會受Tunnel最大並發節點數約束。

  • 如果是通過SQL寫入,代表寫入資料的Reducer的並發度,受Reducer最大並發節點數約束。

  • 建議每個Bucket的資料寫入大小為500 MB左右。例如,分區大小估計為500 GB,粗略估算Bucket數目應該設為1000,這樣平均每個Bucket大小約為500 MB。對於特別大的表,500 MB的限制可以突破,每個Bucket在2 GB到3 GB左右比較合適。

acid.data.retain.hours

預設取值為24,取值範圍為[24, 168]

表示TimeTravel可查詢資料歷史狀態的時間範圍(單位為小時)。若需要超過168小時(7天)的長時間TimeTravel歷史回溯,可聯絡MaxCompute支援人員。

  • 取值為0時表示不保留資料歷史狀態,也就是不支援timetravel查詢。

  • 如果資料歷史狀態存在時間超過了此參數設定的值,可被刪除或者壓縮(Compact)。

  • 如果SQL timetravel查詢的時間早於該參數的值,會直接報錯,比如屬性值為72小時,timetravel要查詢72小時之前的資料歷史狀態,會直接報錯。

acid.incremental.query.out.of.time.range.enabled

預設false

True表示增量查詢指定的endTimestamp可大於表最大的資料Commit Time,在endTimestamp大於目前時間情境下,使用者多次查詢可能得到不同的結果,因為可能有新的資料插入。支援修改表的此參數取值。

acid.write.precombine.field

可以指定一個列的名稱,且只能指定一個。

如果指定了列名,在同一提交的檔案處理中,系統會結合主鍵(PK)列對資料進行去重處理,確保資料的唯一性和一致性。

說明

當一次性提交的資料量超過128 M時,會導致產生多個檔案,該參數對多個檔案不適用。

acid.partial.fields.update.enable

設定為true時,支援使用SQL或Tunnel對Delta Table進行部分列更新

該參數在建立表時進行設定。表建立成功後不支援修改

  • Delta Table其他通用參數的設定要求。

    • LIFECYCLE: 表生命週期必須大於等於Time Travel可查詢的生命週期,即lifecycle >= acid.data.retain.hours / 24。建立表時會做檢查,不符合條件會報錯。

    • 其他不支援的特性:不支援設定CLUSTER BY、EXTERNAL外表和CREATE TABLE AS。

  • 其他使用限制:

    • 當前不支援除MaxCompute SQL外的其他引擎直接操作Delta Table。

    • 存量普通表不支援修改為Delta Table。

    • 不支援對Delta Table主鍵表的PK列做表結構變更。

Transaction Table表參數

參數

是否必填

說明

TBLPROPERTIES(transactional"="true")

設定表為Transactional表。後續可以對Transactional表執行updatedelete操作實現行級更新或刪除資料。更多資訊,請參見更新或刪除資料(UPDATE | DELETE)

Transactional表的使用限制如下:

  • MaxCompute只允許在建立表時設定Transactional屬性。已建立的表不允許通過ALTER TABLE方式修改Transactional屬性,執行如下語句會報錯:

    ALTER TABLE not_txn_tbl SET TBLPROPERTIES("transactional"="true");
    --報錯。
    FAILED: Catalog Service Failed, ErrorCode: 151, Error Message: Set transactional is not supported
  • 在建立表時,不支援將聚簇表、外部表格設定為Transactional表。

  • 不支援MaxCompute內部表、外部表格、聚簇表與Transactional表互轉。

  • 不支援自動合并Transactional表檔案,需要手動執行合併作業,詳情請參見合并Transactional表檔案

  • 不支援merge partition操作。

  • 其他系統的作業訪問Transactional表有一些限制,例如Graph不支援讀寫;Spark、PAI只支援讀,不支援寫。

  • 在對Transactional表的重要資料執行updatedeleteinsert overwrite操作前需要手動通過select+insert操作將資料備份至其他表中。

基於已有資料表建表參數

基於已有資料表建表參數
  • 通過CREATE TABLE [IF NOT EXISTS] <table_name> [LIFECYCLE <days>] AS <select_statement>;語句可以再建立一個表,並在建表的同時將資料複製到新表中。

    • 但通過該語句建立的表不會複製分區屬性,只會把源表的分區列作為目標表的一般列處理,也不會複製源表的生命週期屬性。

    • 還可以通過lifecycle參數回收表。同時也支援建立內部表複製外部表格的資料。

  • 通過CREATE TABLE [IF NOT EXISTS] <table_name> [LIFECYCLE <days>] LIKE <existing_table_name>;語句可以再建立一個表,使目標表和源表具有相同的表結構。

    • 但通過該語句建立的表不複製資料,也不會複製源表的生命週期屬性。

    • 還可以通過lifecycle參數回收表。同時也支援建立內部表複製外部表格的結構。

使用樣本

建立非分區表

  • 建立非分區表

    CREATE TABLE test1 (key STRING);
  • 建立非分區表,並為欄位指定預設值。

    CREATE TABLE test_default( 
    tinyint_name tinyint NOT NULL default 1Y,
    smallint_name SMALLINT NOT NULL DEFAULT 1S,
    int_name INT NOT NULL DEFAULT 1,
    bigint_name BIGINT NOT NULL DEFAULT 1,
    binary_name BINARY ,
    float_name FLOAT ,
    double_name DOUBLE NOT NULL DEFAULT 0.1,
    decimal_name DECIMAL(2, 1) NOT NULL DEFAULT 0.0BD,
    varchar_name VARCHAR(10) ,
    char_name CHAR(2) ,
    string_name STRING NOT NULL DEFAULT 'N',
    boolean_name BOOLEAN NOT NULL DEFAULT TRUE
    );

建立分區表

  • 建立普通分區表。

    CREATE TABLE IF NOT EXISTS sale_detail(
     shop_name     STRING,
     customer_id   STRING,
     total_price   DOUBLE)
    PARTITIONED BY (sale_date STRING, region STRING);
  • 建立AUTO PARTITION分區表,根據時間類型的資料列,使用時間計算函數產生分區。

    -- 對錶中sale_date列,按月為粒度進行截取,產生了名為sale_month的分區列,並根據該分區列進行表的分區
    CREATE TABLE IF NOT EXISTS auto_sale_detail(
     shop_name     STRING,
     customer_id   STRING,
     total_price   DOUBLE,
     sale_date    DATE )
    AUTO PARTITIONED BY (TRUNC_TIME(sale_date, 'month') AS sale_month);
  • 建立AUTO PARTITION分區表並指定基於資料寫入時間產生分區,此時系統會自動擷取資料寫入至MaxCompute的時間,結合時間計算函數產生分區。

    -- 表建立完成後,當資料寫入時系統會自動擷取資料寫入時間_partitiontime,按天為粒度進行截取,並產生名為sale_date的分區列,並根據該分區列進行表的分區
    CREATE TABLE IF NOT EXISTS auto_sale_detail2(
     shop_name     STRING,
     customer_id   STRING,
     total_price   DOUBLE,
     _partitiontime TIMESTAMP_NTZ)
    AUTO PARTITIONED BY (TRUNC_TIME(_partitiontime, 'day') AS sale_date)
    TBLPROPERTIES('ingestion_time_partition'='true');

建立Hash/Range聚簇表

  • 建立Hash聚簇非分區表。

    CREATE TABLE t1 (a STRING, b STRING, c BIGINT) CLUSTERED BY (c) SORTED BY (c) INTO 1024 buckets;
  • 建立Hash聚簇分區表。

    CREATE TABLE t2 (a STRING, b STRING, c BIGINT) 
    PARTITIONED BY (dt STRING) CLUSTERED BY (c) SORTED BY (c) INTO 1024 buckets;
  • 建立Range聚簇非分區表。

    CREATE TABLE t3 (a STRING, b STRING, c BIGINT) RANGE CLUSTERED BY (c) SORTED BY (c) INTO 1024 buckets;
  • 建立Range聚簇分區表。

    CREATE TABLE t4 (a STRING, b STRING, c BIGINT) 
    PARTITIONED BY (dt STRING) RANGE CLUSTERED BY (c) SORTED BY (c); 

建立Transaction表

  • 建立Transactional非分區表。

    CREATE TABLE t5(id BIGINT) TBLPROPERTIES ("transactional"="true");
  • 建立Transactional分區表。

    CREATE TABLE IF NOT EXISTS t6(id BIGINT) 
    PARTITIONED BY (ds STRING) TBLPROPERTIES ("transactional"="true");

建立內部表

  • 建立內部表複製外部分區表資料,內部表不包含分區屬性。

    1. 建立OSS外部表格和MaxCompute內部表。

      -- 建立oss外部表格並插入資料。
      CREATE EXTERNAL TABLE max_oss_test(a INT, b INT, c INT) 
      STORED AS TEXTFILE
      LOCATION "oss://oss-cn-hangzhou-internal.aliyuncs.com/<bucket_name>";
      
      INSERT INTO max_oss_test VALUES 
      (101, 1, 20241108),
      (102, 2, 20241109),
      (103, 3, 20241110);
      
      SELECT * FROM max_oss_test;
      
      -- 結果
      a    b    c
      101    1    20241108
      102    2    20241109
      103    3    20241110
      
      
      -- 使用create table as建立內部表
      CREATE TABLE from_exetbl_oss AS SELECT * FROM max_oss_test;
      
      -- 查詢建立內部表
      SELECT * FROM from_exetbl_oss;
      
      -- 返回結果,全表資料都有
      a    b    c
      101    1    20241108
      102    2    20241109
      103    3    20241110
    2. 執行DESC from_exetbl_as_par;查詢內部表結構。返回結果如下。

      +------------------------------------------------------------------------------------+
      | Owner:                    ALIYUN$***********                                       |
      | Project:                  ***_*****_***                                            |
      | TableComment:                                                                      |
      +------------------------------------------------------------------------------------+
      | CreateTime:               2023-01-10 15:16:33                                      |
      | LastDDLTime:              2023-01-10 15:16:33                                      |
      | LastModifiedTime:         2023-01-10 15:16:33                                      |
      +------------------------------------------------------------------------------------+
      | InternalTable: YES      | Size: 919                                                |
      +------------------------------------------------------------------------------------+
      | Native Columns:                                                                    |
      +------------------------------------------------------------------------------------+
      | Field           | Type       | Label | Comment                                     |
      +------------------------------------------------------------------------------------+
      | a               | string     |       |                                             |
      | b               | string     |       |                                             |
      | c               | string     |       |                                             |
      +------------------------------------------------------------------------------------+
  • 建立內部表複製外部分區表資料,內部表包含分區屬性。

    1. 建立內部表from_exetbl_like

      -- MaxCompute側查詢湖倉一體外部表格
      SELECT * FROM max_oss_test;
      -- 返回結果
      a    b    c
      101    1    20241108
      102    2    20241109
      103    3    20241110
      
      -- 使用create table like建立內部表
      CREATE TABLE from_exetbl_like LIKE max_oss_test;
      
      -- 查詢建立內部表
      SELECT * FROM from_exetbl_like;
      -- 返回結果,只有表結構出現
      a    b    c
    2. 執行DESC from_exetbl_like;查詢內部表結構。返回結果如下。

      +------------------------------------------------------------------------------------+
      | Owner:                    ALIYUN$************                                      |
      | Project:                  ***_*****_***                                            |
      | TableComment:                                                                      |
      +------------------------------------------------------------------------------------+
      | CreateTime:               2023-01-10 15:09:47                                      |
      | LastDDLTime:              2023-01-10 15:09:47                                      |
      | LastModifiedTime:         2023-01-10 15:09:47                                      |
      +------------------------------------------------------------------------------------+
      | InternalTable: YES      | Size: 0                                                  |
      +------------------------------------------------------------------------------------+
      | Native Columns:                                                                    |
      +------------------------------------------------------------------------------------+
      | Field           | Type       | Label | Comment                                     |
      +------------------------------------------------------------------------------------+
      | a               | string     |       |                                             |
      | b               | string     |       |                                             |
      +------------------------------------------------------------------------------------+
      | Partition Columns:                                                                 |
      +------------------------------------------------------------------------------------+
      | c               | string     |                                                     |
      +------------------------------------------------------------------------------------+

建立Delta Table表

  • 建立Delta Table。

    CREATE TABLE mf_tt (pk BIGINT NOT NULL PRIMARY KEY, val BIGINT) 
      TBLPROPERTIES ("transactional"="true");
  • 建立Delta Table表,設定主要表屬性。

    CREATE TABLE mf_tt2 ( 
      pk BIGINT NOT NULL, 
      pk2 BIGINT NOT NULL, 
      val BIGINT, 
      val2 BIGINT, 
      PRIMARY KEY (pk, pk2)
    ) 
    TBLPROPERTIES (
      "transactional"="true", 
      "write.bucket.num" = "64", 
      "acid.data.retain.hours"="120"
    ) LIFECYCLE 7;

建立表的多種其他方式

建立新表替換原有表
  1. 建立原有表mytable,並寫入資料。

    CREATE OR REPLACE TABLE my_table(a BIGINT);
    
    INSERT INTO my_table(a) VALUES (1),(2),(3);
  2. 使用OR REPLACE建立新的同名表,並修改欄位。

    CREATE OR REPLACE TABLE my_table(b STRING);
  3. 查詢my_table表,返回結果如下。

    +------------+
    | b          | 
    +------------+
    +------------+

    以下為非法的SQL語句:

    CREATE OR REPLACE TABLE IF NOT EXISTS my_table(b STRING);
    CREATE OR REPLACE TABLE my_table AS SELECT;
    CREATE OR REPLACE TABLE my_table LIKE newtable;
將已有表資料複製到新表,並設定生命週期
-- 建立一個新表sale_detail_ctas1,將sale_detail的資料複製到sale_detail_ctas1中,並設定生命週期。
SET odps.sql.allow.fullscan=true;
CREATE TABLE sale_detail_ctas1 LIFECYCLE 10 AS SELECT * FROM sale_detail;

通過DESC EXTENDED sale_detail_ctas1;命令可以查看到表的結構及生命週期等詳細資料。

說明

此處sale_detail是一張分區表,而通過CREATE TABLE ... AS select_statement ...語句建立的表sale_detail_ctas1不會複製分區屬性,只會把源表的分區列作為目標表的一般列處理。即sale_detail_ctas1是一個含有5列的非分區表。

建立新表,在SELECT語句中使用常量作為列的值
說明

如果在SELECT子句中使用常量作為列的值,建議您指定列的名字。建立的表sale_detail_ctas3的第四、五列類似於_c4_c5

  • 指定列的名字。

    SET odps.sql.allow.fullscan=true;
    CREATE TABLE sale_detail_ctas2
    AS
    SELECT shop_name, customer_id, total_price, '2013' AS sale_date, 'China' AS region
    FROM sale_detail;
  • 不指定列的名字。

    SET odps.sql.allow.fullscan=true;
    
    CREATE TABLE sale_detail_ctas3
    AS
    SELECT shop_name, customer_id, total_price, '2013', 'China' 
    FROM sale_detail;
建立新表,與已有表的結構相同,並設定生命週期
CREATE TABLE sale_detail_like LIKE sale_detail LIFECYCLE 10;

通過DESC EXTENDED sale_detail_like;命令可以查看到表的結構及生命週期等詳細資料。

說明

sale_detail_like的表結構與sale_detail完全相同。除生命週期屬性外,列名、列注釋以及表注釋等均相同。但sale_detail中的資料不會被複製到sale_detail_like表中。

建立新表,與外部表格具有相同的表結構
-- 建立一個新表mc_oss_extable_orc_like,與外部表格mc_oss_extable_orc具有相同的表結構。
CREATE TABLE mc_oss_extable_orc_like LIKE mc_oss_extable_orc;

通過DESC mc_oss_extable_orc_like;命令可以查看錶結構等詳細資料。

+------------------------------------------------------------------------------------+
| Owner: ALIYUN$****@***.aliyunid.com | Project: max_compute_7u************yoq              |
| TableComment:                                                                      |
+------------------------------------------------------------------------------------+
| CreateTime:               2022-08-11 11:10:47                                      |
| LastDDLTime:              2022-08-11 11:10:47                                      |
| LastModifiedTime:         2022-08-11 11:10:47                                      |
+------------------------------------------------------------------------------------+
| InternalTable: YES      | Size: 0                                                  |
+------------------------------------------------------------------------------------+
| Native Columns:                                                                    |
+------------------------------------------------------------------------------------+
| Field           | Type       | Label | Comment                                     |
+------------------------------------------------------------------------------------+
| id              | string     |       |                                             |
| name            | string     |       |                                             |
+------------------------------------------------------------------------------------+

建立使用新資料類型的表

SET odps.sql.type.system.odps2=true;
CREATE TABLE test_newtype (
    c1 TINYINT,
    c2 SMALLINT,
    c3 INT,
    c4 BIGINT,
    c5 FLOAT,
    c6 DOUBLE,
    c7 DECIMAL,
    c8 BINARY,
    c9 TIMESTAMP,
    c10 ARRAY<MAP<BIGINT,BIGINT>>,
    c11 MAP<STRING,ARRAY<BIGINT>>,
    c12 STRUCT<s1:STRING,s2:BIGINT>,
    c13 VARCHAR(20))
LIFECYCLE 1;

修改表的所有人

使用限制

僅專案所有者(Project Owner)或具備Super_Administrator角色的使用者可執行修改表Owner的命令。

命令格式

ALTER TABLE <table_name> CHANGEOWNER TO <new_owner>;

參數說明

  • table_name:必填。待修改Owner的表名。

  • new_owner:必填。修改後的Owner帳號。

    如果要修改Owner為RAM使用者:

    • 需確保RAM使用者已加入到表所在的專案中。

    • 格式為:RAM$<UID>:<ram_name>,其中UID為阿里雲帳號的帳號ID,ram_name為RAM使用者顯示名稱。

使用樣本

  • 將表test1的所有人修改為ALIYUN$xxx@aliyun.com

    ALTER TABLE test1 CHANGEOWNER TO 'ALIYUN$xxx@aliyun.com';
  • 將表test1的所有人修改為名稱為ram_test的RAM使用者。

    ALTER TABLE test1 CHANGEOWNER TO 'RAM$13xxxxxxxxxxx:ram_test';

刪除表

刪除非分區表或分區表。

注意事項

  • 請謹慎操作,確認表可以刪除後,再執行刪除操作。如果誤刪了表,當專案開啟了備份恢複功能,且刪除操作未超過專案設定的備份資料保留天數時,則可以恢複表。更多備份恢複資訊,請參見本地備份

  • 刪除表之後,MaxCompute專案的儲存量會降低。

命令格式

DROP TABLE [IF EXISTS] <table_name>; 

參數說明

參數

是否必填

說明

IF EXISTS

如果不指定IF EXISTS且表不存在,則返回異常。如果指定IF EXISTS,無論表是否存在,均返回成功。

table_name

待刪除的表名。

使用樣本

-- 刪除表sale_detail。無論sale_detail表是否存在,均返回成功。
DROP TABLE IF EXISTS sale_detail; 

查看錶或視圖資訊

查看MaxCompute內部表、視圖、物化視圖、外部表格、聚簇表或Transactional表的資訊。

命令格式

-- 查看內部表或視圖資訊。
DESC <table_name|view_name> [PARTITION (<pt_spec>)]; 
-- 查看物化視圖、外部表格、聚簇表或Transactional表資訊。也可以查看內部表的擴充資訊。
DESC extended <table_name|mv_name>; 

參數說明

參數名

說明

table_name

必填。待查看錶的名稱。

view_name

必填。待查看視圖的名稱。

mv_name

待查詢物化視圖的名稱。

pt_spec

可選。待查看分區表的指定分區。

格式為(partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...)

extended

如果為物化視圖、外部表格、聚簇表或Transactional表,需要包含此參數以顯示錶的擴充資訊。對於內部表,也可以使用此參數查看擴充資訊,例如列的非空屬性。

傳回值說明

參數名

說明

Owner

表或視圖的所有者帳號。

Project

表或視圖的所屬專案。

TableComment

表或視圖的注釋資訊。

CreateTime

表或視圖的建立時間。

LastDDLTime

表或視圖的DDL最後變更時間。

LastModifiedTime

表或視圖的資料最後變更時間。

LastAccessTime

表或視圖的資料最後訪問時間。該時間為參考值,與資料實際最後訪問時間最大存在24小時時間差。

因資料可能會被頻繁訪問,為降低LastAccessTime重新整理的效能損耗,訪問某張表的資料時如果LastAccessTime在最近24h內更新過,則不會再次更新。

Lifecycle

生命週期(天)。

InternalTable

是否為內部表,Table對象才有此傳回值。

VirtualView

是否為視圖,View對象才有此傳回值。

Size

表大小,單位為Byte。

NativeColumns

表或視圖的列資訊。

PartitionColumns

分區列資訊,分區表才有此傳回值。

使用樣本

說明
  • 通過DESC table_name查看到的Size包含了在資源回收筒的資料Size。

  • 如果需要清空資源回收筒,可以先執行PURGE TABLE table_name,然後再執行DESC table_name查看除資源回收筒以外的資料大小。

  • 執行SHOW recyclebin查看本專案中資源回收筒內的資料明細。

樣本1:查看建立的非分區表資訊

  • 建立測試表

    CREATE TABLE test_table (
        key STRING
    );
  • 查看建立的test_table表資訊

    DESC test_table;
  • 返回結果

    +------------------------------------------------------------------------------------+
    | Owner:                    ALIYUN$***_com                                           |
    | Project:                  testproject                                              |
    | TableComment:                                                                      |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2025-12-15 15:04:49                                      |
    | LastDDLTime:              2025-12-15 15:04:50                                      |
    | LastModifiedTime:         2025-12-15 15:04:49                                      |
    +------------------------------------------------------------------------------------+
    | InternalTable: YES      | Size: 0                                                  |
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field           | Type       | Label | Comment                                     |
    +------------------------------------------------------------------------------------+
    | key             | string     |       |                                             |
    +------------------------------------------------------------------------------------+

樣本2:查看建立的分區表資訊

  • 建立測試表

    CREATE TABLE test_table_partition (
        shop_name       STRING,
        customer_id     STRING,
        total_price     DOUBLE
    )
    PARTITIONED BY (
        sale_date       STRING,
        region          STRING
    );
  • 查看建立的表資訊

    DESC test_table_partition;
  • 返回結果

    +------------------------------------------------------------------------------------+
    | Owner:                    ALIYUN$***_com                                           |
    | Project:                  testproject                                              |
    | TableComment:                                                                      |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2025-12-15 15:08:27                                      |
    | LastDDLTime:              2025-12-15 15:08:27                                      |
    | LastModifiedTime:         2025-12-15 15:08:27                                      |
    +------------------------------------------------------------------------------------+
    | InternalTable: YES      | Size: 0                                                  |
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field           | Type       | Label | Comment                                     |
    +------------------------------------------------------------------------------------+
    | shop_name       | string     |       |                                             |
    | customer_id     | string     |       |                                             |
    | total_price     | double     |       |                                             |
    +------------------------------------------------------------------------------------+
    | Partition Columns:                                                                 |
    +------------------------------------------------------------------------------------+
    | sale_date       | string     |                                                     |
    | region          | string     |                                                     |
    +------------------------------------------------------------------------------------+
    

樣本3:查看包含分區表詳細資料

  • 建立測試表

    CREATE TABLE IF NOT EXISTS test_table_partition (
        shop_name       STRING,
        customer_id     STRING,
        total_price     DOUBLE
    )
    PARTITIONED BY (
        sale_date       STRING,
        region          STRING
    );
  • 查看建立的表資訊

    DESC EXTENDED test_table_partition;
  • 返回結果

    +------------------------------------------------------------------------------------+
    | Owner:                    ALIYUN$***_com                                           |
    | Project:                  testproject                                              |
    | TableComment:                                                                      |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2025-12-15 15:08:27                                      |
    | LastDDLTime:              2025-12-15 15:08:27                                      |
    | LastModifiedTime:         2025-12-15 15:08:27                                      |
    +------------------------------------------------------------------------------------+
    | InternalTable: YES      | Size: 0                                                  |
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field    | Type   | Label | ExtendedLabel | Nullable | DefaultValue | Comment      |
    +------------------------------------------------------------------------------------+
    | shop_name | string |      |               | true     | NULL         |              |
    | customer_id | string |    |               | true     | NULL         |              |
    | total_price | double |    |               | true     | NULL         |              |
    +------------------------------------------------------------------------------------+
    | Partition Columns:                                                                 |
    +------------------------------------------------------------------------------------+
    | sale_date       | string     |                                                     |
    | region          | string     |                                                     |
    +------------------------------------------------------------------------------------+
    | Extended Info:                                                                     |
    +------------------------------------------------------------------------------------+
    | TableID:                  8c4d6ed34c964326b45d0435a3babe45                         |
    | IsArchived:               false                                                    |
    | PhysicalSize:             0                                                        |
    | FileNum:                  0                                                        |
    | StoredAs:                 AliOrc                                                   |
    | CompressionStrategy:      normal                                                   |
    | odps.timemachine.retention.days: 1                                                        |
    | encryption_enable:        false                                                    |
    +------------------------------------------------------------------------------------+
    

樣本4:查看包含生命週期表的詳細資料

  • 建立測試表

    CREATE TABLE sale_detail_ctas(
        shop_name       STRING,
        customer_id     STRING,
        total_price     DOUBLE,
        sale_date       STRING,
        region          STRING
    )
    LIFECYCLE 10;
  • 查看建立的表詳細資料

    DESC EXTENDED sale_detail_ctas;
  • 返回結果

    +------------------------------------------------------------------------------------+
    | Owner:                    ALIYUN$***_com                                           |
    | Project:                  testproject                                              |
    | TableComment:                                                                      |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2025-12-15 15:13:22                                      |
    | LastDDLTime:              2025-12-15 15:13:22                                      |
    | LastModifiedTime:         2025-12-15 15:13:22                                      |
    | Lifecycle:                10                                                       |
    +------------------------------------------------------------------------------------+
    | InternalTable: YES      | Size: 0                                                  |
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field    | Type   | Label | ExtendedLabel | Nullable | DefaultValue | Comment      |
    +------------------------------------------------------------------------------------+
    | shop_name | string |      |               | true     | NULL         |              |
    | customer_id | string |    |               | true     | NULL         |              |
    | total_price | double |    |               | true     | NULL         |              |
    | sale_date | string |      |               | true     | NULL         |              |
    | region   | string |       |               | true     | NULL         |              |
    +------------------------------------------------------------------------------------+
    | Extended Info:                                                                     |
    +------------------------------------------------------------------------------------+
    | TableID:                  8271334ac9724d09a4973b5b3d536f4c                         |
    | IsArchived:               false                                                    |
    | PhysicalSize:             0                                                        |
    | FileNum:                  0                                                        |
    | StoredAs:                 AliOrc                                                   |
    | CompressionStrategy:      normal                                                   |
    | odps.timemachine.retention.days: 1                                                        |
    | ColdStorageStatus:        N/A                                                      |
    | encryption_enable:        false                                                    |
    | StorageTier:              Standard                                                 |
    | StorageTierLastModifiedTime:  2025-12-15 15:13:22                                  |
    +------------------------------------------------------------------------------------+

樣本5:查看建立的包含不同資料類型欄位的表資訊

  • 建立測試表

    CREATE TABLE  test_newtype(
        c1              TINYINT,
        c2              SMALLINT,
        c3              INT,
        c4              BIGINT,
        c5              FLOAT,
        c6              DOUBLE,
        c7              DECIMAL,
        c8              BINARY,
        c9              TIMESTAMP,
        c10             ARRAY<MAP<BIGINT, BIGINT>>,
        c11             MAP<STRING, ARRAY<BIGINT>>,
        c12             STRUCT<s1:STRING, s2:BIGINT>,
        c13             VARCHAR(20)
    );
  • 查看建立的表詳細資料

    DESC test_newtype;
  • 返回結果

    +------------------------------------------------------------------------------------+
    | Owner:                    ALIYUN$***_com                                           |
    | Project:                  testproject                                              |
    | TableComment:                                                                      |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2025-12-15 16:09:18                                      |
    | LastDDLTime:              2025-12-15 16:09:18                                      |
    | LastModifiedTime:         2025-12-15 16:09:18                                      |
    +------------------------------------------------------------------------------------+
    | InternalTable: YES      | Size: 0                                                  |
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field           | Type       | Label | Comment                                     |
    +------------------------------------------------------------------------------------+
    | c1              | tinyint    |       |                                             |
    | c2              | smallint   |       |                                             |
    | c3              | int        |       |                                             |
    | c4              | bigint     |       |                                             |
    | c5              | float      |       |                                             |
    | c6              | double     |       |                                             |
    | c7              | decimal(38,18) |   |                                             |
    | c8              | binary     |       |                                             |
    | c9              | timestamp  |       |                                             |
    | c10             | array<map<bigint,bigint>> |       |                              |
    | c11             | map<string,array<bigint>> |       |                              |
    | c12             | struct<s1:string,s2:bigint> |       |                            |
    | c13             | varchar(20) |       |                                            |
    +------------------------------------------------------------------------------------+

樣本6:查看建立的Hash聚簇非分區表資訊

  • 建立測試表

    CREATE TABLE hash_clustered_nonpar (
        a               STRING,
        b               STRING,
        c               BIGINT
    )
    CLUSTERED BY (c)
    SORTED BY (c ASC)
    INTO 1024 BUCKETS;
    
  • 查看建立的表詳細資料

    DESC EXTENDED hash_clustered_nonpar;
  • 返回結果

    聚簇屬性將顯示在Extended Info中。

    +------------------------------------------------------------------------------------+
    | Owner:                    ALIYUN$***_com                                           |
    | Project:                  testproject                                              |
    | TableComment:                                                                      |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2025-12-15 16:18:07                                      |
    | LastDDLTime:              2025-12-15 16:18:07                                      |
    | LastModifiedTime:         2025-12-15 16:18:07                                      |
    +------------------------------------------------------------------------------------+
    | InternalTable: YES      | Size: 0                                                  |
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field    | Type   | Label | ExtendedLabel | Nullable | DefaultValue | Comment      |
    +------------------------------------------------------------------------------------+
    | a        | string |       |               | true     | NULL         |              |
    | b        | string |       |               | true     | NULL         |              |
    | c        | bigint |       |               | true     | NULL         |              |
    +------------------------------------------------------------------------------------+
    | Extended Info:                                                                     |
    +------------------------------------------------------------------------------------+
    | TableID:                  904e6a0d76624346903d59a2b536d0a3                         |
    | IsArchived:               false                                                    |
    | PhysicalSize:             0                                                        |
    | FileNum:                  0                                                        |
    | StoredAs:                 AliOrc                                                   |
    | CompressionStrategy:      normal                                                   |
    | odps.timemachine.retention.days: 1                                                 |
    | ColdStorageStatus:        N/A                                                      |
    | encryption_enable:        false                                                    |
    | ClusterType:              hash                                                     |
    | BucketNum:                1024                                                     |
    | ClusterColumns:           [c]                                                      |
    | SortColumns:              [c ASC]                                                  |
    | StorageTier:              Standard                                                 |
    | StorageTierLastModifiedTime:  2025-12-15 16:18:07                                  |
    +------------------------------------------------------------------------------------+

樣本7:查看建立的Hash聚簇分區表資訊

  • 建立測試表

    CREATE TABLE hash_clustered_par (
        a               STRING,
        b               STRING,
        c               BIGINT
    )
    PARTITIONED BY (
        dt              STRING
    )
    CLUSTERED BY (c)
    SORTED BY (c ASC)
    INTO 1024 BUCKETS
    LIFECYCLE 2;
    
  • 查看建立的表詳細資料

    DESC EXTENDED hash_clustered_par;
  • 返回結果

    聚簇屬性將顯示在Extended Info中。

    +------------------------------------------------------------------------------------+
    | Owner:                    ALIYUN$***_com                                           |
    | Project:                  testproject                                              |
    | TableComment:                                                                      |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2025-12-15 16:26:24                                      |
    | LastDDLTime:              2025-12-15 16:26:24                                      |
    | LastModifiedTime:         2025-12-15 16:26:24                                      |
    | Lifecycle:                2                                                        |
    +------------------------------------------------------------------------------------+
    | InternalTable: YES      | Size: 0                                                  |
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field    | Type   | Label | ExtendedLabel | Nullable | DefaultValue | Comment      |
    +------------------------------------------------------------------------------------+
    | a        | string |       |               | true     | NULL         |              |
    | b        | string |       |               | true     | NULL         |              |
    | c        | bigint |       |               | true     | NULL         |              |
    +------------------------------------------------------------------------------------+
    | Partition Columns:                                                                 |
    +------------------------------------------------------------------------------------+
    | dt              | string     |                                                     |
    +------------------------------------------------------------------------------------+
    | Extended Info:                                                                     |
    +------------------------------------------------------------------------------------+
    | TableID:                  5680f0711add43928389db3655d9183e                         |
    | IsArchived:               false                                                    |
    | PhysicalSize:             0                                                        |
    | FileNum:                  0                                                        |
    | StoredAs:                 AliOrc                                                   |
    | CompressionStrategy:      normal                                                   |
    | odps.timemachine.retention.days: 1                                                 |
    | encryption_enable:        false                                                    |
    | ClusterType:              hash                                                     |
    | BucketNum:                1024                                                     |
    | ClusterColumns:           [c]                                                      |
    | SortColumns:              [c ASC]                                                  |
    +------------------------------------------------------------------------------------+

樣本8:查看Range聚簇非分區表資訊

  • 建立測試表

    CREATE TABLE range_clustered_nonpar (
        a               STRING,
        b               STRING,
        c               BIGINT
    )
    RANGE CLUSTERED BY (c);
  • 查看建立的表詳細資料

    DESC EXTENDED range_clustered_nonpar;
  • 返回結果

    聚簇屬性將顯示在Extended Info中。

    +------------------------------------------------------------------------------------+
    | Owner:                    ALIYUN$***_com                                           |
    | Project:                  testproject                                              |
    | TableComment:                                                                      |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2025-12-15 16:30:45                                      |
    | LastDDLTime:              2025-12-15 16:30:45                                      |
    | LastModifiedTime:         2025-12-15 16:30:45                                      |
    +------------------------------------------------------------------------------------+
    | InternalTable: YES      | Size: 0                                                  |
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field    | Type   | Label | ExtendedLabel | Nullable | DefaultValue | Comment      |
    +------------------------------------------------------------------------------------+
    | a        | string |       |               | true     | NULL         |              |
    | b        | string |       |               | true     | NULL         |              |
    | c        | bigint |       |               | true     | NULL         |              |
    +------------------------------------------------------------------------------------+
    | Extended Info:                                                                     |
    +------------------------------------------------------------------------------------+
    | TableID:                  bf01d946c4b24c0e9c54ccfe8750b7c2                         |
    | IsArchived:               false                                                    |
    | PhysicalSize:             0                                                        |
    | FileNum:                  0                                                        |
    | StoredAs:                 AliOrc                                                   |
    | CompressionStrategy:      normal                                                   |
    | odps.timemachine.retention.days: 1                                                 |
    | ColdStorageStatus:        N/A                                                      |
    | encryption_enable:        false                                                    |
    | ClusterType:              range                                                    |
    | BucketNum:                0                                                        |
    | ClusterColumns:           [c]                                                      |
    | StorageTier:              Standard                                                 |
    | StorageTierLastModifiedTime:  2025-12-15 16:30:45                                  |
    +------------------------------------------------------------------------------------+

樣本9:查看Range聚簇分區表資訊

  • 建立測試表

    CREATE TABLE range_clustered_par (
        a               STRING,
        b               STRING,
        c               BIGINT
    )
    PARTITIONED BY (
        dt              STRING
    )
    RANGE CLUSTERED BY (c);
  • 查看建立的表詳細資料

    DESC EXTENDED range_clustered_par;
  • 返回結果

    聚簇屬性將顯示在Extended Info中。

    +------------------------------------------------------------------------------------+
    | Owner:                    ALIYUN$***_com                                           |
    | Project:                  testproject                                              |
    | TableComment:                                                                      |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2025-12-15 16:33:09                                      |
    | LastDDLTime:              2025-12-15 16:33:09                                      |
    | LastModifiedTime:         2025-12-15 16:33:09                                      |
    +------------------------------------------------------------------------------------+
    | InternalTable: YES      | Size: 0                                                  |
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field    | Type   | Label | ExtendedLabel | Nullable | DefaultValue | Comment      |
    +------------------------------------------------------------------------------------+
    | a        | string |       |               | true     | NULL         |              |
    | b        | string |       |               | true     | NULL         |              |
    | c        | bigint |       |               | true     | NULL         |              |
    +------------------------------------------------------------------------------------+
    | Partition Columns:                                                                 |
    +------------------------------------------------------------------------------------+
    | dt              | string     |                                                     |
    +------------------------------------------------------------------------------------+
    | Extended Info:                                                                     |
    +------------------------------------------------------------------------------------+
    | TableID:                  bdc4f6897691479ea9c315664f26fe39                         |
    | IsArchived:               false                                                    |
    | PhysicalSize:             0                                                        |
    | FileNum:                  0                                                        |
    | StoredAs:                 AliOrc                                                   |
    | CompressionStrategy:      normal                                                   |
    | odps.timemachine.retention.days: 1                                                 |
    | encryption_enable:        false                                                    |
    | ClusterType:              range                                                    |
    | BucketNum:                0                                                        |
    | ClusterColumns:           [c]                                                      |
    +------------------------------------------------------------------------------------+

樣本10:查看非分區表是否為Transactional表

說明

推薦使用MaxCompute用戶端查看錶是否為Transactional表,且用戶端需要為0.35.4及以上版本。

其他工具可能會存在版本升級未就緒的問題,導致查詢結果不顯示Transactional資訊。

  • 建立測試表

    CREATE TABLE tran_nonpar (
        id              BIGINT
    )
    TBLPROPERTIES ('transactional'='true');
  • 查看建立的表詳細資料

    DESC EXTENDED tran_nonpar;
  • 返回結果

    在Extended Info中顯示Transactional屬性。

    +------------------------------------------------------------------------------------+
    | Owner:                    ALIYUN$***_com                                           |
    | Project:                  testproject                                              |
    | TableComment:                                                                      |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2025-12-15 16:37:27                                      |
    | LastDDLTime:              2025-12-15 16:37:27                                      |
    | LastModifiedTime:         2025-12-15 16:37:27                                      |
    +------------------------------------------------------------------------------------+
    | InternalTable: YES      | Size: 0                                                  |
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field    | Type   | Label | ExtendedLabel | Nullable | DefaultValue | Comment      |
    +------------------------------------------------------------------------------------+
    | id       | bigint |       |               | true     | NULL         |              |
    +------------------------------------------------------------------------------------+
    | Extended Info:                                                                     |
    +------------------------------------------------------------------------------------+
    | TableID:                  43e9710c2b4c404780a7be9998afb23e                         |
    | IsArchived:               false                                                    |
    | PhysicalSize:             0                                                        |
    | FileNum:                  0                                                        |
    | StoredAs:                 AliOrc                                                   |
    | CompressionStrategy:      normal                                                   |
    | Transactional:            true                                                     |
    | IsolationMin:             NONSTRICT_SNAPSHOT_ISOLATION                             |
    | odps.timemachine.retention.days: 1                                                 |
    | ColdStorageStatus:        N/A                                                      |
    | encryption_enable:        false                                                    |
    | StorageTier:              Standard                                                 |
    | StorageTierLastModifiedTime:  2025-12-15 16:37:27                                  |
    +------------------------------------------------------------------------------------+

樣本11:查看分區表是否為Transactional表

說明

推薦使用MaxCompute用戶端查看錶是否為Transactional表,且用戶端需要為0.35.4及以上版本。

其他工具可能會存在版本升級未就緒的問題,導致查詢結果不顯示Transactional資訊。

  • 建立測試表

    CREATE TABLE tran_par (
        id              BIGINT
    )
    PARTITIONED BY (
        ds              STRING
    )
    TBLPROPERTIES ('transactional'='true');
  • 查看建立的表詳細資料

    DESC EXTENDED tran_par;
  • 返回結果

    在Extended Info中顯示Transactional屬性。

    +------------------------------------------------------------------------------------+
    | Owner:                    ALIYUN$***_com                                           |
    | Project:                  testproject                                              |
    | TableComment:                                                                      |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2025-12-15 16:42:26                                      |
    | LastDDLTime:              2025-12-15 16:42:26                                      |
    | LastModifiedTime:         2025-12-15 16:42:26                                      |
    +------------------------------------------------------------------------------------+
    | InternalTable: YES      | Size: 0                                                  |
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field    | Type   | Label | ExtendedLabel | Nullable | DefaultValue | Comment      |
    +------------------------------------------------------------------------------------+
    | id       | bigint |       |               | true     | NULL         |              |
    +------------------------------------------------------------------------------------+
    | Partition Columns:                                                                 |
    +------------------------------------------------------------------------------------+
    | ds              | string     |                                                     |
    +------------------------------------------------------------------------------------+
    | Extended Info:                                                                     |
    +------------------------------------------------------------------------------------+
    | TableID:                  d4dd59b15f7940bcad4cb5efdb42f242                         |
    | IsArchived:               false                                                    |
    | PhysicalSize:             0                                                        |
    | FileNum:                  0                                                        |
    | StoredAs:                 AliOrc                                                   |
    | CompressionStrategy:      normal                                                   |
    | Transactional:            true                                                     |
    | IsolationMin:             NONSTRICT_SNAPSHOT_ISOLATION                             |
    | odps.timemachine.retention.days: 1                                                 |
    | encryption_enable:        false                                                    |
    +------------------------------------------------------------------------------------+

樣本12:查詢物化視圖mv的資訊

  • 建立測試表

    -- 建立一個測試基礎資料表。
    CREATE TABLE page_view_logs (
        page_id STRING,
        user_id STRING,
        view_timestamp BIGINT
    );
    
    -- 建立一個物化視圖,計算每個頁面的瀏覽次數 (PV)。
    CREATE MATERIALIZED VIEW mv AS
    SELECT
        page_id,
        COUNT(1) AS pv_count
    FROM
        page_view_logs
    GROUP BY
        page_id;
  • 查看物化視圖詳細資料

    DESC EXTENDED mv;
  • 返回結果

    +------------------------------------------------------------------------------------+
    | Owner:                    ALIYUN$***_com                                           |
    | Project:                  testproject                                              |
    | TableComment:                                                                      |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2025-12-15 16:47:51                                      |
    | LastDDLTime:              2025-12-15 16:47:51                                      |
    | LastModifiedTime:         2025-12-15 16:47:51                                      |
    +------------------------------------------------------------------------------------+
    | MaterializedView: YES                                                              |
    | ViewText: SELECT
        page_id,
        COUNT(1) AS pv_count
    FROM
        page_view_logs
    GROUP BY
        page_id |
    | Rewrite Enabled: true                                                              |
    | AutoRefresh Enabled: false                                                         |
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field    | Type   | Label | ExtendedLabel | Nullable | DefaultValue | Comment      |
    +------------------------------------------------------------------------------------+
    | page_id  | string |       |               | true     | NULL         |              |
    | pv_count | bigint |       |               | true     | NULL         |              |
    +------------------------------------------------------------------------------------+
    | Extended Info:                                                                     |
    +------------------------------------------------------------------------------------+
    | IsOutdated:               false                                                    |
    | TableID:                  a8742f3751904ec3ade23a7ecc2a2b0b                         |
    | IsArchived:               false                                                    |
    | PhysicalSize:             0                                                        |
    | FileNum:                  0                                                        |
    | StoredAs:                 CFile                                                    |
    | CompressionStrategy:      normal                                                   |
    | odps.timemachine.retention.days: 1                                                        |
    | ColdStorageStatus:        N/A                                                      |
    | encryption_enable:        false                                                    |
    | StorageTier:              Standard                                                 |
    | StorageTierLastModifiedTime:  2025-12-15 16:47:51                                  |
    +------------------------------------------------------------------------------------+
    

樣本13:查詢分區表的分區資訊

  • 建立測試表

    -- 建立一個測試表。
    CREATE TABLE IF NOT EXISTS test_table_partition (
        shop_name       STRING,
        customer_id     STRING,
        total_price     DOUBLE
    )
    PARTITIONED BY (
        sale_date       STRING,
        region          STRING
    );
    
    -- 建立分區。
    ALTER TABLE test_table_partition ADD IF NOT EXISTS 
      PARTITION (sale_date='201310', region='beijing');
      
    -- 使用INSERT INTO向指定分區追加資料。
    INSERT INTO TABLE test_table_partition PARTITION (sale_date='201310', region='beijing')
    VALUES
        ('Apple Store', 'user001', 8888.0),
        ('Nike Store', 'user002', 1200.5),
        ('Starbucks', 'user001', 45.0);
  • 查詢分區表的分區資訊。

    DESC test_table_partition PARTITION (sale_date='201310', region='beijing');
  • 返回結果

    +------------------------------------------------------------------------------------+
    | PartitionSize: 1163                                                                |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2025-12-15 16:54:16                                      |
    | LastDDLTime:              2025-12-15 16:54:16                                      |
    | LastModifiedTime:         2025-12-15 16:54:23                                      |
    +------------------------------------------------------------------------------------+

查看分區資訊

查看某個分區表具體的分區的資訊。

  • 命令格式

    desc <table_name> partition (<pt_spec>);
  • 參數說明

    • table_name:必填。待查看分區資訊的分區表名稱。

    • pt_spec:必填。待查看的分區資訊。格式為partition_col1=col1_value1, partition_col2=col2_value1...。對於有多級分區的表,必須指明全部的分區值。

  • 使用樣本

    --查詢分區表sale_detail的分區資訊。
    desc sale_detail partition (sale_date='201310',region='beijing');

    返回結果如下。

    +------------------------------------------------------------------------------------+
    | PartitionSize: 2109112                                                             |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2015-10-10 08:48:48                                      |
    | LastDDLTime:              2015-10-10 08:48:48                                      |
    | LastModifiedTime:         2015-10-11 01:33:35                                      |
    +------------------------------------------------------------------------------------+
    OK

列出專案下的表和視圖

列出專案下所有的表和視圖,或符合某規則的表和視圖。

  • 命令格式

    --列出專案下所有的表和視圖。
    show tables;
    --列出專案下表名或視圖名與chart匹配的表。
    show tables like '<chart>';
  • 使用樣本

    --列出專案下表名與sale*匹配的表。*表示任意欄位。
    show tables like 'sale*';              

    返回結果如下。

    ALIYUN$account_name:sale_detail
    ......
    --ALIYUN是系統提示符,表示您是阿里雲主帳號使用者。如果您是阿里雲RAM使用者,系統提示符為RAM。

列出所有分區

列出一張表中的所有分區。當表不存在或為非分區表時,返回報錯。

  • 命令格式

    show partitions <table_name>; 
  • 參數說明

    table_name:必填。待查看分區資訊的分區表名稱。

  • 使用樣本

    --列出sale_detail中的所有分區。
    show partitions sale_detail;

    返回結果如下。

    sale_date=201310/region=beijing
    sale_date=201312/region=shenzhen
    sale_date=201312/region=xian
    sale_date=2014/region=shenzhen
    
    OK

相關文檔