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

1. Présentation/Présentation

Si les applications à plusieurs niveaux (Web, serveurs d'applications et bases de données) sont à la base du développement Web et constituent le point de départ de nombreux sites Web, leur réussite posera souvent des 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 comment peuvent-elles être distribuées sur plusieurs systèmes d'entreprise clés ? Ces problèmes, associés aux exigences des applications à l'échelle d'Internet, ont nécessité 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, les développeurs et les architectes doivent 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 IoT (Internet des objets), utilise une file d'attente de messages pour recevoir et fournir des données, puis une fonction sans serveur pour déplacer les données vers un entrepôt de données. Enfin, vous allez créer un tableau de bord qui affiche les informations. L'appareil IoT sera équipé d'un Raspberry Pi doté d'un capteur météo, et plusieurs composants de Google Cloud Platform constitueront le pipeline de données. La création du Raspberry Pi, bien qu'utile, est une partie facultative de cet atelier de programmation. Les données météorologiques en flux continu peuvent être remplacées par un script.

79cd6c68e83f7fea.png

Une fois les étapes de cet atelier de programmation terminées, vous disposerez d'un pipeline de données en flux continu qui alimente un tableau de bord qui affiche la température, l'humidité, le point de rosée et la pression de l'air.

e28ca9ea4abb1457.png

Points abordés

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

Prérequis

  • Un compte Google Cloud Platform Les nouveaux utilisateurs de Google Cloud Platform peuvent bénéficier d'un essai sans frais de 300$.

Si vous souhaitez créer la partie consacrée aux capteurs 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 ( qui peuvent être commandés sous forme de kit complet ou de pièces individuelles).

  • Raspberry Pi Zero W avec alimentation, carte mémoire SD et étui
  • Lecteur de carte USB
  • Hub USB (pour connecter un clavier et une souris au seul port USB du Raspberry Pi)
  • Des fils de platine d'expérimentation femelle à femelle
  • En-têtes de marteau GPIO
  • Capteur BME280
  • Fer à souder

Vous devez également avoir accès à un écran d'ordinateur ou à un téléviseur équipé d'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, nous vous invitons à profiter de l'essai sans frais de 300$ !

Connectez-vous à la console Google Cloud Platform ( console.cloud.google.com). Pour cet atelier, vous pouvez utiliser le projet par défaut ("Mon premier projet") ou en créer un autre. 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 parmi tous les projets Google Cloud (celui affiché ci-dessous est déjà utilisé et ne fonctionnera pas). Notez l'ID de votre projet (autrement dit, celui-ci sera _____), car vous en aurez besoin ultérieurement.

f414a63d955621a7.png

3415e861c09cd06a.png

L'exécution de cet atelier de programmation ne devrait pas vous coûter plus que quelques dollars, mais ce montant peut être plus élevé si vous décidez d'utiliser plus de ressources ou de continuer à les exécuter. Veillez à consulter 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 s'agit d'une solution idéale pour stocker les données diffusées en continu depuis des 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 l'emplacement de stockage, puis cliquez sur "OK".

62cfcbd1add830ea.png

Cliquez sur le bouton " " à côté de votre ensemble de données pour créer une table

3d7bff6f9843fa3c.png

Dans le champ Données sources, sélectionnez Créer une table vide. Pour "Nom de la table de destination", saisissez weatherDataTable. Sous Schéma, cliquez sur le bouton Ajouter un champ jusqu'à ce que neuf champs au total s'affichent. Remplissez les champs comme indiqué ci-dessous en veillant à sélectionner le type approprié pour chacun d'eux. Lorsque tout est terminé, cliquez sur le bouton Créer une table.

eef352614a5696a7.png

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

7d10e5ab8c6d6a0d.png

Vous disposez maintenant 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, puis permettre aux systèmes en aval de les traiter.

Si vous êtes toujours dans la fenêtre de 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 "Create a topic" (Créer un sujet).

643670164e9fae12.png

Saisissez "weatherdata" comme nom de sujet, puis cliquez sur Créer

d7b049bc66a34db6.png

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

7c385759f65a1031.png

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

Publication sécurisée sur le sujet

Si vous envisagez de publier des messages dans le sujet Pub/Sub à partir de ressources extérieures à la console Google Cloud (un capteur IoT, par exemple), vous devrez contrôler plus étroitement les accès à l'aide d'un compte de service et assurer la sécurité de la connexion en créant un certificat de confiance.

Dans la console Cloud, sélectionnez "IAM et "Admin", puis "Comptes de service"

8e2f8a1428d0feca.png

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

60892b564e0ac140.png

Dans la liste déroulante "Rôle", sélectionnez le rôle "Éditeur Pub/Sub".

31f8c944af11270e.png

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

7e3f9d7e56a44796.png

La clé de sécurité est 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 constater qu'un compte de service a été créé et qu'un ID de clé lui est associé.

b25f6f5629fe8fd7.png

Pour pouvoir accéder facilement à la clé par la suite, nous la stockerons 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 s'agir d'un nom unique sur l'ensemble de Google Cloud), puis cliquez sur le bouton "Créer".

28c10e41b401f479.png

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

a0f6d069d42cec4b.png

Une fois l'importation de la clé terminée, elle doit apparaître dans le navigateur Cloud Storage.

55b25c8b9d73ec19.png

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

5. Créer une fonction Cloud

Le cloud computing permet d'élaborer 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 est lancée chaque fois qu'un message est publié sur le sujet "météo". Elle le lira, puis le stockera dans BigQuery.

Dans la console Cloud, sélectionnez Cloud Functions.

a14ac2e4f03bf831.png

Si un message d'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", et dans le menu déroulant "Sujet", sélectionnez "Données météorologiques". Pour le code source, sélectionnez "Éditeur intégré". Dans l'onglet "index.js", collez le code suivant à la place de l'élément de départ. Veillez à modifier les constantes "projectId", "datasetId" et "tableId" afin de les adapter à 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 d'espace réservé qui s'y trouve

{
  "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

Comptez environ deux minutes pour que votre fonction indique qu'elle a été déployée

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

S'il y a plus de sept broches, réduisez l'en-tête pour n'en ajouter que sept. Soudez les broches d'en-tête sur la carte du capteur.

a162e24426118c97.png

Installez délicatement les broches du marteau dans le Raspberry Pi.

a3a697907fe3c9a9.png

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

1e4e2459cd3333ec.png

Utilisez les fils de la platine d'expérimentation pour connecter le capteur au Raspberry Pi conformément au schéma ci-dessous.

392c2a9c85187094.png

Pin du Raspberry Pi

Connexion du capteur

Broche 1 (3,3 V)

VIN

Épingle 3 (CPIO2)

SDI

Épingle 5 (GPIO3)

SCK

Épingle 9 (terrestre)

GND

44322e38d467d66a.png

Connectez l'écran (à 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 que le Raspberry Pi a démarré, sélectionnez Raspbian pour le système d'exploitation souhaité, assurez-vous que le langage souhaité est correct, 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) et 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 raspberry (en haut à gauche de l'écran), sélectionnez Preferences (Préférences), puis 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. Une fois le fuseau horaire défini, 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 devrait ressembler à ceci : 77.

cd35cd97bee8085a.png

Installer le SDK Google Cloud

Pour exploiter les outils de Google Cloud Platform, Google Cloud SDK doit être installé sur le Raspberry Pi. Il inclut les outils nécessaires à la gestion et à l'exploitation de Google Cloud Platform. Il est disponible pour plusieurs langages de programmation.

Ouvrez une fenêtre de terminal sur le Raspberry Pi, le cas échéant, et définissez une variable d'environnement correspondant à la version du SDK au système d'exploitation du Raspberry Pi.

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

Ajoutez maintenant l'emplacement de stockage des 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 référentiel de packages de Google afin que le Raspberry Pi vérifie la sécurité et fasse 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 du 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 Teno à l'aide du gestionnaire de packages Python. Ce package permet de vérifier si un script s'exécute plusieurs fois et est en cours d'installation pour son application au script météo.

  pip install tendo

Vérifier que les packages Google Cloud Pub/Sub 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

Initialiser le SDK Google Cloud

Le SDK permet un accès distant authentifié à Google Cloud. Pour cet atelier de programmation, elle servira à 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 "Voulez-vous vous connecter (O/N) ?" s'affiche, appuyez sur Entrée.

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

Sur l'écran de connexion, 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 invite à indiquer que Google Cloud SDK souhaite accéder à votre compte Google. Cliquez sur le bouton Autoriser.

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

Si l'invite "Pick Cloud project to use:" (Sélectionner le projet Cloud à utiliser) s'affiche, 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 de Google Compute Engine. Appuyez sur Entrée. Une liste de régions/zones potentielles s'affiche. Choisissez-en une près de chez vous, saisissez le chiffre correspondant et appuyez sur Entrée.

Des informations supplémentaires vont s'afficher quelques instants plus tard. Google Cloud SDK est maintenant configuré. Vous pouvez fermer la fenêtre du navigateur Web, car vous n'en aurez plus besoin à l'avenir.

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

À partir de la ligne de commande du Raspberry Pi, clonez les packages nécessaires pour lire les informations à partir 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 éléments ont été mentionnés dans les sections "Configurer un sujet Pub/Sub" et "Créer un sujet Pub/Sub" de cet atelier de programmation).

Remplacez les valeurs sensorID, sensorZipCode, sensorLat et sensorLong par la valeur de votre choix. Pour connaître les valeurs de latitude et de longitude d'un lieu ou d'une adresse spécifique, cliquez ici.

Une fois les modifications nécessaires effectuées, appuyez sur Ctrl X pour 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 "Publication sécurisée dans 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 à 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. Exécutez la commande gsutil pour copier la clé de sécurité. Cette commande peut accéder à Google Storage (pourquoi elle est nommée gsutil et pourquoi le chemin d'accès au fichier commence par gs://). Veillez à modifier la commande ci-dessous pour obtenir le nom de votre bucket et celui de votre fichier.

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

Un message vous informe que la copie du fichier est en cours, puis que l'opération est terminée.

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

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

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

7. Démarrer le pipeline de données

Vous devrez peut-être activer l'API Compute

Flux de données à partir d'un Raspberry Pi

Si vous avez construit un capteur météo IoT Raspberry Pi, démarrez le script qui va lire les données météorologiques et les envoyer à Google Cloud Pub/Sub. Si vous n'êtes pas dans le répertoire /home/pi/iot-data-pipeline, déplacez-le d'abord

  cd /home/pi/iot-data-pipeline

Lancer le script météo

  python checkWeather.py

La fenêtre du terminal doit renvoyer les résultats des données météorologiques toutes les minutes. Lorsque les données sont transférées, vous pouvez passer à la section suivante (Vérifier que les données sont transférées).

Streaming de données simulé

Si vous n'avez pas créé le capteur météo IoT, vous pouvez simuler un flux de données à l'aide d'un ensemble de données public stocké dans Google Cloud Storage et l'alimenter dans le sujet Pub/Sub existant. Nous utiliserons Google Dataflow ainsi qu'un modèle fourni par Google pour lire des données depuis Cloud Storage et publier dans Pub/Sub.

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

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 s'agir d'un nom unique sur l'ensemble de Google Cloud), puis cliquez sur le bouton "Créer". Mémorisez le nom de ce bucket de stockage, car vous en aurez besoin prochainement.

1dad4cfbccfc96b1.png

Dans la console Cloud, sélectionnez Dataflow.

43ec245b47ae2e78.png

Cliquez sur "Create Job from Template" (Créer un job à partir d'un modèle) (partie supérieure de l'écran).

da55aaf2a1b0a0d0.png

Renseignez les détails de l'offre comme indiqué ci-dessous, en tenant compte des éléments suivants:

  • Saisissez le nom de job "dataflow-gcs-to-pubsub"
  • La région doit être sélectionnée automatiquement en fonction de l'emplacement où votre projet est hébergé et n'a pas besoin d'être modifiée.
  • Sélectionner un modèle Cloud Dataflow de texte GCS vers Cloud Pub/Sub
  • Pour les fichiers d'entrée Cloud Storage, 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 d'accès exact dépend du nom de votre projet et ressemble à ceci : "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 doit ressembler à ceci : "gs://myStorageBucketName/tmp".

Une fois toutes les informations renseignées (voir ci-dessous), cliquez sur le bouton "Exécuter le job".

5f8ca16672f19d9b.png

Le job Dataflow doit commencer à s'exécuter.

e020015c369639ad.png

Le job Dataflow devrait prendre environ une minute.

218a3ff7197dcf75.png

8. Vérifier que les données sont transférées

Journaux Cloud Functions

Assurez-vous 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 est en cours d'exécution, 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 vers 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 le jeu de données (weatherData), puis sur la table (weatherDataTable), puis cliquez 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 circulent correctement.

c8a061cebb7b528a.png

Avec le flux de données, vous êtes maintenant 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 "Start a new report" (Commencer un nouveau rapport), cliquez sur "Vide", puis sur le bouton "Commencer".

df1404bc0047595e.png

Cochez la case pour accepter les conditions, cliquez sur le bouton "Suivant", sélectionnez les e-mails que vous souhaitez recevoir, puis cliquez sur le bouton "OK". Sous "Créer un rapport", cliquez sur "Vide"

55e91d3dd88b05ca.png

Cliquez sur le bouton "Create New Data Source" (Créer une source de données).

a22f3fac05774fc9.png

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

5ab03f341edc8964.png

Cliquez sur le bouton "Autoriser".

22bcdbb5f5f1d30c.png

Sélectionnez le nom, l'ensemble de données et la table de votre projet. Cliquez ensuite sur le bouton Connecter.

dc6b6b0ed9ced509.png

Modifiez les champs de type, comme indiqué ci-dessous (tout doit être un nombre, sauf pour "timecollected" et "sensorID"). Notez que l'heure collectée est définie sur "Date Hour" (et pas seulement "Date"). Modifiez les champs d'agrégation comme indiqué ci-dessous (le point de rosée, la température, l'humidité et la pression doivent être des moyennes, et tout le reste doit être défini 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, cliquez sur le bouton "Autoriser" pour permettre à Data Studio de stocker ses rapports dans Google Drive.

7b8006a813b3defa.png

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

c7cd97354e1cde04.png

Dessinez un rectangle dans le coin supérieur gauche de la feuille vierge. Elle doit occuper environ un quart de la feuille vierge totale.

e0e82cb19921f835.png

Sur le côté droit de la fenêtre, sélectionnez l'onglet Style. Modifier les données manquantes de "Ligne à zéro" à "Sauts de ligne". Dans la section Axe Y de gauche, supprimez la valeur 0 de la valeur minimale de l'axe pour la remplacer par (Auto).

c7620bfe734d546.png

Cliquez sur le graphique de la feuille et copiez-collez-le (Ctrl C/Ctrl V) trois fois. Alignez les graphiques de sorte que chacun dispose d'un quart de la mise en page.

9a7d3faa28996219.png

Cliquez sur chaque graphique. Dans la section "Time Series Properties and Data" (Propriétés et données de la série temporelle), cliquez sur la métrique existante (point de rosée), puis choisissez-en une autre à 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 disposez désormais d'un tableau de bord de base !

8f59e8f4d44b8552.png

10. Félicitations !

Vous avez créé un pipeline de données complet ! Ce faisant, vous avez appris à utiliser Google Pub/Sub, à déployer une fonction sans serveur, à exploiter BigQuery et à créer un tableau de bord d'analyse à l'aide de Data Studio. Par ailleurs, vous avez vu comment Google Cloud SDK permet d'importer des données dans Google Cloud Platform en toute sécurité. Enfin, vous venez de vous entraîner à utiliser un modèle architectural important capable de gérer des volumes élevés tout en maintenant la disponibilité.

79cd6c68e83f7fea.png

Effectuer un nettoyage

Une fois que vous avez terminé de tester 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 de 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 à "Storage" (Stockage), cochez les cases à côté des buckets de stockage, puis cliquez sur "Delete" (Supprimer).

9067fb2af9f907f4.png

Accédez à bigquery.cloud.google.com, cliquez sur la flèche vers le bas à côté du nom de votre projet, cliquez sur la flèche vers le bas à droite du jeu de données weatherData, puis cliquez 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