Teilen über


Entwickeln, Ausführen und Verwalten von Microsoft Fabric-Notebooks

Ein Microsoft Fabric-Notebook ist ein primäres Programmierelement für die Entwicklung von Apache Spark-Aufträgen und Machine Learning-Experimenten. Es handelt sich um eine webbasierte interaktive Oberfläche, die von Data Scientists und Data Engineers verwendet wird, um Code zu schreiben. Dabei profitieren diese von umfangreichen Visualisierungen und Markdown-Text. In diesem Artikel wird erläutert, wie Notebooks mit Codezellenvorgängen entwickelt und ausgeführt werden.

Entwickeln von Notebooks

Notebooks bestehen aus Zellen, bei denen es sich um einzelne Code- oder Textblöcke handelt, die unabhängig oder als Gruppe ausgeführt werden können.

Wir bieten umfangreiche Vorgänge zum Entwickeln von Notebooks:

Hinzufügen einer Zelle

Es gibt mehrere Möglichkeiten, um Ihrem Notebook eine neue Zelle hinzuzufügen.

  1. Zeigen Sie mit dem Mauszeiger auf den Bereich zwischen zwei Zellen, und wählen Sie Code oder Markdown aus.

  2. Verwenden Sie Tastenkombinationen im Befehlsmodus. Drücken Sie A, um eine Zelle oberhalb der aktuellen Zelle einzufügen. Drücken Sie B, um eine Zelle unterhalb der aktuellen Zelle einzufügen.

Festlegen einer primären Sprache

Fabric-Notebooks unterstützen derzeit vier Apache Spark-Sprachen:

  • PySpark (Python)
  • Spark (Scala)
  • Spark SQL
  • SparkR

Sie können die primäre Sprache für neu hinzugefügte Zellen in der Dropdownliste in der oberen Befehlsleiste festlegen.

Verwenden mehrerer Sprachen

Sie können in einem Notebook mehrere Sprachen verwenden, indem Sie den Zauberbefehl für Sprachen am Anfang einer Zelle angeben. Sie können die Zellensprache auch über die Sprachauswahl umstellen. In der folgenden Tabelle sind die Magic-Befehle zum Wechseln von Zellensprachen aufgelistet.

Screenshot: Ein Beispiel für einen Sprach-Magic-Befehl am Anfang einer Zelle.

Magic-Befehl Sprache Beschreibung
%%pyspark Python Eine Python-Abfrage im Apache Spark-Kontext ausführen.
%%spark Scala Eine Scala-Abfrage im Apache Spark-Kontext ausführen.
%%sql SparkSQL Eine SparkSQL-Abfrage im Apache Spark-Kontext ausführen.
%%html HTML Führen Sie n HTML-Abfrage für Apache Spark Context aus.
%%sparkr R Eine R-Abfrage im Apache Spark-Kontext ausführen.

IDE-artiges IntelliSense

Fabric-Notebooks sind in den Monaco-Editor integriert, um den Zellen-Editor mit IntelliSense im IDE-Stil auszustatten. Syntaxhervorhebung, Fehlermarkierungen und automatische Codevervollständigungen helfen Ihnen dabei, schnell Code zu schreiben und Probleme zu erkennen.

Die IntelliSense-Funktionen befinden sich in unterschiedlichen Stadien der Entwicklung für verschiedene Sprachen. Die folgende Tabelle zeigt die von Fabric unterstützten Features:

Sprachen Syntaxhervorhebung Syntaxfehlermarkierungen Syntaxvervollständigung Codevervollständigung für Variablen Codevervollständigung für Systemfunktionen Codevervollständigung für Benutzerfunktionen Intelligenter Einzug Codefaltung
PySpark (Python) Ja Ja Ja Ja Ja Ja Ja Ja
Python Ja Ja Ja Ja Ja Ja Ja Ja
Spark (Scala) Ja Ja Ja Ja Ja Ja Ja Ja
SparkSQL Ja Ja Ja Ja Ja Keine Ja Ja
SparkR Ja Ja Ja Ja Ja Ja Ja Ja
T-SQL Ja Ja Ja Keine Ja Ja Ja Ja

Hinweis

Sie müssen über eine aktive Apache Spark-Sitzung verfügen, um IntelliSense-Codevervollständigung verwenden zu können.

Verbessern der Python-Entwicklung mit Pylance

Pylance, ein leistungsstarker Sprachserver mit einer Vielzahl von Features, ist jetzt in Fabric-Notebook verfügbar. Pylance erleichtert die Python-Entwicklung mit intelligenten Vervollständigungen, einer besseren Fehlererkennung und verbesserten Codeerkenntnissen. Zu den wichtigsten Verbesserungen gehören intelligentere Autovervollständigung, verbesserte Lambda-Unterstützung, Parametervorschläge, verbesserte Hoverinformationen, bessere Docstring-Darstellung und Fehlerhervorhebung. Mit Pylance wird das Schreiben von Python- und PySpark-Code schneller, genauer und effizienter.

Codeausschnitte

Fabric-Notebooks enthalten Codeschnipsel, mit denen Sie häufig verwendete Codemuster einfach schreiben können, darunter:

  • Lesen von Daten als Apache Spark-Dataframe
  • Zeichnen von Diagrammen mit Matplotlib

Codeausschnitte werden in Tastaturkurzbefehlen im IDE Stil in IntelliSense gemeinsam mit anderen Vorschlägen angezeigt. Der Inhalt der Codeschnipsel richtet sich nach der Codezellensprache. Sie können verfügbare Codeschnipsel anzeigen, indem Sie Codeschnipsel eingeben. Sie können auch ein beliebiges Schlüsselwort eingeben, um eine Liste relevanter Codeschnipsel anzuzeigen. Wenn Sie beispielsweise read eingeben, wird eine Liste der Codeschnipsel zum Lesen von Daten aus verschiedenen Datenquellen angezeigt.

Animierte GIF von Codeausschnitten.

Einfügen von Codeschnipseln per Drag & Drop

