Hantera notebook-artefakter med NotebookUtils

Använd notebookutils.notebook för att hantera notebook-objekt programmatiskt i Microsoft Fabric. Du kan skapa, hämta, uppdatera, ta bort och lista notebook-artefakter för att automatisera distribution, livscykelhantering och CI/CD-arbetsflöden.

Anmärkning

Dessa API:er stöds endast i Fabric-notebook-filer, inte i Azure Synapse. Du måste ha rätt behörigheter på målarbetsytan för varje åtgärd.

I följande tabell visas de tillgängliga metoderna för hantering av notebook-filer:

Metod Signature Beskrivning
create create(name, description, content, defaultLakehouse, defaultLakehouseWorkspace, workspaceId): Artifact Skapar en ny anteckningsbok.
get get(name, workspaceId): Artifact Hämtar en anteckningsbok efter namn eller ID.
getDefinition getDefinition(name, workspaceId, format): String Hämtar notebook-definitionen (innehåll).
update update(name, newName, description, workspaceId): Artifact Uppdaterar metadata för notebook-filer.
updateDefinition updateDefinition(name, content, defaultLakehouse, defaultLakehouseWorkspace, workspaceId, environmentId, environmentWorkspaceId): bool Uppdaterar notebook-definitionen och lakehouse.
delete delete(name, workspaceId): Boolean Tar bort en notebook.
list list(workspaceId, maxResults): Array[Artifact] Visar en lista över alla anteckningsböcker på en arbetsyta.

Skapa en anteckningsbok

Använd notebookutils.notebook.create() för att skapa en ny notebook-artefakt på den aktuella arbetsytan eller en angiven arbetsyta.

Anmärkning

Arbetsflödesexempel i den här artikeln som läser eller skriver .ipynb filer använder Python för fil-I/O. notebookutils.notebook Kärn-API:erna är tillgängliga i Python, PySpark, Scala och R om inget annat anges.

Parameters

Parameter Type Obligatoriskt Beskrivning
name String Ja Visningsnamn för den nya anteckningsboken. Måste vara unik i arbetsytan.
description String No Beskrivning av anteckningsboken. Standardvärdet är tomt.
content Sträng, byte eller ordlista Ja Notebook-innehåll i giltigt .ipynb JSON-format. Kan också vara obearbetade byte eller ett ordboksobjekt. Kan inte vara tom.
defaultLakehouse String No Namn eller ID för standard lakehouse som ska bifogas.
defaultLakehouseWorkspace String No Arbetsyte-ID för standard lakehouse. Lämna tom för den aktuella arbetsytan.
workspaceId String No Målarbetsytans ID. Lämna tom för den aktuella arbetsytan.

Viktigt!

Parametern content får inte vara tom. Du måste ange giltigt .ipynb formatinnehåll när du skapar en notebook-fil. Se till att tillhandahålla en giltig tom notebook-struktur åtminstone.

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

Skapa en notebook-fil från en mall

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

Skapa en notebook-fil med ett 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ärde

Metoden create() returnerar ett Artifact objekt med följande egenskaper:

  • displayName: Anteckningsbokens visningsnamn.
  • id: Den unika identifieraren för den skapade notebook-filen.
  • description: Anteckningsbokens beskrivning.

Skapa en notebook-fil på en annan arbetsyta

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

Skapa flera notebook-filer från en mall

# 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/Råd

Ange meningsfulla namn och beskrivningar för dina anteckningsböcker så att de blir enklare att hitta. Använd en konsekvent namngivningskonvention, till exempel <Project>_<Purpose>_<Region> för automatiserade distributioner.

Hämta en notebook

Använd notebookutils.notebook.get() för att hämta metadata för notebook-filer efter namn eller ID. Det returnerar ett Artifact objekt med egenskaper som displayName, idoch description.

Parameters

Parameter Type Obligatoriskt Beskrivning
name String Ja Namn eller ID för anteckningsboken som ska hämtas.
workspaceId String No Arbetsyte-ID. Lämna tom för den aktuella arbetsytan.

Hämta en notebook-fil från den aktuella arbetsytan

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

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

Hämta en notebook-fil från en annan arbetsyta

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ärde

Metoden get() returnerar ett Artifact objekt med följande egenskaper:

  • displayName: Anteckningsbokens visningsnamn.
  • id: Den unika identifieraren.
  • description: Anteckningsbokens beskrivning.

Tips/Råd

Använd get() före uppdaterings- eller borttagningsåtgärder för att verifiera att målanteckningsboken finns. Du kan också använda det för att kontrollera om ett notebook-namn redan används innan du skapar ett nytt.

Hämta en notebook-definition

Använd notebookutils.notebook.getDefinition() för att hämta det fullständiga notebook-innehållet i .ipynb formatet. Använd den för säkerhetskopiering, migrering, versionskontroll eller innehållsanalys.

Parameters

