Créer un pipeline de données sans serveur: IoT à Analytics

1. Présentation/Introduction

Les applications multicouches composées d'un serveur Web, d'un serveur d'application et d'une base de données sont fondamentales pour le développement Web et constituent le point de départ de nombreux sites Web. Toutefois, le succès s'accompagne souvent de défis en termes d'évolutivité, d'intégration et d'agilité. Par exemple, comment les données peuvent-elles être traitées en temps réel et distribuées à plusieurs systèmes métier clés ? Ces problèmes, associés aux exigences des applications à l'échelle d'Internet, ont rendu nécessaire un système de messagerie distribué et ont donné naissance à un modèle architectural utilisant des pipelines de données pour obtenir des systèmes résilients en temps réel. Par conséquent, il est essentiel pour les développeurs et les architectes de savoir comment publier des données en temps réel dans un système de messagerie distribué, puis comment créer un pipeline de données.

Objectif de cet atelier

Dans cet atelier de programmation, vous allez créer un pipeline de données météorologiques qui commence par un appareil Internet des objets (IoT), utilise une file d'attente de messages pour recevoir et fournir des données, exploite une fonction sans serveur pour déplacer les données vers un entrepôt de données, puis crée un tableau de bord qui affiche les informations. Un Raspberry Pi avec un capteur météo sera utilisé pour l'appareil IoT, et plusieurs composants de Google Cloud Platform formeront le pipeline de données. La configuration de la Raspberry Pi, bien qu'utile, est une partie facultative de cet atelier de programmation. Les données météorologiques en streaming peuvent être remplacées par un script.

79cd6c68e83f7fea.png

Après avoir suivi les étapes de cet atelier de programmation, vous disposerez d'un pipeline de données en flux continu alimentant un tableau de bord qui affiche la température, l'humidité, le point de rosée et la pression atmosphérique.

e28ca9ea4abb1457.png

Points abordés

  • Utiliser Google Pub/Sub
  • Déployer une fonction Google Cloud
  • Exploiter Google BigQuery
  • Créer un tableau de bord à l'aide de Google Data Studio
  • De plus, si vous développez le capteur IoT, vous apprendrez également à utiliser le SDK Google Cloud et à sécuriser les appels d'accès à distance à Google Cloud Platform.

Prérequis

Si vous souhaitez créer la partie capteur IoT de cet atelier de programmation au lieu d'utiliser des exemples de données et un script, vous aurez également besoin des éléments suivants ( que vous pouvez commander sous forme de kit complet ou de pièces individuelles ici) :

  • Raspberry Pi Zero W avec alimentation, carte mémoire SD et boîtier
  • Lecteur de carte USB
  • Hub USB (pour connecter un clavier et une souris au seul port USB du Raspberry Pi)
  • Câbles de connexion femelle-femelle
  • Connecteurs GPIO
  • Capteur BME280
  • Fer à souder avec soudure

De plus, nous partons du principe que vous avez accès à un écran d'ordinateur ou à un téléviseur avec une entrée HDMI, un câble HDMI, un clavier et une souris.

2. Configuration

Configuration de l'environnement au rythme de chacun

Si vous ne possédez pas encore de compte Google (Gmail ou G Suite), vous devez en créer un. Que vous ayez déjà un compte Google ou non, assurez-vous de profiter de l'essai sans frais de 300$.

Connectez-vous à la console Google Cloud Platform ( console.cloud.google.com). Vous pouvez utiliser le projet par défaut ("Mon premier projet") pour cet atelier ou choisir d'en créer un. Si vous souhaitez créer un projet, vous pouvez utiliser la page Gérer les ressources. L'ID du projet doit être un nom unique pour tous les projets Google Cloud (celui indiqué ci-dessous est déjà pris et ne fonctionnera pas pour vous). Notez l'ID de votre projet (par exemple, l'ID de votre projet sera _____) car vous en aurez besoin plus tard.

f414a63d955621a7.png

3415e861c09cd06a.png

Suivre cet atelier de programmation ne devrait pas vous coûter plus d'un euro. Cependant, cela peut s'avérer plus coûteux si vous décidez d'utiliser davantage de ressources ou si vous ne les interrompez pas. Veillez à parcourir la section "Nettoyage" à la fin de l'atelier de programmation.

3. Créer une table BigQuery

BigQuery est un entrepôt de données d'entreprise sans serveur, hautement évolutif et à faible coût. Il constitue une option idéale pour stocker les données diffusées en flux continu à partir d'appareils IoT, tout en permettant à un tableau de bord d'analyse d'interroger les informations.

Créons une table qui contiendra toutes les données météorologiques IoT. Sélectionnez BigQuery dans la console Cloud. BigQuery s'ouvre dans une nouvelle fenêtre. Ne fermez pas la fenêtre d'origine, car vous devrez y accéder de nouveau.

12a838f78a10144a.png

Cliquez sur la flèche vers le bas à côté du nom de votre projet, puis sélectionnez "Créer un ensemble de données".

27616683b64ce34a.png

Saisissez "weatherData" pour l'ensemble de données, sélectionnez un emplacement où il sera stocké, puis cliquez sur "OK".

62cfcbd1add830ea.png

Cliquez sur le signe "+" à côté de votre ensemble de données pour créer un tableau.

3d7bff6f9843fa3c.png

Pour Source Data (Données sources), sélectionnez Create empty table (Créer une table vide). Pour le nom de la table de destination, saisissez weatherDataTable. Sous Schéma, cliquez sur le bouton Ajouter un champ jusqu'à ce qu'il y ait un total de neuf champs. Remplissez les champs comme indiqué ci-dessous, en veillant à sélectionner le type approprié pour chaque champ. Une fois que vous avez terminé, cliquez sur le bouton Créer un tableau.

eef352614a5696a7.png

Vous devriez obtenir un résultat semblable à celui-ci :

7d10e5ab8c6d6a0d.png

Vous disposez désormais d'un entrepôt de données configuré pour recevoir vos données météorologiques.

4. Créer un sujet Pub/Sub

Cloud Pub/Sub est une base simple, fiable et évolutive pour l'analyse des flux et les systèmes informatiques basés sur des événements. Il est donc idéal pour gérer les messages IoT entrants et permettre aux systèmes en aval de les traiter.

Si vous êtes toujours dans la fenêtre BigQuery, revenez à la console Cloud. Si vous avez fermé la console Cloud, accédez à https://console.cloud.google.com.

Dans la console Cloud, sélectionnez Pub/Sub, puis "Sujets".

331ad71e8a1ea7b.png

Si une invite "Activer l'API" s'affiche, cliquez sur le bouton "Activer l'API".

9f6fca9dc8684801.png

Cliquez sur le bouton "Créer un sujet".

643670164e9fae12.png

Saisissez "weatherdata" comme nom de sujet, puis cliquez sur "Create" (Créer).

d7b049bc66a34db6.png

Le sujet que vous venez de créer doit s'afficher.

7c385759f65a1031.png

Vous disposez désormais d'un sujet Pub/Sub pour publier des messages IoT et permettre à d'autres processus d'accéder à ces messages.

Publication sécurisée dans le sujet

Si vous prévoyez de publier des messages dans la rubrique Pub/Sub à partir de ressources en dehors de votre console Google Cloud (par exemple, un capteur IoT), il sera nécessaire de contrôler plus étroitement l'accès à l'aide d'un compte de service et d'assurer la sécurité de la connexion en créant un certificat de confiance.

Dans la console Cloud, sélectionnez IAM et administration, puis Comptes de service.

8e2f8a1428d0feca.png

Cliquez sur le bouton "Créer un compte de service".

60892b564e0ac140.png

Dans le menu déroulant "Rôle", sélectionnez le rôle "Diffuseur Pub/Sub".

31f8c944af11270e.png

Saisissez un nom de compte de service (iotWeatherPublisher), cochez la case "Indiquer une nouvelle clé privée", assurez-vous que le type de clé est défini sur JSON, puis cliquez sur "Créer".

7e3f9d7e56a44796.png

La clé de sécurité sera téléchargée automatiquement. Il n'y a qu'une seule clé. Il est donc important de ne pas la perdre. Cliquez sur "Fermer".

60a7da32dd85ba73.png

Vous devriez voir qu'un compte de service a été créé et qu'un ID de clé lui est associé.

b25f6f5629fe8fd7.png

Pour accéder facilement à la clé ultérieurement, nous allons la stocker dans Google Cloud Storage. Dans la console Cloud, sélectionnez "Stockage", puis "Navigateur".

c4414fe61be320a9.png

Cliquez sur le bouton "Créer un bucket".

cde91311b267fc65.png

Choisissez un nom pour le bucket de stockage (il doit être unique au niveau mondial sur l'ensemble de Google Cloud), puis cliquez sur le bouton "Créer".

28c10e41b401f479.png

Recherchez la clé de sécurité qui a été téléchargée automatiquement, puis faites-la glisser et déposez-la ou importez-la dans le bucket de stockage.

a0f6d069d42cec4b.png

Une fois la clé importée, elle devrait apparaître dans le navigateur Cloud Storage.

55b25c8b9d73ec19.png

Notez le nom du bucket de stockage et le nom du fichier de clé de sécurité pour les utiliser plus tard.

5. Créer une fonction Cloud

Grâce au cloud computing, vous pouvez utiliser des modèles de calcul entièrement sans serveur dans lesquels la logique peut être créée à la demande en réponse à des événements, quelle que soit leur provenance. Pour cet atelier, une fonction Cloud démarrera chaque fois qu'un message sera publié dans le sujet "weather" (météo), lira le message, puis le stockera dans BigQuery.

Dans la console Cloud, sélectionnez Cloud Functions.

a14ac2e4f03bf831.png

Si un message concernant l'API s'affiche, cliquez sur le bouton "Activer l'API".

40ba0a08430e0e8a.png

Cliquez sur le bouton "Créer une fonction".

5d82d8faeffa55bf.png

Dans le champ "Nom", saisissez function-weatherPubSubToBQ. Pour "Déclencheur", sélectionnez "Sujet Cloud Pub/Sub", puis "weatherdata" dans le menu déroulant "Sujet". Pour le code source, sélectionnez l'éditeur intégré. Dans l'onglet index.js, collez le code suivant par-dessus le code existant. Veillez à modifier les constantes pour projectId, datasetId et tableId afin qu'elles correspondent à votre environnement.

/**
 * Background Cloud Function to be triggered by PubSub.
 *
 * @param {object} event The Cloud Functions event.
 * @param {function} callback The callback function.
 */
exports.subscribe = function (event, callback) {
  const BigQuery = require('@google-cloud/bigquery');
  const projectId = "myProject"; //Enter your project ID here
  const datasetId = "myDataset"; //Enter your BigQuery dataset name here
  const tableId = "myTable"; //Enter your BigQuery table name here -- make sure it is setup correctly
  const PubSubMessage = event.data;
  // Incoming data is in JSON format
  const incomingData = PubSubMessage.data ? Buffer.from(PubSubMessage.data, 'base64').toString() : "{'sensorID':'na','timecollected':'1/1/1970 00:00:00','zipcode':'00000','latitude':'0.0','longitude':'0.0','temperature':'-273','humidity':'-1','dewpoint':'-273','pressure':'0'}";
  const jsonData = JSON.parse(incomingData);
  var rows = [jsonData];

  console.log(`Uploading data: ${JSON.stringify(rows)}`);

  // Instantiates a client
  const bigquery = BigQuery({
    projectId: projectId
  });

  // Inserts data into a table
  bigquery
    .dataset(datasetId)
    .table(tableId)
    .insert(rows)
    .then((foundErrors) => {
      rows.forEach((row) => console.log('Inserted: ', row));

      if (foundErrors && foundErrors.insertErrors != undefined) {
        foundErrors.forEach((err) => {
            console.log('Error: ', err);
        })
      }
    })
    .catch((err) => {
      console.error('ERROR:', err);
    });
  // [END bigquery_insert_stream]


  callback();
};

Dans l'onglet "package.json", collez le code suivant sur le code de l'espace réservé :

{
  "name": "function-weatherPubSubToBQ",
  "version": "0.0.1",
  "private": true,
  "license": "Apache-2.0",
  "author": "Google Inc.",
  "dependencies": {
    "@google-cloud/bigquery": "^0.9.6"
  }
}

Si la fonction à exécuter est définie sur "HelloWorld", remplacez-la par "subscribe". Cliquer sur le bouton "Créer"

3266d5268980a4db.png

L'affichage de votre fonction déployée prend environ deux minutes.

26f45854948426d0.png

Félicitations ! Vous venez de connecter Pub/Sub à BigQuery via Functions.

6. Configurer le matériel IoT (facultatif)

Assembler le Raspberry Pi et le capteur

Si l'en-tête contient plus de sept épingles, réduisez-le à sept. Soudez les broches de l'embase à la carte du capteur.

a162e24426118c97.png

Installez délicatement les broches de l'embase dans le Raspberry Pi.

a3a697907fe3c9a9.png

Formatez la carte SD et installez le programme d'installation NOOBS (New Out Of Box Software) en suivant les étapes ici. Insérez la carte SD dans le Raspberry Pi, puis placez le Raspberry Pi dans son boîtier.

1e4e2459cd3333ec.png

Utilisez les fils de la platine d'essai pour connecter le capteur à la Raspberry Pi en suivant le schéma ci-dessous.

392c2a9c85187094.png

Broche Raspberry Pi

Connexion du capteur

Broche 1 (3,3 V)

VIN

Broche 3 (CPIO2)

SDI

Broche 5 (GPIO3)

SCK

Broche 9 (masse)

GND

44322e38d467d66a.png

Connectez le moniteur (à l'aide du connecteur mini-HDMI), le clavier/la souris (avec le hub USB) et enfin l'adaptateur secteur.

Configurer le Raspberry Pi et le capteur

Une fois le Raspberry Pi démarré, sélectionnez Raspbian comme système d'exploitation, vérifiez que la langue souhaitée est correcte, puis cliquez sur "Install" (Installer) (icône de disque dur en haut à gauche de la fenêtre).

a16f0da19b93126.png

Cliquez sur l'icône Wi-Fi (en haut à droite de l'écran), puis sélectionnez un réseau. S'il s'agit d'un réseau sécurisé, saisissez le mot de passe (clé prépartagée).

17f380b2d41751a8.png

Cliquez sur l'icône en forme de framboise (en haut à gauche de l'écran), sélectionnez "Preferences" (Préférences), puis "Raspberry Pi Configuration" (Configuration de Raspberry Pi). Dans l'onglet "Interfaces", activez I2C. Dans l'onglet "Localisation", définissez les paramètres régionaux et le fuseau horaire. Après avoir défini le fuseau horaire, laissez le Raspberry Pi redémarrer.

