Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Microsoft Fabric'te not defteri öğelerini program aracılığıyla yönetmek için kullanın notebookutils.notebook . Dağıtım, yaşam döngüsü yönetimi ve CI/CD iş akışlarını otomatikleştirmek için not defteri yapıtları oluşturabilir, alabilir, güncelleştirebilir, silebilir ve listeleyebilirsiniz.
Uyarı
Bu API'ler Yalnızca Doku not defterlerinde desteklenir, Azure Synapse'te desteklenmez. Her işlem için hedef çalışma alanında uygun izinlere sahip olmanız gerekir.
Aşağıdaki tabloda kullanılabilir not defteri yönetim yöntemleri listelenmektedir:
| Yöntem | Signature | Açıklama |
|---|---|---|
create |
create(name, description, content, defaultLakehouse, defaultLakehouseWorkspace, workspaceId): Artifact |
Yeni bir not defteri oluşturur. |
get |
get(name, workspaceId): Artifact |
Adı veya kimliğiyle bir not defterini alır. |
getDefinition |
getDefinition(name, workspaceId, format): String |
Not defteri tanımını (içerik) alır. |
update |
update(name, newName, description, workspaceId): Artifact |
Not defteri meta verilerini günceller. |
updateDefinition |
updateDefinition(name, content, defaultLakehouse, defaultLakehouseWorkspace, workspaceId, environmentId, environmentWorkspaceId): bool |
Not defteri tanımını ve lakehouse'u güncelleştirir. |
delete |
delete(name, workspaceId): Boolean |
Bir defteri siler. |
list |
list(workspaceId, maxResults): Array[Artifact] |
Çalışma alanında tüm not defterlerini listeler. |
Not defteri oluşturma
notebookutils.notebook.create() kullanarak geçerli çalışma alanında veya belirtilen çalışma alanında yeni bir not defteri nesnesi oluşturun.
Uyarı
Bu makalede .ipynb dosyalarını okuyan veya yazan iş akışı örnekleri, dosya G/Ç işlemleri için Python kullanır. Aksi belirtilmediği sürece çekirdek notebookutils.notebook API'ler Python, PySpark, Scala ve R'de kullanılabilir.
Parametreler
| Parametre | Türü | Zorunlu | Açıklama |
|---|---|---|---|
name |
Dize | Evet | Yeni not defterinin görünen adı. Çalışma alanı içinde benzersiz olmalıdır. |
description |
Dize | Hayır | Not defterinin açıklaması. Varsayılan olarak boş ayarlanır. |
content |
Dize, bayt veya sözlük | Evet | Geçerli .ipynb JSON biçiminde not defteri içeriği. Ham bayt veya dikte nesnesi de olabilir.
Boş olamaz. |
defaultLakehouse |
Dize | Hayır | Eklenecek varsayılan göl evi adı veya kimliği. |
defaultLakehouseWorkspace |
Dize | Hayır | Varsayılan lakehouse çalışma alanı kimliği. Geçerli çalışma alanı için boş bırakın. |
workspaceId |
Dize | Hayır | Hedef çalışma alanı kimliği. Geçerli çalışma alanı için boş bırakın. |
Önemli
content Parametresi boş olamaz. Not defteri oluştururken geçerli .ipynb biçim içeriği sağlamanız gerekir. En azından geçerli bir boş not defteri yapısı sağlayın:
{
"cells": [],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
Şablondan not defteri oluşturma
# 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})")
Varsayılan lakehouse ile not defteri oluşturma
# 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}")
Dönüş değeri
create() yöntemi aşağıdaki özelliklere sahip bir Artifact nesne döndürür:
-
displayName: Defterin ekran adı. -
id: Oluşturulan not defterinin benzersiz tanımlayıcısı. -
description: Not defterinin açıklaması.
Başka bir çalışma alanında not defteri oluşturma
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}")
Şablondan birden çok not defteri oluşturma
# 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")
Tavsiye
Not defterlerinizin bulunmasını kolaylaştırmak için anlamlı adlar ve açıklamalar sağlayın. Otomatik dağıtımlar gibi <Project>_<Purpose>_<Region> tutarlı bir adlandırma kuralı kullanın.
Bir defter al
Not defteri meta verilerini ad veya kimlik ile almak için notebookutils.notebook.get() kullanın. , Artifactve displayNamegibi idözelliklere sahip bir description nesne döndürür.
Parametreler
| Parametre | Türü | Zorunlu | Açıklama |
|---|---|---|---|
name |
Dize | Evet | Alınacak not defterinin adı veya kimliği. |
workspaceId |
Dize | Hayır | Çalışma Alanı Kimliği. Geçerli çalışma alanı için boş bırakın. |
Geçerli çalışma alanından not defteri alma
notebook = notebookutils.notebook.get("MyNotebook")
print(f"Notebook Name: {notebook.displayName}")
print(f"Notebook ID: {notebook.id}")
print(f"Description: {notebook.description}")
Başka bir çalışma alanından not defteri alma
workspace_id = "bbbbbbbb-2222-3333-4444-cccccccccccc"
notebook = notebookutils.notebook.get("SharedNotebook", workspaceId=workspace_id)
print(f"Retrieved: {notebook.displayName} from workspace {workspace_id}")
Dönüş değeri
get() yöntemi aşağıdaki özelliklere sahip bir Artifact nesne döndürür:
-
displayName: Defterin ekran adı. -
id: Benzersiz tanımlayıcı. -
description: Not defterinin açıklaması.
Tavsiye
Hedef not defterinin mevcut olduğunu doğrulamak için güncelleştirmeden veya silme işlemden önce kullanın get() . Yeni bir tane oluşturmadan önce not defteri adının zaten kullanımda olup olmadığını denetlemek için de kullanabilirsiniz.
Dizüstü bilgisayar tanımını al
Tam not defteri içeriğini notebookutils.notebook.getDefinition() biçiminde almak için kullanın.ipynb. Yedekleme, geçiş, sürüm denetimi veya içerik analizi için kullanın.
Parametreler
| Parametre | Türü | Zorunlu | Açıklama |
|---|---|---|---|
name |
Dize | Evet | Not defterinin adı veya kimliği. |
workspaceId |
Dize | Hayır | Çalışma Alanı Kimliği. Geçerli çalışma alanı için boş bırakın. |
format |
Dize | Hayır | Çıkış biçimi. Varsayılan olarak "ipynb" değerini alır. |
Not defteri tanımını alma ve kaydetme
# 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")
Başka bir çalışma alanından not defteri tanımı alma
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}")
Dönüş değeri
yöntemi, getDefinition() JSON biçiminde not defteri içeriğini .ipynb içeren bir dize döndürür.
Yedekleme için tüm not defterlerini dışarı aktarma
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()
Not defterini güncelleştirme
Not defteri meta verilerini, örneğin görünen adını ve açıklamasını değiştirmek için notebookutils.notebook.update() kullanın. Not defteri içeriğini veya lakehouse yapılandırmasını değiştirmez.
Parametreler
| Parametre | Türü | Zorunlu | Açıklama |
|---|---|---|---|
name |
Dize | Evet | Not defterinin geçerli adı veya kimliği. |
newName |
Dize | Evet | Not defteri için yeni görünen ad. |
description |
Dize | Hayır | Açıklama güncelleştirildi. |
workspaceId |
Dize | Hayır | Çalışma Alanı Kimliği. Geçerli çalışma alanı için boş bırakın. |
Not defterini yeniden adlandırma
updated_notebook = notebookutils.notebook.update(
name="OldNotebookName",
newName="NewNotebookName",
description="Updated description with more details"
)
print(f"Updated notebook: {updated_notebook.displayName}")
Dönüş değeri
yöntemi, update() güncelleştirilmiş özelliklere sahip bir Artifact nesne döndürür.
Not defteri tanımını güncelleştirme
Not defteri içeriğini, varsayılan lakehouse'u veya her ikisini birden değiştirmek için kullanın notebookutils.notebook.updateDefinition() . Meta verileri yerine not defteri tanımını değiştirmeniz gerektiğinde bunu kullanın.
Parametreler
| Parametre | Türü | Zorunlu | Açıklama |
|---|---|---|---|
name |
Dize | Evet | Güncelleştirilecek not defterinin adı veya kimliği. |
content |
Dize | Hayır |
.ipynb biçiminde bir yeni not defteri içeriği. |
defaultLakehouse |
Dize | Hayır | Yeni varsayılan lakehouse adı. |
defaultLakehouseWorkspace |
Dize | Hayır | Yeni varsayılan lakehouse çalışma alanı kimliği. Geçerli çalışma alanı için boş bırakın. |
workspaceId |
Dize | Hayır | Çalışma Alanı Kimliği. Geçerli çalışma alanı için boş bırakın. |
environmentId |
Dize | Hayır | Not defterine eklenecek ortam kimliği. |
environmentWorkspaceId |
Dize | Hayır | Ortamın çalışma alanı kimliği. Geçerli çalışma alanı için boş bırakın. |
Uyarı
environmentId ve environmentWorkspaceId parametreleri yalnızca Spark not defteri çalışma zamanında kullanılabilir. Python not defterleri bu parametreleri desteklemez.
Not defteri içeriğini güncelleştirme
# 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}")
Varsayılan lakehouse'u değiştir
is_updated = notebookutils.notebook.updateDefinition(
name="MyNotebook",
defaultLakehouse="NewLakehouse",
defaultLakehouseWorkspace="" # Current workspace
)
print(f"Default lakehouse updated: {is_updated}")
Hem içeriği hem de lakehouse'ı güncelleştirme
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}")
Dönüş değeri
Yöntemi, updateDefinition() güncelleştirme başarılı olursa veya True başarısız olursa döndürürFalse.
Tavsiye
Meta veri değişiklikleri (ad, açıklama) için update(), içerik ve lakehouse değişiklikleri için updateDefinition() kullanın. Hem meta veriler hem de içerik için tam yenilemeye ihtiyacınız olduğunda, her iki yöntemi de sırayla çağırın.
Bir defteri sil
Çalışma alanından not defterini kalıcı olarak kaldırmak için kullanın notebookutils.notebook.delete() . Silme işlemi başarılı olursa döndürür True ; aksi takdirde döndürür False.
Parametreler
| Parametre | Türü | Zorunlu | Açıklama |
|---|---|---|---|
name |
Dize | Evet | Silinecek not defterinin adı veya kimliği. |
workspaceId |
Dize | Hayır | Çalışma Alanı Kimliği. Geçerli çalışma alanı için boş bırakın. |
Önemli
Silme işlemi kalıcıdır. Silinen not defterleri kurtarılamaz. Silmeden önce her zaman not defteri adını doğrulayın ve önce not defteri tanımını getDefinition() yedeklemeyi göz önünde bulundurun.
Dönüş değeri
Yöntem, silme başarılı olursa delete() veya başarısız olursa True döndürürFalse.
Bir defteri sil
is_deleted = notebookutils.notebook.delete("ObsoleteNotebook")
if is_deleted:
print("Notebook deleted successfully")
else:
print("Failed to delete notebook")
Not defterlerini desene göre güvenli bir şekilde temizleme
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)
Tavsiye
Güvenli toplu silme için, hangi not defterlerinin kaldırılacağını önizlemek için her zaman ilk ile dry_run=True çalıştırın. Gerekirse kurtarabilmeniz için not defterlerini hemen silmek yerine bir _TO_DELETE ön ekle yeniden adlandırmayı göz önünde bulundurun.
Dizüstü bilgisayarları listele
Çalışma alanında not defterlerini listelemek için kullanın notebookutils.notebook.list() . Bir nesne dizisi Artifact döndürür.
Parametreler
| Parametre | Türü | Zorunlu | Açıklama |
|---|---|---|---|
workspaceId |
Dize | Hayır | Çalışma Alanı Kimliği. Geçerli çalışma alanı için boş bırakın. |
maxResults |
Int | Hayır | Döndürülecek en fazla sonuç sayısı. Varsayılan değer 1000'dir. |
Geçerli çalışma alanında tüm not defterlerini listeleme
notebooks = notebookutils.notebook.list()
print(f"Found {len(notebooks)} notebooks:")
for nb in notebooks:
print(f" - {nb.displayName} (ID: {nb.id})")
Başka bir çalışma alanındaki not defterlerini listeleme
workspace_id = "cccccccc-3333-4444-5555-dddddddddddd"
notebooks = notebookutils.notebook.list(workspaceId=workspace_id)
print(f"Found {len(notebooks)} notebooks in workspace {workspace_id}")
Dönüş değeri
list() yöntemi bir nesne dizisi Artifact döndürür. Her nesne , displayNameve id özelliklerini içerirdescription.
Not defterlerini ad düzenine göre filtreleme
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}")
Not defterini kopyalama
list() ve getDefinition() birlikte kullanarak bir not defterini aynı çalışma alanı içinde veya başka bir çalışma alanına klonlayın.
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")
Not defterini başka bir çalışma alanına geçirme
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")