Beispieldaten mit Snowpark Python laden und abfragen

Einführung

In diesem Tutorial wird Ihnen anhand der fiktiven Foodtruck-Marke „Tasty Bytes“ gezeigt, wie Sie mit Snowpark Python Daten in Snowflake laden und abfragen können. Sie verwenden ein in Snowsight vorinstalliertes Python-Arbeitsblatt, um diese Aufgaben zu erledigen.

Die folgende Abbildung gibt einen Überblick zu Tasty Bytes.

Enthält einen Überblick zu Tasty Bytes, einem globalen Foodtruck-Netzwerk mit 15 Marken von lokalisierten Foodtruck-Optionen in mehreren Ländern und Städten. Die Abbildung beschreibt das Leitbild, die Vision, die Standorte, die aktuelle Situation und die Wachstumsziele des Unternehmens.

Bemerkung

Snowflake stellt einen minimalen Betrag für den Festplattenspeicher in Rechnung, der für die Beispieldaten in diesem Tutorial benötigt wird. In diesem Tutorial werden Schritte zum Löschen der Tabelle beschrieben, um die Speicherkosten zu minimieren.

Snowflake benötigt ein virtuelles Warehouse, um die Daten laden und Abfragen ausführen zu können. Ein aktives virtuelles Warehouse verbraucht Snowflake-Credits. In diesem Tutorial werden Sie ein 30-tägiges Testkonto verwenden, das kostenlose Credits bietet, sodass Ihnen keine Kosten entstehen.

Lerninhalte

In diesem Tutorial lernen Sie, wie Sie die folgenden Aufgaben mit der Snowpark Python-API: erledigen können:

  • Eine Datenbank und ein Schema erstellen

  • Einen Stagingbereich erstellen, der die Daten in einem Amazon S3-Bucket speichert.

  • Einen DataFrame erstellen, um den Stagingbereich anzugeben, der die Quelle der Daten ist.

  • Eine Tabelle erstellen, die Daten aus Dateien in einem Stagingbereich enthält.

  • Einen DataFrame einrichten, um die neue Tabelle abzufragen und die Daten zu filtern.

Voraussetzungen

Dieses Tutorial setzt Folgendes voraus:

Bemerkung

Dieses Tutorial ist nur für Benutzer mit einem Testkonto verfügbar. Das Musterarbeitsblatt ist für andere Typen von Konten nicht verfügbar.

Schritt 1: Mit Snowsight anmelden

Um über das öffentliche Internet auf Snowsight zuzugreifen, gehen Sie wie folgt vor:

  1. Navigieren Sie in einem unterstützten Webbrowser zu https://app.snowflake.com.

  2. Geben Sie Ihren Kontobezeichner oder Ihre Konto-URL an. Wenn Sie sich bereits zuvor bei Snowsight angemeldet haben, wird Ihnen möglicherweise ein Kontoname angezeigt, den Sie auswählen können.

  3. Melden Sie sich mit den entsprechenden Anmeldeinformationen bei Ihrem Snowflake-Konto an.

Schritt 2: Python-Arbeitsblatt öffnen

Sie können Python-Arbeitsblätter verwenden, um Python-Code zu schreiben und auszuführen. Ihr Testkonto bietet Zugriff auf ein für dieses Tutorial vorinstalliertes Python-Arbeitsblatt. Das Arbeitsblatt enthält den Python-Code, den Sie ausführen werden, um eine Datenbank zu erstellen, Daten in diese Datenbank zu laden und die Daten abzufragen. Weitere Informationen zu Python-Arbeitsblättern finden Sie unter Schreiben von Snowpark-Code in Python-Arbeitsblättern.

So öffnen Sie das für das Tutorial vorinstallierte Python-Arbeitsblatt:

  1. Wählen Sie Projects » Worksheets aus, um die Liste der Arbeitsblätter zu öffnen.

  2. Öffnen Sie [Tutorial] Using Python to load and query sample data.

    Ihr Arbeitsblatt sollte ungefähr wie in der folgenden Abbildung aussehen.

