全部產品
Search
文件中心

MaxCompute:FUNCTION

更新時間:Jun 19, 2024

SQL語言定義函數作為一種使用者自訂函數(UDF),彌補了MaxCompute只能用Java或Python建立UDF的不足,還擴充了UDF入參的參數類型,可支援函數類型的入參參數,提升表達商務邏輯的靈活性。SQL UDF支援永久UDF和臨時UDF,本文為您介紹通過FUNCTION命令建立的臨時SQL UDF詳情。

注意事項

  • 使用SQL定義UDF時,您需要使用SQL指令碼模式進行操作,普通SQL編輯模式可能會導致定義報錯的問題。

    說明

    MaxCompute的SQL指令碼模式介紹及使用指導請參見SQL指令碼模式

  • MaxCompute支援通過function命令建立SQL UDF,且通過此命令建立的UDF為臨時SQL UDF,即建立完成後不會存入MaxCompute的Meta系統,因此無法在MaxCompute的函數列表中查詢到此UDF,後續僅支援在當前SQL指令碼中調用此臨時UDF,其他環境中無法直接調用此UDF。

    說明

    建立永久SQL UDF的詳情請參見CREATE SQL FUNCTION

  • 使用SQL定義UDF時,UDF入參的參數類型需為MaxCompute支援的資料類型,支援的資料類型請參見2.0資料類型版本;在UDF建立完成後,在調用SQL UDF時,請確保調用時的入參與定義UDF的入參參數類型保持一致。

  • 在建立、查詢、調用、刪除SQL自訂函數時,操作的阿里雲帳號需要具備Function層級的許可權。更多Function許可權及授權操作,請參見MaxCompute許可權

命令格式

function <function_name>(@<parameter_in1> <datatype>[, @<parameter_in2> <datatype>...]) 
[returns @<parameter_out> <datatype>] 
as [begin] 
<function_expression> 
[end];

參數說明

  • function_name:必填。建立的SQL語言定義函數的名稱。函數名稱需要在專案內唯一,同名函數只能註冊一次,且不能與系統內建函數同名。您可以通過LIST FUNCTIONS命令查看專案下的全部函數,來檢查是否有同名函數。

  • parameter_in:必填。函數的輸入參數。入參支援函數型別參數(包括匿名函數)。入參為函數類型的樣本詳情請參見SQL UDF樣本:入參為函數,匿名函數類型的入參樣本詳情請參見建立SQL UDF樣本:入參為匿名函數

  • datatype:必填。定義函數的輸入參數的資料類型,支援的資料類型請參見2.0資料類型版本

  • returns:可選。定義UDF的傳回值變數。如果不指定,預設返回function_name的同名變數。

  • parameter_out:必填。定義UDF的返回參數。

  • function_expression:必填。定義UDF的運算式(實現邏輯)。

使用樣本

function my_add(@a BIGINT) as @a + 1;

相關命令

  • CREATE SQL FUNCTION:建立永久SQL UDF並存入Meta系統後,所有的查詢操作都可以調用該函數。

  • DESC FUNCTION:通過FUNCTION命令建立的臨時SQL UDF無法通過DESC FUNCTION來查看,DESC FUNCTION可以查看MaxCompute專案中永久儲存的自訂函數的資訊,包含函數名稱、所有者、建立時間、類名和資源清單資訊。

  • DROP FUNCTION:在MaxCompute專案中登出登入的自訂函數。

  • SELECT FUNCTION:調用SQL UDF,臨時SQL UDF僅支援在同指令碼中調用,其他查詢環境無法調用臨時SQL UDF。