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.
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 :
Vous avez un navigateur pris en charge.
Vous avez un compte d’essai. Si vous n’avez pas encore de compte d’essai, vous pouvez vous inscrire pour un essai gratuit. Vous pouvez choisir n’importe quelle région cloud Snowflake.
Votre utilisateur est l’administrateur du compte et s’est vu attribuer le rôle système ACCOUNTADMIN. Pour plus d’informations, voir Utilisation du rôle ACCOUNTADMIN.
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 :
Dans un navigateur web pris en charge, accédez à https://app.snowflake.com.
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.
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 :
Sélectionnez Projects » Worksheets pour ouvrir la liste des feuilles de calcul.
Ouvrez [Tutorial] Using Python to load and query sample data.
Votre feuille de calcul ressemble à l’image suivante.
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.
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
Ce tutoriel importe le paquet
snowpark
et les classes et fonctions sélectionnées afin qu’elles soient disponibles dans votre code.Cette étape de la feuille de calcul comprend le code suivant :
def main(session: snowpark.Session):
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 objetSession
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()
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()
Cette ligne crée un schéma nommé
raw_pos
dans la base de donnéestasty_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()
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.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())])
Ce code crée un objet
StructType
nommémenu_schema
. Cet objet est composé d’unlist
d’objetsStructField
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.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/')
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émamenu_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")
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.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')
Cette ligne crée la table
df_menu_freezing_point
DataFrame et la configure pour interroger la tablemenu
. 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 tablemenu
pour renvoyer les lignes dont la colonnetruck_brand_name
est égale àFreezing Point
(similaire à une clause WHERE).# return our Dataframe return df_menu_freezing_point
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.
É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;
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 :
Importez des modules Snowpark pour une application Python.
Créez une fonction 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 source des données dans une zone de préparation.
Créez une table qui contient les données des fichiers présents sur la zone de préparation,
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 :
Complétez les autres tutoriels fournis par Snowflake :
Familiarisez-vous avec les concepts et fonctions clés de Snowflake, ainsi qu’avec les classes et les méthodes Snowpark Python utilisées pour effectuer les requêtes et insérer/mettre à jour des données :
Essayez les démarrages rapides Tasty Bytes fournis par Snowflake :