Del via


Administrer notesbogsartefakter med NotebookUtils

Bruges notebookutils.notebook til at administrere notesbogselementer programmatisk i Microsoft Fabric. Du kan oprette, hente, opdatere, slette og liste notesbogsartefakter for at automatisere implementering, livscyklusstyring og CI/CD-arbejdsgange.

Bemærkning

Disse API'er understøttes kun i Fabric-notebooks, ikke i Azure Synapse. Du skal have passende tilladelser i målarbejdsområdet for hver operation.

Følgende tabel viser de tilgængelige metoder til notebook-administration:

Metode Signatur Beskrivelse
create create(name, description, content, defaultLakehouse, defaultLakehouseWorkspace, workspaceId): Artifact Opretter en ny notesbog.
get get(name, workspaceId): Artifact Henter en notesbog med navn eller ID.
getDefinition getDefinition(name, workspaceId, format): String Henter notesbogens definition (indhold).
update update(name, newName, description, workspaceId): Artifact Opdaterer notesbogens metadata.
updateDefinition updateDefinition(name, content, defaultLakehouse, defaultLakehouseWorkspace, workspaceId, environmentId, environmentWorkspaceId): bool Opdaterer notesbogsdefinitionen og lakehouse.
delete delete(name, workspaceId): Boolean Sletter en notesbog.
list list(workspaceId, maxResults): Array[Artifact] Lister alle notesbøger i et arbejdsområde.

Opret en notesbog

Brug notebookutils.notebook.create() til at oprette en ny notesbogsartefakt i det nuværende arbejdsområde eller et specificeret arbejdsområde.

Bemærkning

Eksempler på arbejdsgange i denne artikel, hvor filer læses eller skrives .ipynb , bruger Python til fil-I/O. Kerne-API'erne notebookutils.notebook er tilgængelige i Python, PySpark, Scala og R, medmindre andet er angivet.

Parametre

Parameter Type Påkrævet Beskrivelse
name String Ja Visningsnavn for den nye notesbog. Det skal være unikt inden for arbejdsområdet.
description String Nej Beskrivelse af notesbogen. Som standard står den tom.
content Streng, bytes eller dict Ja Notesbogsindhold i gyldigt .ipynb JSON-format. Det kan også være rå bytes eller et dict-objekt. Kan ikke være tom.
defaultLakehouse String Nej Navn eller ID på det standard søhus, der skal vedhæftes.
defaultLakehouseWorkspace String Nej Workspace ID for standard lakehouse. Lad det stå tomt for det nuværende arbejdsområde.
workspaceId String Nej Mål-arbejdsområde-ID. Lad det stå tomt for det nuværende arbejdsområde.

Vigtigt!

Parameteren content kan ikke være tom. Du skal levere gyldigt .ipynb formatindhold, når du opretter en notesbog. Som minimum skal du give en gyldig tom notesbogsstruktur:

{
  "cells": [],
  "metadata": {},
  "nbformat": 4,
  "nbformat_minor": 5
}

Opret en notesbog ud fra en skabelon

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

Opret en notesbog med et standard 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}")

Returværdi

Metoden create() returnerer et Artifact objekt med følgende egenskaber:

  • displayName: Notesbogens displaynavn.
  • id: Den unikke identifikator for den oprettede notesbog.
  • description: Notesbogens beskrivelse.

Opret en notesbog i et andet arbejdsområde

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

Opret flere notesbøger ud fra en skabelon

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

Tips

Giv meningsfulde navne og beskrivelser til dine notesbøger, så de bliver lettere at finde. Brug en ensartet navngivningskonvention, som <Project>_<Purpose>_<Region> for eksempel ved automatiserede udrulninger.

Få en notesbog

Brug notebookutils.notebook.get() til at hente notesbogsmetadata efter navn eller ID. Den returnerer et Artifact objekt med egenskaber som displayName, id, og description.

Parametre

Parameter Type Påkrævet Beskrivelse
name String Ja Navn eller ID på den notesbog, der skal hentes.
workspaceId String Nej Arbejdsområde-ID. Lad det stå tomt for det nuværende arbejdsområde.

Få en notesbog fra det nuværende arbejdsområde

notebook = notebookutils.notebook.get("MyNotebook")

print(f"Notebook Name: {notebook.displayName}")
print(f"Notebook ID: {notebook.id}")
print(f"Description: {notebook.description}")

Få en notesbog fra et andet arbejdsområde

workspace_id = "bbbbbbbb-2222-3333-4444-cccccccccccc"
notebook = notebookutils.notebook.get("SharedNotebook", workspaceId=workspace_id)

print(f"Retrieved: {notebook.displayName} from workspace {workspace_id}")

Returværdi

Metoden get() returnerer et Artifact objekt med følgende egenskaber:

  • displayName: Notesbogens displaynavn.
  • id: Den unikke identifikator.
  • description: Notesbogens beskrivelse.

Tips

Brug get() før opdatering eller sletning for at verificere, at målnotebooken eksisterer. Du kan også bruge den til at tjekke, om et notesbogsnavn allerede er i brug, før du opretter en ny.

Få en notesbogsdefinition

Brug notebookutils.notebook.getDefinition() den til at hente hele notesbogens indhold i .ipynb format. Brug det til backup, migration, versionskontrol eller indholdsanalyse.

Parametre

Parameter Type Påkrævet Beskrivelse
name String Ja Navn eller ID på notesbogen.
workspaceId String Nej Arbejdsområde-ID. Lad det stå tomt for det nuværende arbejdsområde.
format String Nej Outputformat. Er som "ipynb"standard .

Hent og gem en notesbogsdefinition

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

Få en notesbogsdefinition fra et andet arbejdsområde

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

