Code in Snowflake Notebooks entwickeln und ausführen¶
Unter diesem Thema wird beschrieben, wie Sie Code in Snowflake Notebooks schreiben und ausführen.
Grundlagen zu Notebook-Zellen¶
In diesem Abschnitt werden einige grundlegende Zelloperationen vorgestellt. Wenn Sie ein Notebook erstellen, werden drei Beispielzellen angezeigt. Sie können diese Zellen ändern oder neue Zellen hinzufügen.
Neue Zelle erstellen¶
Snowflake Notebooks unterstützt drei Typen von Zellen: SQL, Python und Markdown. Um eine neue Zelle zu erstellen, können Sie entweder mit dem Mauszeiger über eine vorhandene Zelle fahren oder an den unteren Rand des Notebooks scrollen und dann eine der Schaltflächen für den Zellentyp auswählen, den Sie hinzufügen möchten.
Sie können die Sprache der Zelle jederzeit nach ihrer Erstellung mit zwei Methoden ändern:
Öffnen Sie das Dropdown-Menü mit den Sprachen, und wählen Sie eine andere Sprache aus.
Verwenden Sie Tastaturkürzel für Snowflake Notebooks.
Zellen verschieben¶
Sie können eine Zelle entweder durch Ziehen und Ablegen (Drag & Drop) mit der Maus oder über das Aktionsmenü verschieben:
(Option 1) Bewegen Sie die Maus über die Zelle, die Sie verschieben möchten. Wählen Sie das Drag & Drop-Symbol mit der Maus aus, und verschieben Sie die Zelle an ihre neue Position.
(Option 2) Wählen Sie das vertikale Ellipsenmenü
(Aktionsmenü) aus. Wählen Sie dann die entsprechende Aktion aus.
Bemerkung
Um den Fokus zwischen Zellen zu verschieben, verwenden Sie die Pfeile Up und Down.
Zelle löschen¶
Um eine Zelle zu löschen, führen Sie die folgenden Schritte in einem Notebook aus:
Wählen Sie das vertikale Ellipsenmenü
(weitere Aktionen) aus.
Wählen Sie Delete aus.
Wählen Sie zur Bestätigung erneut Delete aus.
Sie können auch ein Tastaturkürzel verwenden, um eine Zelle zu löschen.
Hinweise bei Verwendung von Python- und SQL-Zellen finden Sie unter Hinweise zum Ausführen von Notebooks.
Python- und SQL-Zellen in Snowflake Notebooks ausführen¶
Um Python- und SQL-Zellen in Snowflake Notebooks auszuführen, haben Sie folgende Optionen:
Einzelne Zelle ausführen: Wählen Sie diese Option, wenn Sie den Code häufig aktualisieren.
Alle Zellen im Notebook nacheinander ausführen: Wählen Sie diese Option, bevor Sie ein Notebook präsentieren oder weitergeben, um sicherzustellen, dass die Empfänger aktuelle Informationen sehen.
Drücken Sie CMD + Shift + Return auf einer Mac-Tastatur oder CTRL + Shift + Enter auf einer Windows-Tastatur.
Wählen Sie Run all aus.
Eine Zelle ausführen und zur nächsten Zelle weitergehen: Wählen Sie diese Option, um eine Zelle auszuführen und schneller zur nächsten Zelle weiterzugehen.
Drücken Sie Shift + Return auf einer Mac-Tastatur oder Shift + Enter auf einer Windows-Tastatur.
Öffnen Sie das vertikale Ellipsenmenü (weitere Aktionen) der Zelle, und wählen Sie Run cell and advance aus.
Alle obigen ausführen: Wählen Sie diese Option, wenn Sie eine Zelle ausführen, die auf die Ergebnisse vorheriger Zellen verweist.
Öffnen Sie das vertikale Ellipsenmenü (weitere Aktionen) der Zelle, und wählen Sie Run all above aus.
Alle unten ausführen: Wählen Sie diese Option, wenn Sie eine Zelle ausführen, von der nachfolgende Zellen abhängen. Mit dieser Option werden die aktuelle Zelle und alle folgenden Zellen ausgeführt.
Öffnen Sie das vertikale Ellipsenmenü (weitere Aktionen) der Zelle, und wählen Sie Run all below aus.
Wenn eine Zelle ausgeführt wird, werden andere Ausführungsanforderungen in eine Warteschlange eingefügt und ausgeführt, sobald die gerade aktive Zelle fertig ist.
Zellenstatus prüfen¶
Der Status der Zellenausführung wird durch die Farbe der Zelle angezeigt. Diese Statusfarbe wird an zwei Stellen angezeigt: an der linken Seite der Zelle und in der rechten Zellennavigationskarte.
Zellenstatusfarbe:
Blauer Punkt – Zeigt an, dass eine Zelle geändert wurde, aber noch nicht ausgeführt wurde.
Rot – Es ist ein Fehler aufgetreten.
Grün – Ausführung war erfolgreich.
Bewegtes Grün – Zelle wird gerade ausgeführt.
Blinkt grau – Zelle wartet darauf, ausgeführt zu werden. Dieser Status tritt auf, wenn bei mehreren Zellen die Ausführung getriggert wurde.
Bemerkung
Markdown-Zellen zeigen keinen Status an.
Nachdem eine Zelle ausgeführt wurde, wird die dafür benötigte Zeit oben in der Zelle angezeigt. Wählen Sie diesen Text aus, um das Fenster mit den Ausführungsdetails anzuzeigen. Sie können die Ausführungsdetails einsehen, einschließlich Start- und Endzeit der Ausführung sowie die insgesamt verstrichene Zeit.
SQL-Zellen enthalten zusätzliche Informationen, z. B. das Warehouse, das für die Abfrage verwendet wurde, die zurückgegebenen Zeilen und einen Hyperlink zur Abfrage-ID-Seite.
In Ausführung befindliche Zelle stoppen¶
Um Codezellen, die gerade ausgeführt werden, zu stoppen, wählen Sie rechts oben in der Zelle die Stopp-Schaltfläche aus.
Dadurch wird die Ausführung der Zelle und aller nachfolgenden Zellen, deren Ausführung geplant war, gestoppt.
Text mit Markdown formatieren¶
Um Markdown in Ihr Notebook aufzunehmen, fügen Sie eine Markdown-Zelle hinzu:
Verwenden Sie das Tastaturkürzel, und wählen Sie Markdown aus, oder wählen Sie + Markdown aus.
Wählen Sie das Bleistiftsymbol Edit markdown aus oder doppelklicken Sie auf die Zelle, und beginnen Sie mit dem Schreiben von Markdown.
Sie können gültiges Markdown eingeben, um eine Textzelle zu formatieren. Während Sie tippen, wird der formatierte Text unter der Markdown-Syntax angezeigt.
![Screenshot einer Markdown-Zelle. Zeigt Markdown-Text mit einer H1-Überschrift, die mit einem # gekennzeichnet ist, und der Überschrift „An example Markdown cell“, gefolgt von einem Textkörper mit dem Text „This is an example Markdown cell in a Snowflake Notebook“. Unterhalb des rohen Markdown-Inhalts erscheint das gerenderte Markdown in einer anderen Schriftart.](../../_images/notebooks-markdown-editing.png)
Um nur den formatierten Text anzuzeigen, wählen Sie das Symbol Done editing.
![Screenshot einer Markdown-Zelle, die nur das gerenderte Markdown anzeigt: die Überschrift „An example Markdown\cell“ und den Textkörper mit „This is an example Markdown cell in a Snowflake Notebook“.](../../_images/notebooks-markdown-display.png)
Bemerkung
Markdown-Zellen unterstützen derzeit nicht das Rendern von HTML.
Markdown-Grundlagen¶
Dieser Abschnitt beschreibt die grundlegende Syntax von Markdown, um Ihnen den Einstieg zu erleichtern.
Kopfzeilen
Überschriftebene |
Markdown-Syntax |
Beispiel |
---|---|---|
Oberste Ebene |
# Top-level Header
|
![]() |
2nd-level |
## 2nd-level Header
|
![]() |
3rd-level |
### 3rd-level Header
|
![]() |
Inline Textformatierung
Textformat |
Markdown-Syntax |
Beispiel |
---|---|---|
Kursiv |
*italicized text*
|
![]() |
Fett |
**bolded text**
|
![]() |
Verknüpfung |
[Link text](url)
|
![]() |
Listen
Listentyp |
Markdown-Syntax |
Beispiel |
---|---|---|
Geordnete Liste |
1. first item
2. second item
1. Nested first
2. Nested second
|
![]() |
Ungeordnete Liste |
- first item
- second item
- Nested first
- Nested second
|
![]() |
Code-Formatierung
Sprache |
Markdown-Syntax |
Beispiel |
---|---|---|
Python |
```python
import pandas as pd
df = pd.DataFrame([1,2,3])
```
|
![]() |
SQL |
```sql
SELECT * FROM MYTABLE
```
|
![]() |
Bilder einbetten
Dateityp |
Markdown-Syntax |
Beispiel |
---|---|---|
Bild |
![<alt_text>](<path_to_image>)
|
![]() |
Ein Notebook, das diese Markdown-Beispiele veranschaulicht, finden Sie im Abschnitt Markdown-Zellen des Notebooks „Visuelle Daten-Storys“.
Erläuterungen zu Zellausgaben¶
Wenn Sie eine Python-Zelle ausführen, werden die folgenden Typen von Ausgaben von der Zelle in den Ergebnissen angezeigt:
Alle Ergebnisse, die in die Konsole geschrieben werden, wie print(), Logs, Fehler und Warnungen.
Datenframes werden automatisch mit der interaktiven Streamlit-Tabellenanzeige
st.dataframe()
ausgegeben.Zu den unterstützten Anzeigetypen für Datenframes gehören pandas-DataFrame, Snowpark-DataFrames und Snowpark Tables.
Bei Snowpark werden die ausgegebenen Datenframes im Eager-Modus ausgewertet, ohne dass
.show()
aufgerufen werden muss. Wenn Sie es vorziehen, den Datenframe nicht im Eager-Modus auszuwerten, z. B. wenn Sie das Notebook im nicht interaktiven Modus ausführen, empfiehlt Snowflake, die print-Anweisungen für den Datenframe zu entfernen, um die gesamte Laufzeit Ihres Snowpark-Codes zu beschleunigen.
Visualisierungen werden in Ausgaben gerendert. Weitere Informationen zur Visualisierung Ihrer Daten in Snowflake Notebooks finden Sie unter Daten in Snowflake Notebooks visualisieren.
Außerdem können Sie auf die Ergebnisse Ihrer SQL-Abfrage in Python zugreifen und umgekehrt. Siehe Zellen und Variablen in Snowflake Notebooks referenzieren.
Zellen und Variablen in Snowflake Notebooks referenzieren¶
Sie können die Ergebnisse der vorherigen Zelle in einer Notebook-Zelle referenzieren. Wenn Sie beispielsweise auf das Ergebnis einer SQL-Zelle oder den Wert einer Python-Variablen verweisen möchten, lesen Sie die folgenden Tabellen:
Bemerkung
Beim Zellnamen des Verweises wird zwischen Groß- und Kleinschreibung unterschieden, und er muss genau mit dem Namen der referenzierten Zelle übereinstimmen.
Referenzieren von SQL-Ausgaben in Python-Zellen:
Typ der Referenzzelle |
Typ der aktuellen Zelle |
Referenz-Syntax |
Beispiel |
---|---|---|---|
SQL |
Python |
|
Konvertieren Sie eine SQL-Ergebnistabelle in einen Snowpark-DataFrame. Wenn eine SQL-Zelle namens SELECT 'FRIDAY' as SNOWDAY, 0.2 as CHANCE_OF_SNOW
UNION ALL
SELECT 'SATURDAY',0.5
UNION ALL
SELECT 'SUNDAY', 0.9;
Sie können auf die Zelle verweisen, um auf das SQL-Ergebnis zuzugreifen: snowpark_df = cell1.to_df()
Sie können das Ergebnis in einen Pandas-DataFrame konvertieren: my_df = cell1.to_pandas()
|
Referenzieren von Variablen im SQL-Code:
Wichtig
In SQL-Code können Sie nur auf Python-Variablen vom Typ string
verweisen. Sie können nicht auf ein Snowpark DataFrame-, pandas DataFrame- oder ein anderes natives Python DataFrame-Format verweisen.
Typ der Referenzzelle |
Typ der aktuellen Zelle |
Referenz-Syntax |
Beispiel |
---|---|---|---|
SQL |
SQL |
|
Beispiel: In SQL-Zelle namens SELECT * FROM {{cell2}} where PRICE > 500
|
Python |
SQL |
|
Beispiel: In einer Python-Zelle namens c = "USA"
Sie können den Wert der Variablen SELECT * FROM my_table WHERE COUNTRY = {{c}}
|
Hinweise zum Ausführen von Notebooks¶
Notebooks werden mit Aufruferrechten ausgeführt. Weitere Hinweise finden Sie unter Ändern des Sitzungskontexts für ein Notebook.
Sie können Python-Bibliotheken importieren, um sie in einem Notebook zu verwenden. Weitere Details dazu finden Sie unter Python-Pakete zur Verwendung in Notebooks importieren.
Wenn Sie auf Objekte in SQL-Zellen verweisen, müssen Sie vollqualifizierte Objektnamen verwenden, es sei denn, Sie verweisen auf Objektnamen in einer bestimmten Datenbank oder einem bestimmten Schema. Siehe Ändern des Sitzungskontexts für ein Notebook.
Notebook-Entwürfe werden alle drei Sekunden gespeichert.
Nach einer Stunde Inaktivität (keine Bearbeitung von Code oder Ausführung von Abfragen) wird der Notebook-Kernel heruntergefahren. Snowflake empfiehlt auch, dass Sie die Parameter Ihres Warehouses überprüfen. Wenn STATEMENT_TIMEOUT_IN_SECONDS oder STATEMENT_QUEUED_TIMEOUT_IN_SECONDS auf einen kleinen Wert eingestellt ist, könnte sich das Notebook abschalten oder nicht starten.
Sie können die Git-Integration verwenden, um Notebook-Versionen zu verwalten.
Die Ergebnisse von Notebook-Zellen werden sitzungsübergreifend zwischengespeichert. Wenn Sie ein Notebook erneut öffnen, werden die Ergebnisse der letzten Ausführung des Notebooks in der UI angezeigt. Die zwischengespeicherten Ergebnisse sind nur für denselben Benutzer sichtbar, der das Notebook ausgeführt hat.
BEGIN … END (Snowflake Scripting) wird in SQL-Zellen nicht unterstützt. Verwenden Sie stattdessen die Methode Session.sql().collect() in einer Python-Zelle, um den Scripting-Block auszuführen. Verketten Sie den Aufruf
sql
mit einem Aufrufcollect
, um die SQL-Abfrage sofort auszuführen.Der folgende Code führt einen Snowflake Scripting-Block mit der Methode
session.sql().collect()
aus:from snowflake.snowpark.context import get_active_session session = get_active_session() code_to_run = """ BEGIN CALL TRANSACTION_ANOMALY_MODEL!DETECT_ANOMALIES( INPUT_DATA => SYSTEM$REFERENCE('TABLE', 'ANOMALY_INFERENCE'), TIMESTAMP_COLNAME =>'DATE', TARGET_COLNAME => 'TRANSACTION_AMOUNT', CONFIG_OBJECT => {'prediction_interval': 0.95} ); LET x := SQLID; CREATE TABLE ANOMALY_PREDICTIONS AS SELECT * FROM TABLE(RESULT_SCAN(:x)); END; """ data = session.sql(code_to_run).collect(block=True);