Creazione di una pipeline di dati serverless: dall'IoT all'analisi

1. Panoramica/Introduzione

Sebbene le applicazioni multilivello costituite da web, application server e database siano fondamentali per lo sviluppo web e rappresentino il punto di partenza per molti siti web, il successo spesso comporta sfide in termini di scalabilità, integrazione e agilità. Ad esempio, come possono essere gestiti i dati in tempo reale e come possono essere distribuiti a più sistemi aziendali chiave? Questi problemi, uniti alle esigenze delle applicazioni su larga scala di internet, hanno reso necessario un sistema di messaggistica distribuito e hanno dato origine a un pattern architetturale di utilizzo delle pipeline di dati per ottenere sistemi resilienti in tempo reale. Di conseguenza, capire come pubblicare dati in tempo reale in un sistema di messaggistica distribuito e come creare una pipeline di dati sono competenze fondamentali sia per gli sviluppatori che per gli architetti.

Cosa creerai

In questo codelab, creerai una pipeline di dati meteo che inizia con un dispositivo Internet of Things (IoT), utilizza una coda di messaggi per ricevere e distribuire i dati, sfrutta una funzione serverless per spostare i dati in un data warehouse e quindi crea una dashboard che mostra le informazioni. Per il dispositivo IoT verrà utilizzato un Raspberry Pi con un sensore meteo e diversi componenti di Google Cloud Platform formeranno la pipeline di dati. La creazione di Raspberry Pi, sebbene utile, è una parte facoltativa di questo codelab e i dati meteo in streaming possono essere sostituiti da uno script.

79cd6c68e83f7fea.png

Dopo aver completato i passaggi di questo codelab, avrai una pipeline di dati in streaming che alimenta una dashboard che mostra temperatura, umidità, punto di rugiada e pressione atmosferica.

e28ca9ea4abb1457.png

Cosa imparerai a fare

  • Come utilizzare Google Pub/Sub
  • Come eseguire il deployment di una funzione Google Cloud
  • Come sfruttare Google BigQuery
  • Come creare una dashboard utilizzando Google Data Studio
  • Inoltre, se crei il sensore IoT, imparerai anche a utilizzare Google Cloud SDK e a proteggere le chiamate di accesso remoto a Google Cloud Platform

Che cosa ti serve

  • Un account Google Cloud Platform. I nuovi utenti di Google Cloud Platform possono beneficiare di una prova senza costi di 300$.