14741a77fccdb7e7.png

Une fois le redémarrage terminé, cliquez sur l'icône Terminal pour ouvrir une fenêtre de terminal.

9df6f228f6a31601.png

Saisissez la commande suivante pour vous assurer que le capteur est correctement connecté.

  sudo i2cdetect -y 1

Le résultat doit ressembler à ceci. Assurez-vous qu'il indique 77.

cd35cd97bee8085a.png

Installez le SDK Google Cloud.

Pour utiliser les outils de la plate-forme Google Cloud, vous devez installer le SDK Google Cloud sur le Raspberry Pi. Le SDK inclut les outils nécessaires pour gérer et exploiter Google Cloud Platform. Il est disponible pour plusieurs langages de programmation.

Ouvrez une fenêtre de terminal sur le Raspberry Pi si aucune n'est déjà ouverte, puis définissez une variable d'environnement qui correspondra à la version du SDK sur le système d'exploitation du Raspberry Pi.

  export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"

Ajoutez maintenant l'emplacement où sont stockés les packages du SDK Google Cloud afin que les outils d'installation sachent où chercher lorsqu'ils sont invités à installer le SDK.

  echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" |  sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list

Ajoutez la clé publique du dépôt de packages de Google afin que la Raspberry Pi puisse vérifier la sécurité et faire confiance au contenu lors de l'installation.

  curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

Assurez-vous que tous les logiciels de la Raspberry Pi sont à jour et installez le SDK Google Cloud principal.

  sudo apt-get update && sudo apt-get install google-cloud-sdk

