Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Gebruik notebookutils.notebook om notitieblokitems programmatisch te beheren in Microsoft Fabric. U kunt notebookartefacten maken, ophalen, bijwerken, verwijderen en vermelden om implementatie, levenscyclusbeheer en CI/CD-werkstromen te automatiseren.
Opmerking
Deze API's worden alleen ondersteund in Fabric-notebooks, niet in Azure Synapse. U moet de juiste machtigingen hebben in de doelwerkruimte voor elke bewerking.
De volgende tabel bevat de beschikbare notebookbeheermethoden:
| Methode | Signature | Beschrijving |
|---|---|---|
create |
create(name, description, content, defaultLakehouse, defaultLakehouseWorkspace, workspaceId): Artifact |
Hiermee maakt u een nieuw notitieblok. |
get |
get(name, workspaceId): Artifact |
Hiermee haalt u een notitieblok op basis van naam of id op. |
getDefinition |
getDefinition(name, workspaceId, format): String |
Haalt de notebookdefinitie (inhoud) op. |
update |
update(name, newName, description, workspaceId): Artifact |
Hiermee worden de metagegevens van het notitieblok bijgewerkt. |
updateDefinition |
updateDefinition(name, content, defaultLakehouse, defaultLakehouseWorkspace, workspaceId, environmentId, environmentWorkspaceId): bool |
Hiermee werkt u de definitie van het notitieblok en Lakehouse bij. |
delete |
delete(name, workspaceId): Boolean |
Verwijdert een notitieblok. |
list |
list(workspaceId, maxResults): Array[Artifact] |
Een lijst met alle notitieblokken in een werkruimte. |
Een notitieblok maken
Gebruik notebookutils.notebook.create() om een nieuw notebook-artefact te maken in de huidige werkruimte of een opgegeven werkruimte.
Opmerking
Werkstroomvoorbeelden in dit artikel waarin .ipynb-bestanden worden gelezen of geschreven, wordt Python gebruikt voor bestand I/O. De kern-API's notebookutils.notebook zijn beschikbaar in Python, PySpark, Scala en R, tenzij anders vermeld.
Parameterwaarden
| Kenmerk | Typ | Verplicht | Beschrijving |
|---|---|---|---|
name |
Snaar / Touwtje | Ja | Weergavenaam voor het nieuwe notitieblok. Moet uniek zijn binnen de werkruimte. |
description |
Snaar / Touwtje | No | Beschrijving van het notitieblok. Standaard ingesteld op leeg. |
content |
Tekenreeks, bytes of dict | Ja | Notitieblokinhoud in geldige .ipynb JSON-indeling. Kan ook onbewerkte bytes of een dictobject zijn.
Kan niet leeg zijn. |
defaultLakehouse |
Snaar / Touwtje | No | Naam of ID van de standaard lakehouse die gekoppeld moet worden. |
defaultLakehouseWorkspace |
Snaar / Touwtje | No | Werkruimte-id van het standaard lakehouse. Laat leeg indien voor de huidige werkruimte. |
workspaceId |
Snaar / Touwtje | No | Doelwerkruimte-id. Laat leeg indien voor de huidige werkruimte. |
Belangrijk
De content parameter mag niet leeg zijn. U moet geldige .ipynb indelingsinhoud opgeven wanneer u een notitieblok maakt. Geef minimaal een geldige lege notitieblokstructuur op:
{
"cells": [],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
Een notitieblok maken op basis van een sjabloon
# 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})")
Een notitieblok maken met een standaard lakehouse
# 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}")
Retourwaarde
De create() methode retourneert een Artifact object met de volgende eigenschappen:
-
displayName: De weergavenaam van het notitieblok. -
id: De unieke identificatie van het gemaakte notitieblok. -
description: de beschrijving van het notitieblok.
Een notitieblok maken in een andere werkruimte
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}")
Meerdere notitieblokken maken op basis van een sjabloon
# 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")
Aanbeveling
Geef duidelijke namen en beschrijvingen op voor uw notitieblokken, zodat ze gemakkelijker te vinden zijn. Gebruik een consistente naamconventie, zoals <Project>_<Purpose>_<Region> voor geautomatiseerde implementaties.
Een notitieblok ophalen
Gebruik notebookutils.notebook.get() om notebook-metagegevens aan de hand van naam of ID op te halen. Het retourneert een Artifact object met eigenschappen zoals displayName, iden description.
Parameterwaarden
| Kenmerk | Typ | Verplicht | Beschrijving |
|---|---|---|---|
name |
Snaar / Touwtje | Ja | Naam of id van het notitieblok dat moet worden opgehaald. |
workspaceId |
Snaar / Touwtje | No | Werkruimte-id. Laat leeg indien voor de huidige werkruimte. |
Een notitieblok ophalen uit de huidige werkruimte
notebook = notebookutils.notebook.get("MyNotebook")
print(f"Notebook Name: {notebook.displayName}")
print(f"Notebook ID: {notebook.id}")
print(f"Description: {notebook.description}")
Een notitieblok ophalen uit een andere werkruimte
workspace_id = "bbbbbbbb-2222-3333-4444-cccccccccccc"
notebook = notebookutils.notebook.get("SharedNotebook", workspaceId=workspace_id)
print(f"Retrieved: {notebook.displayName} from workspace {workspace_id}")
Retourwaarde
De get() methode retourneert een Artifact object met de volgende eigenschappen:
-
displayName: De weergavenaam van het notitieblok. -
id: de unieke id. -
description: de beschrijving van het notitieblok.
Aanbeveling
Gebruik get() voordat u bijwerk- of verwijderbewerkingen uitvoert om te controleren of het doelnotebook bestaat. U kunt deze ook gebruiken om te controleren of de naam van een notitieblok al in gebruik is voordat u een nieuwe naam maakt.
Een notitieboekdefinitie ophalen
Gebruik notebookutils.notebook.getDefinition() om de volledige notitieblokinhoud in .ipynb-indeling op te halen. Gebruik deze voor back-up, migratie, versiebeheer of inhoudsanalyse.
Parameterwaarden
| Kenmerk | Typ | Verplicht | Beschrijving |
|---|---|---|---|
name |
Snaar / Touwtje | Ja | Naam of id van het notitieblok. |
workspaceId |
Snaar / Touwtje | No | Werkruimte-id. Laat leeg indien voor de huidige werkruimte. |
format |
Snaar / Touwtje | No | Uitvoerindeling. Wordt standaard ingesteld op "ipynb". |
Een notebookdefinitie ophalen en opslaan
# 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")
Een notebookdefinitie ophalen uit een andere werkruimte
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}")
Retourwaarde
De getDefinition() methode retourneert een tekenreeks die de inhoud van de notebook bevat in .ipynb JSON-indeling.
Alle notebooks exporteren voor back-up
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()
Een notebook bijwerken
Gebruik notebookutils.notebook.update() om metagegevens van notitieblokken te wijzigen, zoals de weergavenaam en beschrijving. De notebook-inhoud of lakehouse-configuratie wordt niet gewijzigd.
Parameterwaarden
| Kenmerk | Typ | Verplicht | Beschrijving |
|---|---|---|---|
name |
Snaar / Touwtje | Ja | Huidige naam of id van het notitieblok. |
newName |
Snaar / Touwtje | Ja | Nieuwe weergavenaam voor het notitieblok. |
description |
Snaar / Touwtje | No | Beschrijving bijgewerkt. |
workspaceId |
Snaar / Touwtje | No | Werkruimte-id. Laat leeg indien voor de huidige werkruimte. |
De naam van een notebook wijzigen
updated_notebook = notebookutils.notebook.update(
name="OldNotebookName",
newName="NewNotebookName",
description="Updated description with more details"
)
print(f"Updated notebook: {updated_notebook.displayName}")
Retourwaarde
De update() methode retourneert een Artifact object met de bijgewerkte eigenschappen.
Een notebookdefinitie bijwerken
Gebruik notebookutils.notebook.updateDefinition() om notitieblokinhoud, het standaard lakehouse of beide te wijzigen. Gebruik deze wanneer u de definitie van het notitieblok moet wijzigen in plaats van de metagegevens.
Parameterwaarden
| Kenmerk | Typ | Verplicht | Beschrijving |
|---|---|---|---|
name |
Snaar / Touwtje | Ja | Naam of id van het notitieblok dat moet worden bijgewerkt. |
content |
Snaar / Touwtje | No | Nieuwe notitieblokinhoud in .ipynb indeling. |
defaultLakehouse |
Snaar / Touwtje | No | Nieuwe standaard lakehouse-naam. |
defaultLakehouseWorkspace |
Snaar / Touwtje | No | Werkruimte-id van het nieuwe standaard lakehouse. Laat leeg indien voor de huidige werkruimte. |
workspaceId |
Snaar / Touwtje | No | Werkruimte-id. Laat leeg indien voor de huidige werkruimte. |
environmentId |
Snaar / Touwtje | No | Omgevings-id die moet worden gekoppeld aan het notebook. |
environmentWorkspaceId |
Snaar / Touwtje | No | Werkruimte-id van de omgeving. Laat leeg indien voor de huidige werkruimte. |
Opmerking
De environmentId en environmentWorkspaceId parameters zijn alleen beschikbaar in de Spark Notebook-runtime. Python-notebooks bieden geen ondersteuning voor deze parameters.
Notitieblokinhoud bijwerken
# 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}")
Het standaard lakehouse wijzigen
is_updated = notebookutils.notebook.updateDefinition(
name="MyNotebook",
defaultLakehouse="NewLakehouse",
defaultLakehouseWorkspace="" # Current workspace
)
print(f"Default lakehouse updated: {is_updated}")
Zowel inhoud als Lakehouse bijwerken
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}")
Retourwaarde
De updateDefinition() methode retourneert True als de update slaagt of False als deze mislukt.
Aanbeveling
Gebruik update() voor wijzigingen in metagegevens (naam, beschrijving) en updateDefinition() voor wijzigingen in inhoud en lakehouse. Wanneer u een volledige vernieuwing van zowel metagegevens als inhoud nodig hebt, roept u beide methoden op volgorde aan.
Een notebook verwijderen
Hiermee notebookutils.notebook.delete() verwijdert u een notitieblok definitief uit een werkruimte. Het retourneert True als de verwijdering slaagt; anders wordt het geretourneerd False.
Parameterwaarden
| Kenmerk | Typ | Verplicht | Beschrijving |
|---|---|---|---|
name |
Snaar / Touwtje | Ja | Naam of id van het notitieblok dat u wilt verwijderen. |
workspaceId |
Snaar / Touwtje | No | Werkruimte-id. Laat leeg indien voor de huidige werkruimte. |
Belangrijk
Verwijdering is permanent. Verwijderde notitieblokken kunnen niet worden hersteld. Controleer altijd de naam van het notitieblok voordat u verwijdert en overweeg eerst een back-up te maken van de definitie van het notitieblok getDefinition() .
Retourwaarde
De delete() methode retourneert True als de verwijdering slaagt of False als deze mislukt.
Een notebook verwijderen
is_deleted = notebookutils.notebook.delete("ObsoleteNotebook")
if is_deleted:
print("Notebook deleted successfully")
else:
print("Failed to delete notebook")
Notitieblokken veilig opschonen op patroon
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)
Aanbeveling
Voor een veilige bulkverwijdering moet u altijd eerst dry_run=True gebruiken om een voorbeeld te bekijken van welke notebooks zullen worden verwijderd. Overweeg de naam van notitieblokken met een _TO_DELETE voorvoegsel te wijzigen in plaats van ze onmiddellijk te verwijderen, zodat u ze indien nodig kunt herstellen.
Notitieblokken weergeven
Gebruik notebookutils.notebook.list() dit om notebooks in een werkruimte op te sommen. Het retourneert een matrix met Artifact objecten.
Parameterwaarden
| Kenmerk | Typ | Verplicht | Beschrijving |
|---|---|---|---|
workspaceId |
Snaar / Touwtje | No | Werkruimte-id. Laat leeg indien voor de huidige werkruimte. |
maxResults |
Int | No | Het maximum aantal resultaten dat moet worden teruggegeven. Standaard wordt hij op 1000 ingesteld. |
Alle notitieblokken in de huidige werkruimte weergeven
notebooks = notebookutils.notebook.list()
print(f"Found {len(notebooks)} notebooks:")
for nb in notebooks:
print(f" - {nb.displayName} (ID: {nb.id})")
Notitieblokken weergeven in een andere werkruimte
workspace_id = "cccccccc-3333-4444-5555-dddddddddddd"
notebooks = notebookutils.notebook.list(workspaceId=workspace_id)
print(f"Found {len(notebooks)} notebooks in workspace {workspace_id}")
Retourwaarde
De list() methode retourneert een matrix met Artifact objecten. Elk object bevat displayName, iden description eigenschappen.
Notebooks filteren op naampatroon
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}")
Een notebook klonen
Gebruik list() en getDefinition() samen om een notebook in dezelfde werkruimte of naar een andere werkruimte te 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")
Een notebook migreren naar een andere werkruimte
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")