Se vuoi creare la parte del sensore IoT di questo codelab anziché utilizzare dati di esempio e uno script, avrai bisogno anche di quanto segue ( che può essere ordinato come kit completo o come parti singole qui)...

  • Raspberry Pi Zero W con alimentatore, scheda di memoria SD e custodia
  • Lettore di schede USB
  • Hub USB (per consentire il collegamento di una tastiera e un mouse all'unica porta USB di Raspberry Pi)
  • Cavi per breadboard femmina-femmina
  • GPIO Hammer Headers
  • Sensore BME280
  • Saldatore con stagno

Inoltre, si presuppone l'accesso a un monitor del computer o a una TV con ingresso HDMI, cavo HDMI, tastiera e mouse.

2. Preparazione

Configurazione dell'ambiente autonomo

Se non hai ancora un Account Google (Gmail o G Suite), devi crearne uno. Indipendentemente dal fatto che tu abbia già un Account Google o meno, assicurati di usufruire della prova senza costi di 300$.

Accedi alla console di Google Cloud Platform ( console.cloud.google.com). Puoi utilizzare il progetto predefinito ("Il mio primo progetto") per questo lab oppure puoi scegliere di crearne uno nuovo. Se vuoi creare un nuovo progetto, puoi utilizzare la pagina Gestisci risorse. L'ID progetto deve essere un nome univoco tra tutti i progetti Google Cloud (quello mostrato di seguito è già stato utilizzato e non funzionerà per te). Prendi nota dell'ID progetto (ad es. Il tuo ID progetto sarà _____) perché ti servirà in seguito.

f414a63d955621a7.png

3415e861c09cd06a.png

L'esecuzione di questo codelab non dovrebbe costare più di qualche dollaro, ma potrebbe essere più costosa se decidi di utilizzare più risorse o se le lasci in esecuzione. Assicurati di esaminare la sezione Pulizia alla fine del codelab.

3. Crea una tabella BigQuery

BigQuery è un data warehouse aziendale serverless, altamente scalabile e dai costi contenuti e sarà un'opzione ideale per archiviare i dati trasmessi in streaming dai dispositivi IoT, consentendo al contempo a un dashboard di analisi di eseguire query sulle informazioni.

Creiamo una tabella che conterrà tutti i dati meteo IoT. Seleziona BigQuery dalla console Cloud. Si aprirà BigQuery in una nuova finestra (non chiudere la finestra originale, perché dovrai accedervi di nuovo).

12a838f78a10144a.png

Fai clic sull'icona Freccia giù accanto al nome del progetto e poi seleziona "Crea nuovo set di dati".

27616683b64ce34a.png

Inserisci "weatherData" per il set di dati, seleziona una posizione in cui verrà archiviato e fai clic su "Ok".

62cfcbd1add830ea.png

Fai clic sul segno "+" accanto al set di dati per creare una nuova tabella.

3d7bff6f9843fa3c.png

Per Dati di origine, seleziona Crea tabella vuota. In Nome tabella di destinazione, inserisci weatherDataTable. In Schema, fai clic sul pulsante Aggiungi campo fino a quando non ci sono un totale di 9 campi. Compila i campi come mostrato di seguito, assicurandoti di selezionare anche il Tipo appropriato per ogni campo. Al termine, fai clic sul pulsante Crea tabella.

eef352614a5696a7.png

Dovresti vedere un risultato simile a questo…

7d10e5ab8c6d6a0d.png

Ora hai configurato un data warehouse per ricevere i dati meteo.

4. Crea un argomento Pub/Sub

Cloud Pub/Sub costituisce una base semplice, affidabile e scalabile per l'analisi dei flussi e i sistemi di calcolo basati su eventi. Di conseguenza, è perfetto per gestire i messaggi IoT in entrata e consentire ai sistemi downstream di elaborarli.

Se ti trovi ancora nella finestra di BigQuery, torna alla console Cloud. Se hai chiuso la console Cloud, vai alla pagina https://console.cloud.google.com

Nella console Cloud, seleziona Pub/Sub e poi Argomenti.

331ad71e8a1ea7b.png

Se viene visualizzato il prompt Abilita API, fai clic sul pulsante Abilita API.

9f6fca9dc8684801.png

Fai clic sul pulsante Crea un argomento.

643670164e9fae12.png

Inserisci "weatherdata" come nome dell'argomento e fai clic su Crea.

d7b049bc66a34db6.png

Dovresti visualizzare l'argomento appena creato.

7c385759f65a1031.png

Ora hai un argomento Pub/Sub in cui pubblicare i messaggi IoT e consentire ad altri processi di accedere a questi messaggi.

Pubblicazione sicura nell'argomento

Se prevedi di pubblicare messaggi nell'argomento Pub/Sub da risorse esterne a Google Cloud Console (ad es. un sensore IoT), sarà necessario controllare più rigorosamente l'accesso utilizzando un service account e garantire la sicurezza della connessione creando un certificato attendibile.

Nella console Cloud, seleziona IAM e amministrazione, quindi Account di servizio.

8e2f8a1428d0feca.png

Fai clic sul pulsante Crea service account.

60892b564e0ac140.png

Nel menu a discesa Ruolo, seleziona il ruolo Pub/Sub Publisher.

31f8c944af11270e.png

Digita un nome per il service account (iotWeatherPublisher), seleziona la casella di controllo Furnish a new private key (Fornisci una nuova chiave privata), assicurati che Key type (Tipo di chiave) sia impostato su JSON e fai clic su "Create" (Crea).

7e3f9d7e56a44796.png

Il token di sicurezza verrà scaricato automaticamente. Esiste una sola chiave, quindi è importante non perderla. Fai clic su Chiudi.

60a7da32dd85ba73.png

Dovresti vedere che è stato creato un service account e che è associato un ID chiave.

b25f6f5629fe8fd7.png

Per accedere facilmente alla chiave in un secondo momento, la archivieremo in Google Cloud Storage. Nella console Cloud, seleziona Storage e poi Browser.

c4414fe61be320a9.png

Fai clic sul pulsante Crea bucket.

cde91311b267fc65.png

Scegli un nome per il bucket di archiviazione (deve essere un nome univoco a livello globale in tutto Google Cloud) e fai clic sul pulsante Crea.

28c10e41b401f479.png

Individua il token di sicurezza scaricato automaticamente e trascinalo o caricalo nel bucket di archiviazione

a0f6d069d42cec4b.png

Una volta completato il caricamento della chiave, questa dovrebbe essere visualizzata nel browser Cloud Storage

55b25c8b9d73ec19.png

Prendi nota del nome del bucket di archiviazione e del nome del file della chiave di sicurezza per un utilizzo successivo.

5. Crea una funzione Cloud

Il cloud computing ha reso possibili modelli di computing completamente serverless in cui la logica può essere avviata on demand in risposta a eventi provenienti da qualsiasi origine. Per questo lab, una funzione Cloud Functions verrà avviata ogni volta che un messaggio viene pubblicato nell'argomento meteo, leggerà il messaggio e lo memorizzerà in BigQuery.

Nella console Cloud, seleziona Cloud Functions.

a14ac2e4f03bf831.png

Se visualizzi un messaggio API, fai clic sul pulsante Abilita API.

40ba0a08430e0e8a.png

Fai clic sul pulsante Crea funzione.

5d82d8faeffa55bf.png

Nel campo Nome, digita function-weatherPubSubToBQ. Per Trigger, seleziona Argomento Cloud Pub/Sub e nel menu a discesa Argomento seleziona weatherdata. Per il codice sorgente, seleziona l'editor incorporato. Nella scheda index.js, incolla il seguente codice sopra quello esistente per iniziare. Assicurati di modificare le costanti per projectId, datasetId e tableId in modo che corrispondano al tuo ambiente.

/**
 * 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();
};

Nella scheda package.json, incolla il seguente codice sopra il codice segnaposto presente

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

Se la funzione da eseguire è impostata su "HelloWorld", modificala in "subscribe". Fai clic sul pulsante Crea

3266d5268980a4db.png

Ci vorranno circa 2 minuti prima che la funzione mostri che è stata eseguita la distribuzione

26f45854948426d0.png

Complimenti! Hai appena connesso Pub/Sub a BigQuery tramite Functions.

6. (Facoltativo) Configurare l'hardware IoT

Assembla Raspberry Pi e il sensore

Se ci sono più di 7 pin, riduci l'intestazione a soli 7 pin. Salda i pin dell'intestazione alla scheda del sensore.

a162e24426118c97.png

Installa con cura i piedini dell'intestazione a martello su Raspberry Pi.

a3a697907fe3c9a9.png

Formatta la scheda SD e installa il programma di installazione NOOBS (New Out Of Box Software) seguendo i passaggi qui. Inserisci la scheda SD in Raspberry Pi e riponi Raspberry Pi nella sua custodia.

1e4e2459cd3333ec.png

Utilizza i cavi della breadboard per collegare il sensore a Raspberry Pi in base al diagramma riportato di seguito.

392c2a9c85187094.png

Pin di Raspberry Pi

Connessione del sensore

Pin 1 (3,3 V)

Numero di telaio

Pin 3 (CPIO2)

SDI

Pin 5 (GPIO3)

SCK

Pin 9 (massa)

GND

44322e38d467d66a.png

Collega il monitor (utilizzando il connettore mini-HDMI), la tastiera/il mouse (con l'hub USB) e infine l'alimentatore.

Configura Raspberry Pi e il sensore

Al termine dell'avvio di Raspberry Pi, seleziona Raspbian per il sistema operativo desiderato, assicurati che la lingua sia corretta e fai clic su Installa (icona del disco rigido nella parte in alto a sinistra della finestra).

a16f0da19b93126.png

Fai clic sull'icona del Wi-Fi (in alto a destra dello schermo) e seleziona una rete. Se si tratta di una rete protetta, inserisci la password (chiave precondivisa).

17f380b2d41751a8.png

Fai clic sull'icona del lampone (in alto a sinistra dello schermo), seleziona Preferenze e poi Configurazione di Raspberry Pi. Nella scheda Interfacce, attiva I2C. Nella scheda Localizzazione, imposta la lingua e il fuso orario. Dopo aver impostato il fuso orario, consenti il riavvio di Raspberry Pi.

14741a77fccdb7e7.png

Al termine del riavvio, fai clic sull'icona del terminale per aprire una finestra del terminale.

9df6f228f6a31601.png

Digita il seguente comando per assicurarti che il sensore sia collegato correttamente.

  sudo i2cdetect -y 1

Il risultato dovrebbe essere simile a questo: assicurati che sia 77.

cd35cd97bee8085a.png

Installa Google Cloud SDK

Per sfruttare gli strumenti sulla piattaforma Google Cloud, è necessario installare Google Cloud SDK su Raspberry Pi. L'SDK include gli strumenti necessari per gestire e sfruttare Google Cloud Platform ed è disponibile per diversi linguaggi di programmazione.

Apri una finestra del terminale su Raspberry Pi se non è già aperta e imposta una variabile di ambiente che corrisponda alla versione dell'SDK al sistema operativo su Raspberry Pi.

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

Ora aggiungi la posizione in cui sono archiviati i pacchetti Google Cloud SDK in modo che gli strumenti di installazione sappiano dove cercare quando viene chiesto di installare l'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

Aggiungi la chiave pubblica dal repository di pacchetti di Google in modo che Raspberry Pi verifichi la sicurezza e consideri attendibili i contenuti durante l'installazione

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

Assicurati che tutto il software su Raspberry Pi sia aggiornato e installa Google Cloud SDK di base

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

Quando ti viene chiesto "Vuoi continuare?", premi Invio.

Installa il pacchetto tendo utilizzando il gestore di pacchetti Python. Questo pacchetto viene utilizzato per verificare se uno script viene eseguito più di una volta e viene installato per la sua applicazione allo script meteo.

  pip install tendo

Assicurati che i pacchetti Google Cloud Pub/Sub e OAuth2 per Python siano installati e aggiornati utilizzando il gestore dei pacchetti Python.

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

Inizializza Google Cloud SDK

L'SDK consente l'accesso remoto autenticato a Google Cloud. Per questo codelab, verrà utilizzato per accedere al bucket di archiviazione in modo che il token di sicurezza possa essere scaricato facilmente su Raspberry Pi.

Dalla riga di comando su Raspberry Pi, inserisci

  gcloud init --console-only

Quando ti viene chiesto "Vuoi accedere (Y/n)?", premi Invio.

Quando visualizzi "Vai al seguente link nel browser:" seguito da un URL lungo che inizia con https://accounts.google.com/o/oauth?..., passa il mouse sopra l'URL, fai clic con il tasto destro del mouse e seleziona "Copia URL". Poi apri il browser web (icona del globo blu nell'angolo in alto a sinistra dello schermo), fai clic con il tasto destro del mouse sulla barra degli indirizzi e fai clic su "Incolla".

Quando visualizzi la schermata di accesso, inserisci l'indirizzo email associato al tuo account Google Cloud e premi Invio. Dopodiché inserisci la password e fai clic sul pulsante Avanti.

Ti verrà chiesto se vuoi consentire a Google Cloud SDK di accedere al tuo Account Google. Fai clic sul pulsante Consenti.

Ti verrà mostrato il codice di verifica. Evidenzialo con il mouse, poi fai clic con il tasto destro del mouse e scegli Copia. Torna alla finestra del terminale, assicurati che il cursore si trovi a destra di "Enter verification code:", fai clic con il tasto destro del mouse e scegli Incolla. Premi il pulsante Invio.

Se ti viene chiesto di "Scegli il progetto cloud da utilizzare", inserisci il numero corrispondente al nome del progetto che hai utilizzato per questo codelab e poi premi Invio.

Se ti viene chiesto di abilitare l'API Compute, premi il tasto Invio per abilitarla. Dopodiché, ti verrà chiesto di configurare le impostazioni di Google Compute Engine. Premi Invio. Verrà visualizzato un elenco di potenziali regioni/zone. Scegline una vicina a te, inserisci il numero corrispondente e premi Invio.

A breve verranno visualizzate alcune informazioni aggiuntive. Google Cloud SDK è ora configurato. Puoi chiudere la finestra del browser web, in quanto non ti servirà più.

Installa il software del sensore e lo script meteo

Dalla riga di comando su Raspberry Pi, clona i pacchetti necessari per leggere le informazioni dai pin di input/output.

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

Installa i pacchetti scaricati

  cd Adafruit_Python_GPIO

  sudo python setup.py install

  cd ..

Clona il codice del progetto che abilita il sensore meteo

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

Copia il driver del sensore nella stessa directory del resto del software scaricato.

  cd iot-data-pipeline/third_party/Adafruit_BME280

  mv Adafruit_BME280.py ../..

  cd ../..

Modifica lo script digitando…

  nano checkWeather.py

Modifica il progetto con il tuo ID progetto e l'argomento con il nome del tuo argomento Pub/Sub (questi sono stati annotati nelle sezioni Configurazione e Crea un argomento Pub/Sub di questo codelab).

Modifica i valori di sensorID, sensorZipCode, sensorLat e sensorLong con i valori che preferisci. I valori di latitudine e longitudine per una posizione o un indirizzo specifici sono disponibili qui.

Una volta apportate le modifiche necessarie, premi Ctrl+X per iniziare a uscire dall'editor nano. Premi Y per confermare.

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

Installare il token di sicurezza

Copia la chiave di sicurezza (dalla sezione "Pubblicazione sicura in un argomento") su Raspberry Pi.

Se hai utilizzato SFTP o SCP per copiare il token di sicurezza dalla macchina locale a Raspberry Pi (nella directory /home/pi), puoi saltare il passaggio successivo e passare all'esportazione del percorso.

Se hai inserito il token di sicurezza in un bucket di archiviazione, dovrai ricordare il nome del bucket di archiviazione e del file. Utilizza il comando gsutil per copiare la chiave di sicurezza. Questo comando può accedere a Google Storage (motivo per cui si chiama gsutil e per cui il percorso del file inizia con gs://). Assicurati di modificare il comando riportato di seguito in modo che contenga il nome del bucket e del file.

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

Dovresti vedere un messaggio che indica che il file è in fase di copia e poi che l'operazione è stata completata.

Dalla riga di comando su Raspberry Pi, esporta un percorso al token di sicurezza (modifica il nome del file in modo che corrisponda a quello che hai)

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

Ora hai un sensore meteo IoT completato e pronto per trasmettere dati a Google Cloud.

7. Avvia la pipeline di dati

Potrebbe essere necessario abilitare l'API Compute

Streaming di dati da un Raspberry Pi

Se hai costruito un sensore meteo IoT Raspberry Pi, avvia lo script che leggerà i dati meteo e li invierà a Google Cloud Pub/Sub. Se non ti trovi nella directory /home/pi/iot-data-pipeline, spostati lì

  cd /home/pi/iot-data-pipeline

Avvia lo script meteo

  python checkWeather.py

Dovresti vedere la finestra del terminale che ripete i risultati dei dati meteo ogni minuto. Con il flusso di dati attivo, puoi passare alla sezione successiva (Verifica che il flusso di dati sia attivo).

Streaming di dati simulato

Se non hai creato il sensore meteo IoT, puoi simulare lo streaming di dati utilizzando un set di dati pubblico archiviato in Google Cloud Storage e inserendolo nell'argomento Pub/Sub esistente. Verranno utilizzati Google Dataflow insieme a un modello fornito da Google per la lettura da Cloud Storage e la pubblicazione su Pub/Sub.

Nell'ambito della procedura, Dataflow avrà bisogno di una posizione di archiviazione temporanea, quindi creiamo un bucket di archiviazione a questo scopo.

Nella console Cloud, seleziona Storage e poi Browser.

c4414fe61be320a9.png

Fai clic sul pulsante Crea bucket.

cde91311b267fc65.png

Scegli un nome per il bucket di archiviazione (ricorda che deve essere un nome univoco a livello globale in tutto Google Cloud) e fai clic sul pulsante Crea. Ricorda il nome di questo bucket di archiviazione, perché ti servirà a breve.

1dad4cfbccfc96b1.png

Nella console Cloud, seleziona Dataflow.

43ec245b47ae2e78.png

Fai clic su Crea job da modello (parte superiore dello schermo).

da55aaf2a1b0a0d0.png

Compila i dettagli del lavoro come mostrato di seguito, prestando attenzione a quanto segue:

  • Inserisci un nome job di dataflow-gcs-to-pubsub
  • La regione dovrebbe essere selezionata automaticamente in base a dove è ospitato il progetto e non dovrebbe essere necessario modificarla.
  • Seleziona un modello Cloud Dataflow di GCS Text to Cloud Pub/Sub
  • Per i file di input di Cloud Storage, inserisci gs://codelab-iot-data-pipeline-sampleweatherdata/*.json (questo è un set di dati pubblico)
  • Per l'argomento Pub/Sub di output, il percorso esatto dipende dal nome del progetto e sarà simile a "projects/yourProjectName/topics/weatherdata"
  • Imposta la posizione temporanea sul nome del bucket Google Cloud Storage che hai appena creato insieme a un prefisso del nome file "tmp". Dovrebbe avere il seguente formato: "gs://myStorageBucketName/tmp".

Una volta compilate tutte le informazioni (vedi sotto), fai clic sul pulsante Esegui job.

5f8ca16672f19d9b.png

L'esecuzione del job Dataflow dovrebbe iniziare.

e020015c369639ad.png

Il completamento del job Dataflow dovrebbe richiedere circa un minuto.

218a3ff7197dcf75.png

8. Controllare che i dati vengano trasferiti

Log di Cloud Functions

Assicurati che la funzione Cloud sia attivata da Pub/Sub

  gcloud beta functions logs read function-weatherPubSubToBQ

I log devono mostrare che la funzione è in esecuzione, che i dati vengono ricevuti e inseriti in BigQuery

d88f7831dabc8b3f.png

Dati BigQuery

Verifica che i dati vengano inseriti nella tabella BigQuery. Dalla console Cloud, vai a BigQuery (bigquery.cloud.google.com).

85627127d58f1d2e.png

Sotto il nome del progetto (sul lato sinistro della finestra), fai clic sul set di dati (weatherData), poi sulla tabella (weatherDataTable) e infine sul pulsante Query Table (Tabella query).

44dc0f765a69580c.png

Aggiungi un asterisco all'istruzione SQL in modo che diventi SELECT * FROM… come mostrato di seguito, quindi fai clic sul pulsante ESEGUI QUERY.

b3a001e11c2902f2.png

Se richiesto, fai clic sul pulsante Esegui query.

2c894d091b789ca3.png

Se vengono visualizzati risultati, significa che i dati vengono trasferiti correttamente.

c8a061cebb7b528a.png

Ora che i dati vengono trasferiti, puoi creare una dashboard di analisi.

9. Creare una dashboard di Data Studio

Google Data Studio trasforma i tuoi dati in dashboard e rapporti ricchi di informazioni, completamente personalizzabili, facili da leggere e semplici da condividere.

Dal browser web, vai alla pagina https://datastudio.google.com

10f8c27060cd7430.png

Nella sezione "Crea un nuovo report", fai clic su Vuoto e poi sul pulsante Inizia.

df1404bc0047595e.png

Fai clic sulla casella di controllo per accettare i termini, fai clic sul pulsante Avanti, seleziona le email che ti interessano e fai clic sul pulsante Fine. Ancora una volta, sotto "Crea un nuovo report", fai clic su Vuoto.

55e91d3dd88b05ca.png

Fai clic sul pulsante Crea nuova origine dati.

a22f3fac05774fc9.png

Fai clic su BigQuery, poi sul pulsante Autorizza e scegli l'account Google che vuoi utilizzare con Data Studio (deve essere lo stesso che hai utilizzato per il codelab).

5ab03f341edc8964.png

Fai clic sul pulsante Consenti.

22bcdbb5f5f1d30c.png

Seleziona il nome del progetto, il set di dati e la tabella. Poi fai clic sul pulsante Connetti.

dc6b6b0ed9ced509.png

Modifica i campi del tipo come mostrato di seguito (tutto deve essere un numero, tranne timecollected e sensorID). Tieni presente che timecollected è impostato su Data ora (e non solo su Data). Modifica i campi Aggregazione come mostrato di seguito (il punto di rugiada, la temperatura, l'umidità e la pressione devono essere medie e tutto il resto deve essere impostato su "Nessuno"). Fai clic sul pulsante Crea report.

c60887e29c3bdf9b.png

Conferma facendo clic sul pulsante Aggiungi al report.

5ec3888dfdd85095.png

Se ti viene chiesto di selezionare il tuo Account Google, fallo e poi fai clic sul pulsante Consenti per consentire a Data Studio di archiviare i report in Google Drive.

7b8006a813b3defa.png

Viene visualizzata una tela vuota su cui creare il dashboard. Nella prima riga di icone, scegli Serie temporale.

c7cd97354e1cde04.png

Disegna un rettangolo nell'angolo in alto a sinistra del foglio vuoto. Deve occupare circa un quarto del foglio bianco totale.

e0e82cb19921f835.png

Sul lato destro della finestra, seleziona la scheda Stile. Modifica Dati mancanti da "Riga a zero" a "Interruzioni di riga". Nella sezione Asse Y sinistro, elimina lo 0 da Minimo asse per impostare il valore su (automatico).

c7620bfe734d546.png

Fai clic sul grafico nel foglio e copialo/incollalo (Ctrl+C/Ctrl+V) tre volte. Allinea i grafici in modo che ognuno occupi un quarto del layout.

9a7d3faa28996219.png

Fai clic su ogni grafico e, nella sezione Proprietà e dati delle serie temporali, fai clic sulla metrica esistente (punto di rugiada), scegli una metrica diversa da visualizzare finché tutte e quattro le letture meteo (punto di rugiada, temperatura, umidità e pressione) non avranno il proprio grafico.

d29b21cac9e1ef5d.png

fda75a2f2a77a323.png

Ora hai una dashboard di base.

8f59e8f4d44b8552.png

10. Complimenti!

Hai creato un'intera pipeline di dati. In questo modo, hai imparato a utilizzare Google Pub/Sub, a eseguire il deployment di una funzione serverless, a sfruttare BigQuery e a creare una dashboard di analisi utilizzando Data Studio. Inoltre, hai visto come utilizzare in modo sicuro Google Cloud SDK per importare i dati in Google Cloud Platform. Infine, hai acquisito esperienza pratica con un importante pattern architetturale in grado di gestire volumi elevati mantenendo la disponibilità.

79cd6c68e83f7fea.png

Eliminazione

Una volta terminato l'esperimento con i dati meteo e la pipeline di analisi, puoi rimuovere le risorse in esecuzione.

Se hai creato il sensore IoT, spegnilo. Premi Ctrl+C nella finestra del terminale per interrompere lo script, quindi digita il seguente comando per spegnere Raspberry Pi

  shutdown -h now

Vai a Cloud Functions, fai clic sulla casella di controllo accanto a function-weatherPubSubToBQ e poi su Elimina.

ae95f4f7178262e0.png

Vai a Pub/Sub, fai clic su Argomento, fai clic sulla casella di controllo accanto all'argomento weatherdata e poi fai clic su Elimina.

6fb0bba3163d9a32.png

Vai a Spazio di archiviazione, fai clic sulle caselle di controllo accanto ai bucket di archiviazione e poi su Elimina.

9067fb2af9f907f4.png

Vai su bigquery.cloud.google.com, fai clic sulla Freccia giù accanto al nome del progetto, fai clic sulla Freccia giù a destra del set di dati weatherData e poi fai clic su Elimina set di dati.

a952dfeec49248c4.png

Quando ti viene chiesto, digita l'ID del set di dati (weatherData) per completare l'eliminazione dei dati.

6310b1cc8da31a77.png