Condividi tramite


Aggiungere una risorsa di funzione definita dall'utente a un'app Databricks

Aggiungere funzioni definite dall'utente registrate in Unity Catalog come risorse di Databricks Apps per consentire all'app di eseguire funzioni SQL e Python registrate. Le funzioni definite dall'utente forniscono logica di business riutilizzabile, trasformazioni dei dati e operazioni personalizzate che possono essere condivise nell'intera organizzazione con governance centralizzata.

Requisiti dei privilegi

Per eseguire una funzione definita dall'utente, l'entità servizio dell'app deve avere il USE CATALOG privilegio sul catalogo padre, il USE SCHEMA privilegio sullo schema padre e il EXECUTE privilegio sulla funzione. Quando si aggiunge la risorsa UDF, Azure Databricks concede automaticamente questi privilegi al principal del servizio dell'app.

Affinché questa concessione automatica abbia esito positivo, è necessario che uno dei seguenti sia true per ogni privilegio:

  • Per USE CATALOG: Tutti gli utenti dell'account hanno il USE CATALOG privilegio sul catalogo, oppure tu hai il MANAGE privilegio sul catalogo.
  • Per USE SCHEMA: tutti gli utenti dell'account hanno il USE SCHEMA privilegio per lo schema oppure si dispone del MANAGE privilegio per lo schema.
  • Per EXECUTE: tutti gli utenti dell'account hanno il EXECUTE privilegio sulla funzione oppure hai il MANAGE privilegio sulla funzione.

Vedere i privilegi e gli oggetti proteggibili di Unity Catalog.

Aggiungere una risorsa UDF (User-Defined Function)

Prima di aggiungere una funzione definita dall'utente (UDF) come risorsa, esaminare i prerequisiti della risorsa dell'app.

  1. Quando si crea o si modifica un'app, passare al passaggio Configura .
  2. Nella sezione Risorse dell'app fare clic su + Aggiungi risorsa.
  3. Selezionare la funzione UC come tipo di risorsa.
  4. Scegliere una UDF dalle funzioni disponibili nella propria area di lavoro. La funzione deve essere già registrata in Unity Catalog.
  5. Selezionare il livello di autorizzazione per l'app:
    • Può eseguire: Concede all'app l'autorizzazione di eseguire la funzione definita dall'utente con i parametri forniti. Corrisponde al EXECUTE privilegio.
  6. (Facoltativo) Specificare una chiave di risorsa personalizzata, che consente di fare riferimento alla funzione definita dall'utente (UDF) nella configurazione dell'app. La chiave predefinita è function.

Variabili di ambiente

Quando si distribuisce un'app con una risorsa UDF, Azure Databricks espone il nome completo a tre livelli tramite variabili di ambiente a cui è possibile fare riferimento usando il valueFrom campo .

Configurazione di esempio:

env:
  - name: UC_FUNCTION_NAME
    valueFrom: function # Use your custom resource key if different

Uso della funzione nell'applicazione:

import os
from databricks.sdk import WorkspaceClient

# Access the function name
function_name = os.getenv("UC_FUNCTION_NAME")

# Initialize workspace client
w = WorkspaceClient()

# Execute the function via SQL
result = w.statement_execution.execute_statement(
    warehouse_id="your_warehouse_id",
    statement=f"SELECT {function_name}('parameter_value')"
)

# Process the result
print(f"Function result: {result}")

Per altre informazioni, vedere Usare le variabili di ambiente per accedere alle risorse.

Rimuovere una risorsa di funzione definita dall'utente

Quando si rimuove una risorsa UDF da un'app, il principale del servizio dell'app perde l'accesso alla funzione. La funzione definita dall'utente rimane invariata e continua a essere disponibile per altri utenti e applicazioni con autorizzazioni appropriate.

Procedure consigliate

Quando si lavora con le risorse di funzioni definite dall'utente, tenere presente quanto segue:

  • Assicurarsi che le funzioni definite dall'utente siano ben documentate con descrizioni chiare dei parametri e dei tipi di ritorno.
  • Gestisci con attenzione gli errori UDF nel codice della tua app, inclusa la convalida dei parametri e la gestione delle eccezioni.
  • Testare il comportamento delle UDF nel contesto dell'app prima della distribuzione per verificare i risultati previsti.
  • Considerare le dipendenze delle funzioni definite dall'utente nelle tabelle o nelle origini dati sottostanti al momento di pianificare le autorizzazioni dell'app.