Code in Snowflake Notebooks entwickeln und ausführen

Dieses Thema beschreibt, wie Sie SQL, Python und Markdown-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.

Schaltflächen zum Hinzufügen neuer Zellen am unteren Rand des Notebooks

Sie können die Sprache der Zelle jederzeit nach ihrer Erstellung mit zwei Methoden ändern:

Zellen verschieben

Sie können eine Zelle entweder durch Ziehen und Ablegen mit der Maus oder über das Aktionsmenü verschieben:

  1. (Option 1) Bewegen Sie die Maus über die Zelle, die Sie verschieben möchten. Wählen Sie das Symbol Symbol für das Ziehen und Ablegen von Notebooks (Ziehen und Ablegen) auf der linken Seite der Zelle, und verschieben Sie die Zelle an ihren neuen Speicherort.

  2. (Option 2) Wählen Sie das vertikale Ellipsenmenü Weitere Aktionen für das Arbeitsblatt (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:

  1. Wählen Sie das vertikale Ellipsenmenü Weitere Aktionen für das Arbeitsblatt (weitere Aktionen) aus.

  2. Wählen Sie Delete aus.

  3. 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.

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.

    • Drücken Sie CMD + Return auf einer Mac-Tastatur oder CTRL + Enter auf einer Windows-Tastatur.

    • Wählen Sie Nur diese Zelle ausführen oder Run this cell only aus.

  • 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 für das Arbeitsblatt (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 für das Arbeitsblatt (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 für das Arbeitsblatt (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: Die Zelle wurde geändert, aber noch nicht ausgeführt.

  • Rot: Die Zelle wurde in der aktuellen Sitzung ausgeführt und es ist ein Fehler aufgetreten.

  • Grün: Die Zelle wurde in der aktuellen Sitzung ohne Fehler ausgeführt.

  • Bewegtes Grün: Zelle wird gerade ausgeführt.

  • Grau: Die Zelle wurde in einer vorherigen Sitzung ausgeführt und die angezeigten Ergebnisse stammen aus der vorherigen Sitzung. Die Zellenergebnisse der letzten interaktiven Sitzung werden 7 Tage lang aufbewahrt. Interaktive Sitzung bedeutet, dass der Benutzer das Notebook in Snowsight interaktiv ausführt und nicht über einen Zeitplan oder den SQL-Befehl EXECUTE NOTEBOOK.

  • Blinkt grau: Die Zelle wartet darauf, ausgeführt zu werden, nachdem Sie Run All gewählt haben.

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, um die Ausführungsdetails anzuzeigen, einschließlich der Start- und Endzeit und der verstrichenen Gesamtzeit.

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.

Fenster mit Details zur Zellenausführung.

In Ausführung befindliche Zelle stoppen

Um die Ausführung von Codezellen, die gerade ausgeführt werden, zu stoppen, wählen Sie Stop oben rechts in der Zelle. Sie können auch Stop oben rechts auf der Notebooks-Seite auswählen. Während die Zellen laufen, wird Run all zu Stop.

Dies stoppt die Ausführung der gerade ausgeführten Zelle und aller nachfolgenden Zellen, die für die Ausführung geplant wurden.

Text mit Markdown formatieren

Um Markdown in Ihr Notebook aufzunehmen, fügen Sie eine Markdown-Zelle hinzu:

  1. Verwenden Sie das Tastaturkürzel, und wählen Sie Markdown aus, oder wählen Sie + Markdown aus.

  2. 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.

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“.

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
Copy
Header eins in Markdown

2nd-level

## 2nd-level Header
Copy
Header eins in Markdown

3rd-level

### 3rd-level Header
Copy
Header eins in Markdown

Inline Textformatierung

Textformat

Markdown-Syntax

Beispiel

Kursiv

*italicized text*
Copy
Kursivtext in Markdown

Fett

**bolded text**
Copy
Fettgedruckter Text in Markdown

Verknüpfung

[Link text](url)
Copy
Link in Markdown

Listen

Listentyp

Markdown-Syntax

Beispiel

Geordnete Liste

1. first item
2. second item
  1. Nested first
  2. Nested second
Copy
Geordnete Liste in Markdown

Ungeordnete Liste

- first item
- second item
  - Nested first
  - Nested second
Copy
Ungeordnete Liste in Markdown

Code-Formatierung

Sprache

Markdown-Syntax

Beispiel

Python

```python
import pandas as pd
df = pd.DataFrame([1,2,3])
```
Copy
Python-Codeschnipsel in Markdown

SQL

```sql
SELECT * FROM MYTABLE
```
Copy
SQL Codeschnipsel in Markdown

Bilder einbetten

Dateityp

Markdown-Syntax

Beispiel

Bild

![<alt_text>](<path_to_image>)
Copy
Eingebettetes Bild in Markdown

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, zeigt das Notebook die folgenden Arten von Ausgaben der Zelle in den Ergebnissen an:

  • Alle Ergebnisse, die in die Konsole geschrieben werden, wie z. B. Protokolle, Fehler und Warnungen sowie Ausgaben von print()-Anweisungen.

  • DataFrames werden automatisch mit der interaktiven Tabellenanzeige von Streamlit, st.dataframe() gedruckt.

    • Zu den unterstützten DataFrame-Anzeigetypen gehören pandas DataFrame, Snowpark DataFrames und Snowpark-Tabellen.

    • Für Snowpark werden DataFrames im Eager-Modus ausgewertet, ohne dass Sie den Befehl .show() ausführen müssen. Wenn Sie es vorziehen, DataFrame nicht im Eager-Modus auszuwerten, z. B. wenn Sie das Notebook im nicht-interaktiven Modus ausführen, empfiehlt Snowflake, die DataFrame print-Anweisungen zu entfernen, um die Laufzeit Ihres Snowpark-Codes insgesamt zu beschleunigen.

  • Visualisierungen werden in Ausgaben gerendert. Wenn Sie mehr über die Visualisierung Ihrer Daten erfahren möchten, besuchen Sie 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.

Grenzen der Zellenausgabe

Es werden nur 10.000 Zeilen oder 8 MB der DataFrame-Ausgabe als Zellenergebnisse angezeigt, je nachdem, welcher Wert niedriger ist. Der gesamte DataFrame steht jedoch weiterhin in der Notebook-Sitzung zur Verwendung zur Verfügung. Auch wenn beispielsweise nicht der gesamte DataFrame gerendert wird, können Sie dennoch Datentransformationsaufgaben durchführen.

Für jede Zelle ist nur eine Ausgabe von 20 MB erlaubt. Wenn die Größe der Zellenausgabe 20 MB überschreitet, wird die Ausgabe verworfen. Ziehen Sie in Erwägung, den Inhalt in mehrere Zellen aufzuteilen, wenn dies geschieht.

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

cell1

Konvertieren Sie eine SQL-Ergebnistabelle in einen Snowpark-DataFrame.

Wenn eine SQL-Zelle namens cell1 Folgendes enthält:

SELECT 'FRIDAY' as SNOWDAY, 0.2 as CHANCE_OF_SNOW
UNION ALL
SELECT 'SATURDAY',0.5
UNION ALL
SELECT 'SUNDAY', 0.9;
Copy

Sie können auf die Zelle verweisen, um auf das SQL-Ergebnis zuzugreifen:

snowpark_df = cell1.to_df()
Copy

Sie können das Ergebnis in einen Pandas-DataFrame konvertieren:

my_df = cell1.to_pandas()
Copy

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

{{cell2}}

Beispiel: In SQL-Zelle namens cell1 wird auf das Zellenergebnisse von cell2 verwiesen:

SELECT * FROM {{cell2}} where PRICE > 500
Copy

Python

SQL

{{variable}}

Beispiel: In einer Python-Zelle namens cell1:

Python-Variable als Wert verwenden

c = "USA"
Copy

Sie können den Wert der Variablen c in einer SQL-Zelle mit dem Namen cell2 referenzieren, indem Sie ihn in einfache Anführungszeichen setzen, um sicherzustellen, dass er als Wert behandelt wird:

SELECT * FROM my_table WHERE COUNTRY = '{{c}}'
Copy

Python-Variable als Bezeichner verwenden

Wenn die Python-Variable einen SQL-Bezeichner wie einen Spalten- oder Tabellennamen darstellt:

column_name = "COUNTRY"
Copy

Wenn die Python-Variable einen SQL-Bezeichner darstellt, wie z. B. einen Spalten- oder Tabellennamen (column_name = "COUNTRY"), können Sie die Variable direkt ohne Anführungszeichen referenzieren:

SELECT * FROM my_table WHERE {{column_name}} = 'USA'
Copy

Achten Sie darauf, zwischen Variablen, die als Werte (mit Anführungszeichen) und als Bezeichner (ohne Anführungszeichen) verwendet werden, zu unterscheiden.

Hinweis: Ein Verweis auf Python DataFrames wird nicht unterstützt.

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.

  • Sie können die Git-Integration verwenden, um Notebook-Versionen zu verwalten.

  • Sie können eine Timeout-Einstellung für den Leerlauf konfigurieren, um die Notebook-Sitzung automatisch zu beenden, sobald die Einstellung erreicht ist. Weitere Informationen dazu finden Sie unter Leerlaufzeit und Wiederherstellung der Verbindung.

  • Die Ergebnisse der Notebookzellen sind nur für den Benutzer sichtbar, der das Notebook ausgeführt hat, und sie werden sitzungsübergreifend zwischengespeichert. Beim erneuten Öffnen eines Notebooks werden die Ergebnisse angezeigt, die beim letzten Aufruf des Notebooks durch den Benutzer über die Snowsight erzielt wurden.

  • 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 Aufruf collect, 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);
    
    Copy