Das Python-Arbeitsblatt zum Laden und Abfragen, das den Code für dieses Tutorial zusammen mit beschreibenden Kommentaren enthält.

Dieses vorinstallierte Python-Arbeitsblatt verwendet automatisch die Systemrolle ACCOUNTADMIN, damit Sie die Objekte in Ihrem Konto anzeigen und verwalten können. Weitere Informationen dazu finden Sie unter Verwenden der ACCOUNTADMIN-Rolle.

Das Arbeitsblatt verwendet auch das virtuelle Warehouse COMPUTE_WH. Ein Warehouse stellt die erforderlichen Ressourcen zum Erstellen und Verwalten von Objekten und zum Ausführen von SQL-Befehlen bereit. Zu diesen Ressourcen gehören CPU, Arbeitsspeicher und temporärer Speicher. Weitere Informationen dazu finden Sie unter Virtuelle Warehouses.

Schritt 3: Verwenden von Python-Arbeitsblättern

Mit Python-Arbeitsblättern können Sie Snowpark Python in Snowsight verwenden, um SQL-Anweisungen auszuführen. In diesem Schritt des Tutorials wird der Code des Python-Arbeitsblatts schrittweise beschrieben. Wenn Sie ein Python-Arbeitsblatt verwenden, können Sie einzelne Codeblöcke nicht separat ausführen. Sie müssen das gesamte Arbeitsblatt ausführen. Bevor Sie im Arbeitsblatt Run auswählen, sollten Sie die folgenden Schritte durchgehen, damit Sie den Python-Code besser verstehen.

  1. In dem geöffneten Python-Arbeitsblatt enthält dieser Schritt den folgenden Code:

    import snowflake.snowpark as snowpark
    from snowflake.snowpark.functions import col
    from snowflake.snowpark.types import StructField, StructType, IntegerType, StringType, VariantType
    
    Copy

    Dieses Tutorial importiert das Paket snowpark und ausgewählte Klassen und Funktionen, sodass sie für Ihren Code verfügbar sind.

  2. Dieser Schritt im Arbeitsblatt enthält den folgenden Code:

    def main(session: snowpark.Session):
    
    Copy

    Diese Zeile definiert die Standard-Handler-Funktion main. Die Handler-Funktion enthält den Code, den Sie in diesem Tutorial ausführen werden. In dieser Zeile wird ein Session-Objekt übergeben, das Sie zur Ausführung von SQL-Anweisungen in Snowflake verwenden können.

    # Use SQL to create our Tasty Bytes Database
    session.sql('CREATE OR REPLACE DATABASE tasty_bytes_sample_data;').collect()
    
    Copy

    Diese Zeile erstellt eine Datenbank mit dem Namen tasty_bytes_sample_data. In dieser Datenbank werden Daten in Tabellen gespeichert, die Sie verwalten und abfragen können. Weitere Informationen dazu finden Sie unter Datenbanken, Tabellen und Ansichten – Überblick.

    Der Code verwendet die Methode sql, um einen DataFrame zu erstellen, der die Ergebnisse der SQL-Anweisung repräsentiert. In Snowpark können Sie Daten mit einem DataFrame abfragen und verarbeiten. Der Code verwendet außerdem die Methode collect, um die SQL-Anweisung auszuführen, die durch das DataFrame repräsentiert wird. In den weiteren Codezeilen dieses Schritts im Arbeitsblatt werden ebenfalls diese Methoden verwendet.

    # Use SQL to create our Raw POS (Point-of-Sale) Schema
    session.sql('CREATE OR REPLACE SCHEMA tasty_bytes_sample_data.raw_pos;').collect()
    
    Copy

    Diese Zeile erstellt in der Datenbank tasty_bytes_sample_data ein Schema namens raw_pos. Ein Schema ist eine logische Gruppierung von Datenbankobjekten wie Tabellen und Ansichten. Ein Schema kann beispielsweise die für eine bestimmte Anwendung erforderlichen Datenbankobjekte enthalten.

    # Use SQL to create our Blob Stage
    session.sql('CREATE OR REPLACE STAGE tasty_bytes_sample_data.public.blob_stage url = "s3://sfquickstarts/tastybytes/" file_format = (type = csv);').collect()
    
    Copy

    Diese Zeile erstellt einen Stagingbereich mit dem Namen blob_stage. Ein Stagingbereich ist ein Speicherort, der Datendateien bereithält, um sie in eine Snowflake-Datenbank zu laden. In diesem Tutorial wird ein Stagingbereich erstellt, in den Daten aus einem Amazon S3-Bucket geladen werden. Das Tutorial verwendet einen vorhandenen Bucket mit einer CSV-Datei, die die Daten enthält. Die Daten werden aus dieser CSV-Datei in die Tabelle geladen, die später in diesem Tutorial erstellt wird. Weitere Informationen dazu finden Sie unter Massenladen aus Amazon S3.

  3. Dieser Schritt im Arbeitsblatt enthält den folgenden Code:

    # Define our Menu Schema
    menu_schema = StructType([StructField("menu_id",IntegerType()),\
                         StructField("menu_type_id",IntegerType()),\
                         StructField("menu_type",StringType()),\
                         StructField("truck_brand_name",StringType()),\
                         StructField("menu_item_id",IntegerType()),\
                         StructField("menu_item_name",StringType()),\
                         StructField("item_category",StringType()),\
                         StructField("item_subcategory",StringType()),\
                         StructField("cost_of_goods_usd",IntegerType()),\
                         StructField("sale_price_usd",IntegerType()),\
                         StructField("menu_item_health_metrics_obj",VariantType())])
    
    Copy

    Dieser Code erstellt ein StructType-Objekt mit dem Namen menu_schema. Dieses Objekt besteht aus einem list-Objekt von StructField-Objekten, die die Felder in der CSV-Datei im Stagingbereich beschreiben. Weitere Informationen dazu finden Sie unter Verwenden von Dateien in Stagingbereichen.

  4. Dieser Schritt im Arbeitsblatt enthält den folgenden Code:

    # Create a Dataframe from our Menu file from our Blob Stage
    df_blob_stage_read = session.read.schema(menu_schema).csv('@tasty_bytes_sample_data.public.blob_stage/raw_pos/menu/')
    
    Copy

    Diese Zeile erstellt den DataFrame namens df_blob_stage_read. Dieser DataFrame ist so konfiguriert, dass er Daten aus der CSV-Datei, die sich im angegebenen Stagingbereich befindet, unter Verwendung des angegebenen Schemas menu_schema liest. Das Schema enthält Informationen zu den Typen und Namen der Datenspalten.

    # Save our Dataframe as a Menu table in our Tasty Bytes Database and Raw POS Schema
    df_blob_stage_read.write.mode("overwrite").save_as_table("tasty_bytes_sample_data.raw_pos.menu")
    
    Copy

    In diesem Code wird die Methode save_as_table verwendet, um die Tabelle menu zu erstellen und die Daten aus dem Stagingbereich in diese Tabelle zu laden.

  5. Dieser Schritt im Arbeitsblatt enthält den folgenden Code:

    # Create a new Dataframe reading from our Menu table and filtering for the Freezing Point brand
    df_menu_freezing_point = session.table("tasty_bytes_sample_data.raw_pos.menu").filter(col("truck_brand_name") == 'Freezing Point')
    
    Copy

    Diese Zeile erstellt den DataFrame namens df_menu_freezing_point und konfiguriert ihn für die Abfrage der Tabelle menu. Die Methode filter bereitet die SQL für die Ausführung mit einem bedingten Ausdruck vor. Der bedingte Ausdruck filtert die Zeilen in der Tabelle menu und gibt die Zeilen zurück, bei denen die Spalte truck_brand_name gleich Freezing Point ist (ähnlich einer WHERE-Klausel).

    # return our Dataframe
    return df_menu_freezing_point
    
    Copy

    Diese Zeile gibt den DataFrame namens df_menu_freezing_point zurück, sodass die Abfrage zur Ausführung bereit ist. DataFrames werden verzögert ausgewertet, was bedeutet, dass diese Zeile die Abfrage nicht zur Ausführung an den Server sendet.