Verwenden Sie das Drag & Drop-Feature, um Daten bequem aus dem Lakehouse-Explorer zu lesen. Hier werden mehrere Dateitypen unterstützt, darunter Textdateien, Tabellen und Bilder. Sie können Daten entweder in eine vorhandene Zelle oder eine neue Zelle einfügen. Das Notebook generiert den Codeschnipsel entsprechend, um eine Vorschau der Daten anzuzeigen.

Animiertes GIF mit Drag-and-Drop zum Einfügen von Code-Snippets.

Einfügen von Bildern per Drag & Drop

Verwenden Sie das Drag & Drop-Feature, um Bilder aus dem Browser oder von Ihrem lokalen Computer bequem in eine Markdown-Zelle einzufügen.

Animiertes GIF für Ziehen und Ablegen zum Einfügen von Bildern.

Textzelle mit Symbolleisten-Schaltflächen formatieren

Verwenden Sie die Formatschaltflächen auf der Textzellen-Symbolleiste, um allgemeine Markdown-Aktionen auszuführen.

Screenshot: Symbolleiste für die Textformatierung.

Rückgängigmachen oder Wiederholen von Zelloperationen

Wählen Sie Rückgängig oder Wiederholen aus, oder drücken Sie Z oder UMSCHALT+Z, um die letzten Zellenvorgänge rückgängig zu machen. Sie können maximal die zehn letzten Zellenvorgänge rückgängig machen oder wiederholen.

Screenshot, der die Menüoptionen „Rückgängig“ und „Wiederholen“ zeigt.

Unterstützte Rückgängig-Zellenvorgänge:

  • Zelle einfügen oder löschen. Sie können die gelöschten Vorgänge rückgängig machen, indem Sie Rückgängig auswählen (der Textinhalt wird zusammen mit der Zelle beibehalten).
  • Eine Zelle neu anordnen.
  • Umschalten von Parametern.
  • Konvertieren zwischen der Codezelle und der Markdown-Zelle.

Hinweis

Textoperationen innerhalb einer Zelle und Kommentierungsoperationen in Codezellen können nicht rückgängig gemacht werden. Sie können maximal die zehn letzten Zellenvorgänge rückgängig machen oder wiederholen.

Verschieben einer Zelle

Sie können den leeren Teil einer Zelle auswählen und die Zelle an die gewünschte Position ziehen.

Sie können die ausgewählte Zelle auch mithilfe der Menübandoptionen Nach oben und Nach unten verschieben.

Screenshot: Optionen für das Verschieben einer Zelle.

Löschen einer Zelle

Wählen Sie zum Löschen einer Zelle die Schaltfläche „Löschen“ auf der rechten Seite der Zelle aus.

Sie können auch Tastenkombinationen im Befehlsmodus verwenden. Drücken Sie D,D (zweimal), um die aktuelle Zelle zu löschen.

Reduzieren einer Zelleneingabe

Wählen Sie auf der Zellensymbolleiste die Auslassungspunkte für Weitere Befehle (...) und dann Eingabe ausblenden aus, um die Eingabe der aktuellen Zelle zu reduzieren. Wenn Sie sie wieder erweitern möchten, wählen Sie Eingabe anzeigen aus, während die Zelle reduziert ist.

Reduzieren einer Zellenausgabe

Wählen Sie auf der Zellensymbolleiste die Auslassungspunkte für Weitere Befehle (...) und dann Ausgabe ausblenden aus, um die Ausgabe der aktuellen Zelle zu reduzieren. Wenn Sie sie wieder erweitern möchten, wählen Sie Ausgabe anzeigen aus, während die Zellenausgabe reduziert ist.

Zellenausgabesicherheit

Sie können OneLake-Datenzugriffsrollen (Vorschau) verwenden, um den Zugriff nur auf bestimmte Ordner in einem Lakehouse während Notizbuchabfragen zu konfigurieren. Benutzern ohne Zugriff auf einen Ordner oder eine Tabelle wird bei der Abfrageausführung eine Fehlermeldung 'Keine Berechtigung' angezeigt.

Wichtig

Sicherheit gilt nur während der Abfrageausführung. Notizbuchzellen, die Abfrageergebnisse enthalten, können von Benutzern angezeigt werden, die nicht berechtigt sind, Abfragen direkt für die Daten auszuführen.

Sperren oder Einfrieren einer Zelle

Durch das Sperren und Einfrieren von Zellen können Sie Zellen schreibgeschützt machen oder die Ausführung einzelner Zellen verhindern.

Animierte GIF-Datei zum Sperren oder Fixieren einer Zelle.

Zusammenführen und Teilen von Zellen

Sie können Mit vorheriger Zelle verknüpfen oder Mit nächster Zelle verknüpfen verwenden, um verwandte Zellen bequem zusammenzuführen.

Wenn Sie Zelle teilen auswählen, können Sie irrelevante Anweisungen auf mehrere Zellen aufteilen. Der Vorgang teilt den Code entsprechend der Zeilenposition des Cursors auf.

Screenshot des Eintrags zum Zusammenführen geteilter Zellen.

Notebookinhalte

Durch Auswählen von „Gliederung“ oder „Inhaltsverzeichnis“ wird der erste Markdown-Header einer beliebigen Markdown-Zelle in einem Randleistenfenster dargestellt, damit Sie schnell zu diesem navigieren können. Die Gliederungsrandleiste ist in der Größe veränderbar und reduzierbar, damit sie optimal an den Bildschirm angepasst werden kann. Wählen Sie die Schaltfläche Inhalt auf der Notebookbefehlsleiste aus, um die Randleiste ein- oder auszublenden.

Screenshot: Auswählen der Option „Inhalte“.

Markdown-Faltung

Mit der Option für die Markdown-Faltung können Sie Zellen unter einer Markdown-Zelle ausblenden, die eine Überschrift enthält. Die Markdown-Zelle und die zugehörigen ausgeblendeten Zellen werden beim Ausführen von Zellvorgängen wie mehrere zusammenhängende, ausgewählte Zellen behandelt.

