Condividi tramite


Contesto di runtime NotebookUtils per Fabric

Usare notebookutils.runtime per leggere le informazioni di contesto sulla sessione del notebook corrente. È possibile recuperare metadati come il nome del notebook, i dettagli dell'area di lavoro, la configurazione lakehouse predefinita, i flag di esecuzione della pipeline e la gerarchia di esecuzione dei riferimenti senza modificare alcuno stato.

Usare il contesto di runtime per:

  • Configurazione dinamica : adattare il comportamento del notebook in base all'ambiente di esecuzione.
  • Logica condizionale – Logica ramificata, a seconda che il notebook venga eseguito in una pipeline o in modalità interattiva.
  • Debug e monitoraggio : includere le proprietà del contesto nell'output del log e correlare le esecuzioni correlate.
  • Audit trails: acquisisci i metadati di esecuzione per il rilevamento della conformità e della tracciabilità.

Annotazioni

Il contesto di runtime è disponibile nei notebook Python, PySpark, Scala e R. Il contesto è di sola lettura. Non è possibile modificare le proprietà restituite da notebookutils.runtime.context. Alcune proprietà vengono popolate solo in contesti specifici, ad esempio esecuzioni di riferimenti o esecuzioni di pipeline, e potrebbero restituire null o vuoti valori in caso contrario.

Visualizzare il contesto della sessione

Usare notebookutils.runtime.context per visualizzare le informazioni sul contesto per la sessione corrente, inclusi il nome del notebook, il lakehouse predefinito, le informazioni sull'area di lavoro e se la sessione viene eseguita in una pipeline.

notebookutils.runtime.context

Nella tabella seguente vengono descritte le proprietà disponibili.

Proprietà Tipo Descrizione Disponibilità
currentNotebookName String Nome del notebook corrente. Tutti i contesti
currentNotebookId String ID univoco del notebook corrente. Tutti i contesti
currentWorkspaceName String Nome dell'area di lavoro corrente. Tutti i contesti
currentWorkspaceId String ID dell'area di lavoro corrente. Tutti i contesti
defaultLakehouseName String Il nome visualizzato del lakehouse predefinito, se definito. Quando il lakehouse predefinito è collegato
defaultLakehouseId String ID del lakehouse predefinito, se definito. Quando il lakehouse predefinito è collegato
defaultLakehouseWorkspaceName String Nome dell'area di lavoro del lakehouse predefinito, se definito. Quando il lakehouse predefinito è collegato
defaultLakehouseWorkspaceId String ID area di lavoro del lakehouse predefinito, se definito. Quando il lakehouse predefinito è collegato
currentRunId String In un'esecuzione di riferimento l'ID esecuzione corrente. Solo esecuzioni di riferimento
parentRunId String Nell'ambito di un'esecuzione di riferimento con esecuzioni annidate, questo ID è l'ID di esecuzione padre. Solo esecuzioni di riferimenti annidati
rootRunId String In un'esecuzione di riferimento con esecuzioni annidate, questo ID è l'ID di esecuzione radice. Solo esecuzioni di riferimenti annidati
isForPipeline Booleano Indica se l'esecuzione della pipeline è prevista. Tutti i contesti
isForInteractive Booleano Indica se l'esecuzione è una sessione interattiva. Tutti i contesti
isReferenceRun Booleano Indica se l'esecuzione corrente è un'esecuzione di riferimento. Tutti i contesti
referenceTreePath String Struttura ad albero delle sequenze di riferimenti annidati, utilizzata solo per la gerarchia degli snapshot nella pagina di monitoraggio di L2. Solo esecuzioni di riferimenti annidati
rootNotebookId String ID del notebook root in un'esecuzione di riferimento. Solo esecuzioni di riferimento
rootNotebookName String Nome del notebook radice in un'esecuzione di riferimento. Solo esecuzioni di riferimento
rootWorkspaceId String ID dell'area di lavoro del notebook principale in un'esecuzione di riferimento. Solo esecuzioni di riferimento
rootWorkspaceName String Nome dell'area di lavoro del notebook principale in un'esecuzione di riferimento. Solo esecuzioni di test
activityId String ID del job Livy per l'attività corrente. Tutti i contesti
hcReplId String ID REPL in modalità ad alta concorrenza. Solo modalità di concorrenza elevata
clusterId String Identità del cluster Synapse Spark. Tutti i contesti
poolName String Nome del pool di Spark in uso. Tutti i contesti
environmentId String ID dell'ambiente in cui è in esecuzione il processo. Tutti i contesti
environmentWorkspaceId String ID dell'area di lavoro del contesto. Tutti i contesti
userId String ID utente dell'utente corrente. Tutti i contesti
userName String Nome utente dell'utente corrente. Tutti i contesti
currentKernel String Nome del kernel del notebook corrente. Solo notebook di programmazione Python
productType String Identificatore del tipo di prodotto , ad esempio Fabric. Tutti i contesti

Esempi di utilizzo

Accedere alle informazioni di base sul contesto

Memorizzare nella cache l'oggetto contesto quando è necessario leggere più proprietà.

context = notebookutils.runtime.context

print(f"Notebook: {context['currentNotebookName']}")
print(f"Workspace: {context['currentWorkspaceName']}")
print(f"Lakehouse: {context['defaultLakehouseName'] or 'None'}")

Controllare la pipeline rispetto all'esecuzione interattiva

Usare il flag isForPipeline per diramare la logica in base alla modalità di esecuzione. Ad esempio, è possibile applicare una gestione degli errori più rigorosa nelle esecuzioni della pipeline.

context = notebookutils.runtime.context

if context['isForPipeline']:
    print("Pipeline mode: Strict error handling")
    error_handling = "strict"
    max_retries = 3
elif context['isReferenceRun']:
    print("Running as a referenced notebook")
    error_handling = "strict"
    max_retries = 2
else:
    print("Interactive mode: Lenient error handling")
    error_handling = "lenient"
    max_retries = 1

Suggerimento

Usare isForPipeline e isReferenceRun insieme per implementare la diramazione a tre vie per contesti di esecuzione diversi. Questo modello consente di personalizzare i tentativi di ripetizione, la verbosità dei log e le strategie di gestione degli errori. Per i carichi di lavoro di produzione, le esecuzioni di pipeline e riferimenti richiedono in genere una gestione degli errori più rigorosa rispetto alle sessioni interattive.

Ispezionare la gerarchia della corsa di riferimento

Quando un notebook viene eseguito come parte di un'esecuzione di riferimento annidata, è possibile tracciare la gerarchia completa dall'esecuzione corrente alla radice:

context = notebookutils.runtime.context

if context['isReferenceRun']:
    print("Reference Run Context:")
    print(f"  Current Run ID: {context['currentRunId']}")
    print(f"  Parent Run ID: {context['parentRunId']}")
    print(f"  Root Run ID: {context['rootRunId']}")
    print(f"  Root Notebook: {context['rootNotebookName']}")
else:
    print("Not a reference run")

Includere il contesto nella registrazione

Arricchire i messaggi di log con il contesto di esecuzione per semplificare il debug e il monitoraggio:

context = notebookutils.runtime.context

run_id = context.get("currentRunId") or "interactive"
log_prefix = (
    f"[{context['currentWorkspaceName']}/{context['currentNotebookName']}]"
    f" run={run_id}"
)

print(f"{log_prefix} Processing started")