Lorsque l'invite "Voulez-vous continuer ?" s'affiche, appuyez sur Entrée.

Installez le package tendo à l'aide du gestionnaire de packages Python. Ce package permet de vérifier si un script s'exécute plusieurs fois et s'installe pour son application au script météo.

  pip install tendo

Assurez-vous que les packages Google Cloud PubSub et OAuth2 pour Python sont installés et à jour à l'aide du gestionnaire de packages Python.

  sudo pip install --upgrade google-cloud-pubsub
  sudo pip install --upgrade oauth2client

Initialisez le SDK Google Cloud

Le SDK permet un accès authentifié et à distance à Google Cloud. Pour cet atelier de programmation, il sera utilisé pour accéder au bucket de stockage afin que la clé de sécurité puisse être facilement téléchargée sur le Raspberry Pi.

Dans la ligne de commande du Raspberry Pi, saisissez

  gcloud init --console-only

Lorsque l'invite "Would you like to log in (Y/n)?" (Souhaitez-vous vous connecter (O/N) ?) s'affiche, appuyez sur Entrée.

Lorsque le message "Accédez au lien suivant dans votre navigateur" s'affiche, suivi d'une longue URL commençant par https://accounts.google.com/o/oauth?..., pointez sur l'URL avec la souris, effectuez un clic droit, puis sélectionnez "Copier l'URL". Ouvrez ensuite le navigateur Web (icône en forme de globe bleu en haut à gauche de l'écran), effectuez un clic droit sur la barre d'adresse, puis cliquez sur "Coller".

Une fois l'écran de connexion affiché, saisissez l'adresse e-mail associée à votre compte Google Cloud, puis appuyez sur Entrée. Saisissez ensuite votre mot de passe et cliquez sur le bouton "Suivant".

Un message vous indiquera que Google Cloud SDK souhaite accéder à votre compte Google. Cliquez sur le bouton "Autoriser".

Le code de validation s'affiche. À l'aide de la souris, mettez-le en surbrillance, puis effectuez un clic droit et sélectionnez "Copier". Revenez à la fenêtre du terminal, assurez-vous que le curseur se trouve à droite de "Saisissez le code de validation :", effectuez un clic droit avec la souris, puis sélectionnez "Coller". Appuyez sur le bouton Entrée.

Si vous êtes invité à "Choisir le projet Cloud à utiliser", saisissez le numéro correspondant au nom du projet que vous avez utilisé pour cet atelier de programmation, puis appuyez sur Entrée.

Si vous êtes invité à activer l'API Compute, appuyez sur la touche Entrée pour l'activer. Vous serez ensuite invité à configurer les paramètres Google Compute Engine. Appuyez sur Entrée. Une liste de régions/zones potentielles s'affiche. Choisissez-en une proche de vous, saisissez le numéro correspondant et appuyez sur Entrée.

Des informations supplémentaires s'afficheront dans un instant. Le SDK Google Cloud est maintenant configuré. Vous pouvez fermer la fenêtre du navigateur Web, car vous n'en aurez plus besoin.

Installer le logiciel du capteur et le script météo

À partir de la ligne de commande sur le Raspberry Pi, clonez les packages nécessaires pour lire les informations des broches d'entrée/sortie.

  git clone https://github.com/adafruit/Adafruit_Python_GPIO

Installer les packages téléchargés

  cd Adafruit_Python_GPIO

  sudo python setup.py install

  cd ..

Cloner le code du projet qui active le capteur météo

  git clone https://github.com/googlecodelabs/iot-data-pipeline

Copiez le pilote du capteur dans le même répertoire que le reste du logiciel téléchargé.

  cd iot-data-pipeline/third_party/Adafruit_BME280

  mv Adafruit_BME280.py ../..

  cd ../..

Modifiez le script en saisissant…

  nano checkWeather.py

Remplacez le projet par votre ID de projet et le sujet par le nom de votre sujet Pub/Sub (ces informations ont été notées dans les sections "Configuration" et "Créer un sujet Pub/Sub" de cet atelier de programmation).

Modifiez les valeurs sensorID, sensorZipCode, sensorLat et sensorLong comme vous le souhaitez. Pour trouver les valeurs de latitude et de longitude d'un lieu ou d'une adresse spécifiques, cliquez ici.

Lorsque vous avez terminé d'apporter les modifications nécessaires, appuyez sur Ctrl+X pour commencer à quitter l'éditeur nano. Appuyez sur "Y" pour confirmer.

# constants - change to fit your project and location
SEND_INTERVAL = 10 #seconds
sensor = BME280(t_mode=BME280_OSAMPLE_8, p_mode=BME280_OSAMPLE_8, h_mode=BME280_OSAMPLE_8)
credentials = GoogleCredentials.get_application_default()
project="myProject" #change this to your Google Cloud project id
topic = "myTopic" #change this to your Google Cloud PubSub topic name
sensorID = "s-Googleplex"
sensorZipCode = "94043"
sensorLat = "37.421655"
sensorLong = "-122.085637"

Installer la clé de sécurité

Copiez la clé de sécurité (de la section "Publier de manière sécurisée sur un sujet") sur le Raspberry Pi.

Si vous avez utilisé SFTP ou SCP pour copier la clé de sécurité de votre ordinateur local vers votre Raspberry Pi (dans le répertoire /home/pi), vous pouvez ignorer l'étape suivante et passer directement à l'exportation du chemin d'accès.

Si vous avez placé la clé de sécurité dans un bucket de stockage, vous devez vous souvenir du nom du bucket de stockage et du nom du fichier. Utilisez la commande gsutil pour copier la clé de sécurité. Cette commande peut accéder à Google Storage (d'où son nom gsutil et le fait que le chemin d'accès au fichier commence par gs://). Veillez à remplacer le nom du bucket et du fichier dans la commande ci-dessous.

  gsutil cp gs://nameOfYourBucket/yourSecurityKeyFilename.json .

Un message indiquant que le fichier est en cours de copie, puis que l'opération est terminée doit s'afficher.

À partir de la ligne de commande sur le Raspberry Pi, exportez un chemin d'accès à la clé de sécurité (modifiez le nom du fichier pour qu'il corresponde à celui que vous avez).

  export GOOGLE_APPLICATION_CREDENTIALS=/home/pi/iot-data-pipeline/yourSecurityKeyFilename.json

Vous disposez maintenant d'un capteur météo IoT complet, prêt à transmettre des données à Google Cloud.

7. Démarrer le pipeline de données

Vous devrez peut-être activer l'API Compute

Streaming de données depuis un Raspberry Pi

Si vous avez construit un capteur météo IoT Raspberry Pi, lancez le script qui lira les données météorologiques et les enverra à Google Cloud Pub/Sub. Si vous n'êtes pas dans le répertoire /home/pi/iot-data-pipeline, commencez par vous y rendre.

  cd /home/pi/iot-data-pipeline

Démarrer le script météo

  python checkWeather.py

La fenêtre de terminal devrait afficher les résultats des données météorologiques toutes les minutes. Une fois les données transférées, vous pouvez passer à la section suivante (Vérifier que les données sont transférées).

Streaming de données simulées

Si vous n'avez pas créé le capteur météo IoT, vous pouvez simuler le flux de données en utilisant un ensemble de données public stocké dans Google Cloud Storage et en l'insérant dans le sujet Pub/Sub existant. Nous utiliserons Google Dataflow avec un modèle fourni par Google pour lire les données depuis Cloud Storage et les publier dans Pub/Sub.

Dans le cadre du processus, Dataflow aura besoin d'un emplacement de stockage temporaire. Nous allons donc créer un bucket de stockage à cet effet.

Dans la console Cloud, sélectionnez "Stockage", puis "Navigateur".

c4414fe61be320a9.png

Cliquez sur le bouton "Créer un bucket".

cde91311b267fc65.png