Animierte GIF-Animation der Markdown-Zusammenklappfunktion.

Suchen und Ersetzen

Mit der Option „Suchen und Ersetzen“ können Sie Schlüsselwörter oder Ausdrücke im Notebook-Inhalt abgleichen und suchen. Sie können die Zielzeichenfolge auch ganz einfach durch eine neue Zeichenfolge ersetzen.

Screenshot: Bereich „Suchen und ersetzen“.

Copilot-Inline-Codevervollständigung (Vorschau)

Die Copilot-Zeilenvervollständigung ist eine KI-gestützte Funktion, die Ihnen hilft, Python-Code schneller und effizienter in Fabric-Notizbüchern zu schreiben. Dieses Feature bietet intelligente, kontextbezogene Codevorschläge während der Eingabe von Code. Sie reduziert sich wiederholende Aufgaben, minimiert Syntaxfehler und beschleunigt die Entwicklung, indem sie nahtlos in Ihren Notizbuchworkflow integriert wird.

Hauptvorteile

  • KI-gesteuerte Fertigstellungen: Generiert Vorschläge basierend auf dem Kontext Ihres Notizbuchs mithilfe eines Modells, das auf Millionen von Codezeilen trainiert wurde.
  • Erhöht die Produktivität: Hilft beim Schreiben komplexer Funktionen, reduziert die sich wiederholende Codierung und beschleunigt die Erkundung unbekannter Bibliotheken.
  • Reduziert Fehler: Minimiert Tippfehler und Syntaxfehler mit intelligenten, kontextfähigen Vervollständigungen.
  • Minimale Einrichtung: In Fabric-Notizbücher integriert und erfordert keine Installation. Sie können es einfach aktivieren und mit dem Codieren beginnen.

Funktionsweise

Aktivieren Sie Inlinecodevorschläge mithilfe der Schaltfläche am unteren Rand Ihres Notizbuchs.

Ein Screenshot, der zeigt, wie Copilot-Codevervollständigungen aktiviert werden können.

Während der Eingabe werden Vorschläge in hellgrauen Text angezeigt, drücken Sie die TAB-TASTE, um sie anzunehmen oder zu ändern. Vorschläge basieren auf vorherigen Notizbuchzellen.

Screenshot, der einen automatischen Codevorschlag mit Copilot-Codevervollständigung zeigt.

Hinweis

Durch das Aktivieren des Copilot-Inlinecodeabschlusses werden mehr Kapazitätseinheiten verbraucht.

Aktuelle Einschränkungen

  • Copilot Inline Code Completion unterstützt derzeit Python-Sprache und verwendet Kontext aus vorherigen Zellen und Lakehouse-Schemas.
  • Vorschläge berücksichtigen Daten aus Lakehouse-Schemas.
  • Es wird nur eine Teilmenge von Schemaelementen verwendet, wenn viele Tabellen oder Spalten vorhanden sind.
  • Dynamisch erstellte Tabellen (über Spark) werden in Echtzeit nicht erkannt.

Ausführen von Notebooks

Sie können die Codezellen in Ihrem Notebook einzeln oder alle gleichzeitig ausführen. Status und Fortschritt jeder Zelle werden im Notebook dargestellt.

Ausführen einer Zelle

Es gibt mehrere Methoden, um den Code in einer Zelle auszuführen.

  • Zeigen Sie mit dem Mauszeiger auf die Zelle, die Sie ausführen möchten, und wählen Sie die Schaltfläche Zelle ausführen aus, oder drücken Sie STRG+EINGABE.

  • Verwenden Sie Tastenkombinationen im Befehlsmodus. Drücken Sie Shift+Enter, um die aktuelle Zelle auszuführen und die nächste Zelle auszuwählen. Drücken Sie ALT+EINGABE, um die aktuelle Zelle auszuführen und eine neue Zelle einzufügen.

Ausführen aller Zellen

Wählen Sie die Schaltfläche Alle ausführen aus, um alle Zellen im aktuellen Notebook nacheinander auszuführen.

Ausführen aller darüber- oder darunterliegenden Zellen

Erweitern Sie die Dropdownliste über die Schaltfläche Alle ausführen, und wählen Sie dann Zellen oberhalb ausführen aus, um alle Zellen oberhalb der aktuellen Zelle nacheinander auszuführen. Wählen Sie Zellen unterhalb ausführen aus, um die aktuelle Zelle und alle Zellen unterhalb der aktuellen nacheinander auszuführen.

Screenshot: Menüoptionen „Alle ausführen“

Abbrechen aller ausgeführten Zellen

Wählen Sie Alle abbrechen aus, um die ausgeführten oder in der Warteschlange wartenden Zellen abzubrechen.

Beenden der Sitzung

Die Option Sitzung beenden bricht die laufenden und wartenden Zellen ab und beendet die aktuelle Sitzung. Sie können eine neue Sitzung starten, indem Sie die Option „Ausführen“ erneut auswählen.

Screenshot: Menüoptionen zum Abbrechen aller Ausführungen und Beenden einer Sitzung.

Referenzausführung

Referenzausführung eines Notebooks

Neben der notebookutils-Verweisausführungs-API können Sie auch den Magic-Befehl %run <notebook name> verwenden, um auf ein anderes Notebook im Kontext des aktuellen Notebooks zu verweisen. Alle im Referenznotebook definierten Variablen sind im aktuellen Notebook verfügbar. Der Magic-Befehl %run unterstützt geschachtelte Aufrufe, aber keine rekursiven Aufrufe. Es wird eine Ausnahme angezeigt, wenn die Anweisungstiefe größer als fünf ist.

Beispiel: %run Notebook1 { "parameterInt": 1, "parameterFloat": 2.5, "parameterBool": true, "parameterString": "abc" }.

Notebookverweise funktionieren sowohl im interaktiven Modus als auch in der Pipeline.

