全部產品
Search
文件中心

DataWorks:建立並使用自訂函數

更新時間:Nov 27, 2024

如果MaxCompute提供的內建函數無法支撐您的業務實現,您可通過建立自訂函數滿足您的業務需求。本文為您介紹如何在DataWorks中使用可視化方式建立UDF(User-Defined Function)自訂函數。

背景內容

UDF用於擴充已有的函數庫,可在執行查詢時根據自身需求自訂邏輯和計算,提供更豐富的資料處理功能,詳情請參見UDF概述。除DataWorks提供的可視化方式外,您還可使用MaxCompute Studio建立UDF或在MaxCompute中使用命令列建立UDF,詳情請參見MaxCompute Studio建立自訂函數MaxCompute通過命令列建立自訂函數

前提條件

您需基於資源建立函數,因此,建立函數前請先建立MaxCompute資源,並將該資源上傳或添加至DataWorks。詳情請參見建立MaxCompute資源

使用限制

DataWorks僅支援使用可視化方式查看及管理通過DataWorks可視化方式上傳的自訂函數。通過其他工具(例如,MaxCompute Studio)添加至MaxCompute引擎的自訂函數,需通過DataWorks的MaxCompute函數功能手動載入至DataWorks後,才可在DataWorks查看並進行相關管理操作。詳情請參見MaxCompute函數管理

註冊函數

  1. 進入資料開發頁面。

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

  2. 建立商務程序,詳情請參見建立周期商務程序

  3. 建立函數。

    1. 開啟相應的商務程序,按右鍵MaxCompute,選擇建立函數

    2. 建立函數對話方塊中,輸入名稱,並選擇路徑

    3. 單擊建立

    4. 註冊函數對話方塊中,配置各項參數。

      註冊函數

      參數

      描述

      函數類型

      選擇函數類型,包括數學運算函數彙總函式字串處理函數日期函數視窗函數其他函數。更多詳情請參見使用內建函數

      MaxCompute引擎執行個體

      預設不可修改。

      函數名

      UDF函數名,即SQL中引用該函數所使用的名稱。需要全域唯一,且註冊函數後不支援修改。

      責任人

      預設顯示為當前登入帳號,您也可以選擇其他帳號。

      類名

      UDF函數的類名,格式為資源名.類名。其中,資源名可以為Java包名稱或Python資源名稱。

      DataWorks建立自訂函數時支援使用JAR及Python兩種類型的MaxCompute資源,不同類型資源的類名配置如下:

      • 當資源類型為JAR時,配置的類名格式為Java包名稱.實際類名,您可以在IDEA中通過copy reference語句擷取。

        例如,com.aliyun.odps.examples.udf為Java包的名稱,UDAFExample為實際類名,則類名參數配置為com.aliyun.odps.examples.udf.UDAFExample

      • 當資源類型為Python時,配置的類名格式為Python資源名稱.實際類名

        例如,LcLognormDist_sh為Python資源名稱,LcLognormDist_sh為實際類名,則類名參數配置為LcLognormDist_sh.LcLognormDist_sh

        說明

      資源清單

      選擇註冊函數所需使用的資源。

      • 可視化模式:僅支援選擇已上傳或添加至DataWorks的資源。

      • 指令碼模式:支援選擇相應MaxCompute引擎中的所有資源。

      說明
      • 無需填寫已添加的資源的路徑。

      • 如果UDF中調用了多個資源,則多個資源使用英文逗號(,)分隔。

      描述

      針對當前UDF作用的簡單描述。

      命令格式

      該UDF的具體使用方法樣本,例如test

      參數說明

      支援輸入的參數類型以及返回參數類型的具體說明。

      傳回值

      傳回值,例如1,非必填項。

      樣本

      函數中的樣本,非必填項。

  4. 單擊工具列中的儲存表徵圖,儲存函數。

  5. 提交函數。

    1. 單擊工具列中的提交表徵圖。

    2. 提交對話方塊中,輸入變更描述

    3. 單擊確認

查看在MaxCompute計算引擎中存在的函數、函數的變更歷史等操作,詳情請參見MaxCompute函數管理

查看函數版本與復原

按右鍵相應函數名稱,單擊歷史版本,即可查看函數歷史版本資訊或執行復原操作。

查看

節點中使用自訂函數

可直接使用自訂函數名稱,您可選中資源,右鍵引用函數,在當前節點編輯頁面快速產生自訂函數名稱。節點中使用函數

附錄一:查看自訂函數列表

  • 使用SHOW FUNCTIONS命令可以列出與DataWorks工作空間的資料開發綁定的MaxCompute計算引擎專案中所有登入的自訂函數。

  • MaxCompute自身內建了諸多函數,詳情請參見:內建函數概述

//查看當前專案下的函數。
SHOW FUNCTIONS;

附錄二:查看自訂函數詳情

  • 可以使用DESCRIBE或簡寫的DESC命令,後跟函數名來查看自訂函數的詳細資料。

    //使用簡寫形式查看自訂函數的詳細資料
    DESC FUNCTION <function_name>;
  • 在DataWorks中,如果您在商務程序中需要的處理邏輯無法通過現有函數實現,可以編寫MaxCompute自訂函數,並將相應的資源(如JAR包、Python檔案等)上傳和關聯,以此來管理和擴充您的資料處理功能。詳情請參見MaxCompute資源管理

最佳實務

自訂函數建立完成後,您可參考實現指定使用者訪問特定UDF最佳實務,實現UDF的存取權限管控。

相關文檔

常見問題

Q:通過DataWorks上傳的資源並定義為UDF函數後,除了在資料開發中供ODPS SQL節點使用外,是否可以在資料分析SQL查詢中使用?

A:可以,通過DataWorks註冊的UDF函數,實際是儲存在MaxCompute專案中,因此,不僅可以在ODPS SQL節點中使用,還可以在資料分析SQL查詢中使用。