Choisissez un nom pour le bucket de stockage (n'oubliez pas qu'il doit être unique dans l'ensemble de Google Cloud), puis cliquez sur le bouton "Créer". Notez le nom de ce bucket de stockage, car vous en aurez besoin sous peu.

1dad4cfbccfc96b1.png

Dans la console Cloud, sélectionnez Dataflow.

43ec245b47ae2e78.png

Cliquez sur "Créer un job à partir d'un modèle" (en haut de l'écran).

da55aaf2a1b0a0d0.png

Renseignez les détails de la tâche comme indiqué ci-dessous, en faisant attention aux points suivants :

  • Saisissez le nom du job dataflow-gcs-to-pubsub.
  • Votre région devrait être sélectionnée automatiquement en fonction de l'emplacement où votre projet est hébergé. Vous ne devriez pas avoir besoin de la modifier.
  • Sélectionnez un modèle Cloud Dataflow de GCS Text to Cloud Pub/Sub.
  • Pour les fichiers Cloud Storage d'entrée, saisissez gs://codelab-iot-data-pipeline-sampleweatherdata/*.json (il s'agit d'un ensemble de données public).
  • Pour le sujet Pub/Sub de sortie, le chemin exact dépendra du nom de votre projet et ressemblera à "projects/yourProjectName/topics/weatherdata".
  • Définissez l'emplacement temporaire sur le nom du bucket Google Cloud Storage que vous venez de créer avec le préfixe de nom de fichier "tmp". Il devrait ressembler à "gs://myStorageBucketName/tmp".

Une fois que vous avez rempli toutes les informations (voir ci-dessous), cliquez sur le bouton "Exécuter le job".

5f8ca16672f19d9b.png

La tâche Dataflow devrait commencer à s'exécuter.

e020015c369639ad.png

L'exécution du job Dataflow devrait prendre environ une minute.

218a3ff7197dcf75.png

8. Vérifier que les données sont transmises

Journaux Cloud Functions

Vérifier que la fonction Cloud est déclenchée par Pub/Sub

  gcloud beta functions logs read function-weatherPubSubToBQ

Les journaux doivent indiquer que la fonction s'exécute, que les données sont reçues et qu'elles sont insérées dans BigQuery.

d88f7831dabc8b3f.png

Données BigQuery

Vérifiez que les données sont transférées dans la table BigQuery. Dans la console Cloud, accédez à BigQuery (bigquery.cloud.google.com).

85627127d58f1d2e.png

Sous le nom du projet (à gauche de la fenêtre), cliquez sur l'ensemble de données (weatherData), puis sur la table (weatherDataTable), puis sur le bouton "Interroger la table".

44dc0f765a69580c.png

Ajoutez un astérisque à l'instruction SQL pour qu'elle se lise SELECT * FROM..., comme indiqué ci-dessous, puis cliquez sur le bouton "Exécuter la requête".

b3a001e11c2902f2.png

Si vous y êtes invité, cliquez sur le bouton "Exécuter la requête".

2c894d091b789ca3.png

Si des résultats s'affichent, cela signifie que les données sont correctement transmises.

c8a061cebb7b528a.png

Maintenant que les données sont transférées, vous êtes prêt à créer un tableau de bord d'analyse.

9. Créer un tableau de bord Data Studio

Google Data Studio vous permet de présenter vos données dans des tableaux de bord et des rapports instructifs entièrement personnalisables, qui sont faciles à lire et à partager.

Dans votre navigateur Web, accédez à https://datastudio.google.com.

10f8c27060cd7430.png

Sous "Commencer un nouveau rapport", cliquez sur "Vide", puis sur le bouton "Commencer".

df1404bc0047595e.png

Cochez la case pour accepter les conditions d'utilisation, cliquez sur le bouton "Suivant", sélectionnez les e-mails que vous souhaitez recevoir, puis cliquez sur le bouton "OK". Une fois de plus, sous "Commencer un nouveau rapport", cliquez sur "Vide".

55e91d3dd88b05ca.png

Cliquez sur le bouton "Créer une source de données".

a22f3fac05774fc9.png

Cliquez sur BigQuery, puis sur le bouton "Autoriser", puis choisissez le compte Google que vous souhaitez utiliser avec Data Studio (il doit s'agir du même que celui que vous avez utilisé pour l'atelier de programmation).

5ab03f341edc8964.png

Cliquez sur le bouton "Autoriser".

22bcdbb5f5f1d30c.png

Sélectionnez le nom de votre projet, votre ensemble de données et votre table. Cliquez ensuite sur le bouton "Connect" (Connecter).

dc6b6b0ed9ced509.png

Modifiez les champs de type comme indiqué ci-dessous (tout doit être un nombre, à l'exception de "timecollected" et "sensorID"). Notez que "timecollected" est défini sur "Date Hour" (et non pas uniquement sur "Date"). Modifiez les champs "Agrégation" comme indiqué ci-dessous (le point de rosée, la température, l'humidité et la pression doivent être des moyennes, et tous les autres champs doivent être définis sur "Aucun"). Cliquez sur le bouton "Créer un rapport".

c60887e29c3bdf9b.png

Confirmez en cliquant sur le bouton "Ajouter au rapport".

5ec3888dfdd85095.png

Si vous êtes invité à sélectionner votre compte Google, faites-le, puis cliquez sur le bouton "Autoriser" pour permettre à Data Studio de stocker ses rapports dans Google Drive.

7b8006a813b3defa.png

Une toile vierge s'affiche pour vous permettre de créer votre tableau de bord. Dans la rangée supérieure d'icônes, sélectionnez "Série temporelle".

c7cd97354e1cde04.png

Dessinez un rectangle en haut à gauche de la feuille vierge. Il doit occuper environ un quart de la feuille vierge.

e0e82cb19921f835.png

Sur la droite de la fenêtre, sélectionnez l'onglet "Style". Remplacez "Ligne à zéro" par "Sauts de ligne" dans "Données manquantes". Dans la section "Axe Y de gauche", supprimez le 0 de la valeur minimale de l'axe pour la remplacer par "(Automatique)".

c7620bfe734d546.png

Cliquez sur le graphique de la feuille de calcul, puis copiez-le et collez-le (Ctrl+C/Ctrl+V) trois fois. Alignez les graphiques de sorte que chacun occupe un quart de la mise en page.

9a7d3faa28996219.png

Cliquez sur chaque graphique, puis, dans la section "Propriétés et données de la série temporelle", cliquez sur la métrique existante (point de rosée). Choisissez une autre métrique à afficher jusqu'à ce que les quatre relevés météorologiques (point de rosée, température, humidité et pression) aient leur propre graphique.

d29b21cac9e1ef5d.png

fda75a2f2a77a323.png

Vous avez maintenant un tableau de bord de base.

8f59e8f4d44b8552.png

10. Félicitations !

Vous avez créé un pipeline de données complet. Vous avez ainsi appris à utiliser Google Pub/Sub, à déployer une fonction serverless, à exploiter BigQuery et à créer un tableau de bord d'analyse à l'aide de Data Studio. Vous avez également découvert comment utiliser le SDK Google Cloud de manière sécurisée pour importer des données dans Google Cloud Platform. Enfin, vous avez maintenant acquis une expérience pratique avec un modèle architectural important qui peut gérer des volumes élevés tout en maintenant la disponibilité.

79cd6c68e83f7fea.png

Effectuer un nettoyage

Une fois que vous avez terminé d'expérimenter avec les données météorologiques et le pipeline d'analyse, vous pouvez supprimer les ressources en cours d'exécution.

Si vous avez créé le capteur IoT, éteignez-le. Appuyez sur Ctrl+C dans la fenêtre du terminal pour arrêter le script, puis saisissez la commande suivante pour éteindre le Raspberry Pi.

  shutdown -h now

Accédez à Cloud Functions, cochez la case à côté de function-weatherPubSubToBQ, puis cliquez sur "Supprimer".

ae95f4f7178262e0.png

Accédez à Pub/Sub, cliquez sur "Sujet", cochez la case à côté du sujet "weatherdata", puis cliquez sur "Supprimer".

6fb0bba3163d9a32.png

Accédez à "Stockage", cochez les cases à côté des buckets de stockage, puis cliquez sur "Supprimer".

9067fb2af9f907f4.png

Accédez à bigquery.cloud.google.com, cliquez sur la flèche vers le bas à côté du nom de votre projet, puis sur la flèche vers le bas à droite de l'ensemble de données weatherData, puis sur "Supprimer l'ensemble de données".

a952dfeec49248c4.png

Lorsque vous y êtes invité, saisissez l'ID de l'ensemble de données (weatherData) pour terminer la suppression des données.

6310b1cc8da31a77.png