Wenn Sie fertig sind, wählen Sie Run aus, um den Code auszuführen und die Ausgabe zu anzuzeigen. Wenn Sie Run auswählen, führt das Python-Arbeitsblatt den Python-Code aus, der die SQL-Anweisungen generiert und ausführt. Die Abfrage für den zurückgegebenen DataFrame wird ausgeführt, und die Ergebnisse werden im Arbeitsblatt angezeigt.

Die Ausgabe sollte ungefähr wie in der folgenden Abbildung aussehen.

Tabellenausgabe mit den folgenden Spalten: MENU_ID, MENU_TYPE_ID, MENU_TYPE, TRUCK_BRAND_NAME, MENU_ITEM_ID. Die erste Zeile enthält die folgenden Werte: 10001, 1, Ice Cream, Freezing Point, 10.

Schritt 4: Bereinigung, Zusammenfassung und zusätzliche Ressourcen

Herzlichen Glückwunsch! Sie haben dieses Tutorial für Testkonten erfolgreich abgeschlossen.

Nehmen Sie sich nun ein paar Minuten Zeit, um noch einmal eine kurze Zusammenfassung und die wichtigsten Punkte dieses Tutorials zu lesen. Möglicherweise sollten Sie auch eine Bereinigung des Datenspeichers in Betracht ziehen, indem Sie alle Objekte, die Sie im Tutorial erstellt haben, wieder löschen. Weitere Informationen finden Sie unter den anderen Themen der Snowflake-Dokumentation.

Tutorial-Objekte bereinigen (optional)

Wenn die Objekte, die Sie in diesem Tutorial erstellt haben, nicht mehr benötigt werden, können Sie sie mit DROP <Objekt>-Befehlen aus dem System entfernen. Um die von Ihnen erstellte Datenbank zu entfernen, führen Sie folgenden Befehl aus:

DROP DATABASE IF EXISTS tasty_bytes_sample_data;
Copy

Zusammenfassung und Kernpunkte

Zusammenfassend haben Sie ein für dieses Tutorial in Snowsight vorinstalliertes Python-Arbeitsblatt verwendet, um die folgenden Schritte in Python-Code auszuführen:

  1. Snowpark-Module für eine Python-Anwendung importieren

  2. Python-Funktion erstellen

  3. Eine Datenbank und ein Schema erstellen

  4. Einen Stagingbereich erstellen, der die Daten in einem Amazon S3-Bucket speichert.

  5. DataFrame erstellen, um die Quelle der Daten in einem Stagingbereich anzugeben.

  6. Tabelle erstellen, die Daten aus Dateien im Stagingbereich enthält

  7. Einen DataFrame einrichten, um die neue Tabelle abzufragen und die Daten zu filtern.

Im Folgenden sind noch einmal die wichtigsten Punkte aufgeführt, die Sie beim Laden und Abfragen von Daten beachten sollten:

  • Sie haben Snowpark verwendet, um SQL-Anweisungen in Python-Code auszuführen.

  • Sie haben einen Stagingbereich zum Laden von Daten aus einer CSV-Datei erstellt.

  • Sie haben eine Datenbank zum Speichern der Daten und ein Schema zum logischen Gruppieren der Datenbankobjekte erstellt.

  • Sie haben einen DataFrame verwendet, um die Datenquelle anzugeben und Daten für eine Abfrage zu filtern.

Nächste Schritte

Setzen Sie die Einarbeitung in Snowflake mithilfe der folgenden Ressourcen fort:

  • Führen Sie die anderen von Snowflake bereitgestellten Tutorials durch:

  • Machen Sie sich mit den wichtigsten Konzepten und Features von Snowflake sowie den Klassen und Methoden von Snowpark Python vertraut, mit denen Abfragen durchgeführt und Daten eingefügt bzw. aktualisiert werden:

  • Probieren Sie die „Tasty Bytes“-Quickstarts von Snowflake aus: