用戶定義的函數(udf)的聯合目錄

重要的

這個特性是在公共預覽和需要磚運行時13.2及以上。

磚注冊定製函數提供了sql native的語法模式由統一目錄。標準創建函數SQL語法支持統一目錄計算磚。在磚pro或serverless SQL倉庫和運行時13.2及以上,可以在函數注冊統一目錄包含Python代碼。

請注意

從查詢視圖注冊使用udf必須使用支持計算。典型的SQL倉庫和磚運行時版本13.1及以下不能解決視圖包含udf注冊統一目錄。

完整的SQL語言參考,看看創建函數(SQL和Python)

信息如何統一目錄管理權限功能,看看創建函數

重要的

Python udf注冊為函數統一目錄不同範圍和支持筆記本或SparkSession PySpark udf範圍。看到用戶自定義標量函數——Python

定製的SQL函數統一目錄

當您創建一個SQL函數計算配置為使用統一目錄,該函數注冊到當前活躍的默認模式。下麵的例子演示了語法你可以使用聲明一個目標目錄和模式的新功能:

創建函數target_catalogtarget_schemaroll_dice()返回INT語言SQL確定的包含SQL評論“一個六麵骰子滾”返回(蘭德()*6)::INT+1;

所有用戶有足夠的特權在功能上可以使用的函數在計算環境中配置為統一目錄,如以下示例:

選擇target_catalogtarget_schemaroll_dice()

請注意

您可以使用udf使用語言SQL返回表或標量值。

注冊一個Python UDF統一目錄

在磚運行時13.1及以上的,您可以使用SQL創建函數聲明注冊標量Python udf統一目錄。

重要的

隻有專業和serverless SQL倉庫支持Python udf統一目錄。

Python udf是為了提供完整的Python的表現力直接在SQL函數,允許自定義的操作,比如先進的轉換、數據屏蔽,散列。

Python udf執行在一個安全的,孤立的環境,沒有訪問文件係統或內部服務。

上運行的Python udf serverless計算沒有訪問網絡。

看到udf是最有效的?

請注意

語法和語義的Python udf統一目錄不同於Python udf SparkSession注冊。看到用戶自定義標量函數——Python

Python udf統一目錄使用語句由雙美元符號($ $以下代碼示例),如:

target_catalog.target_schema創建函數。問候(s STRING) RETURNS STRING LANGUAGE PYTHON AS $$ return f"Hello, {s}" $$

下麵的示例演示如何使用這個函數來返回所有名稱存儲在問候語句first_name列一個表學生:

選擇target_catalogtarget_schema問候(first_name)學生;

您可以定義任意數量的Python函數在一個Python UDF,但必須返回標量值。

Python函數必須處理獨立的價值觀,和所有類型映射必須遵循磚SQL語言映射

您可以導入標準Python庫包括磚,但你不能包括自定義庫或外部依賴。

如果沒有指定目錄或模式,Python udf注冊當前的活動模式。

下麵的例子進口一個圖書館,在Python UDF使用多個函數:

創建函數roll_dice (num_dice整數,num_sides整數)返回整數語言PYTHON一樣$ $進口numpy np def roll_die (num_sides):返回np.random.randint (num_sides) + 1 def sum_dice (num_dice num_sides):返回總和([roll_die (num_sides) x範圍(num_dice)])返回sum_dice (num_dice num_side) $ $