日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

開發ODPS SQL任務

DataWorks為您提供ODPS SQL節點,可用于周期性調度MaxCompute的SQL任務,并完成與其他類型節點的集成和聯合調度。MaxCompute SQL任務采用類似SQL的語法,適用于海量數據(TB級)但實時性要求不高的分布式處理場景。本文為您介紹在DataWorks上開發SQL任務的注意事項及開發指導。

前提條件

已創建ODPS SQL節點,詳情請參見創建并管理MaxCompute節點

背景信息

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

使用限制

DataWorks中開發ODPS SQL節點的限制如下:

分類

說明

注釋使用

不支持在關鍵字(SET、USE)語句后單獨加注釋。

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

不支持在已完結的語句結尾加注釋。SQL語句后添加英文分號(;),表示語句已完結。

SQL下發

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

SQL開發

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

查詢結果

僅支持SELECT和WITH起始的SQL語句輸出格式化的結果集且最多能顯示10,000行結果數據,返回結果大小不超過10 MB

注意事項

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

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

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

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

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

不同環境執行順序如下:

執行SQL

數據開發DataStudio

調度運維

第一條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);

編輯代碼:簡單示例

SQL命令

MaxCompute的SQL命令使用類似標準SQL語法,支持DDL、DML、DQL語句,及MaxCompute的特定語法等命令,各SQL命令的詳細語法要求及使用示例請參見SQL概述。下面以一個簡單示例為您介紹SQL命令的開發及運行。

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

  • DataWorks提供調度參數,可實現調度場景下代碼動態入參,您可在ODPS SQL節點中通過${變量名}的方式定義代碼中的變量,并在調度配置 > 參數處,為該變量賦值。調度參數支持的格式,詳情請參見調度參數支持的格式

  • 創建表

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

    --創建一張分區表test1
    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)。SQL示例如下:

    --插入數據
    INSERT INTO students PARTITION(gender='boy') VALUES (1,'張三',15,DATE '2008-05-15') ;
    INSERT INTO students PARTITION(gender='boy') VALUES (2,'李四',17,DATE '2006-07-20') ;
    INSERT INTO students PARTITION(gender='girl') VALUES (3,'李霞',20,DATE '2003-04-20') ;
    INSERT INTO students PARTITION(gender='girl') VALUES (4,'王蘭',21,DATE '2002-01-08') ;
    INSERT INTO students PARTITION(gender='boy') VALUES (5,'王五',17,DATE '2006-09-12') ;
    重要

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

  • 查詢數據

    您可使用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支持使用內建函數和自定義函數進行數據開發及分析,內建函數詳情請參見內建函數概述,自定義函數詳情請參見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)

    使用自定義函數時,您需要自行編寫函數代碼、上傳為資源并注冊函數,具體操作請參見創建并使用自定義函數

運行及返回結果

  • 運行結果會直接以電子表格的形式展示。您可以在DataWorks中執行操作,或者在電子表格中打開,也可以自由復制內容粘貼至本地Excel中,詳情請參見任務調試流程

    說明

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

  • 運行日志:您可以單擊運行日志頁簽,查看Logview,詳情請參見使用Logview 2.0查看作業運行信息

  • 返回結果:

    • 查詢所有男生的信息,并按照ID進行升序排序。

      +------------+------------+------------+------------+------------+
      | id         | name       | age        | birth      | gender        |
      +------------+------------+------------+------------+------------+
      | 1          | 張三         | 15         | 2008-05-15 | boy        |
      | 2          | 李四         | 17         | 2006-07-20 | boy        |
      | 5          | 王五         | 17         | 2006-09-12 | boy        |
      +------------+------------+------------+------------+------------+
    • birth列按照指定單位和幅度變化。

      +------------+------------+------------+------------+---------------+
      | id         | name       | age        | birth      | birth_dateadd |
      +------------+------------+------------+------------+---------------+
      | 4          | 王蘭         | 21         | 2002-01-08 | 2002-02-08    |
      | 3          | 李霞         | 20         | 2003-04-20 | 2003-05-20    |
      | 2          | 李四         | 17         | 2006-07-20 | 2006-08-20    |
      | 1          | 張三         | 15         | 2008-05-15 | 2008-06-15    |
      | 5          | 王五         | 17         | 2006-09-12 | 2006-10-12    |
      +------------+------------+------------+------------+---------------+

    您可在查詢結果頁針對指定字段執行排序操作,并對目標查詢結果執行下載等相關操作,詳情請參見處理查詢結果

編輯代碼:進階示例

更復雜的ODPS SQL任務示例如下: