離線計算函數用於管理離線計算任務代碼開發過程中用到的SQL函數,包括計算引擎源常用且系統預設支援的函數和使用者自訂函數,前者不支援編輯操作。本文為您介紹如何建立使用者自訂函數。
前提條件
完成資源的建立,詳情請參見上傳資源及引用。
背景資訊
Dataphin系統根據函數類型定義了函數的目錄,協助您更好地管理函數。
不同計算引擎所支援建立的函數類型不同。
計算引擎類型
支援函數
離線引擎
MaxCompute
MAXC函數
Hologres
不支援自訂函數
Hadoop
Hadoop函數(Hive函數)、Impala函數
TDH Inceptor
不支援自訂函數
ADB for PostgreSQL
ADB函數
SelectDB
不支援自訂函數
Doris
不支援自訂函數
即時引擎
Alibaba Blink
FLINK函數
Ververica Flink
FLINK函數
開源Flink
FLINK函數
MaxCompute外部項目不支援建立自訂函數。
操作步驟
在Dataphin首頁的頂部功能表列中,選擇研發 > 資料研發。
在頂部功能表列選擇專案(Dev-Prod模式需要選擇環境)。
在左側導覽列中選擇資料處理 > 函數。
在右側函數列表中單擊
表徵圖,選擇目標類型函數。在建立函數對話方塊中,配置以下參數。
參數
描述
名稱
填寫函數名稱。名稱支援英文、數字、底線(_),且首字元必須為英文字母。
說明同一專案中,Impala函數和Hive函數的名稱不得與該專案內任意目錄中的自訂函數同名。
選擇資源
選擇資源檔。下拉式清單中提供的是匹配當前專案的資源名稱。
說明僅支援選擇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