如果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查詢中使用。