Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verwenden Sie notebookutils.notebook, um Notizbuchelemente in Microsoft Fabric programmgesteuert zu verwalten. Sie können Notizbuchartefakte erstellen, abrufen, aktualisieren, löschen und auflisten, um Bereitstellungs-, Lebenszyklusverwaltungs- und CI/CD-Workflows zu automatisieren.
Hinweis
Diese APIs werden nur in Fabric-Notizbüchern unterstützt, nicht in Azure Synapse. Sie müssen über entsprechende Berechtigungen im Zielarbeitsbereich für jeden Vorgang verfügen.
In der folgenden Tabelle sind die verfügbaren Notizbuchverwaltungsmethoden aufgeführt:
| Methode | Signature | Beschreibung |
|---|---|---|
create |
create(name, description, content, defaultLakehouse, defaultLakehouseWorkspace, workspaceId): Artifact |
Erstellt ein neues Notizbuch. |
get |
get(name, workspaceId): Artifact |
Ruft ein Notizbuch anhand des Namens oder der ID ab. |
getDefinition |
getDefinition(name, workspaceId, format): String |
Ruft die Notizbuchdefinition (Inhalt) ab. |
update |
update(name, newName, description, workspaceId): Artifact |
Aktualisiert die Notizbuchmetadaten. |
updateDefinition |
updateDefinition(name, content, defaultLakehouse, defaultLakehouseWorkspace, workspaceId, environmentId, environmentWorkspaceId): bool |
Aktualisiert die Notebook-Definition und das Lakehouse. |
delete |
delete(name, workspaceId): Boolean |
Löscht ein Notebook |
list |
list(workspaceId, maxResults): Array[Artifact] |
Listet alle Notizbücher in einem Arbeitsbereich auf. |
Erstellen eines Notizbuchs
Verwenden Sie notebookutils.notebook.create(), um ein neues Notizbuch-Objekt im aktuellen Arbeitsbereich oder einem angegebenen Arbeitsbereich zu erstellen.
Hinweis
Workflowbeispiele in diesem Artikel, in denen Dateien gelesen oder geschrieben .ipynb werden, verwenden Python für Dateiein-/-ausgabe. Die Kern-APIs notebookutils.notebook sind in Python, PySpark, Scala und R verfügbar, sofern nicht anders angegeben.
Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name |
String | Ja | Anzeigename für das neue Notizbuch. Muss innerhalb des Arbeitsbereichs eindeutig sein. |
description |
String | No | Beschreibung des Notizbuchs. Standardmäßig leer. |
content |
Zeichenfolge, Bytes oder Diktat | Ja | Notizbuchinhalt im gültigen .ipynb JSON-Format. Kann auch unformatierte Bytes oder ein Diktatobjekt sein.
Darf nicht leer sein. |
defaultLakehouse |
String | No | Name oder ID des Standard-Lakehouses, das angehängt werden soll. |
defaultLakehouseWorkspace |
String | No | ID des Arbeitsbereichs des Standard-Lakehouse. Lassen Sie für den aktuellen Arbeitsbereich leer. |
workspaceId |
String | No | Zielarbeitsbereichs-ID. Lassen Sie für den aktuellen Arbeitsbereich leer. |
Von Bedeutung
Der content Parameter darf nicht leer sein. Sie müssen beim Erstellen eines Notizbuchs gültige .ipynb Formatinhalte bereitstellen. Stellen Sie mindestens eine gültige leere Notizbuchstruktur bereit:
{
"cells": [],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
Erstellen eines Notizbuchs aus einer Vorlage
# Read notebook template from a file
with open("/path/to/template.ipynb", "r") as f:
notebook_content = f.read()
# Create the notebook
notebook = notebookutils.notebook.create(
name="ProcessingNotebook",
description="Data processing notebook from template",
content=notebook_content
)
print(f"Created notebook: {notebook.displayName} (ID: {notebook.id})")
Erstellen eines Notizbuchs mit einem Standardseehaus
# Minimum valid notebook content - content cannot be empty
minimal_content = '''{
"cells": [],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}'''
# Create notebook with default lakehouse configuration
notebook = notebookutils.notebook.create(
name="DataAnalysis",
description="Analysis notebook with lakehouse access",
content=minimal_content,
defaultLakehouse="MyLakehouse",
defaultLakehouseWorkspace="" # Current workspace
)
print(f"Created notebook with lakehouse: {notebook.displayName}")
Zurückgegebener Wert
Die create() Methode gibt ein Artifact Objekt mit den folgenden Eigenschaften zurück:
-
displayName: Der Anzeigename des Notizbuchs. -
id: Der eindeutige Bezeichner des erstellten Notizbuchs. -
description: Die Beschreibung des Notizbuchs.
Erstellen eines Notizbuchs in einem anderen Arbeitsbereich
with open("/path/to/notebook.ipynb", "r") as f:
content = f.read()
notebook = notebookutils.notebook.create(
name="SharedNotebook",
description="Notebook for the shared workspace",
content=content,
workspaceId="bbbbbbbb-2222-3333-4444-cccccccccccc"
)
print(f"Created in remote workspace: {notebook.displayName}")
Erstellen mehrerer Notizbücher aus einer Vorlage
# Load template content (must be valid .ipynb)
with open("/path/to/template.ipynb", "r") as f:
template_content = f.read()
regions = ["US", "EU", "Asia"]
created_notebooks = []
for region in regions:
notebook = notebookutils.notebook.create(
name=f"Process_{region}",
description=f"Processing notebook for {region} region",
content=template_content,
defaultLakehouse=f"Lakehouse_{region}"
)
created_notebooks.append(notebook)
print(f"Created: {notebook.displayName}")
print(f"\nCreated {len(created_notebooks)} notebooks")
Tipp
Stellen Sie aussagekräftige Namen und Beschreibungen für Ihre Notizbücher bereit, damit sie leichter zu finden sind. Verwenden Sie eine konsistente Benennungskonvention wie z.B. <Project>_<Purpose>_<Region> für automatisierte Bereitstellungen.
Ein Notizbuch holen
Verwenden Sie notebookutils.notebook.get(), um Notizbuchmetadaten anhand des Namens oder der ID abzurufen. Es gibt ein Artifact Objekt mit Eigenschaften wie displayName, id und description.
Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name |
String | Ja | Name oder ID des abzurufenden Notizbuchs. |
workspaceId |
String | No | Arbeitsbereichs-ID. Lassen Sie für den aktuellen Arbeitsbereich leer. |
Abrufen eines Notizbuchs aus dem aktuellen Arbeitsbereich
notebook = notebookutils.notebook.get("MyNotebook")
print(f"Notebook Name: {notebook.displayName}")
print(f"Notebook ID: {notebook.id}")
print(f"Description: {notebook.description}")
Abrufen eines Notizbuchs aus einem anderen Arbeitsbereich
workspace_id = "bbbbbbbb-2222-3333-4444-cccccccccccc"
notebook = notebookutils.notebook.get("SharedNotebook", workspaceId=workspace_id)
print(f"Retrieved: {notebook.displayName} from workspace {workspace_id}")
Zurückgegebener Wert
Die get() Methode gibt ein Artifact Objekt mit den folgenden Eigenschaften zurück:
-
displayName: Der Anzeigename des Notizbuchs. -
id: Der eindeutige Bezeichner. -
description: Die Beschreibung des Notizbuchs.
Tipp
Verwenden Sie get() vor aktualisierungs- oder Löschvorgängen, um zu überprüfen, ob das Zielnotizbuch vorhanden ist. Sie können es auch verwenden, um zu überprüfen, ob ein Notizbuchname bereits verwendet wird, bevor Sie eine neue erstellen.
Abrufen einer Notizbuchdefinition
Verwenden Sie notebookutils.notebook.getDefinition(), um den vollständigen Notizbuchinhalt im .ipynb-Format abzurufen. Verwenden Sie sie für Sicherung, Migration, Versionssteuerung oder Inhaltsanalyse.
Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name |
String | Ja | Name oder ID des Notizbuchs. |
workspaceId |
String | No | Arbeitsbereichs-ID. Lassen Sie für den aktuellen Arbeitsbereich leer. |
format |
String | No | Ausgabeformat. Wird standardmäßig auf "ipynb" festgelegt. |
Abrufen und Speichern einer Notizbuchdefinition
# Retrieve notebook definition as .ipynb content
notebook_content = notebookutils.notebook.getDefinition("MyNotebook")
# Save to a file for backup
with open("/path/to/backup/MyNotebook.ipynb", "w") as f:
f.write(notebook_content)
print("Notebook definition retrieved and saved")
Abrufen einer Notizbuchdefinition aus einem anderen Arbeitsbereich
workspace_id = "cccccccc-3333-4444-5555-dddddddddddd"
notebook_content = notebookutils.notebook.getDefinition(
name="SharedNotebook",
workspaceId=workspace_id,
format="ipynb"
)
print(f"Retrieved definition from workspace {workspace_id}")
Zurückgegebener Wert
Die getDefinition() Methode gibt eine Zeichenfolge zurück, die den Notizbuchinhalt im .ipynb JSON-Format enthält.
Alle Notizbücher zur Sicherung exportieren
import os
from datetime import datetime
def export_all_notebooks(backup_dir="/path/to/backups"):
"""Export all notebooks in the workspace for backup."""
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
export_dir = f"{backup_dir}/backup_{timestamp}"
os.makedirs(export_dir, exist_ok=True)
notebooks = notebookutils.notebook.list()
print(f"Exporting {len(notebooks)} notebooks to {export_dir}")
exported_count = 0
for nb in notebooks:
try:
content = notebookutils.notebook.getDefinition(nb.displayName)
filename = f"{export_dir}/{nb.displayName}.ipynb"
with open(filename, "w") as f:
f.write(content)
exported_count += 1
print(f"Exported: {nb.displayName}")
except Exception as e:
print(f"Failed to export {nb.displayName}: {e}")
print(f"\nExported {exported_count} of {len(notebooks)} notebooks")
return export_dir
backup_location = export_all_notebooks()
Aktualisieren eines Notizbuchs
Verwenden Sie notebookutils.notebook.update(), um Notizbuchmetadaten wie den Anzeigenamen und die Beschreibung zu ändern. Es ändert keine Notizbuchinhalts- oder Lakehouse-Konfiguration.
Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name |
String | Ja | Aktueller Name oder ID des Notizbuchs. |
newName |
String | Ja | Neuer Anzeigename für das Notizbuch. |
description |
String | No | Aktualisierte Beschreibung. |
workspaceId |
String | No | Arbeitsbereichs-ID. Lassen Sie für den aktuellen Arbeitsbereich leer. |
Umbenennen eines Notebooks
updated_notebook = notebookutils.notebook.update(
name="OldNotebookName",
newName="NewNotebookName",
description="Updated description with more details"
)
print(f"Updated notebook: {updated_notebook.displayName}")
Zurückgegebener Wert
Die update() Methode gibt ein Artifact Objekt mit den aktualisierten Eigenschaften zurück.
Aktualisieren einer Notizbuchdefinition
Verwenden Sie notebookutils.notebook.updateDefinition(), um Notizbuchinhalte, das Standardlakehouse oder beides zu ändern. Verwenden Sie sie, wenn Sie die Notizbuchdefinition anstelle der Metadaten ändern müssen.
Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name |
String | Ja | Name oder ID des zu aktualisierenden Notizbuchs. |
content |
String | No | Neuer Notizbuchinhalt im .ipynb Format. |
defaultLakehouse |
String | No | Neuer Standardseehausname. |
defaultLakehouseWorkspace |
String | No | ID des neuen Standard-Lakehouses im Arbeitsbereich. Lassen Sie für den aktuellen Arbeitsbereich leer. |
workspaceId |
String | No | Arbeitsbereichs-ID. Lassen Sie für den aktuellen Arbeitsbereich leer. |
environmentId |
String | No | Umgebungs-ID, die an das Notizbuch angefügt werden soll. |
environmentWorkspaceId |
String | No | Arbeitsbereichs-ID der Umgebung. Lassen Sie für den aktuellen Arbeitsbereich leer. |
Hinweis
Die environmentId- und environmentWorkspaceId-Parameter sind nur in der Spark-Notebook-Laufzeit verfügbar. Python-Notizbücher unterstützen diese Parameter nicht.
Aktualisieren von Notizbuchinhalten
# Load new content
with open("/path/to/updated_notebook.ipynb", "r") as f:
new_content = f.read()
is_updated = notebookutils.notebook.updateDefinition(
name="MyNotebook",
content=new_content
)
print(f"Notebook definition updated: {is_updated}")
Standard-Lakehouse ändern
is_updated = notebookutils.notebook.updateDefinition(
name="MyNotebook",
defaultLakehouse="NewLakehouse",
defaultLakehouseWorkspace="" # Current workspace
)
print(f"Default lakehouse updated: {is_updated}")
Inhalte und Lakehouse aktualisieren
with open("/path/to/new_version.ipynb", "r") as f:
new_content = f.read()
is_updated = notebookutils.notebook.updateDefinition(
name="MyNotebook",
content=new_content,
defaultLakehouse="ProductionLakehouse",
defaultLakehouseWorkspace=""
)
print(f"Notebook fully updated: {is_updated}")
Zurückgegebener Wert
Die updateDefinition() Methode gibt zurück True , ob das Update erfolgreich ist oder False ein Fehler auftritt.
Tipp
Verwenden Sie update() für Metadatenänderungen (Name, Beschreibung) und updateDefinition() für Änderungen im Inhalt und am Lakehouse. Wenn Sie eine vollständige Aktualisierung von Metadaten und Inhalten benötigen, rufen Sie beide Methoden in Sequenz auf.
Löschen eines Notebooks
Verwenden Sie notebookutils.notebook.delete(), um ein Notizbuch dauerhaft aus einem Arbeitsbereich zu entfernen. Es wird zurückgegeben True , wenn der Löschvorgang erfolgreich ist; andernfalls wird er zurückgegeben False.
Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name |
String | Ja | Name oder ID des zu löschenden Notizbuchs. |
workspaceId |
String | No | Arbeitsbereichs-ID. Lassen Sie für den aktuellen Arbeitsbereich leer. |
Von Bedeutung
Das Löschen ist dauerhaft. Gelöschte Notizbücher können nicht wiederhergestellt werden. Überprüfen Sie immer den Namen des Notizbuchs, bevor Sie es löschen, und erwägen Sie, zuerst die Notizbuchdefinition mit getDefinition() zu sichern.
Zurückgegebener Wert
Die delete() Methode gibt zurück True , ob der Löschvorgang erfolgreich ist oder False ein Fehler auftritt.
Löschen eines Notebooks
is_deleted = notebookutils.notebook.delete("ObsoleteNotebook")
if is_deleted:
print("Notebook deleted successfully")
else:
print("Failed to delete notebook")
Sicheres Bereinigen von Notizbüchern nach Mustern
def cleanup_notebooks(name_pattern, dry_run=True):
"""Delete notebooks matching a name pattern."""
notebooks = notebookutils.notebook.list()
to_delete = [nb for nb in notebooks if name_pattern in nb.displayName]
print(f"Found {len(to_delete)} notebooks matching '{name_pattern}':")
for nb in to_delete:
print(f" - {nb.displayName}")
if dry_run:
print("\nDRY RUN - No notebooks deleted")
return
deleted_count = 0
for nb in to_delete:
if notebookutils.notebook.delete(nb.displayName):
deleted_count += 1
print(f"Deleted: {nb.displayName}")
else:
print(f"Failed to delete: {nb.displayName}")
print(f"\nDeleted {deleted_count} of {len(to_delete)} notebooks")
# Always run with dry_run=True first to preview
cleanup_notebooks("temp_", dry_run=True)
Tipp
Führen Sie für ein sicheres Löschen in großen Mengen immer zuerst dry_run=True aus, um eine Vorschau der zu entfernenden Notizbücher anzuzeigen. Erwägen Sie, Notizbücher mit einem _TO_DELETE Präfix umzubenennen, anstatt sie sofort zu löschen, damit Sie sie bei Bedarf wiederherstellen können.
Notizbücher auflisten
Dient notebookutils.notebook.list() zum Aufzählen von Notizbüchern in einem Arbeitsbereich. Es gibt ein Array von Artifact Objekten zurück.
Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
workspaceId |
String | No | Arbeitsbereichs-ID. Lassen Sie für den aktuellen Arbeitsbereich leer. |
maxResults |
Int | No | Maximale Anzahl der zurückzugebenden Ergebnisse. Standardmäßig steht es auf 1000. |
Auflisten aller Notizbücher im aktuellen Arbeitsbereich
notebooks = notebookutils.notebook.list()
print(f"Found {len(notebooks)} notebooks:")
for nb in notebooks:
print(f" - {nb.displayName} (ID: {nb.id})")
Notizbücher in einem anderen Arbeitsbereich auflisten
workspace_id = "cccccccc-3333-4444-5555-dddddddddddd"
notebooks = notebookutils.notebook.list(workspaceId=workspace_id)
print(f"Found {len(notebooks)} notebooks in workspace {workspace_id}")
Zurückgegebener Wert
Die list() Methode gibt ein Array von Artifact Objekten zurück. Jedes Objekt enthält displayName, idund description Eigenschaften.
Filtern von Notizbüchern nach Namensmustern
all_notebooks = notebookutils.notebook.list()
# Filter for notebooks that start with a specific prefix
processing_notebooks = [nb for nb in all_notebooks if nb.displayName.startswith("Process_")]
print(f"Found {len(processing_notebooks)} processing notebooks:")
for nb in processing_notebooks:
print(f" - {nb.displayName}")
Klonen eines Notizbuchs
Verwenden Sie list() und getDefinition() zusammen, um ein Notizbuch innerhalb des gleichen oder eines anderen Arbeitsbereichs zu klonen.
def clone_notebook(source_name, target_name, target_workspace=""):
"""Clone a notebook by retrieving its content and creating a copy."""
source = notebookutils.notebook.get(source_name)
content = notebookutils.notebook.getDefinition(source_name)
cloned = notebookutils.notebook.create(
name=target_name,
description=f"Clone of {source_name}",
content=content,
workspaceId=target_workspace
)
print(f"Cloned {source_name} to {cloned.displayName}")
return cloned
cloned_notebook = clone_notebook("TemplateNotebook", "NewInstance")
Migrieren eines Notizbuchs zu einem anderen Arbeitsbereich
def migrate_notebook(name, target_workspace_id, new_name=None):
"""Migrate a notebook from the current workspace to another workspace."""
content = notebookutils.notebook.getDefinition(name)
target_name = new_name if new_name else name
migrated = notebookutils.notebook.create(
name=target_name,
description=f"Migrated from {name}",
content=content,
workspaceId=target_workspace_id
)
print(f"Migrated {name} to workspace {target_workspace_id} as {target_name}")
return migrated
target_ws = "dddddddd-4444-5555-6666-eeeeeeeeeeee"
migrated_nb = migrate_notebook("DataPipeline", target_ws, "DataPipeline_v2")