Hinweis

  • Der Befehl %run unterstützt derzeit nur Verweise auf Notebooks, die sich im selben Arbeitsbereich wie das aktuelle Notebook befinden.
  • Der Befehl %run unterstützt derzeit nur bis zu vier Parameterwerttypen: int, float, bool und string. Der Vorgang zum Ersetzen von Variablen wird nicht unterstützt.
  • Der Befehl %run unterstützt keine geschachtelten Verweise mit einer Tiefe größer als fünf.

Referenzausführung eines Skripts

Mit dem Befehl %run können Sie außerdem Python- oder SQL-Dateien ausführen, die in den integrierten Ressourcen des Notebooks gespeichert sind, damit Sie die Quellcodedateien bequem im Notebook ausführen können.

%run [-b/--builtin -c/--current] [script_file.py/.sql] [variables ...]

Für Optionen:

  • -b/--builtin: Diese Option gibt an, dass der Befehl die angegebene Skriptdatei aus den integrierten Ressourcen des Notebooks findet und ausführt.
  • -c/--current: Mit dieser Option wird sichergestellt, dass der Befehl immer die integrierten Ressourcen des aktuellen Notebooks nutzt, auch wenn das aktuelle Notebook von anderen Notebooks referenziert wird.

Beispiele:

  • Zum Ausführen von script_file.py über die integrierten Ressourcen: %run -b script_file.py

  • Zum Ausführen von script_file.sql über die integrierten Ressourcen: %run -b script_file.sql

  • Zum Ausführen von script_file.py über die integrierten Ressourcen mit spezifischen Variablen: %run -b script_file.py { "parameterInt": 1, "parameterFloat": 2.5, "parameterBool": true, "parameterString": "abc" }

Hinweis

Wenn der Befehl kein -b/--builtin enthält, versucht er, ein Notizbuch-Element im gleichen Arbeitsbereich zu finden und auszuführen, anstatt die integrierten Ressourcen zu verwenden.

Verwendungsbeispiel für geschachtelte Ausführung:

  • Angenommen, wir haben zwei Notebooks.
    • Notebook1: Enthält script_file1.py in den integrierten Ressourcen.
    • Notebook2: Enthält script_file2.py in den integrierten Ressourcen.
  • Notebook1 soll als Stammnotebook mit folgendem Inhalt dienen: %run Notebook2.
  • Dann lautet die Nutzungsanweisung in Notebook2 wie folgt:
    • Um script_file1.py in Notebook1(das Stammnotebook) auszuführen, lautet der Code: %run -b script_file1.py
    • Um script_file2.py in Notebook2(dem aktuellen Notebook) auszuführen, lautet der Code: %run -b -c script_file2.py

Variablen-Explorer

Fabric-Notebooks verfügen über einen integrierten Variablen-Explorer, in dem die Liste der Variablennamen, -typen, -längen und -werte in der aktuellen Spark-Sitzung für PySpark-Zellen (Python) angezeigt werden. Weitere Variablen werden automatisch angezeigt, wenn sie in den Codezellen definiert werden. Durch Klicken auf die einzelnen Spaltenüberschriften werden die Variablen in der Tabelle sortiert.

Wählen Sie die Schaltfläche Variablen im Menüband Ansicht des Notebooks aus, um den Variablen-Explorer ein- oder auszublenden.

Screenshot: Wo Variablen geöffnet werden

Hinweis

Der Variablen-Explorer unterstützt nur Python.

Zellenstatusindikator

Unterhalb der Zelle wird der Ausführungsstatus Schritt für Schritt angezeigt, damit Sie den aktuellen Fortschritt verfolgen können. Nachdem die Ausführung der Zelle abgeschlossen wurde, wird eine Ausführungszusammenfassung mit Gesamtdauer und Endzeit angezeigt, die zur späteren Verwendung dort gespeichert wird.

Screenshot: Beispiel für die Statusdetails eines Zellenlaufs

Sitzungsstatusanzeige

Konfiguration des Sitzungstimeouts

In der unteren linken Ecke können Sie den Sitzungsstatus auswählen, um weitere Informationen zur aktuellen Sitzung zu erhalten:

Screenshot, der Sitzungsinformationen zeigt.

Im Popup gibt es eine Option, das Timeout auf x Minuten oder Stunden zurückzusetzen.

Screenshot, der das Sitzungstimeout zeigt.

Wählen Sie aus, wie lange eine unterbrechungsfreie Sitzung erfolgen soll, und treffen Sie auf "Anwenden". Das Sitzungstimeout wird mit dem neuen Wert zurückgesetzt, und dann sind Sie startklar!

Sie können auch timeout festlegen, wie in:

Angemeldet bleiben: Wenn bei der Anmeldung das Dialogfeld " Angemeldet bleiben " angezeigt wird, wählen Sie "Ja " aus, um das Timeout der Leerlaufsitzung für Ihre aktuelle Sitzung zu deaktivieren.

Wichtig

Aktivieren Sie nicht das Kontrollkästchen "Nicht erneut anzeigen ", da dies ihre Anmeldeeinstellungen dauerhaft sperrt. Diese Option wird möglicherweise nicht angezeigt, wenn Ihr Mandantenadministrator die Einstellung "Angemeldet bleiben" (KMSI) deaktiviert hat.

Richtlinienänderung anfordern: Wenn Sie eine längere Sitzungsdauer benötigen, bitten Sie Ihren Mandantenadministrator, die Zeitüberschreitungsrichtliniendauer für Leerlauf-Sitzungen zu verlängern. Sie können dies tun, indem Sie im Microsoft 365 Admin Center zu "Sicherheits- und Datenschutz-Idle-Sitzungstimeout > für Organisationseinstellungen>" navigieren.

Hinweis

Die Auswahl von KMSI und/oder das Erweitern der Timeoutdauer der Leerlaufsitzung verlängert das Risiko, dass auf einen entsperrten Computer zugegriffen wird.

Wie wirken sich ABT und Sitzungs-Timeout im Leerlauf auf lang andauernde Ausführungen von Fabric-Notizbüchern aus?

