全部產品
Search
文件中心

Dataphin:建立使用者自訂函數

更新時間:Aug 14, 2025

離線計算函數用於管理離線計算任務代碼開發過程中用到的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外部項目不支援建立自訂函數。

操作步驟

  1. 在Dataphin首頁的頂部功能表列中,選擇研發 > 資料研發

  2. 在頂部功能表列選擇專案(Dev-Prod模式需要選擇環境)。

  3. 在左側導覽列中選擇資料處理 > 函數

  4. 在右側函數列表中單擊image表徵圖,選擇目標類型函數。

  5. 建立函數對話方塊中,配置以下參數。

    參數

    描述

    名稱

    填寫函數名稱。名稱支援英文、數字、底線(_),且首字元必須為英文字母。

    說明

    同一專案中,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函數目錄下的子目錄。

  6. 資訊配置完成後單擊提交,在彈出的對話方塊中填寫提交備忘,完成後單擊確認並提交

    說明
    • 如果自訂函數引用的資源有更新,則需重新提交自訂函數,這樣註冊至計算引擎的自訂函數才會更新。

    • 提交成功後,相關引用任務自動引用新版對象,可能導致任務不可用,請及時檢查。

    您可以通過即席查詢(請參見查詢並下載資料),編寫SQL代碼(SQL代碼中引用該函數)驗證函式是否符合預期效果。SQL查詢語句樣本如下。 

    select   
    get_week_date("20170810",0,2),--擷取8月10日本周周二日期。
    from  cndata.dual

後續步驟

  • 如果專案的模式為Dev-Prod,則您需要發布資源至生產環境。具體操作,請參見管理髮布任務

  • 如果您的開發模式是Basic模式,則提交成功後,即可使用自訂的函數進行計算任務開發。更多資訊,請參見資料開發概述