Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Use notebookutils.notebook para administrar elementos de cuaderno mediante programación en Microsoft Fabric. Puede crear, recuperar, actualizar, eliminar y enumerar artefactos de cuadernos para automatizar la implementación, la administración del ciclo de vida y los flujos de trabajo de CI/CD.
Nota:
Estas API solo se admiten en cuadernos de Fabric, no en Azure Synapse. Debe tener los permisos adecuados en el área de trabajo de destino para cada operación.
En la tabla siguiente se enumeran los métodos de administración de cuadernos disponibles:
| Método | Signature | Descripción |
|---|---|---|
create |
create(name, description, content, defaultLakehouse, defaultLakehouseWorkspace, workspaceId): Artifact |
Crea un nuevo cuaderno. |
get |
get(name, workspaceId): Artifact |
Recupera un cuaderno por nombre o identificador. |
getDefinition |
getDefinition(name, workspaceId, format): String |
Recupera la definición del cuaderno (contenido). |
update |
update(name, newName, description, workspaceId): Artifact |
Actualiza los metadatos del cuaderno. |
updateDefinition |
updateDefinition(name, content, defaultLakehouse, defaultLakehouseWorkspace, workspaceId, environmentId, environmentWorkspaceId): bool |
Actualiza la definición del cuaderno y lakehouse. |
delete |
delete(name, workspaceId): Boolean |
Elimina un cuaderno |
list |
list(workspaceId, maxResults): Array[Artifact] |
Enumera todos los cuadernos de un área de trabajo. |
Creación de un cuaderno
Use notebookutils.notebook.create() para crear un nuevo artefacto de cuaderno en el área de trabajo actual o en un área de trabajo especificada.
Nota:
Los ejemplos de flujo de trabajo de este artículo que leen o escriben .ipynb archivos usan Python para E/S de archivos. Las API principales notebookutils.notebook están disponibles en Python, PySpark, Scala y R, a menos que se indique lo contrario.
Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
name |
String | Sí | Nombre visible del nuevo cuaderno. Debe ser único dentro del área de trabajo. |
description |
String | No | Descripción del cuaderno. El valor predeterminado es vacío. |
content |
Cadena, bytes o dict | Sí | Contenido del cuaderno en formato JSON válido .ipynb . También puede ser bytes en bruto o un objeto diccionario.
No puede estar vacío. |
defaultLakehouse |
String | No | Nombre o identificador del lago predeterminado que se va a adjuntar. |
defaultLakehouseWorkspace |
String | No | ID del área de trabajo predeterminada del lakehouse. Deje vacío para el área de trabajo actual. |
workspaceId |
String | No | ID del área de trabajo de destino. Deje vacío para el área de trabajo actual. |
Importante
El content parámetro no puede estar vacío. Debe proporcionar contenido de formato válido .ipynb al crear un cuaderno. Como mínimo, proporcione una estructura de cuaderno vacía válida:
{
"cells": [],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
Creación de un cuaderno a partir de una plantilla
# 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})")
Crea un cuaderno con un lakehouse predeterminado
# 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}")
Valor de retorno
El create() método devuelve un Artifact objeto con las siguientes propiedades:
-
displayName: nombre visible del cuaderno. -
id: identificador único del cuaderno creado. -
description: descripción del cuaderno.
Creación de un cuaderno en otra área de trabajo
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}")
Creación de varios cuadernos a partir de una plantilla
# 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")
Sugerencia
Proporcione nombres y descripciones significativos para los blocs de notas para que sean más fáciles de encontrar. Use una convención de nomenclatura coherente, como <Project>_<Purpose>_<Region> para las implementaciones automatizadas.
Obtener un cuaderno
Use notebookutils.notebook.get() para recuperar los metadatos del cuaderno por nombre o identificador. Devuelve un Artifact objeto con propiedades como displayName, idy description.
Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
name |
String | Sí | Nombre o identificador del cuaderno que se va a recuperar. |
workspaceId |
String | No | ID del área de trabajo. Deje vacío para el área de trabajo actual. |
Obtener un cuaderno del espacio de trabajo actual
notebook = notebookutils.notebook.get("MyNotebook")
print(f"Notebook Name: {notebook.displayName}")
print(f"Notebook ID: {notebook.id}")
print(f"Description: {notebook.description}")
Obtención de un cuaderno de otra área de trabajo
workspace_id = "bbbbbbbb-2222-3333-4444-cccccccccccc"
notebook = notebookutils.notebook.get("SharedNotebook", workspaceId=workspace_id)
print(f"Retrieved: {notebook.displayName} from workspace {workspace_id}")
Valor de retorno
El get() método devuelve un Artifact objeto con las siguientes propiedades:
-
displayName: nombre visible del cuaderno. -
id: identificador único. -
description: descripción del cuaderno.
Sugerencia
Use get() antes de actualizar o eliminar operaciones para comprobar que el cuaderno de destino existe. También puede usarlo para comprobar si un nombre de cuaderno ya está en uso antes de crear uno nuevo.
Obtención de una definición de cuaderno
Use notebookutils.notebook.getDefinition() para recuperar el contenido completo del bloc de notas en .ipynb formato. Úselo para realizar copias de seguridad, migración, control de versiones o análisis de contenido.
Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
name |
String | Sí | Nombre o identificador del cuaderno. |
workspaceId |
String | No | ID del área de trabajo. Deje este campo vacío para el espacio de trabajo actual. |
format |
String | No | Formato de salida. Tiene como valor predeterminado "ipynb". |
Recuperar y guardar una definición de cuaderno
# 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")
Obtén una definición de cuaderno de otra área de trabajo
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}")
Valor de retorno
El getDefinition() método devuelve una cadena que contiene el contenido del cuaderno en .ipynb formato JSON.
Exportación de todos los cuadernos para la copia de seguridad
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()
Actualización de un cuaderno
Use notebookutils.notebook.update() para cambiar los metadatos del cuaderno, como su nombre para mostrar y su descripción. No modifica el contenido del cuaderno ni la configuración de lakehouse.
Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
name |
String | Sí | Nombre o identificador actual del cuaderno. |
newName |
String | Sí | Nuevo nombre visible del cuaderno. |
description |
String | No | Descripción actualizada. |
workspaceId |
String | No | ID del área de trabajo. Deje vacío para el área de trabajo actual. |
Cambio de nombre de un cuaderno
updated_notebook = notebookutils.notebook.update(
name="OldNotebookName",
newName="NewNotebookName",
description="Updated description with more details"
)
print(f"Updated notebook: {updated_notebook.displayName}")
Valor de retorno
El update() método devuelve un Artifact objeto con las propiedades actualizadas.
Actualización de una definición de cuaderno
Utilice notebookutils.notebook.updateDefinition() para modificar el contenido del cuaderno, el lakehouse predeterminado o ambos. Úselo cuando necesite cambiar la definición del cuaderno en lugar de sus metadatos.
Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
name |
String | Sí | Nombre o identificador del cuaderno que se va a actualizar. |
content |
String | No | Nuevo contenido del cuaderno en .ipynb formato. |
defaultLakehouse |
String | No | Nuevo nombre predeterminado de lakehouse. |
defaultLakehouseWorkspace |
String | No | ID del área de trabajo del nuevo lakehouse predeterminado. Deje vacío para el área de trabajo actual. |
workspaceId |
String | No | ID del área de trabajo. Deje vacío para el área de trabajo actual. |
environmentId |
String | No | Identificador de entorno para adjuntar al notebook. |
environmentWorkspaceId |
String | No | ID del área de trabajo del entorno. Deje vacío para el área de trabajo actual. |
Nota:
Los parámetros environmentId y environmentWorkspaceId solo están disponibles en el entorno de ejecución del cuaderno de Spark. Los cuadernos de Python no admiten estos parámetros.
Actualización del contenido del cuaderno
# 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}")
Cambiar el lakehouse predeterminado
is_updated = notebookutils.notebook.updateDefinition(
name="MyNotebook",
defaultLakehouse="NewLakehouse",
defaultLakehouseWorkspace="" # Current workspace
)
print(f"Default lakehouse updated: {is_updated}")
Actualice tanto el contenido como el 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}")
Valor de retorno
El updateDefinition() método devuelve si la actualización se realiza True correctamente o False si se produce un error.
Sugerencia
Use update() para los cambios de metadatos (nombre, descripción) y updateDefinition() para los cambios de contenido y lakehouse. Cuando necesite una actualización completa de los metadatos y el contenido, llame a ambos métodos en secuencia.
Eliminación de un cuaderno
Use notebookutils.notebook.delete() para quitar permanentemente un cuaderno de un área de trabajo.
True Devuelve si la eliminación se realiza correctamente; de lo contrario, devuelve False.
Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
name |
String | Sí | Nombre o identificador del cuaderno que se va a eliminar. |
workspaceId |
String | No | ID del área de trabajo. Deje vacío para el área de trabajo actual. |
Importante
La eliminación es permanente. No se pueden recuperar cuadernos eliminados. Compruebe siempre el nombre del cuaderno antes de eliminar y considere la posibilidad de realizar copias de seguridad de la definición del cuaderno con getDefinition() primero.
Valor de retorno
El delete() método devuelve True si la eliminación se realiza correctamente o False si se produce un error.
Eliminación de un cuaderno
is_deleted = notebookutils.notebook.delete("ObsoleteNotebook")
if is_deleted:
print("Notebook deleted successfully")
else:
print("Failed to delete notebook")
Limpieza segura de notebooks según el patrón
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)
Sugerencia
Para la eliminación masiva segura, ejecute siempre con dry_run=True primero para obtener una vista previa de los cuadernos que se quitarán. Considere la posibilidad de cambiar el nombre de los cuadernos con un _TO_DELETE prefijo en lugar de eliminarlos inmediatamente, por lo que puede recuperarlos si es necesario.
Enumerar blocs de notas
Se usa notebookutils.notebook.list() para enumerar cuadernos en un área de trabajo. Devuelve una matriz de Artifact objetos .
Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
workspaceId |
String | No | ID del área de trabajo. Deje vacío para el área de trabajo actual. |
maxResults |
Int | No | Número máximo de resultados que se van a devolver. Predeterminado a 1000. |
Enumeración de todos los cuadernos del área de trabajo actual
notebooks = notebookutils.notebook.list()
print(f"Found {len(notebooks)} notebooks:")
for nb in notebooks:
print(f" - {nb.displayName} (ID: {nb.id})")
Listar cuadernos en otro espacio de trabajo
workspace_id = "cccccccc-3333-4444-5555-dddddddddddd"
notebooks = notebookutils.notebook.list(workspaceId=workspace_id)
print(f"Found {len(notebooks)} notebooks in workspace {workspace_id}")
Valor de retorno
El list() método devuelve una matriz de Artifact objetos . Cada objeto contiene las propiedades displayName, id y description.
Filtrado de cuadernos por patrón de nombre
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}")
Clonación de un cuaderno
Use list() y getDefinition() juntos para clonar un cuaderno dentro del mismo área de trabajo o en otra área de trabajo.
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")
Migración de un cuaderno a otra área de trabajo
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")