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.
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:
Sie haben einen unterstützten Browser.
Sie haben ein Testkonto. Wenn Sie noch kein Testkonto haben, können Sie sich für einen kostenlosen Testphase anmelden. Sie können eine beliebige Snowflake-Cloudregion wählen.
Ihr Benutzer ist der Kontoadministrator, der die Systemrolle ACCOUNTADMIN hat. Weitere Informationen dazu finden Sie unter Verwenden der ACCOUNTADMIN-Rolle.
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:
Navigieren Sie in einem unterstützten Webbrowser zu https://app.snowflake.com.
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.
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:
Wählen Sie Projects » Worksheets aus, um die Liste der Arbeitsblätter zu öffnen.
Öffnen Sie [Tutorial] Using Python to load and query sample data.
Ihr Arbeitsblatt sollte ungefähr wie in der folgenden Abbildung aussehen.
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.
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
Dieses Tutorial importiert das Paket
snowpark
und ausgewählte Klassen und Funktionen, sodass sie für Ihren Code verfügbar sind.Dieser Schritt im Arbeitsblatt enthält den folgenden Code:
def main(session: snowpark.Session):
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 einSession
-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()
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()
Diese Zeile erstellt in der Datenbank
tasty_bytes_sample_data
ein Schema namensraw_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()
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.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())])
Dieser Code erstellt ein
StructType
-Objekt mit dem Namenmenu_schema
. Dieses Objekt besteht aus einemlist
-Objekt vonStructField
-Objekten, die die Felder in der CSV-Datei im Stagingbereich beschreiben. Weitere Informationen dazu finden Sie unter Verwenden von Dateien in Stagingbereichen.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/')
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 Schemasmenu_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")
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.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')
Diese Zeile erstellt den DataFrame namens
df_menu_freezing_point
und konfiguriert ihn für die Abfrage der Tabellemenu
. Die Methode filter bereitet die SQL für die Ausführung mit einem bedingten Ausdruck vor. Der bedingte Ausdruck filtert die Zeilen in der Tabellemenu
und gibt die Zeilen zurück, bei denen die Spaltetruck_brand_name
gleichFreezing Point
ist (ähnlich einer WHERE-Klausel).# return our Dataframe return df_menu_freezing_point
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.
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;
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:
Snowpark-Module für eine Python-Anwendung importieren
Python-Funktion erstellen
Eine Datenbank und ein Schema erstellen
Einen Stagingbereich erstellen, der die Daten in einem Amazon S3-Bucket speichert.
DataFrame erstellen, um die Quelle der Daten in einem Stagingbereich anzugeben.
Tabelle erstellen, die Daten aus Dateien im Stagingbereich enthält
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: