全部產品
Search
文件中心

MaxCompute:建立ODPS SQL節點

更新時間:Jun 19, 2024

ODPS SQL採用類似SQL的文法,適用于海量資料(TB級)但即時性要求不高的分散式處理情境。

前提條件

您在工作空間配置頁面添加MaxCompute計算引擎執行個體後,當前頁面才會顯示MaxCompute目錄。詳情請參見建立並管理工作空間

背景資訊

因為每個作業從前期準備到提交等階段都需要花費較長時間,因此如果要求處理幾千至數萬筆事務的業務,您可以使用ODPS SQL順利完成。ODPS SQL是主要面向輸送量的OLAP應用。

使用限制

ODPS SQL節點的使用限制如下:
  • ODPS SQL不支援單獨使用set、use語句,必須和具體的SQL語句一起執行,樣本如下。
    set a=b;
    create table name(id string);
  • ODPS SQL不支援關鍵字(set、use)語句後單獨加註釋,樣本如下。
    create table name(id string);
    seta=b;--注釋  //ODPS SQL不支援在set語句後添加“--注釋”。
    create table name1(id string);
  • ODPS SQL不支援在已完結的語句結尾加註釋,樣本如下。
    說明 SQL語句後添加英文分號(;),表示語句已完結。
    select* --注釋//“select*”語句未完結,因此“--注釋”這個注釋可以添加。
    fromdual;--注釋//“fromdual;”語句已完結,因此“--注釋”這個注釋不支援添加。
    showtables;
  • 資料開發與調度啟動並執行區別如下:
    • 資料開發:合并當前任務代碼內所有的關鍵字(set、use)語句,作為所有SQL的前置語句。
    • 調度運行:按照順序執行。
    set a=b;
    create table name1(id string);
    set c=d;
    create table name2(id string);
    運行結果如下表所示。
    執行SQL資料開發調度運行
    第一條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);
  • 調度參數配置必須是key=value的格式,且(=)前後不支援空格,樣本如下。
    time={yyyymmdd hh:mm:ss} --錯誤
    a =b --錯誤
  • 如果設定bizdatedate等關鍵字作為調度參數變數,格式必須是yyyymmdd。如果需要其它格式,請使用其它變數名稱,避免衝突,樣本如下。
    bizdate=201908 --錯誤,不支援。
  • 資料開發需要查詢結果,僅支援select和with起始的SQL語句,否則無結果輸出。
  • 執行多條SQL語句時,請用分號(;)分隔,且需要換行。
    • 錯誤樣本
      create table1;create table2
    • 正確樣本
      create table1;
      create table2;
  • MaxCompute 2.0擴充函數使用到新資料類型時,您需要在該函數的SQL語句前加set odps.sql.type.system.odps2=true;,並與SQL一起提交運行,以便正常使用新資料類型。
  • SQL語句中添加註釋時,不支援在注釋中使用英文分號(;)。
    錯誤樣本:
    create table1;  --建立表格table1;再建立表格table2
    create table2;
  • 使用ODPS SQL節點進行SQL任務開發時,SQL代碼大小不能超過200KB,SQL命令條數不能超過200條。