Parameter Type Obligatoriskt Beskrivning
name String Ja Namn eller ID på anteckningsboken.
workspaceId String No Arbetsyte-ID. Lämna tom för den aktuella arbetsytan.
format String No Utdataformat. Standardinställningen är "ipynb".

Hämta och spara en notebook-definition

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

Hämta en notebook-definition från en annan arbetsyta

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ärde

Metoden getDefinition() returnerar en sträng som innehåller notebook-innehållet i .ipynb JSON-format.

Exportera alla notebook-filer för säkerhetskopiering

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

Uppdatera en notebook

Använd notebookutils.notebook.update() för att ändra metadata för notebook-filer, till exempel visningsnamn och beskrivning. Det ändrar inte notebook-innehåll eller lakehouse-konfiguration.

Parameters

Parameter Type Obligatoriskt Beskrivning
name String Ja Aktuellt namn eller ID för anteckningsboken.
newName String Ja Nytt visningsnamn för anteckningsboken.
description String No Uppdaterad beskrivning.
workspaceId String No Arbetsyte-ID. Lämna tom för den aktuella arbetsytan.

Byta namn på en anteckningsbok

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

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

Returvärde

Metoden update() returnerar ett Artifact objekt med de uppdaterade egenskaperna.

Uppdatera en notebook-definition

Använd notebookutils.notebook.updateDefinition() för att ändra innehållet i notebook, det förvalda lakehouset, eller båda. Använd den när du behöver ändra notebook-definitionen i stället för dess metadata.

Parameters

Parameter Type Obligatoriskt Beskrivning
name String Ja Namn eller ID för anteckningsboken som ska uppdateras.
content String No Nytt anteckningsboksinnehåll i .ipynb-format.
defaultLakehouse String No Nytt standardnamn för lakehouse.
defaultLakehouseWorkspace String No Arbetsyte-ID för det nya standardsjöhuset. Lämna tom för den aktuella arbetsytan.
workspaceId String No Arbetsyte-ID. Lämna tom för den aktuella arbetsytan.
environmentId String No Miljö-ID som ska kopplas till notebook-filen.
environmentWorkspaceId String No Arbetsområdes-ID för miljön. Lämna tom för den aktuella arbetsytan.

Anmärkning

Parametrarna environmentId och environmentWorkspaceId är endast tillgängliga i Spark Notebook-körningen. Python-notebook-filer stöder inte dessa parametrar.

Uppdatera notebook-innehåll

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

Ändra standardinställningen för lakehouse

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

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

Uppdatera både innehåll och 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ärde

Metoden updateDefinition() returnerar True om uppdateringen lyckas eller False om den misslyckas.

Tips/Råd

Använd update() för ändringar av metadata (namn, beskrivning) och updateDefinition() för ändringar i innehåll och lakehouse. När du behöver en fullständig uppdatering av både metadata och innehåll anropar du båda metoderna i följd.

Ta bort en anteckningsbok

Använd notebookutils.notebook.delete() för att permanent ta bort en notebook-fil från en arbetsyta. Den returnerar True om borttagningen lyckas. Annars returneras False.

Parameters

Parameter Type Obligatoriskt Beskrivning
name String Ja Namn eller ID för anteckningsboken som ska tas bort.
workspaceId String No Arbetsyte-ID. Lämna tom för den aktuella arbetsytan.

Viktigt!

Borttagningen är permanent. Det går inte att återställa borttagna anteckningsböcker. Kontrollera alltid notebook-namnet innan du tar bort och överväg att säkerhetskopiera notebook-definitionen med getDefinition() först.

Returvärde

Metoden delete() returnerar True om borttagningen lyckas eller False om den misslyckas.

Ta bort en anteckningsbok

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

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

Rensa notebook-filer på ett säkert sätt 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/Råd

För säker massborttagning kör du alltid med dry_run=True först för att förhandsgranska vilka anteckningsböcker som kommer att tas bort. Överväg att byta namn på notebook-filer med ett _TO_DELETE prefix i stället för att ta bort dem omedelbart, så att du kan återställa dem om det behövs.

Lista anteckningsböcker

Använd notebookutils.notebook.list() för att räkna upp anteckningsböcker på en arbetsyta. Den returnerar en matris med Artifact objekt.

Parameters

Parameter Type Obligatoriskt Beskrivning
workspaceId String No Arbetsyte-ID. Lämna tom för den aktuella arbetsytan.
maxResults Int No Maximalt antal resultat som ska returneras. Standardinställningen är 1000.

Visa en lista över alla anteckningsböcker i den aktuella arbetsytan

notebooks = notebookutils.notebook.list()

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

Visa en lista över anteckningsböcker på en annan arbetsyta

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ärde

Metoden list() returnerar en matris med Artifact objekt. Varje objekt innehåller displayNameegenskaperna , idoch description .

Filtrera notebook-filer efter namnmö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}")

Klona en notebook

Använd list() och getDefinition() tillsammans för att klona en notebook-fil på samma arbetsyta eller till en annan arbetsyta.

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

Migrera en notebook-fil till en annan arbetsyta

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