Chargement et interrogation d’échantillons de données via Python Snowpark

Introduction

Ce tutoriel utilise une marque fictive de food truck nommée Tasty Bytes pour vous montrer comment charger et interroger des données dans Snowflake en utilisant Snowpark Python. Vous utilisez une feuille de calcul Python préchargée dans Snowsight pour effectuer ces tâches.

L’illustration suivante donne un aperçu de Tasty Bytes.

Contient une présentation de Tasty Bytes, un réseau mondial de food trucks avec 15 marques de food trucks localisés dans plusieurs pays et villes. L'image décrit la mission, la vision, les emplacements, la situation actuelle et les objectifs futurs de l'entreprise.

Note

Snowflake facture un montant minimal pour le stockage sur disque utilisé pour les données d’exemple dans ce tutoriel. Ce tutoriel fournit des étapes pour supprimer la base de données et réduire le coût de stockage.

Snowflake nécessite un entrepôt virtuel pour charger les données et exécuter les requêtes. Un entrepôt virtuel en cours d’exécution consomme des crédits Snowflake. Dans ce tutoriel, vous utiliserez un compte d’essai de 30 jours, qui fournit des crédits gratuits, de sorte que vous n’aurez aucun coût à supporter.

Ce que vous apprendrez

Dans ce tutoriel, vous apprendrez à effectuer les tâches suivantes en utilisant l’API Snowpark Python:

  • Créer une base de données et un schéma.

  • Créez une zone de préparation qui contient des données dans un compartiment Amazon S3.

  • Créez un DataFrame pour spécifier la zone de préparation qui est la source des données.

  • Créez une table contenant des données provenant de fichiers sur une zone de préparation.

  • Créez un DataFrame pour interroger la nouvelle table et filtrer les données.

Conditions préalables

Le tutoriel suppose ce qui suit :

Note

Ce tutoriel n’est disponible que pour les utilisateurs disposant d’un compte d’essai. L’exemple de feuille de calcul n’est pas disponible pour les autres types de comptes.

Étape 1. Se connecter en utilisant Snowsight

Pour accéder à Snowsight via l’Internet public, procédez comme suit :

  1. Dans un navigateur web pris en charge, accédez à https://app.snowflake.com.

  2. Fournissez votre identificateur de compte ou votre URL de compte. Si vous vous êtes déjà connecté à Snowsight, vous verrez peut-être un nom de compte que vous pouvez sélectionner.

  3. Connectez-vous en utilisant les identifiants de connexion de votre compte Snowflake.

Étape 2. Ouvrir la feuille de calcul de calcul Python

Vous pouvez utiliser les feuilles de calcul Python pour écrire et exécuter du code Python. Votre compte d’essai a accès à une feuille de calcul Python préchargée pour ce tutoriel. La feuille de calcul contient le code Python que vous exécuterez pour créer une base de données, y charger des données et les interroger. Pour plus d’informations sur les feuilles de calcul Python, voir Écriture de code Snowpark dans des feuilles de calcul Python.

Pour ouvrir la feuille de calcul préchargée du tutoriel Python :

  1. Sélectionnez Projects » Worksheets pour ouvrir la liste des feuilles de calcul.

  2. Ouvrez [Tutorial] Using Python to load and query sample data.

    Votre feuille de calcul ressemble à l’image suivante.

La feuille de calcul Python pour le chargement et l'interrogation, qui contient le code de ce tutoriel, ainsi que des commentaires descriptifs.

Cette feuille de calcul Python préchargée utilise automatiquement le rôle système ACCOUNTADMIN afin que vous puissiez visualiser et gérer les objets de votre compte. Pour plus d’informations, voir Utilisation du rôle ACCOUNTADMIN.

La feuille de calcul utilise également l’entrepôt virtuel COMPUTE_WH. Un entrepôt fournit les ressources nécessaires pour créer et gérer des objets et exécuter des commandes SQL. Ces ressources comprennent le CPU, la mémoire et le stockage temporaire. Pour plus d’informations, voir Entrepôts virtuels.

Étape 3. Apprendre à utiliser les feuilles de calcul Python

