離線計算函數用于管理離線計算任務代碼開發過程中用到的SQL函數,包括計算引擎源常用且系統默認支持的函數和用戶自定義函數,前者不支持編輯操作。本文為您介紹如何新建用戶自定義函數。
前提條件
完成資源的創建,詳情請參見上傳資源及引用。
背景信息
Dataphin系統根據函數類型定義了函數的目錄,幫助您更好地管理函數。
操作步驟
請參見數據開發入口,進入數據開發頁面。
按照下圖操作指引,進入新建函數對話框。
系統支持新建的函數類型,根據Dataphin系統的計算引擎不同而不同:
計算引擎類型
支持函數
離線引擎
MaxCompute
MAXC函數
Hologres
不支持自定義函數
Hadoop
Hadoop函數(Hive函數)、Impala函數
TDH Inceptor
不支持自定義函數
ADB for PostgreSQL
ADB函數
實時引擎
Alibaba Blink
FLINK函數
Ververica Flink
FLINK函數
開源Flink
FLINK函數
說明當前項目如果綁定的為MaxCompute外部項目,則不支持創建自定義函數。
在新建函數對話框,配置參數。
參數
描述
名稱
填寫名稱。名稱由字母,數字,下劃線(_)組合組成,且首字符僅限英文字母。
選擇資源
選擇資源文件。下拉列表中提供的是匹配當前項目的資源名稱。
說明當前,僅支持選擇PYTHON、JAR格式的文件進行定義函數。
選擇多個資源時,僅限選擇同一種資源類型。
如果您還沒有資源,則需創建資源。具體操作,請參見上傳資源及引用。
編程語言
Impala支持C++和Java定義的函數。若您需定義Impala函數,請根據您的資源類型選擇對應的編程語言。
類名
填寫類名。針對計算類型中的資源,提取資源中類的內容,例如
test_udf.UDFGETSrcId
。類型
選擇類型,下拉列表中可供選擇的類型包含窗口、統計、數值、字符串、時間、ip地址相關函數、URL、編譯碼、業務、其他。
注冊函數
若您需定義Impala函數且資源的編程語言為C++,請輸入創建Impala函數的語句。注冊函數需要滿足以下的語法,Location語句后端兼容使用資源文件進行替代。
創建c++標量函數
CREATE FUNCTION [IF NOT EXISTS] [db_name.]function_name([arg_type[, arg_type...]) RETURNS return_type SYMBOL='symbol_name'
創建C++聚合函數
CREATE [AGGREGATE] FUNCTION [IF NOT EXISTS] [db_name.]function_name([arg_type[, arg_type...]) RETURNS return_type [INTERMEDIATE type_spec] [INIT_FN='function'] UPDATE_FN='function' MERGE_FN='function' [PREPARE_FN='function'] [CLOSEFN='function'] [SERIALIZE_FN='function'] [FINALIZE_FN='function']
更多信息,請參見用戶定義函數 (UDF)。
命令格式
填寫命令格式。命令格式即函數引用格式,例如:
bigintweekday (datetime date)
。使用文檔
填寫函數使用描述,例如:
select get_week_date("20170810",0,2),--獲取8月10日,本周周二日期。 from cndata.dual
選擇目錄
系統默認為當前函數類型的目錄。如果您需要修改,則系統僅支持修改該函數類型目錄下的子目錄。
例如,您新建的是MAXC函數,則系統自動為您選中MAXC函數為目錄。如果您需要修改目錄, 則系統僅支持選擇MAXC函數目錄下的子目錄。
按照下圖操作指引,提交用戶自定義函數。
說明如果自定義函數引用的資源有更新,則需重新提交自定義函數,這樣注冊至計算引擎的自定義函數才會更新。
提交成功后,相關引用任務自動引用新版對象,可能導致任務不可用,請及時檢查。
您可以通過即席查詢(請參見查詢并下載數據),編寫SQL代碼(SQL代碼中引用該函數)驗證函數是否符合預期效果。SQL查詢語句示例如下。
select get_week_date("20170810",0,2),--獲取8月10日本周周二日期。 from cndata.dual
后續步驟
如果項目的模式為Dev-Prod,則您需要發布資源至生產環境。具體操作,請參見
如果您的開發模式是Basic模式,則提交成功后,即可使用自定義的函數進行計算任務開發。更多信息,請參見數據開發概述。