操作步驟

  1. 進入資料開發頁面。

    登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的資料建模與開發 > 資料開發,在下拉框中選擇對應工作空間後單擊進入資料開發

  2. 滑鼠移至上方至建立表徵圖,單擊建立節點 > MaxCompute > ODPS SQL
    您也可以找到相應的商務程序,按右鍵MaxCompute,選擇建立節點 > ODPS SQL
  3. 建立節點對話方塊中,輸入節點名稱,並選擇路徑

  4. 單擊確認

  5. 在節點的編輯頁面,編輯並運行代碼。
    建立節點成功後,編寫符合文法的ODPS SQL代碼,SQL文法請參見SQL概述
    說明 由於國際標準組織發布的中國時區資訊調整,通過DataWorks執行相關SQL時,日期顯示某些時間段會存在時間差異:1900~1928年的日期時間差異5分52秒,1900年之前的日期時間差異9秒。
    DataWorks不允許節點代碼中僅包含set語句。如果您需要運行SET語句,可以和其它SQL語句一起執行,如下所示。
    set odps.sql.allow.fullscan=true;
    select 1;

    SET語句的詳情請參見SET操作

    以建立一張表並向表中插入資料,查詢結果為例,操作如下:

    1. 建立一張表test1
      CREATE TABLE IF NOT EXISTS test1 
      ( id BIGINT COMMENT '' ,
        name STRING COMMENT '' ,
        age BIGINT COMMENT '' ,
        sex STRING COMMENT '');
    2. 插入準備好的資料。
      INSERT INTO test1 VALUES (1,'張三',43,'男') ;
      INSERT INTO test1 VALUES (1,'李四',32,'男') ;
      INSERT INTO test1 VALUES (1,'陳霞',27,'女') ;
      INSERT INTO test1 VALUES (1,'王五',24,'男') ;
      INSERT INTO test1 VALUES (1,'馬靜',35,'女') ;
      INSERT INTO test1 VALUES (1,'趙倩',22,'女') ;
      INSERT INTO test1 VALUES (1,'周莊',55,'男') ;
    3. 查詢表資料。
      select * from test1;
    4. SQL語句編輯完成後,單擊工具列中的運行表徵圖,系統會按照從上往下的順序執行SQL語句,並列印日誌。
      運行
      說明
      • 如果當前工作空間綁定多個MaxCompute計算引擎,請選擇需要的MaxCompute引擎執行個體後,再執行查詢語句。
      • 如果您選中的MaxCompute引擎執行個體使用的是隨用隨付預設資源群組,則可以在運行語句前,單擊工具列中的成本估計表徵圖,預估此次運行產生的費用(實際費用請以賬單為準)。
      您在SQL中使用insert into語句有可能造成不可預料的資料重複。雖然已經對insert into語句取消SQL層級的重試,但仍然存在進行任務層級重試的可能性,請盡量避免使用insert into語句。如果使用,作業記錄中會出現如下提示。
      在SQL中使用insert into語句有可能造成不可預料的資料重複,儘管對於insert into語句已經取消SQL層級的重試,但仍然存在進行任務層級重試的可能性,請盡量避免對insert into語句的使用! 
      如果繼續使用insert into語句,表明您已經明確insert into語句存在的風險,且願意承擔由於使用insert into語句造成的潛在的資料重複後果。
    5. 執行無誤後,單擊工具列中的儲存表徵圖,儲存當前SQL代碼。
    6. 查看執行結果。
      DataWorks的查詢結果接入了試算表功能,方便您對資料結果進行操作。
      查詢的結果,會直接以試算表的形式展示。您可以在DataWorks中執行操作,或者在試算表中開啟,也可以自由複製內容粘貼至本地Excel中。查詢結果
      操作描述
      隱藏列選中需要隱藏的一列或多列後,單擊隱藏列
      複製該行左側選中需要複製的一行或多行後,單擊複製該行
      複製該列頂部選中需要複製的一列或多列後,單擊複製該列
      複製選中選中需要複製的內容後,單擊複製選中
      資料分析單擊資料分析,即可跳轉至資料分析頁面。
      搜尋單擊搜尋後,在查詢結果的右上方會出現搜尋方塊,方便對錶中的資料進行搜尋。
      下載支援下載GBKUTF-8兩種格式。
  6. 單擊節點編輯地區右側的調度配置,配置節點的調度屬性。詳情請參見配置基礎屬性
  7. 提交節點。
    重要 您需要設定節點的重跑屬性依賴的上遊節點,才可以提交節點。
    1. 單擊工具列中的提交表徵圖。
    2. 提交新版本對話方塊中,輸入變更描述並選中我確認繼續執行提交操作
      如果出現輸入輸出和代碼血緣分析不匹配的警示,請確認是否忽略該警示,或是否需要調整依賴關係。
    3. 單擊確認
    如果您使用的是標準模式的工作空間,提交成功後,請單擊右上方的發布。具體操作請參見發布任務
  8. 任務營運,詳情請參見周期任務基本營運操作