Les feuilles de calcul Python vous permettent d’utiliser Snowpark Python dans Snowsight pour effectuer des instructions SQL. Cette étape de ce tutoriel décrit le code de chaque étape de la feuille de calcul Python. Lorsque vous utilisez une feuille de calcul Python, vous ne pouvez pas exécuter les blocs de code séparément. Vous devez exécuter toute la feuille de calcul. Avant de sélectionner Run dans la feuille de calcul, passez en revue les étapes suivantes afin de mieux comprendre le code Python.

  1. Dans la feuille de calcul Python ouverte, cette étape comprend le code suivant :

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

    Ce tutoriel importe le paquet snowpark et les classes et fonctions sélectionnées afin qu’elles soient disponibles dans votre code.

  2. Cette étape de la feuille de calcul comprend le code suivant :

    def main(session: snowpark.Session):
    
    Copy

    Cette ligne définit la fonction de gestionnaire main par défaut. La fonction de gestionnaire contient le code que vous allez exécuter dans ce tutoriel. Cette ligne transmet un objet Session que vous pouvez utiliser pour exécuter des instructions SQL dans Snowflake.

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

    Cette ligne crée une base de données nommée tasty_bytes_sample_data. Cette base de données stocke les données dans des tables que vous pouvez gérer et interroger. Pour plus d’informations, voir Bases de données, tables et vues - Vue d’ensemble.

    Le code utilise la méthode sql pour créer un DataFrame qui représente les résultats de l’instruction SQL. Dans Snowpark, vous pouvez interroger et traiter des données avec un DataFrame. Le code utilise également la méthode collect pour exécuter l’instruction SQL représentée par le DataFrame. Les autres lignes de code de cette étape de la feuille de calcul utilisent également ces méthodes.

    # 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

    Cette ligne crée un schéma nommé raw_pos dans la base de données tasty_bytes_sample_data. Un schéma est un regroupement logique d’objets de base de données, tels que des tables et des vues. Par exemple, un schéma peut contenir les objets de la base de données nécessaires à une application spécifique.

    # 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

    Cette ligne crée une zone de préparation nommée blob_stage. Une zone de préparation est un emplacement qui contient des fichiers de données à charger dans une base de données Snowflake. Ce tutoriel crée une zone de préparation qui charge des données à partir d’un compartiment Amazon S3. Le tutoriel utilise un compartiment existant avec un fichier CSV qui contient les données. Il charge les données de ce fichier CSV dans la table créée plus loin dans ce tutoriel. Pour plus d’informations, voir Chargement en masse à partir d’Amazon S3.

  3. Cette étape de la feuille de calcul comprend le code suivant :

    # 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

    Ce code crée un objet StructType nommé menu_schema. Cet objet est composé d’un list d’objets StructField qui décrivent les champs du fichier CSV dans la zone de préparation. Pour plus d’informations, voir Travailler avec des fichiers dans une zone de préparation.

  4. Cette étape de la feuille de calcul comprend le code suivant :

    # 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

    Cette ligne crée le df_blob_stage_read DataFrame. Ce DataFrame est configuré pour lire les données du fichier CSV situé dans la zone de préparation spécifiée, en utilisant le schéma menu_schema spécifié. Le schéma contient des informations sur les types et les noms des colonnes de données.

    # 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

    Ce code utilise la méthode save_as_table pour créer la table menu et y charger les données de la zone de préparation.

  5. Cette étape de la feuille de calcul comprend le code suivant :

    # 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

    Cette ligne crée la table df_menu_freezing_point DataFrame et la configure pour interroger la table menu. La méthode filter prépare l’exécution de SQL à l’aide d’une expression conditionnelle. L’expression conditionnelle filtre les lignes de la table menu pour renvoyer les lignes dont la colonne truck_brand_name est égale à Freezing Point (similaire à une clause WHERE).

    # return our Dataframe
    return df_menu_freezing_point
    
    Copy

    Cette ligne renvoie le DataFrame df_menu_freezing_point afin que la requête soit prête à être exécutée. Les DataFrames sont évalués de façon « lazy », ce qui signifie que cette ligne n’envoie pas la requête au serveur pour exécution.

Lorsque vous êtes prêt, sélectionnez Run pour exécuter le code et voir la sortie. Lorsque vous sélectionnez Run, la feuille de calcul Python exécute le code Python, qui génère et exécute les instructions SQL. La requête pour le DataFrame renvoyé est exécutée et les résultats sont affichés dans la feuille de calcul.

La sortie devrait ressembler à ce qui suit.

Sortie d'une table avec les colonnes suivantes : MENU_ID, MENU_TYPE_ID, MENU_TYPE, TRUCK_BRAND_NAME, MENU_ITEM_ID. La première ligne contient les valeurs suivantes : 10001, 1, Ice Cream, Freezing Point, 10.

Étape 4. Nettoyage, résumé et ressources supplémentaires

Félicitations ! Vous avez terminé ce tutoriel sur les comptes d’essai.

Prenez quelques minutes pour passer en revue un bref résumé et les points clés abordés dans ce tutoriel. Pensez à procéder au nettoyage en supprimant tous les objets que vous avez créés dans ce tutoriel. Pour en savoir plus, consultez les autres rubriques de la documentation Snowflake.

Nettoyer les objets du tutoriel (facultatif)

Si les objets que vous avez créés dans ce tutoriel ne sont plus nécessaires, vous pouvez les supprimer du système à l’aide des commandes DROP <objet>. Pour supprimer la base de données que vous avez créée, exécutez la commande suivante :

DROP DATABASE IF EXISTS tasty_bytes_sample_data;
Copy

Résumé et points clés

En résumé, vous avez utilisé une feuille de calcul Python préchargée dans Snowsight pour effectuer les étapes suivantes en code Python :

  1. Importez des modules Snowpark pour une application Python.

  2. Créez une fonction Python.

  3. Créer une base de données et un schéma.

  4. Créez une zone de préparation qui contient des données dans un compartiment Amazon S3.

  5. Créez un DataFrame pour spécifier la source des données dans une zone de préparation.

  6. Créez une table qui contient les données des fichiers présents sur la zone de préparation,

  7. Créez un DataFrame pour interroger la nouvelle table et filtrer les données.

Voici quelques points clés à retenir concernant le chargement et l’interrogation des données :

  • Vous avez utilisé Snowpark pour exécuter des instructions SQL dans du code Python.

  • Vous avez créé une zone de préparation pour charger des données à partir d’un fichier CSV.

  • Vous avez créé une base de données pour stocker les données et un schéma pour regrouper logiquement les objets de la base de données.

  • Vous avez utilisé un DataFrame pour spécifier la source de données et filtrer les données d’une requête.

Quelle est la prochaine étape ?

Continuez à vous renseigner sur Snowflake à l’aide des ressources suivantes :