Wenn Ihr Mandant das aktivitätsbasierte Timeout (ABT) nutzt, könnten lang andauernde interaktive Jobs in Fabric-Notizbüchern von der Timeout-Richtlinie für Leerlaufsitzungen von Microsoft 365 betroffen sein. Dieses Sicherheitsfeature wurde entwickelt, um Benutzer auf inaktiven, nicht verwalteten Geräten abzumelden, auch wenn noch ein Notizbuchauftrag ausgeführt wird. Während Aktivitäten in anderen Microsoft 365-Apps die Sitzung aktiv halten können, werden inaktive Geräte absichtlich abgemeldet.

Warum werden Benutzer abgemeldet, obwohl noch ein Notizbuch-Job ausgeführt wird?

Das Session-Timeout priorisiert die Sicherheit, indem es Sitzungen auf inaktiven Geräten beendet, um unautorisierten Zugriff zu verhindern. Auch wenn eine Notizbuchausführung ausgeführt wird, endet die Sitzung, wenn das Gerät keine Aktivität anzeigt. Wenn Sitzungen auf Leerlaufgeräten geöffnet bleiben, würde die Sicherheit beeinträchtigt, weshalb das aktuelle Verhalten erzwungen wird.

Inlineindikator für Apache Spark-Aufträge

Fabric-Notizbücher basieren auf Apache Spark. Codezellen werden remote im Apache Spark-Cluster ausgeführt. Eine Spark-Auftragsstatusanzeige wird mit einem Statusbalken in Echtzeit angezeigt, um Ihnen den Status der Auftragsausführung zu verdeutlichen. Anhand der Anzahl der Aufgaben pro Auftrag oder Phase können Sie die parallele Ebene Ihres Spark-Auftrags identifizieren. Sie können außerdem die Spark-Benutzeroberfläche eines spezifischen Auftrags (oder einer Phase) erweitern, indem Sie den Link im Auftragsnamen (oder Phasennamen) auswählen.

Neben dem Statusindikator finden Sie auch das Echtzeitprotokoll auf Zellenebene, und der Bereich Diagnose kann Ihnen nützliche Vorschläge liefern, um den Code zu optimieren und zu debuggen.

Screenshot: Details zum Status der Spark-Aufträge

Unter Weitere Aktionen können Sie ganz einfach zur Seite Spark-Anwendungsdetails und zur Seite Spark-Webbenutzeroberfläche navigieren.

Screenshot: Details zu weiteren Aktionen

Geheimnisbearbeitung

Um zu verhindern, dass Anmeldeinformationen beim Ausführen von Notebooks versehentlich offengelegt werden, unterstützen Fabric-Notebook die Geheimnisbearbeitung, um die in der Zellenausgabe angezeigten Geheimwerte durch [REDACTED] zu ersetzen. Die geheime Bearbeitung ist für Python, Scala und R verfügbar.

Screenshot der Geheimnisbearbeitung

Magic-Befehle in einem Notebook

Integrierte Magic-Befehle

Sie können bekannte IPython-Magic-Befehle in Fabric-Notebooks verwenden. In der folgenden Liste finden Sie die derzeit verfügbaren Magic-Befehle.

Hinweis

Nur die folgenden Magic-Befehle werden in einer Fabric-Pipeline unterstützt: %%pyspark, %%spark, %%csharp, %%sql, %%configure.

Verfügbare Magic-Befehle für Zeilen: %lsmagic, %time, %timeit, %history, %run, %load, %alias, %alias_magic, %autoawait, %autocall, %automagic, %bookmark, %cd, %colors, %dhist, %dirs, %doctest_mode, %killbgscripts, %load_ext, %logoff, %logon, %logstart, %logstate, %logstop, %magic, %matplotlib, %page, %pastebin, %pdef, %pfile, %pinfo, %pinfo2, %popd, %pprint, %precision, %prun, %psearch, %psource, %pushd, %pwd, %pycat, %quickref, %rehashx, %reload_ext, %reset, %reset_selective, %sx, %system, %tb, %unalias, %unload_ext, %who, %who_ls, %whos, %xdel und %xmode.

Das Fabric-Notizbuch unterstützt auch die verbesserten Befehle %pip und %conda für die Bibliotheksverwaltung. Weitere Informationen zur Verwendung finden Sie unter Verwalten von Apache Spark-Bibliotheken in Microsoft Fabric.

Verfügbare Magic-Befehle für Zellen: %%time, %%timeit, %%capture, %%writefile, %%sql, %%pyspark, %%spark, %%csharp, %%configure, %%html, %%bash, %%markdown, %%perl, %%script, %%sh.

Benutzerdefinierte Magic-Befehle

Sie können auch weitere benutzerdefinierte Magic-Befehle erstellen, um Ihre spezifischen Anforderungen zu erfüllen. Hier sehen Sie ein Beispiel:

  1. Erstellen Sie ein Notebook mit dem Namen MyLakehouseModule.

    Screenshot des Definierens eines benutzerdefinierten Magic-Befehls.

  2. Verweisen Sie in einem anderen Notebook auf MyLakehouseModule und seine magischen Befehle. Mit diesem Prozess können Sie Ihr Projekt bequem mit Notebooks organisieren, die unterschiedliche Sprachen verwenden.

    Screenshot: Verwenden eines benutzerdefinierten Magic-Befehls

IPython-Widgets

IPython-Widgets sind ereignisbehaftete Python-Objekte mit einer Darstellung im Browser. Sie können IPython-Widgets als Low-Code-Steuerelemente (z. B. für Schieberegler oder Textfelder) in Ihrem Notebook verwenden, genau wie in Jupyter Notebook. Dies funktioniert derzeit nur in einem Python-Kontext.

