SQL概述

MaxCompute SQL適用于海量資料(GB、TB、EB層級),離線批次運算的場合。MaxCompute作業提交後會有幾十秒到數分鐘不等的排隊調度,所以適合處理跑批作業,一次作業批量處理海量資料,不適合直接對接需要每秒處理幾千至數萬筆事務的前台業務系統。

MaxCompute SQL採用的是類似於SQL的文法,可以看作是標準SQL的子集,但不能因此簡單地把MaxCompute等價成一個資料庫,它在很多方面並不具備資料庫的特徵,如事務、主鍵約束、索引等。目前在MaxCompute中允許的最大SQL長度是2MB。

關鍵字

MaxCompute將SQL語句的關鍵字作為保留字。在對錶、列或是分區命名時如若使用關鍵字,需給關鍵字加``符號進行轉義,否則會報錯。保留字不區分大小寫。下面只給出常用的保留字列表,完整的保留字列表請參見MaxCompute SQL保留字

%    &    &&    (    )    *    +  
 -    .    /    ;    <    <=    <>  
 =    >    >=    ?    ADD    ALL    ALTER  
 AND  AS    ASC    BETWEEN    BIGINT    BOOLEAN    BY  
 CASE CAST  COLUMN    COMMENT    CREATE    DESC    DISTINCT  
 DISTRIBUTE    DOUBLE    DROP    ELSE    FALSE    FROM    FULL  
 GROUP    IF    IN    INSERT    INTO    IS    JOIN  
 LEFT    LIFECYCLE    LIKE    LIMIT    MAPJOIN    NOT    NULL  
 ON    OR    ORDER    OUTER    OVERWRITE    PARTITION    RENAME  
 REPLACE    RIGHT    RLIKE    SELECT    SORT    STRING    TABLE  
 THEN    TOUCH    TRUE    UNION    VIEW    WHEN    WHERE

類型轉換說明

MaxCompute SQL允許資料類型之間的轉換,類型轉換方式包括顯式類型轉換和隱式類型轉換。更多詳情請參見類型轉換

  • 顯式類型轉換:是指用cast將一種資料類型的值轉換為另一種類型的值的行為。
  • 隱式類型轉換:是指在運行時,由MaxCompute依據上下文使用環境及類型轉換規則自動進行的類型轉換。隱式轉換範圍包括各種運算子、內建函數等範圍。

分區表

MaxCompute SQL支援分區表。指定分區表會對您帶來諸多便利,例如提高SQL運行效率、減少計費等。關於分區的詳情請參見基本概念>分區

UNION ALL

參與UNION ALL運算的所有列的資料類型、列個數、列名稱必須完全一致,否則會報異常。