全部產品
Search
文件中心

DataWorks:MaxCompute SQL節點

更新時間:Nov 05, 2025

DataWorks提供的MaxCompute SQL節點,可用於周期性調度MaxCompute的SQL任務,並支援與其他類型節點整合以及聯合調度。MaxCompute SQL任務採用類似SQL的文法,適用于海量資料(TB級)但即時性要求不高的分散式處理情境。本文為您介紹在DataWorks上開發MaxCompute SQL節點任務。

節點介紹

MaxCompute SQL用於處理和查詢MaxCompute中的資料,支援常見的SQL操作,例如SELECT、INSERT、UPDATE、DELETE等,以及特定的MaxCompute文法和函數。使用ODPS SQL,您可以編寫類似於SQL的語句進行查詢和處理資料,而無需編寫複雜的資料處理邏輯,SQL文法詳情請參見SQL概述

前提條件

  • 已為DataWorks工作空間綁定MaxCompute計算資源

  • (可選,RAM帳號需要)進行任務開發的RAM帳號已被添加至對應工作空間中,並具有開發空間管理員(許可權較大,謹慎添加)角色許可權,新增成員的操作詳情請參見為工作空間增加空間成員

    說明

    如果您使用的是主帳號,則忽略該添加操作。

使用限制

使用MaxCompute SQL節點進行SQL開發的限制如下:

分類

說明

注釋使用

支援-- 注釋內容單行注釋,暫不支援/* 注釋內容 */多行注釋。

更多詳情參見MaxCompute SQL注釋

另外,還有以下注釋限制。

  • 不支援在關鍵字(SET、USE)語句後單獨加註釋。

  • 不支援在注釋中使用英文分號(;)。

  • 不支援在已完結的語句結尾加註釋。SQL語句後添加英文分號(;),表示語句已完結。

SQL下發

ODPS SQL不支援單獨使用SET、USE語句,必須和具體的SQL語句一起執行。

SQL開發

SQL代碼大小不能超過128 KB,SQL命令條數不能超過200條。

查詢結果

僅支援SELECT和WITH起始的SQL語句輸出格式化的結果集。

查詢結果有如下限制:

  • 查詢結果超過10,000行時,最多隻能顯示10,000行。

  • 查詢結果大小超過10 MB時,將會報錯Result is too large, exceed the limit size: 10MB

說明

如您遇到查詢結果限制,可以通過以下辦法下載查詢結果到本地進行查看:

注意事項

  • 請確保執行MaxCompute SQL任務的帳號具備對應MaxCompute專案的相關許可權,詳情請參見DataWorks On MaxCompute許可權控制MaxCompute許可權

  • MaxCompute的SQL任務執行依賴Quota資源,如果您的任務執行時間較久,請前往MaxCompute控制台查看Quota資源消耗,確儲存在資源來執行任務。詳情請參見:計算資源-Quota管理

  • 開發MaxCompute SQL節點任務時,若涉及特殊參數(如OSS地址)必須使用雙引號包裹,未添加引號會導致任務解析異常,進而引發任務執行失敗。

  • DataWorks上不同環境運行關鍵字(SET、USE)相關語句時,執行順序不同。詳情請參見附錄:不同環境下SQL執行順序

  • 部分極端情況下(如伺服器異常斷電、主備切換等),DataWorks可能無法徹底終止MaxCompute的相關任務進程,此時請前往MaxCompute計算資源對應專案中終止作業

建立MaxCompute SQL節點

建立入口參考:建立MaxCompute SQL節點

開發MaxCompute SQL節點

在MaxCompute SQL節點編輯頁面,執行如下開發操作。

開發SQL代碼

DataWorks提供調度參數,可實現調度情境下代碼動態入參,您可在MaxCompute SQL節點中通過${變數名}的方式定義代碼中的變數,並在調度配置調度參數處,為該變數賦值。調度參數支援的格式,詳情請參見調度參數支援格式。MaxCompute 的SQL命令類似於標準SQL文法,支援DDL、DML和DQL語句以及特定的MaxCompute文法。詳細文法和樣本請參見SQL概述

根據不同的情境需求,為您提供以下三種操作樣本:

說明
  • MaxCompute 2.0擴充函數使用到新資料類型時,您需要在該函數的SQL語句前加SET odps.sql.type.system.odps2=true;,並與SQL一起提交運行,以便正常使用新資料類型。2.0資料類型詳情請參見2.0資料類型版本

  • MaxCompute SQL語句在資料開發與營運中心環境的執行次序不同。如需瞭解,請參見附錄:不同環境下SQL執行順序

建立表

您可使用CREATE TABLE語句建立非分區表、分區表、外部表格及聚簇表,詳情請參見CREATE TABLE。SQL樣本如下:

--建立一張分區表students
CREATE TABLE IF NOT EXISTS students
( id BIGINT,
  name STRING,
  age BIGINT,
  birth DATE)
partitioned BY (gender STRING); 
插入資料

您可使用INSERT INTOINSERT OVERWRITE語句向目標表中插入更新資料,詳情請參見插入或覆寫資料(INSERT INTO | INSERT OVERWRITE)