So verwenden Sie IPython-Widgets

  1. Importieren Sie zuerst das Modul ipywidgets, um das Jupyter-Widgetframework zu verwenden.

    import ipywidgets as widgets
    
  2. Verwenden Sie die globale Funktion display, um ein Widget zu rendern, oder lassen Sie einen Ausdruck des Typs widget in der letzten Zeile der Codezelle stehen.

    slider = widgets.IntSlider()
    display(slider)
    
  3. Führen Sie die Zelle aus. Das Widget wird im Ausgabebereich angezeigt.

    slider = widgets.IntSlider()
    display(slider)
    

    Screenshot: Widget im Ausgabebereich

  4. Verwenden Sie mehrere display()-Aufrufe, um dieselbe Widgetinstanz mehrmals zu rendern. Sie bleiben miteinander synchronisiert.

    slider = widgets.IntSlider()
    display(slider)
    display(slider)
    

    Screenshot: mehrere Zeitpunkte eines Widgets

  5. Um zwei Widgets unabhängig voneinander zu rendern, erstellen Sie zwei Widgetinstanzen:

    slider1 = widgets.IntSlider()
    slider2 = widgets.IntSlider()
    display(slider1)
    display(slider2)
    

    Screenshot, der mehrere Instanzen von Widgets zeigt.

Unterstützte Widgets

Widgettyp Widgets
Numerische Widgets IntSlider, FloatSlider, FloatLogSlider, IntRangeSlider, FloatRangeSlider, IntProgress, FloatProgress, BoundedIntText, BoundedFloatText, IntText, FloatText
Boolesche Widgets Umschaltknopf, Kontrollkästchen, Gültig
Auswahlwidgets Dropdown-Menü, Optionsschaltflächen, Select, SelectionSlider, SelectionRangeSlider, Umschalttasten, Mehrfachauswahl
Zeichenfolgenwidgets Text, Textbereich, Kombinationsfeld, Passwort, Beschriftung, HTML, HTML Math, Bild, Schaltfläche
Wiedergabewidgets (Animation) Date picker, Color picker, Controller (Datumsauswahl, Farbauswahl, Controller)
Container- oder Layoutwidgets Box, HBox, VBox, GridBox, Accordion, Tabstopps, gestapelt

Bekannte Einschränkungen

  • Die folgenden Widgets werden noch nicht unterstützt. Die folgenden Problemumgehungen sind verfügbar:

    Funktionalität Problemumgehung
    Output-Widget Sie können stattdessen die print()-Funktion verwenden, um Text in stdout zu schreiben.
    widgets.jslink() Sie können die widgets.link()-Funktion verwenden, um zwei ähnliche Widgets zu verknüpfen.
    FileUpload-Widget Wird noch nicht unterstützt.
  • Die globale Fabric-Funktion display unterstützt das Anzeigen mehrerer Widgets in einem Aufruf nicht (z. B. display(a, b)). Dieses Verhalten unterscheidet sich von der IPython-Funktion display.

  • Wenn Sie ein Notebook schließen, das ein IPython-Widget enthält, können Sie es erst anzeigen oder damit interagieren, wenn Sie die entsprechende Zelle erneut ausführen.

  • Die Interaktionsfunktion (ipywidgets.interact) wird nicht unterstützt.

Integrieren eines Notebooks

Festlegen einer Parameterzelle

Um Ihr Notebook zu parametrisieren, wählen Sie die Auslassungspunkte (...) aus, um auf der Zellensymbolleiste weitere Befehle auszuklappen. Klicken Sie dann auf Parameterzelle umschalten, um die Zelle als Parameterzelle festzulegen.

Screenshot: Auswahl der Option „Parameterzelle umschalten“

Die Parameterzelle ist nützlich für die Integration eines Notebooks in eine Pipeline. Die Pipelineaktivität sucht nach der Parameterzelle und behandelt diese Zelle als Standard für die Parameter, die zur Ausführungszeit übermittelt werden. Die Ausführungs-Engine fügt eine neue Zelle mit Eingabeparametern unterhalb der Parameterzelle hinzu, um die Standardwerte zu überschreiben.

Zuweisen von Parameterwerten über eine Pipeline

Sobald Sie ein Notebook mit Parametern erstellt haben, können Sie dieses über eine Pipeline mit der Fabric-Notebookaktivität ausführen. Nachdem Sie die Aktivität zu Ihrer Pipelinecanvas hinzugefügt haben, können Sie die Parameterwerte auf der Registerkarte Einstellungen im Abschnitt Basisparameter festlegen.

Screenshot zeigt, wo Parameterwerte aus einer Pipeline zugewiesen werden sollen.

Beim Zuweisen von Parameterwerten können Sie die Pipelineausdruckssprache oder Funktionen und Variablen verwenden.

Notizbuchparameter unterstützen einfache Typen wie int, , float, boolund string. Komplexe Typen wie list z. B. und dict werden noch nicht unterstützt. Um einen komplexen Typ zu übergeben, sollten Sie ihn in ein Zeichenfolgenformat (z. B. JSON) serialisieren und dann innerhalb des Notizbuchs deserialisieren. Das folgende Beispiel zeigt, wie Sie eine JSON-Zeichenfolge von der Pipeline an das Notizbuch übergeben und deserialisieren:

Screenshot, der zeigt, wie json-Zeichenfolgen aus einer Pipeline übergeben werden.

Der folgende Python-Code veranschaulicht, wie die JSON-Zeichenfolge in ein Python-Wörterbuch deserialisiert wird:

import json

# Deserialize the JSON string into a Python dictionary
params = json.loads(json_string)

# Access the individual parameters
param1 = params.get("param1")
param2 = params.get("param2")

Stellen Sie sicher, dass der Parametername in der Parametercodezelle mit dem Parameternamen in der Pipeline übereinstimmt.

Magic-Befehl für Spark-Sitzungskonfiguration

Sie können Ihre Spark-Sitzung mit dem Magic-Befehl %%configure personalisieren. Ein Fabric-Notebook unterstützt angepasste virtuelle Kerne, Arbeitsspeicher für den Treiber und Executor, Apache Spark-Eigenschaften, Bereitstellungspunkte, Pools und das Standard-Lakehouse der Notebook-Sitzung. Sie können sowohl in interaktiven Notebook- als auch in Pipeline-Notebook-Aktivitäten verwendet werden. Es wird empfohlen, den Befehl %%configure am Anfang ihres Notebooks auszuführen. Andernfalls müssen Sie die Spark-Sitzung neu starten, damit die Einstellungen wirksam werden.

