如果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函數管理。
注冊函數
進入數據開發頁面。
登錄DataWorks控制臺,切換至目標地域后,單擊左側導航欄的 ,在下拉框中選擇對應工作空間后單擊進入數據開發。
創建業務流程,詳情請參見創建周期業務流程。
新建函數。
打開相應的業務流程,右鍵單擊MaxCompute,選擇新建函數。
在新建函數對話框中,輸入名稱,并選擇路徑。
單擊新建。
在注冊函數對話框中,配置各項參數。
參數
描述
函數類型
選擇函數類型,包括數學運算函數、聚合函數、字符串處理函數、日期函數、窗口函數和其他函數。更多詳情請參見使用內建函數。
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
。說明填寫資源名稱時,無需添加.jar或.py后綴。
資源需要提交并發布后才可以使用,詳情請參見創建并使用MaxCompute資源。
資源列表
選擇注冊函數所需使用的資源。
可視化模式:僅支持選擇已上傳或添加至DataWorks的資源。
腳本模式:支持選擇相應MaxCompute引擎中的所有資源。
說明無需填寫已添加的資源的路徑。
如果UDF中調用了多個資源,則多個資源使用英文逗號(,)分隔。
描述
針對當前UDF作用的簡單描述。
命令格式
該UDF的具體使用方法示例,例如
test
。參數說明
支持輸入的參數類型以及返回參數類型的具體說明。
返回值
返回值,例如1,非必填項。
示例
函數中的示例,非必填項。
單擊工具欄中的圖標,保存函數。
提交函數。
單擊工具欄中的圖標。
在提交對話框中,輸入變更描述。
單擊確認。
查看在MaxCompute計算引擎中存在的函數、函數的變更歷史等操作,詳情請參見MaxCompute函數管理。
查看函數版本與回滾
右鍵單擊相應函數名稱,單擊歷史版本,即可查看函數歷史版本信息或執行回滾操作。
節點中使用自定義函數
可直接使用自定義函數名稱,您可選中資源,右鍵引用函數,在當前節點編輯頁面快速生成自定義函數名稱。
附錄一:查看自定義函數列表
使用
SHOW FUNCTIONS
命令可以列出與DataWorks工作空間的數據開發綁定的MaxCompute計算引擎項目中所有已注冊的自定義函數。MaxCompute自身內置了諸多函數,詳情請參見:內建函數概述。
//查看當前項目下的函數。
SHOW FUNCTIONS;
附錄二:查看自定義函數詳情
可以使用
DESCRIBE
或簡寫的DESC
命令,后跟函數名來查看自定義函數的詳細信息。//使用簡寫形式查看自定義函數的詳細信息 DESC FUNCTION <function_name>;
在DataWorks中,如果您在業務流程中需要的處理邏輯無法通過現有函數實現,可以編寫MaxCompute自定義函數,并將相應的資源(如JAR包、Python文件等)上傳和關聯,以此來管理和擴充您的數據處理功能。詳情請參見MaxCompute資源管理。
最佳實踐
自定義函數創建完成后,您可參考實現指定用戶訪問特定UDF最佳實踐,實現UDF的訪問權限管控。
相關文檔
MaxCompute支持一鍵打包JAR包、上傳JAR包資源及注冊MaxCompute自定義函數(UDF),詳情請參見打包、上傳及注冊。
在使用Java編寫MaxCompute UDF過程中如遇到問題,詳情請參見Java語言編寫MaxCompute UDF的常見問題。
在使用Python編寫MaxCompute UDF過程中如遇到問題,詳情請參見Python語言編寫MaxCompute UDF的常見問題。
常見問題
Q:通過DataWorks上傳的資源并定義為UDF函數后,除了在數據開發中供ODPS SQL節點使用外,是否可以在數據分析SQL查詢中使用?
A:可以,通過DataWorks注冊的UDF函數,實際是存儲在MaxCompute項目中,因此,不僅可以在ODPS SQL節點中使用,還可以在數據分析SQL查詢中使用。