請盡量避免使用INSERT INTO語句插入資料,可能會造成不可預料的資料重複。推薦您使用INSERT OVERWRITE的方式,詳情請參見插入或覆寫資料

SQL樣本如下:

--插入資料
INSERT OVERWRITE students PARTITION(gender='boy') VALUES (1,'ZhangSan',15,DATE '2008-05-15') ;

INSERT語句可觸發對比DDL欄位,可用來檢查對比SELECT子句SQL語句與寫入目標表欄位之間的DDL對比。

暫不支援MaxCompute專案開啟schema三層模型,但租戶層級不開啟的情況。

image

查詢資料

您可使用SELECT語句實現巢狀查詢、分組查詢、排序等操作,詳情請參考SELECT文法。SQL樣本如下:

--開啟全表掃描,僅此Session有效
SET odps.sql.allow.fullscan=true; 

--查詢所有男生的資訊,並按照ID進行升序排序
SELECT * FROM students WHERE gender='boy' ORDER BY id;
說明

RAM使用者預設沒有生產表查詢許可權,生產表查詢許可權請前往資訊安全中心申請,DataWorks上MaxCompute資料許可權預設以及存取控制,詳情請參見MaxCompute資料許可權控制詳情。MaxCompute命令授權詳情請參見通過命令系統管理使用者許可權

使用SQL函數

MaxCompute支援使用內建函數和自訂函數進行資料開發及分析,您可根據業務需求建立使用SQL函數。內建函數詳情請參見內建函數概述,自訂函數詳情請參見MaxCompute UDF概述。下面樣本為您介紹如何使用SQL函數。

  • 內建函數:內建函數為MaxCompute自身預置的函數,您可以直接調用。基於上述建立表、插入資料及查詢資料樣本,使用dateadd函數對birth列按照指定單位和幅度變化,命令樣本如下:

    --開啟全表掃描,僅此Session有效
    SET odps.sql.allow.fullscan=true; 
    SELECT id, name, age, birth, dateadd(birth,1,'mm') AS birth_dateadd FROM students;
  • 自訂函數(UDF):使用自訂函數時,您需要自行編寫函數代碼、上傳為資源並註冊函數,具體操作請參見資源管理

調試MaxCompute SQL節點

  1. 在節點編輯頁右側的調試配置中配置相關參數。

    參數

    配置說明

    計算資源

    選擇您已綁定的MaxCompute計算資源。

    計算配額

    選擇您所建立的計算配額(Quota),為計算作業提供所需計算資源(CPU及記憶體)。

    如無可用計算配額,可在下拉式清單中單擊建立計算配額,在MaxCompute控制台建立配置Quota

    資源群組

    選擇與計算資源測試連通性成功的調度資源群組。詳情請參見網路連通方案

  2. 在工具列的參數對話方塊中選擇已建立的MaxCompute資料來源,單擊運行MaxCompute SQL任務。

返回結果查看

  • 運行結果會直接以試算表的形式展示。您可以在DataWorks中執行操作,或者在試算表中開啟,也可以自由複製內容粘貼至本地Excel中。

    說明

    由於國際標準組織發布的中國時區資訊調整,通過DataWorks執行相關SQL時,日期顯示某些時間段會存在時間差異:1900~1928年的日期時間差異為5分52秒,1900年之前的日期時間差異為9秒。

  • 作業記錄查看:您可在運行結果的image頁簽,單擊查看LogView連結,詳情請參見使用Logview 2.0查看作業運行資訊

  • 返回結果排序:您可在運行結果頁面對應的欄位上單擊下拉框,在排序中選擇升降序,單擊確認即可完成返回結果排序。

後續步驟

  • 節點調度:若專案目錄下的節點需要周期性調度執行,您需要在節點右側的調度配置中設定調度策略,配置相關的調度屬性。

  • 節點發布:若任務需要發布至生產環境執行,請單擊介面image表徵圖喚起發布流程,通過該流程將任務發布至生產環境。專案目錄下的節點只有在發布至生產環境後,才會進行周期性調度。

附錄:不同環境下SQL執行順序

MaxCompute SQL節點在DataWorks上不同環境運行關鍵字(SET、USE)相關語句時,執行順序不同。

  • 在資料開發Data Studio中運行:將合并當前任務代碼內所有的關鍵字(SET、USE)語句,作為所有SQL的前置語句。

  • 在調度環境運行:將按照實際編寫順序執行。

假設在節點中定義的代碼如下。

SET a=b;
CREATE TABLE name1(id string);
SET c=d;
CREATE TABLE name2(id string);

不同環境執行順序如下:

執行SQL

資料開發Data Studio

調度營運

第一條SQL語句

SET a=b;
SET c=d;
CREATE TABLE name1(id string);
SET a=b;
CREATE TABLE name1(id string);

第二條SQL語句

SET a=b;
SET c=d;
CREATE TABLE name2(id string);
SET c=d;
CREATE TABLE name2(id string);

相關文檔

如果您想瞭解更多MaxCompute SQL任務樣本,可進入如下連結進行瞭解: