arrow_back

Traitement ETL sur Google Cloud avec Dataflow et BigQuery (Python)

Testez vos connaissances et partagez-les avec notre communauté
done
Accédez à plus de 700 ateliers pratiques, badges de compétence et cours

Traitement ETL sur Google Cloud avec Dataflow et BigQuery (Python)

Atelier 1 heure universal_currency_alt 5 crédits show_chart Intermédiaire
info Cet atelier peut intégrer des outils d'IA pour vous accompagner dans votre apprentissage.
Testez vos connaissances et partagez-les avec notre communauté
done
Accédez à plus de 700 ateliers pratiques, badges de compétence et cours

GSP290

Google Cloud – Ateliers adaptés au rythme de chacun

Présentation

Dans Google Cloud, vous pouvez créer des pipelines de données qui exécutent du code Python pour ingérer des données d'ensembles de données publics dans BigQuery et les transformer à l'aide des services Google Cloud suivants :

  • Cloud Storage
  • Dataflow
  • BigQuery

Dans cet atelier, vous allez utiliser ces services pour créer votre propre pipeline de données, en arrêtant des choix en termes de conception et d'implémentation pour garantir la conformité de votre prototype aux exigences. Pensez à ouvrir les fichiers Python et à bien lire les commentaires lorsque vous y êtes invité.

Objectifs de l'atelier

Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes :

  • Créer et exécuter des pipelines Dataflow (Python) pour l'ingestion de données
  • Créer et exécuter des pipelines Dataflow (Python) pour la transformation et l'enrichissement de données

Préparation

Avant de cliquer sur le bouton "Démarrer l'atelier"

Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.

Cet atelier pratique vous permet de suivre vous-même les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Nous vous fournissons des identifiants temporaires pour vous connecter à Google Cloud le temps de l'atelier.

Pour réaliser cet atelier :

  • vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome) ;
Remarque : Ouvrez une fenêtre de navigateur en mode incognito/navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le temporaire étudiant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
  • vous disposez d'un temps limité ; une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Si vous possédez déjà votre propre compte ou projet Google Cloud, veillez à ne pas l'utiliser pour réaliser cet atelier afin d'éviter que des frais supplémentaires ne vous soient facturés.

Démarrer l'atelier et se connecter à la console Google Cloud

  1. Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, un pop-up s'affiche pour vous permettre de sélectionner un mode de paiement. Sur la gauche, vous trouverez le panneau Détails concernant l'atelier, qui contient les éléments suivants :

    • Le bouton Ouvrir la console Google Cloud
    • Le temps restant
    • Les identifiants temporaires que vous devez utiliser pour cet atelier
    • Des informations complémentaires vous permettant d'effectuer l'atelier
  2. Cliquez sur Ouvrir la console Google Cloud (ou effectuez un clic droit et sélectionnez Ouvrir le lien dans la fenêtre de navigation privée si vous utilisez le navigateur Chrome).

    L'atelier lance les ressources, puis ouvre la page Se connecter dans un nouvel onglet.

    Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.

    Remarque : Si la boîte de dialogue Sélectionner un compte s'affiche, cliquez sur Utiliser un autre compte.
  3. Si nécessaire, copiez le nom d'utilisateur ci-dessous et collez-le dans la boîte de dialogue Se connecter.

    {{{user_0.username | "Username"}}}

    Vous trouverez également le nom d'utilisateur dans le panneau Détails concernant l'atelier.

  4. Cliquez sur Suivant.

  5. Copiez le mot de passe ci-dessous et collez-le dans la boîte de dialogue Bienvenue.

    {{{user_0.password | "Password"}}}

    Vous trouverez également le mot de passe dans le panneau Détails concernant l'atelier.

  6. Cliquez sur Suivant.

    Important : Vous devez utiliser les identifiants fournis pour l'atelier. Ne saisissez pas ceux de votre compte Google Cloud. Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires peuvent vous être facturés.
  7. Accédez aux pages suivantes :

    • Acceptez les conditions d'utilisation.
    • N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
    • Ne vous inscrivez pas à des essais gratuits.

Après quelques instants, la console Cloud s'ouvre dans cet onglet.

Remarque : Pour afficher un menu contenant la liste des produits et services Google Cloud, cliquez sur le menu de navigation en haut à gauche. Icône du menu de navigation

Activer Cloud Shell

Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud. Cloud Shell vous permet d'accéder via une ligne de commande à vos ressources Google Cloud.

  1. Cliquez sur Activer Cloud Shell Icône Activer Cloud Shell en haut de la console Google Cloud.

Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Le résultat contient une ligne qui déclare YOUR_PROJECT_ID (VOTRE_ID_PROJET) pour cette session :

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.

  1. (Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
  1. Cliquez sur Autoriser.

  2. Vous devez à présent obtenir le résultat suivant :

Résultat :

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project

Résultat :

[core] project = <ID_Projet>

Exemple de résultat :

[core] project = qwiklabs-gcp-44776a13dea667a6 Remarque : Pour consulter la documentation complète sur gcloud, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.

Tâche 1 : Vérifier que l'API Dataflow est activée

Pour vous assurer que vous avez bien accès à l'API requise, redémarrez la connexion à l'API Dataflow.

Important : Même si l'API est déjà activée, suivez les étapes 1 à 4 ci-dessous pour la désactiver puis la réactiver, afin de la redémarrer correctement.
  1. Dans la console Cloud, en haut, saisissez "API Dataflow" dans la barre de recherche. Cliquez sur API Dataflow dans les résultats.

  2. Cliquez sur Gérer.

  3. Cliquez sur Désactiver l'API.

Si vous êtes invité à confirmer votre choix, cliquez sur Désactiver.

  1. Cliquez sur Activer.

Une fois l'API réactivée, l'option permettant de la désactiver s'affiche sur la page.

Tester la tâche terminée

Cliquez sur Vérifier ma progression pour valider la tâche exécutée.

Désactiver et réactiver l'API Dataflow

Tâche 2 : Télécharger le code de démarrage

  1. Exécutez la commande suivante dans Cloud Shell pour obtenir des exemples Dataflow en Python à partir du dépôt GitHub des services professionnels de Google Cloud :
gsutil -m cp -R gs://spls/gsp290/dataflow-python-examples .
  1. Dans Cloud Shell, définissez une variable sur l'ID de votre projet :
export PROJECT={{{ project_0.project_id }}} gcloud config set project $PROJECT

Tâche 3 : Créer un bucket Cloud Storage

  • Exécutez la commande "make bucket" dans Cloud Shell pour créer un bucket régional dans la région au sein de votre projet :
gsutil mb -c regional -l {{{ project_0.default_region }}} gs://$PROJECT

Tester la tâche terminée

Cliquez sur Vérifier ma progression pour valider la tâche exécutée.

Créer un bucket Cloud Storage

Tâche 4 : Copier des fichiers dans votre bucket

  • Exécutez la commande gsutil dans Cloud Shell pour copier des fichiers dans le bucket Cloud Storage que vous venez de créer :
gsutil cp gs://spls/gsp290/data_files/usa_names.csv gs://$PROJECT/data_files/ gsutil cp gs://spls/gsp290/data_files/head_usa_names.csv gs://$PROJECT/data_files/

Tester la tâche terminée

Cliquez sur Vérifier ma progression pour valider la tâche exécutée.

Copier des fichiers dans votre bucket

Tâche 5 : Créer un ensemble de données BigQuery

  • Dans Cloud Shell, créez un ensemble de données BigQuery nommé lake. C'est par le biais de cet ensemble de données que toutes vos tables seront chargées dans BigQuery :
bq mk lake

Tester la tâche terminée

Cliquez sur Vérifier ma progression pour valider la tâche exécutée.

Créer l'ensemble de données BigQuery (nom : lake)

Tâche 6 : Créer un pipeline Dataflow

Dans cette section, vous allez créer un pipeline Dataflow de type "append-only" (ajout uniquement) qui permettra d'ingérer des données dans la table BigQuery. Vous pouvez utiliser l'éditeur de code intégré pour afficher et modifier le code dans la console Google Cloud.

Diagramme du pipeline Dataflow de type &quot;append-only&quot; (ajout uniquement)

Ouvrir l'éditeur de code Cloud Shell

  1. Pour accéder au code source, cliquez sur l'icône Ouvrir l'éditeur dans Cloud Shell :

Icône Ouvrir l&#39;éditeur

  1. Si vous y êtes invité, cliquez sur Ouvrir dans une nouvelle fenêtre. L'éditeur de code s'ouvrira en ce cas dans une nouvelle fenêtre. L'éditeur Cloud Shell vous permet de modifier des fichiers dans l'environnement Cloud Shell. Lorsque vous vous trouvez dans l'éditeur, vous pouvez revenir à Cloud Shell en cliquant sur Ouvrir le terminal.

Tâche 7 : Ingestion de données avec un pipeline Dataflow

Vous allez maintenant créer un pipeline Dataflow avec une source TextIO et une destination BigQueryIO pour ingérer des données dans BigQuery. Les opérations à réaliser sont les suivantes :

  • Ingérer les fichiers à partir de Cloud Storage
  • Filtrer la ligne d'en-tête dans les fichiers
  • Convertir les lignes lues en objets de dictionnaire
  • Envoyer les lignes dans BigQuery

Tâche 8 : Examiner le code Python du pipeline

Dans l'éditeur de code, accédez à dataflow-python-examples > dataflow_python_examples, puis ouvrez le fichier data_ingestion.py. Lisez les commentaires expliquant les actions effectuées par le code. Ce code ajoute une table à l'ensemble de données lake dans BigQuery.

Éditeur de code

Tâche 9 : Exécuter le pipeline Apache Beam

  1. Pour effectuer cette étape, revenez dans votre session Cloud Shell. Vous allez procéder à quelques opérations de configuration pour les bibliothèques Python requises.

Le job Dataflow de cet atelier nécessite Python 3.8. Pour vous assurer d'utiliser la bonne version, vous allez exécuter les processus Dataflow dans un conteneur Docker Python 3.8.

  1. Exécutez la commande suivante dans Cloud Shell pour démarrer un conteneur Python :
docker run -it -e PROJECT=$PROJECT -v $(pwd)/dataflow-python-examples:/dataflow python:3.8 /bin/bash

Cette commande extrait un conteneur Docker avec la dernière version stable de Python 3.8, puis lance un shell de commande vous permettant d'exécuter les prochaines commandes dans votre conteneur. L'option -v fournit le code source en tant que volume pour le conteneur. Ainsi, nous pouvons le modifier dans l'éditeur Cloud Shell tout en gardant la possibilité d'y accéder dans le conteneur en cours d'exécution.

  1. Dès que l'extraction du conteneur est terminée et que celui-ci est lancé dans Cloud Shell, exécutez la commande suivante pour installer apache-beam dans ce conteneur en cours d'exécution :
pip install apache-beam[gcp]==2.59.0
  1. Ensuite, dans le conteneur en cours d'exécution dans Cloud Shell, accédez au répertoire auquel vous avez associé le code source :
cd dataflow/

Exécuter le pipeline Dataflow d'ingestion dans le cloud

  1. Le code suivant lancera les nœuds de calcul requis et les fermera à la fin du processus :
python dataflow_python_examples/data_ingestion.py \ --project=$PROJECT --region={{{ project_0.default_region }}} \ --runner=DataflowRunner \ --machine_type=e2-standard-2 \ --staging_location=gs://$PROJECT/test \ --temp_location gs://$PROJECT/test \ --input gs://$PROJECT/data_files/head_usa_names.csv \ --save_main_session
  1. Revenez à la console Cloud et accédez au menu de navigation > Dataflow pour afficher l'état de votre job.

Menu de navigation > Dataflow

  1. Cliquez sur le nom de votre job pour voir sa progression. Lorsque l'état du job indique Réussite, vous pouvez passer à l'étape suivante. Le démarrage, l'exécution et l'arrêt de ce pipeline Dataflow prennent au total environ cinq minutes.

  2. Accédez à BigQuery (Menu de navigation > BigQuery) pour vérifier que vos données ont bien été intégrées.

Menu de navigation > BigQuery

  1. Cliquez sur le nom du projet pour afficher la table usa_names sous l'ensemble de données lake.

Table usa_names

  1. Cliquez sur la table, puis accédez à l'onglet Aperçu pour afficher des exemples de données de usa_names.
Remarque : Si la table usa_names n'apparaît pas, actualisez la page ou essayez d'afficher les tables dans l'UI classique de BigQuery.

Tester la tâche terminée

Cliquez sur Vérifier ma progression pour valider la tâche exécutée.

Créer un pipeline Dataflow d'ingestion de données

Tâche 10 : Transformation des données

Vous allez maintenant créer un pipeline Dataflow avec une source TextIO et une destination BigQueryIO pour ingérer des données dans BigQuery. Les opérations à réaliser sont les suivantes :

  • Ingérer les fichiers à partir de Cloud Storage
  • Convertir les lignes lues en objets de dictionnaire
  • Transformer les données qui contiennent l'année dans un format que BigQuery reconnaît comme une date
  • Envoyer les lignes dans BigQuery

Examiner le code Python du pipeline de transformation

Dans l'éditeur de code, ouvrez le fichier data_transformation.py. Lisez les commentaires expliquant les actions effectuées par le code.

Tâche 11 : Exécuter le pipeline de transformation Dataflow

Vous allez exécuter le pipeline Dataflow dans le cloud. Ce code lancera les nœuds de calcul requis et les fermera à la fin du processus.

  1. Pour ce faire, exécutez les commandes suivantes :
python dataflow_python_examples/data_transformation.py \ --project=$PROJECT \ --region={{{ project_0.default_region }}} \ --runner=DataflowRunner \ --machine_type=e2-standard-2 \ --staging_location=gs://$PROJECT/test \ --temp_location gs://$PROJECT/test \ --input gs://$PROJECT/data_files/head_usa_names.csv \ --save_main_session
  1. Accédez au menu de navigation > Dataflow, puis cliquez sur le nom du job pour afficher son état. Le démarrage, l'exécution et l'arrêt de ce pipeline Dataflow prennent au total environ cinq minutes.

  2. Lorsque l'état du job indique Réussite dans l'écran Dataflow, accédez à BigQuery pour vérifier que vos données ont bien été intégrées.

  3. Vous devez voir la table usa_names_transformed sous l'ensemble de données lake.

  4. Cliquez sur la table, puis accédez à l'onglet Aperçu pour afficher des exemples de données de usa_names_transformed.

Remarque : Si la table usa_names_transformed n'apparaît pas, actualisez la page ou essayez d'afficher les tables dans l'UI classique de BigQuery.

Tester la tâche terminée

Cliquez sur Vérifier ma progression pour valider la tâche exécutée.

Créer un pipeline Dataflow de transformation de données

Tâche 12 : Enrichissement des données

Vous allez maintenant créer un pipeline Dataflow avec une source TextIO et une destination BigQueryIO pour ingérer des données dans BigQuery. Les opérations à réaliser sont les suivantes :

  • Ingérer les fichiers à partir de Cloud Storage
  • Filtrer la ligne d'en-tête dans les fichiers
  • Convertir les lignes lues en objets de dictionnaire
  • Envoyer les lignes dans BigQuery

Tâche 13 : Examiner le code Python du pipeline d'enrichissement des données

  1. Dans l'éditeur de code, ouvrez le fichier data_enrichment.py.

  2. Lisez les commentaires expliquant les actions effectuées par le code. Ce code envoie les données vers BigQuery.

La ligne 83 se présente actuellement comme suit :

values = [x.decode('utf8') for x in csv_row]
  1. Modifiez-la de sorte qu'elle ressemble à ceci :
values = [x for x in csv_row]
  1. Lorsque vous avez terminé de modifier cette ligne, n'oubliez pas d'enregistrer le fichier mis à jour. Pour ce faire, cliquez sur le menu déroulant Fichier de l'éditeur, puis sur Enregistrer.

Tâche 14 : Exécuter le pipeline Dataflow d'enrichissement de données

Vous allez maintenant exécuter le pipeline Dataflow dans le cloud.

  1. Exécutez le code suivant dans Cloud Shell pour lancer les nœuds de calcul requis et les arrêter à la fin du processus :
python dataflow_python_examples/data_enrichment.py \ --project=$PROJECT \ --region={{{ project_0.default_region }}} \ --runner=DataflowRunner \ --machine_type=e2-standard-2 \ --staging_location=gs://$PROJECT/test \ --temp_location gs://$PROJECT/test \ --input gs://$PROJECT/data_files/head_usa_names.csv \ --save_main_session
  1. Accédez au menu de navigation > Dataflow pour afficher l'état de votre job. Le démarrage, l'exécution et l'arrêt de ce pipeline Dataflow prennent au total environ cinq minutes.

  2. Lorsque l'état du job indique Réussite dans l'écran Dataflow, accédez à BigQuery pour vérifier que vos données ont bien été intégrées.

Vous devez voir la table usa_names_enriched sous l'ensemble de données lake.

  1. Cliquez sur la table, puis accédez à l'onglet Aperçu pour afficher des exemples de données de usa_names_enriched.
Remarque : Si la table usa_names_enriched n'apparaît pas, actualisez la page ou essayez d'afficher les tables dans l'UI classique de BigQuery.

Tester la tâche d'enrichissement de données terminée

Cliquez sur Vérifier ma progression pour valider la tâche exécutée.

Créer un pipeline Dataflow d'enrichissement des données

Tâche 15 : Créer un pipeline entre le lac de données et un magasin et examiner le code Python du pipeline

Créez maintenant un pipeline Dataflow qui lit les données de deux sources de données BigQuery et les associe. Les opérations à réaliser sont les suivantes :

  • Ingérer les fichiers de deux sources BigQuery
  • Associer les deux sources de données
  • Filtrer la ligne d'en-tête dans les fichiers
  • Convertir les lignes lues en objets de dictionnaire
  • Envoyer les lignes dans BigQuery

Dans l'éditeur de code, ouvrez le fichier data_lake_to_mart.py. Lisez les commentaires expliquant les actions effectuées par le code. Ce code associe deux tables et insère les données obtenues dans BigQuery.

Tâche 16 : Exécuter le pipeline Apache Beam pour associer les données et créer la table qui en résulte dans BigQuery

Exécutez maintenant le pipeline Dataflow dans le cloud.

  1. Exécutez le bloc de code suivant dans Cloud Shell pour lancer les nœuds de calcul requis et les arrêter à la fin du processus :
python dataflow_python_examples/data_lake_to_mart.py \ --worker_disk_type="compute.googleapis.com/projects//zones//diskTypes/pd-ssd" \ --max_num_workers=4 \ --project=$PROJECT \ --runner=DataflowRunner \ --machine_type=e2-standard-2 \ --staging_location=gs://$PROJECT/test \ --temp_location gs://$PROJECT/test \ --save_main_session \ --region={{{ project_0.default_region }}}
  1. Accédez au menu de navigation > Dataflow, puis cliquez sur le nom de ce nouveau job pour afficher son état. Le démarrage, l'exécution et l'arrêt de ce pipeline Dataflow prennent au total environ cinq minutes.

  2. Lorsque l'état du job indique Réussite dans l'écran Dataflow, accédez à BigQuery pour vérifier que vos données ont bien été intégrées.

Vous devez voir la table orders_denormalized_sideinput sous l'ensemble de données lake.

  1. Cliquez sur la table, puis accédez à l'onglet Aperçu pour afficher des exemples de données de orders_denormalized_sideinput.
Remarque : Si la table orders_denormalized_sideinput n'apparaît pas, actualisez la page ou essayez d'afficher les tables dans l'UI classique de BigQuery.

Tester la tâche JOIN terminée

Cliquez sur Vérifier ma progression pour valider la tâche exécutée.

Créer un pipeline Dataflow entre un lac de données et un magasin

Tester vos connaissances

Voici quelques questions à choix multiples qui vous permettront de mieux maîtriser les concepts abordés lors de cet atelier. Répondez-y du mieux que vous le pouvez.

Félicitations !

Vous avez exécuté du code Python à l'aide de Dataflow pour ingérer des données dans BigQuery et les transformer.

Étapes suivantes et informations supplémentaires

Vous souhaitez en savoir plus ? Consultez la documentation officielle sur :

Formations et certifications Google Cloud

Les formations et certifications Google Cloud vous aident à tirer pleinement parti des technologies Google Cloud. Nos cours portent sur les compétences techniques et les bonnes pratiques à suivre pour être rapidement opérationnel et poursuivre votre apprentissage. Nous proposons des formations pour tous les niveaux, à la demande, en salle et à distance, pour nous adapter aux emplois du temps de chacun. Les certifications vous permettent de valider et de démontrer vos compétences et votre expérience en matière de technologies Google Cloud.

Dernière mise à jour du manuel : 11 février 2024

Dernier test de l'atelier : 12 octobre 2023

Copyright 2024 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.

Ce contenu n'est pas disponible pour le moment

Nous vous préviendrons par e-mail lorsqu'il sera disponible

Parfait !

Nous vous contacterons par e-mail s'il devient disponible