%%configure
{
    // You can get a list of valid parameters to config the session from https://github.com/cloudera/livy#request-body.
    "driverMemory": "28g", // Recommended values: ["28g", "56g", "112g", "224g", "400g"]
    "driverCores": 4, // Recommended values: [4, 8, 16, 32, 64]
    "executorMemory": "28g",
    "executorCores": 4,
    "jars": ["abfs[s]: //<file_system>@<account_name>.dfs.core.windows.net/<path>/myjar.jar", "wasb[s]: //<containername>@<accountname>.blob.core.windows.net/<path>/myjar1.jar"],
    "conf":
    {
        // Example of customized property, you can specify count of lines that Spark SQL returns by configuring "livy.rsc.sql.num-rows".
        "livy.rsc.sql.num-rows": "3000",
        "spark.log.level": "ALL"
    },
    "defaultLakehouse": {  // This overwrites the default lakehouse for current session
        "name": "<lakehouse-name>",
        "id": "<(optional) lakehouse-id>",
        "workspaceId": "<(optional) workspace-id-that-contains-the-lakehouse>" // Add workspace ID if it's from another workspace
    },
    "mountPoints": [
        {
            "mountPoint": "/myMountPoint",
            "source": "abfs[s]://<file_system>@<account_name>.dfs.core.windows.net/<path>"
        },
        {
            "mountPoint": "/myMountPoint1",
            "source": "abfs[s]://<file_system>@<account_name>.dfs.core.windows.net/<path1>"
        },
    ],
    "environment": {
        "id": "<environment-id>",
        "name": "<environment-name>"
    },
    "sessionTimeoutInSeconds": 1200,
    "useStarterPool": false,  // Set to true to force using starter pool
    "useWorkspacePool": "<workspace-pool-name>"
}

Hinweis

  • Es wird empfohlen, denselben Wert für „DriverMemory“ und „ExecutorMemory“ in „%%configure“ festzulegen. Die Werte „driverCores“ und „executorCores“ sollten ebenfalls identisch sein.
  • „defaultLakehouse“ überschreibt Ihr angeheftetes Lakehouse im Lakehouse-Explorer, dies funktioniert jedoch nur in Ihrer aktuellen Notebook-Sitzung.
  • Sie können %%configure in Fabric-Pipelines verwenden, aber wenn sie nicht in der ersten Codezelle festgelegt ist, schlägt die Pipelineausführung fehl, da keine Sitzung neu gestartet werden kann.
  • Die %%configure, die in notebookutils.notebook.run verwendet wird, wird ignoriert, wird jedoch in %run Notebook weiterhin ausgeführt.
  • Die Spark-Standardkonfigurationseigenschaften müssen im „conf“-Text verwendet werden. Fabric unterstützt keine Referenz auf der ersten Ebene für die Spark-Konfigurationseigenschaften.
  • Einige spezielle Spark-Eigenschaften wie „spark.driver.cores“, „spark.executor.cores“, „spark.driver.memory“, „spark.executor.memory“ und „spark.executor.instances“ werden im conf-Text nicht wirksam.

Sie können auch magischen Befehl verwenden %%configure , um Konfigurationswerte aus der Variablenbibliothek dynamisch in Ihr Notizbuch einzufügen.

%%configure
{
  "defaultLakehouse": {
    "name": {
      "variableName": "$(/**/myVL/LHname)" 
    },
    "id": {
      "variableName": "$(/**/myVL/LHid)"
    },
    "workspaceId": {
      "variableName": "$(/**/myVL/WorkspaceId)"
    }
  }
}

In diesem Beispiel:

  • myVL ist der Name der Variablenbibliothek.
  • LHname, LHidund WorkspaceId sind variablen Schlüssel, die in der Bibliothek definiert sind.
  • Alle Variablen sollten als Zeichenfolgentyp in der Variablenbibliothek definiert werden, auch für GUID-Werte.
  • Das workspaceId ist erforderlich, wenn sich das Lakehouse in einem anderen Arbeitsbereich befindet als das aktuelle Notizbuch.
  • Diese Werte werden zur Laufzeit abhängig von der aktiven Umgebung aufgelöst (z. B. Dev, Test, Prod).

Auf diese Weise können Sie Konfigurationen wie die Standard-Lakehouse-Konfiguration ändern, ohne Ihren Notizbuchcode anzupassen.

Parametrisierte Sitzungskonfiguration aus einer Pipeline

Mit der parametrisierten Sitzungskonfiguration können Sie den Wert im Magic-Befehl „%%configure“ durch Parameter der Notebook-Aktivität für die Pipelineausführung ersetzen. Beim Vorbereiten der „%%configure“-Codezelle können Sie Standardwerte (im folgenden Beispiel auch konfigurierbar, 4 und „2000“) mit einem Objekt wie dem folgenden überschreiben:

{
      "parameterName": "paramterNameInPipelineNotebookActivity",
      "defaultValue": "defaultValueIfNoParamterFromPipelineNotebookActivity"
} 
%%configure  

{ 
    "driverCores": 
    { 
        "parameterName": "driverCoresFromNotebookActivity", 
        "defaultValue": 4 
    }, 
    "conf": 
    { 
        "livy.rsc.sql.num-rows": 
        { 
            "parameterName": "rows", 
            "defaultValue": "2000" 
        } 
    } 
} 

Ein Notebook verwendet den Standardwert, wenn es direkt im interaktiven Modus ausgeführt wird oder die Notebook-Aktivität der Pipeline keinen Parameter angibt, der „activityParameterName“ entspricht.

Während eines Pipeline-Laufs können Sie die Einstellungen der Notebook-Aktivität in der Pipeline wie folgt konfigurieren:

Screenshot zeigt, wo eine parametrisierte Sitzung konfiguriert werden soll.