Returværdi

Metoden getDefinition() returnerer en streng, der indeholder notesbogens indhold i .ipynb JSON-format.

Eksporter alle notebooks til backup

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

Opdater en notesbog

Brug notebookutils.notebook.update() til at ændre notesbogens metadata, såsom dens visningsnavn og beskrivelse. Den ændrer ikke notebook-indholdet eller lakehouse-konfigurationen.

Parametre

Parameter Type Påkrævet Beskrivelse
name String Ja Nuværende navn eller ID på notesbogen.
newName String Ja Nyt visningsnavn til notesbogen.
description String Nej Opdateret beskrivelse.
workspaceId String Nej Arbejdsområde-ID. Lad det stå tomt for det nuværende arbejdsområde.

Omdøb en notesbog

updated_notebook = notebookutils.notebook.update(
    name="OldNotebookName",
    newName="NewNotebookName",
    description="Updated description with more details"
)

print(f"Updated notebook: {updated_notebook.displayName}")

Returværdi

Metoden update() returnerer et Artifact objekt med de opdaterede egenskaber.

Opdater en notesbogsdefinition

Brug notebookutils.notebook.updateDefinition() den til at ændre notesbogsindhold, standard lakehouse eller begge dele. Brug den, når du skal ændre notesbogsdefinitionen i stedet for dens metadata.

Parametre

Parameter Type Påkrævet Beskrivelse
name String Ja Navn eller ID på den notesbog, der skal opdateres.
content String Nej Nyt notesbogsindhold i .ipynb format.
defaultLakehouse String Nej Nyt standard søhusnavn.
defaultLakehouseWorkspace String Nej Workspace-ID for det nye standard lakehouse. Lad det stå tomt for det nuværende arbejdsområde.
workspaceId String Nej Arbejdsområde-ID. Lad det stå tomt for det nuværende arbejdsområde.
environmentId String Nej Miljø-ID til at vedhæfte til notesbogen.
environmentWorkspaceId String Nej Arbejdsområde-ID for miljøet. Lad det stå tomt for det nuværende arbejdsområde.

Bemærkning

Og-parametrene environmentIdenvironmentWorkspaceId er kun tilgængelige i Spark-notebookens runtime. Python-notebooks understøtter ikke disse parametre.

Opdater notesbogens indhold

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

Skift standard søhus

is_updated = notebookutils.notebook.updateDefinition(
    name="MyNotebook",
    defaultLakehouse="NewLakehouse",
    defaultLakehouseWorkspace=""  # Current workspace
)

print(f"Default lakehouse updated: {is_updated}")

Opdater både indhold og lakehouse

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

Returværdi

Metoden updateDefinition() returnerer True , hvis opdateringen lykkes eller False fejler.

Tips

Brug update() til metadataændringer (navn, beskrivelse) samt updateDefinition() til indholds- og lakehouse-ændringer. Når du har brug for en fuld opdatering af både metadata og indhold, skal du kalde begge metoder i rækkefølge.

Slet en notesbog

Brug notebookutils.notebook.delete() den til permanent at fjerne en notesbog fra et arbejdsområde. Den returnerer True , hvis sletningen lykkes; ellers returnerer Falseden .

Parametre

Parameter Type Påkrævet Beskrivelse
name String Ja Navn eller ID på notesbogen, der skal slettes.
workspaceId String Nej Arbejdsområde-ID. Lad det stå tomt for det nuværende arbejdsområde.

Vigtigt!

Sletning er permanent. Slettede notesbøger kan ikke gendannes. Verificér altid notesbogens navn, før du sletter den, og overvej først at tage backup af getDefinition() notesbogsdefinitionen.

Returværdi

Metoden delete() returneres True , hvis sletningen lykkes eller False fejler.

Slet en notesbog

is_deleted = notebookutils.notebook.delete("ObsoleteNotebook")

if is_deleted:
    print("Notebook deleted successfully")
else:
    print("Failed to delete notebook")

Ryd sikkert op i notesbøger efter mønster

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)

Tips

For sikker massesletning, kør altid med dry_run=True first for at forhåndsvise, hvilke notesbøger der vil blive fjernet. Overvej at omdøbe notesbøger med et _TO_DELETE præfiks i stedet for at slette dem med det samme, så du kan gendanne dem, hvis det er nødvendigt.

Listenotatbøger

Brug notebookutils.notebook.list() den til at opregne notesbøger i et arbejdsområde. Den returnerer et array af Artifact objekter.

Parametre

Parameter Type Påkrævet Beskrivelse
workspaceId String Nej Arbejdsområde-ID. Lad det stå tomt for det nuværende arbejdsområde.
maxResults Int Nej Maksimalt antal resultater at returnere. Som standard er 1000.

Vis alle notesbøger i det aktuelle arbejdsområde

notebooks = notebookutils.notebook.list()

print(f"Found {len(notebooks)} notebooks:")
for nb in notebooks:
    print(f"  - {nb.displayName} (ID: {nb.id})")

Vis notesbøger i et andet arbejdsområde

workspace_id = "cccccccc-3333-4444-5555-dddddddddddd"
notebooks = notebookutils.notebook.list(workspaceId=workspace_id)

print(f"Found {len(notebooks)} notebooks in workspace {workspace_id}")

Returværdi

Metoden list() returnerer et array af Artifact objekter. Hvert objekt indeholder displayName, id, og description egenskaber.

Filtrer notesbøger efter navnemønster

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

Klon en notesbog

Brug list() og getDefinition() sammen til at klone en notesbog inden for samme arbejdsområde eller til et andet arbejdsområde.

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

Migrer en notesblok til et andet arbejdsområde

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