Freigeben über


NotebookUtils-Laufzeitkontext für Fabric

Verwenden Sie notebookutils.runtime zum Lesen von Kontextinformationen zur Sitzung des aktuellen Notizbuchs. Sie können Metadaten wie den Notizbuchnamen, Details zum Arbeitsbereich, die Standardkonfiguration für Lakehouse, Pipelineausführungskennzeichnungen und die Referenzlaufs-Hierarchie abrufen, ohne den Zustand zu ändern.

Verwenden Sie den Laufzeitkontext für:

  • Dynamische Konfiguration – Anpassen des Notizbuchverhaltens basierend auf der Ausführungsumgebung.
  • Bedingte Logik – Verzweigungslogik, je nachdem, ob das Notizbuch in einer Pipeline oder interaktiv ausgeführt wird.
  • Debuggen und Überwachen – Fügen Sie Kontexteigenschaften in die Protokollausgabe ein und korrelieren Sie zugehörige Ausführungen.
  • Prüfpfade – Erfassen Sie Ausführungsmetadaten für die Compliance- und Abstammungsverfolgung.

Hinweis

Laufzeitkontext ist in Python-, PySpark-, Scala- und R-Notizbüchern verfügbar. Der Kontext ist schreibgeschützt – Sie können keine der von notebookutils.runtime.context zurückgegebenen Eigenschaften ändern. Einige Eigenschaften werden nur in bestimmten Kontexten ausgefüllt, wie z. B. bei Referenzläufen oder Pipeline-Durchläufen, und können andernfalls null oder leere Werte zurückgeben.

Sitzungskontext anzeigen

Verwenden Sie notebookutils.runtime.context, um Kontextinformationen für die aktuelle Sitzung anzuzeigen, einschließlich des Notizbuchnamens, des Standard-Lakehouse, Informationen zum Arbeitsbereich und ob die Sitzung in einer Pipeline ausgeführt wird.

notebookutils.runtime.context

In der folgenden Tabelle werden die verfügbaren Eigenschaften beschrieben.

Eigentum Typ Beschreibung Verfügbarkeit
currentNotebookName String Der Name des aktuellen Notizbuchs. Alle Kontexte
currentNotebookId String Die eindeutige ID des aktuellen Notizbuchs. Alle Kontexte
currentWorkspaceName String Der Name des aktuellen Arbeitsbereichs. Alle Kontexte
currentWorkspaceId String Die ID des aktuellen Arbeitsbereichs. Alle Kontexte
defaultLakehouseName String Der Anzeigename des Standard-Lakehouse, falls definiert. Wenn das Standardseehaus angefügt ist
defaultLakehouseId String Die ID des Standard-Lakehouse, falls definiert. Wenn das Standardseehaus angefügt ist
defaultLakehouseWorkspaceName String Der Name des Arbeitsbereichs des Standard-Lakehouse, falls definiert. Wenn das Standardseehaus angefügt ist
defaultLakehouseWorkspaceId String Die Arbeitsbereichs-ID des Standard-Lakehouses, sofern definiert. Wenn das Standardseehaus angefügt ist
currentRunId String Bei einem Referenzlauf die aktuelle Lauf-ID. Referenzläufe werden nur durchgeführt
parentRunId String Bei einem Referenzlauf mit geschachtelten Läufen ist diese ID die übergeordnete Lauf-ID. Geschachtelter Verweis wird nur ausgeführt
rootRunId String Bei einer Referenzausführung mit geschachtelten Läufen ist diese ID die Stammausführungs-ID. Geschachtelter Verweis wird nur ausgeführt
isForPipeline Boolean Gibt an, ob der Durchlauf für eine Pipeline gilt. Alle Kontexte
isForInteractive Boolean Gibt an, ob es sich bei der Ausführung um eine interaktive Sitzung handelt. Alle Kontexte
isReferenceRun Boolean Ob der aktuelle Lauf ein Referenzlauf ist. Alle Kontexte
referenceTreePath String Die Baumstruktur der geschachtelten Referenzläufe wird nur für die Schnappschusshierarchie auf der L2-Überwachungsseite verwendet. Geschachtelter Verweis wird nur ausgeführt
rootNotebookId String Die ID des Root-Notebooks in einem Referenzlauf. Verweis wird nur ausgeführt
rootNotebookName String Der Name des Stammnotizbuchs in einem Referenzdurchlauf. Nur Referenzläufe
rootWorkspaceId String Die Arbeitsbereichs-ID des Root-Notebooks in einer Referenzausführung. Referenzläufe nur
rootWorkspaceName String Der Name des Arbeitsbereichs des Stammnotizbuchs in einem Referenzlauf. Verweis wird nur ausgeführt
activityId String Die Livy Job ID für die aktuelle Tätigkeit. Alle Kontexte
hcReplId String Die REPL-ID im Modus "Hohe Parallelität". Nur hoher Parallelitätsmodus
clusterId String Die Identität des Synapse Spark-Clusters. Alle Kontexte
poolName String Der Name des verwendeten Spark-Pools. Alle Kontexte
environmentId String Die Umgebungs-ID, in der der Auftrag ausgeführt wird. Alle Kontexte
environmentWorkspaceId String Die Arbeitsbereichs-ID der Umgebung. Alle Kontexte
userId String Die Benutzer-ID des aktuellen Benutzers. Alle Kontexte
userName String Der Benutzername des aktuellen Benutzers. Alle Kontexte
currentKernel String Der Name des aktuellen Notebook-Kernels. Nur Python Notebook
productType String Der Produkttypbezeichner (z. B Fabric. ). Alle Kontexte

Verwendungsbeispiele

Zugreifen auf grundlegende Kontextinformationen

Speichern Sie das Kontextobjekt zwischen, wenn Sie mehrere Eigenschaften auslesen müssen.

context = notebookutils.runtime.context

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

Überprüfen der Pipeline im Vergleich zur interaktiven Ausführung

Verwenden Sie das isForPipeline Flag, um die Logik abhängig vom Ausführungsmodus zu verzweigen. Sie können z. B. eine strengere Fehlerbehandlung in Pipelineausführungen anwenden.

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

Tipp

Verwenden Sie isForPipeline und isReferenceRun zusammen, um eine dreiwegige Verzweigung für verschiedene Ausführungskontexte zu implementieren. Mit diesem Muster können Sie die Anzahl der Wiederholungen, die Ausführlichkeit der Protokollierung und die Strategien zur Fehlerbehandlung anpassen. Für Produktionsworkloads erfordern Pipeline- und Referenzausführungen in der Regel eine strengere Fehlerbehandlung als interaktive Sitzungen.

Überprüfen Sie die Referenzlaufhierarchie

Wenn ein Notizbuch als Teil einer geschachtelten Referenzausführung ausgeführt wird, können Sie die vollständige Hierarchie von der aktuellen Ausführung zurück zum Stamm nachverfolgen:

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")

Kontext in die Protokollierung einschließen

Optimieren Sie Protokollnachrichten mit Ausführungskontext, um das Debuggen und Überwachen zu vereinfachen:

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")