Wenn Sie die Sitzungskonfiguration ändern möchten, sollte der Name der Notebook-Aktivitätsparameter der Pipeline mit dem Namen von parameterName im Notebook identisch sein. In diesem Beispiel für die Ausführung einer Pipeline wird driverCores in „%%configure“ durch 8 und livy.rsc.sql.num-rows durch 4000 ersetzt.

Hinweis

  • Wenn die Ausführung einer Pipeline aufgrund der Verwendung des Magic-Befehls „%%configure“ fehlgeschlagen ist, können Sie weitere Fehlerinformationen überprüfen, indem Sie die Magic-Zelle „%%configure“ im interaktiven Modus des Notebooks ausführen.
  • Geplante Notebook-Ausführungen unterstützen keine parametrisierte Sitzungskonfiguration.

Python-Protokollierung in einem Notebook

Informationen zum Auffinden der Python-Protokolle und zum Festlegen verschiedener Protokollebenen und -formate können Sie dem folgenden Beispielcode entnehmen:

import logging

# Customize the logging format for all loggers
FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
formatter = logging.Formatter(fmt=FORMAT)
for handler in logging.getLogger().handlers:
    handler.setFormatter(formatter)

# Customize log level for all loggers
logging.getLogger().setLevel(logging.INFO)

# Customize the log level for a specific logger
customizedLogger = logging.getLogger('customized')
customizedLogger.setLevel(logging.WARNING)

# logger that use the default global log level
defaultLogger = logging.getLogger('default')
defaultLogger.debug("default debug message")
defaultLogger.info("default info message")
defaultLogger.warning("default warning message")
defaultLogger.error("default error message")
defaultLogger.critical("default critical message")

# logger that use the customized log level
customizedLogger.debug("customized debug message")
customizedLogger.info("customized info message")
customizedLogger.warning("customized warning message")
customizedLogger.error("customized error message")
customizedLogger.critical("customized critical message")

Anzeigen des Verlaufs von Eingabebefehlen

Das Fabric-Notebook unterstützt den Magic-Befehl %history zum Drucken des Verlaufs der Eingabebefehle, die in der aktuellen Sitzung ausgeführt wurden; im Vergleich zum standardmäßigen Jupyter Ipython-Befehl funktioniert der %history-Befehl für mehrere Sprachen im Notebook.

%history [-n] [range [range ...]]

Für Optionen:

  • -n: Drucken der Ausführungsnummer.

Wo der Bereich wie folgt lauten kann:

  • N: Drucken des Codes der N-ten ausgeführten Zelle.
  • M-N: Drucken von Code von der M-ten bis zur N-ten ausgeführten Zelle.

Beispiel:

  • Eingabeverlauf von der 1. bis zur 2. ausgeführten Zelle drucken: %history -n 1-2

Tastenkombinationen

Ähnlich wie Jupyter-Notebooks verfügen Fabric-Notebooks über eine modale Benutzeroberfläche. Mit der Tastatur werden unterschiedliche Aktionen ausgeführt, je nachdem, in welchem Modus sich die Notebook-Zelle befindet. Fabric-Notebooks unterstützen die folgenden zwei Modi für eine bestimmte Codezelle: Befehlsmodus und Bearbeitungsmodus.

  • Eine Zelle befindet sich im Befehlsmodus, wenn Sie nicht durch einen Textcursor zur Eingabe aufgefordert werden. Wenn sich eine Zelle im Befehlsmodus befindet, können Sie das Notebook als Ganzes bearbeiten, aber keine Eingaben in einzelne Zellen vornehmen. Sie wechseln in den Befehlsmodus, indem Sie die ESC-TASTE drücken oder mit der Maus außerhalb des Editor-Bereichs einer Zelle klicken.

    Screenshot: Zelle im Befehlsmodus

  • Der Bearbeitungsmodus ist durch einen Textcursor erkennbar, der Sie zur Eingabe im Editor-Bereich auffordert. Wenn sich eine Zelle im Bearbeitungsmodus befindet, können Sie etwas in diese eingeben. Sie wechseln in den Bearbeitungsmodus, indem Sie die EINGABETASTE drücken oder mit der Maus den Editor-Bereich einer Zelle auswählen.

    Screenshot: Zelle im Bearbeitungsmodus

Tastenkombinationen im Befehlsmodus

Aktion Tastenkombinationen für Notebooks
Aktuelle Zelle ausführen und die darunter auswählen UMSCHALT+EINGABE
Aktuelle Zelle ausführen und darunter einfügen ALT+EINGABE
Aktuelle Zelle ausführen STRG+EINGABE
Zelle oben auswählen Nach oben
Zelle darunter auswählen Nach unten
Vorherige Zelle auswählen K
Nächste Zelle auswählen J
Zelle oberhalb einfügen Ein
Zelle unterhalb einfügen B
Ausgewählte Zellen löschen D,D
In den Bearbeitungsmodus wechseln Eingabe

Tastenkombinationen im Bearbeitungsmodus

Mithilfe der folgenden Tastenkombinationen können Sie in Fabric-Notebooks unkompliziert navigieren und Code ausführen, die sich im Bearbeitungsmodus befinden.

Aktion Tastenkombinationen für Notebooks
Cursor nach oben verschieben Nach oben
Cursor nach unten verschieben Nach unten
Rückgängig STRG+Z
Wiederholen STRG+Y
Kommentieren oder Entkommentieren STRG+/
Kommentar: STRG+K+C
Kommentar entfernen: STRG+K+U
Lösche das vorherige Wort STRG+RÜCKTASTE
Wort danach löschen STRG+DELETE
Zum Anfang der Zelle wechseln STRG+POS1
Zum Ende der Zelle wechseln STRG+ENDE
Ein Wort nach links wechseln STRG+NACH-LINKS
Ein Wort nach rechts wechseln STRG+NACH-RECHTS
Alle auswählen STRG+A
Einziehen STRG+]
Einzug entfernen STRG+[
In den Befehlsmodus wechseln ESC

Um alle Tastenkombinationen zu finden, wählen Sie im Menüband des Notizbuchs die Option "Ansicht" und dann " Tastenbindungen" aus.