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

1. Panoramica/Introduzione

Sebbene le applicazioni multi-livello costituite da web, server di applicazioni e database siano fondamentali per lo sviluppo web e siano il punto di partenza per molti siti web, il successo porta spesso sfide relative a scalabilità, integrazione e agilità. Ad esempio, come si possono gestire i dati in tempo reale e come possono essere distribuiti a più sistemi aziendali chiave? Questi problemi, insieme alle esigenze delle applicazioni su scala internet, hanno portato alla necessità di un sistema di messaggistica distribuito e hanno dato vita a un modello architetturale di utilizzo di pipeline di dati per ottenere sistemi resilienti in tempo reale. Di conseguenza, capire come pubblicare dati in tempo reale su un sistema di messaggistica distribuito e quindi come creare una pipeline di dati sono competenze cruciali per sviluppatori e architetti.

Cosa creerai

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

79cd6c68e83f7fea.png

Dopo aver completato i passaggi di questo codelab, avrai una pipeline di dati in modalità flusso che alimenta una dashboard che mostra temperatura, umidità, punto di rugiada e pressione dell'aria.

e28ca9ea4abb1457.png

Cosa imparerai a fare

  • Come utilizzare Google Pub/Sub
  • Come eseguire il deployment di una funzione Google Cloud Functions
  • Come utilizzare Google BigQuery
  • Come creare una dashboard con Google Data Studio
  • Inoltre, se crei il sensore IoT, imparerai anche come utilizzare Google Cloud SDK e come proteggere le chiamate di accesso remoto alla piattaforma Google Cloud

Che cosa ti serve

Se vuoi creare la parte relativa ai sensori IoT di questo codelab invece di sfruttare dati di esempio e uno script, avrai bisogno anche di quanto segue ( che può essere ordinato come kit completo o come parte in componenti qui)...

  • Raspberry Pi Zero W con alimentatore, scheda di memoria SD e custodia
  • Lettore di schede USB
  • Hub USB (per consentire il collegamento di tastiera e mouse all'unica porta USB sul Raspberry Pi)
  • Cavi da femmina a femmina per tagliere
  • Intestazioni martello GPIO
  • Sensore BME280
  • Saldatore con saldatore

Inoltre, è previsto l'accesso a un monitor di computer o a una TV con ingresso HDMI, un cavo HDMI, una tastiera e un mouse.

2. Preparazione

Configurazione dell'ambiente autogestito

Se non hai ancora un Account Google (Gmail o G Suite), devi crearne uno. Che tu disponga o meno di un Account Google, assicurati di usufruire della prova senza costi di 300$.

Accedi alla console della piattaforma Google Cloud ( console.cloud.google.com). Per questo lab puoi utilizzare il progetto predefinito ("Il mio primo progetto") oppure creare un nuovo progetto. Se vuoi creare un nuovo progetto, puoi utilizzare la pagina Gestisci risorse. L'ID progetto deve essere un nome univoco in tutti i progetti Google Cloud (quello mostrato di seguito è già in uso e non funzionerà per te). Prendi nota dell'ID progetto (ad esempio, l'ID progetto sarà _____) perché sarà necessario in seguito.

f414a63d955621a7.png

3415e861c09cd06a.png

L'esecuzione di questo codelab non dovrebbe costare più di pochi dollari, ma potrebbe costare di più se decidi di utilizzare più risorse o se le lasci in esecuzione. Assicurati di seguire la sezione Pulizia alla fine del codelab.

3. Crea una tabella BigQuery

BigQuery è un data warehouse aziendale serverless, a scalabilità elevata e a basso costo, che rappresenta l'opzione ideale per archiviare i flussi di dati trasmessi da dispositivi IoT e, allo stesso tempo, consentire a una dashboard di analisi di eseguire query sulle informazioni.

Creiamo una tabella che conterrà tutti i dati meteorologici dell'IoT. Seleziona BigQuery dalla console Cloud. BigQuery si aprirà 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 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 tuo set di dati per creare una nuova tabella

3d7bff6f9843fa3c.png

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

eef352614a5696a7.png

Dovresti vedere un risultato come questo...

7d10e5ab8c6d6a0d.png

Ora hai una configurazione del 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 arrivo e quindi per consentire ai sistemi downstream di elaborarli.

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

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

331ad71e8a1ea7b.png

Se viene visualizzato il messaggio 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 vedere l'argomento appena creato

7c385759f65a1031.png

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

Pubblicazione sicura sull'argomento

Se prevedi di pubblicare messaggi nell'argomento Pub/Sub da risorse esterne alla console Google Cloud (ad es. un sensore IoT), sarà necessario controllare in modo più rigoroso l'accesso utilizzando un account di servizio e garantire la sicurezza della connessione creando un certificato di attendibilità.

Dalla console Cloud, seleziona IAM e Amministratore e poi Account di servizio

8e2f8a1428d0feca.png

Fai clic sul pulsante Crea account di servizio

60892b564e0ac140.png

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

31f8c944af11270e.png

Digita il nome di un account di servizio (iotWeatherPublisher), seleziona la casella di controllo Fornisci una nuova chiave privata, assicurati che il tipo di chiave sia impostato su JSON e fai clic su "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 account di servizio e che è associato a un ID chiave.

b25f6f5629fe8fd7.png

Per poter accedere facilmente alla chiave in un secondo momento, la archivieremo in Google Cloud Storage. Dalla 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 globalmente univoco in tutto Google Cloud) e fai clic sul pulsante Crea

28c10e41b401f479.png

Individua il token di sicurezza che è stato scaricato automaticamente e trascinalo o caricalo nel bucket di archiviazione.

a0f6d069d42cec4b.png

Al termine del caricamento, la chiave dovrebbe essere visualizzata nel browser di Cloud Storage

55b25c8b9d73ec19.png

Prendi nota del nome del bucket di archiviazione e del file del token di sicurezza per un secondo momento.

5. Crea una funzione Cloud

Il cloud computing ha reso possibili modelli di computing completamente serverless in cui la logica può essere attivata 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, lo leggerà e lo archivierà in BigQuery.

Dalla console Cloud, seleziona Cloud Functions

a14ac2e4f03bf831.png

Se viene visualizzato un messaggio relativo all'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 l'argomento Cloud Pub/Sub e nel menu a discesa Argomento seleziona i dati meteorologici. Seleziona l'editor in linea per il codice sorgente. Nella scheda index.js, incolla il seguente codice su ciò che contiene per iniziare. Assicurati di modificare le costanti per projectId, datasetId e tableId in modo che si adattino 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 sul 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

Saranno necessari circa 2 minuti prima che la funzione mostri che è stato eseguito il deployment

26f45854948426d0.png

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

6. (Facoltativo) Configura l'hardware IoT

Assembla il Raspberry Pi e il sensore

Se sono presenti più di 7 pin, taglia l'intestazione verso il basso in modo che contenga solo 7 pin. Salda i piedini di intestazione alla scheda dei sensori.

a162e24426118c97.png

Installa con attenzione i connettori del martello nel Raspberry Pi.

a3a697907fe3c9a9.png

Formatta la scheda SD e installa il programma di installazione di NOOBS (New Out Of Box Software) seguendo la procedura riportata qui. Inserisci la scheda SD nel Raspberry Pi e inserisci il Raspberry Pi nella custodia.

1e4e2459cd3333ec.png

Utilizza i cavi della breadboard per collegare il sensore al Raspberry Pi in base allo schema qui sotto.

392c2a9c85187094.png

Spinto Raspberry Pi

Connessione del sensore

Pin 1 (3,3 V)

Numero di telaio

Pin 3 (CPIO2)

SDI

Pin 5 (GPIO3)

CG

Pin 9 (su terra)

GND

44322e38d467d66a.png

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

Configura il Raspberry Pi e il sensore

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

a16f0da19b93126.png

Fai clic sull'icona 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 a forma di lampone (in alto a sinistra dello schermo), seleziona Preferenze e poi Configurazione Raspberry Pi. Nella scheda Interfacce, attiva I2C. Dalla scheda Localizzazione, imposta le impostazioni internazionali 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 Terminale per aprire una finestra del terminale.

9df6f228f6a31601.png

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

  sudo i2cdetect -y 1

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

cd35cd97bee8085a.png

Installare Google Cloud SDK

Per poter sfruttare gli strumenti della piattaforma Google Cloud, sarà necessario installare Google Cloud SDK sul Raspberry Pi. L'SDK include gli strumenti necessari per gestire e sfruttare la piattaforma Google Cloud ed è disponibile per diversi linguaggi di programmazione.

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

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

Ora aggiungi il percorso di archiviazione dei pacchetti di 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 sul Raspberry Pi sia aggiornato e installa il Google Cloud SDK principale

  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 è in esecuzione più di una volta e se è installato per la relativa applicazione allo script meteo.

  pip install tendo

Assicurati che i pacchetti Google Cloud PubSub e OAuth2 per Python siano installati e aggiornati utilizzando il gestore di 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à usato per accedere al bucket di archiviazione in modo che il token di sicurezza possa essere scaricato facilmente su Raspberry Pi.

Dalla riga di comando sul Raspberry Pi, inserisci

  gcloud init --console-only

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

Quando viene visualizzato il messaggio "Vai al seguente link nel tuo browser": seguito da un URL lungo che inizia con https://accounts.google.com/o/oauth?..., passa il mouse sopra l'URL con il tasto del mouse, fai clic con il tasto destro del mouse e seleziona "Copia URL". Apri il browser web (l'icona a forma di globo blu nell'angolo superiore sinistro dello schermo), fai clic con il pulsante destro del mouse sulla barra degli indirizzi e fai clic su "Incolla".

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

Ti verrà richiesto che Google Cloud SDK voglia accedere al tuo Account Google. Fai clic sul pulsante Consenti.

Verrà visualizzato il codice di verifica. Utilizzando il mouse, evidenzialo, fai clic con il tasto destro del mouse e scegli Copia. Torna alla finestra del terminale e assicurati che il cursore si trovi a destra di "Inserisci codice di verifica:", fai clic con il tasto destro del mouse e scegli Incolla. Premi il pulsante Invio.

Se ti viene chiesto di selezionare il progetto Cloud da utilizzare, inserisci il numero corrispondente al nome del progetto che hai utilizzato per questo codelab, quindi premi Invio.

Se ti viene richiesto di abilitare l'API Compute, premi il pulsante Invio per abilitarla. A questo punto, ti verrà chiesto di configurare le impostazioni di Google Compute Engine. Premi Invio. Viene visualizzato un elenco di potenziali regioni/zone: scegline una nelle vicinanze, inserisci il numero corrispondente e premi Invio.

Dopo qualche istante verranno visualizzate alcune informazioni aggiuntive. Google Cloud SDK è ora configurato. Puoi chiudere la finestra del browser web perché non ti servirà più in futuro.

Installare il software del sensore e lo script del meteo

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

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

Installare 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 in cui si trova il 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 dell'argomento Pub/Sub (come indicato nelle sezioni Come configurare e creare un argomento Pub/Sub di questo codelab).

Modifica i valori sensorID, sensorZipCode, sensorLat e sensorLong impostando il valore desiderato. I valori di latitudine e longitudine per una località o un indirizzo specifici sono disponibili qui.

Una volta apportate le modifiche necessarie, premi Ctrl+X per 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 il token di sicurezza (dalla sezione "Pubblicazione sicura in un argomento") sul Raspberry Pi.

Se hai utilizzato SFTP o SCP per copiare il token di sicurezza dal computer locale al 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 il nome del file. Utilizza il comando gsutil per copiare il token di sicurezza. Questo comando può accedere a Google Storage (perché è denominato gsutil e perché il percorso del file inizia con gs://). Assicurati di modificare il comando seguente in modo che abbia il nome del tuo bucket e del tuo file.

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

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

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

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

Ora hai un sensore meteorologico IoT completo, pronto a trasmettere i dati a Google Cloud.

7. avvia la pipeline di dati

Potrebbe essere necessario abilitare l'API Compute

Stream di dati da un Raspberry Pi

Se hai creato un sensore meteorologico IoT di Raspberry Pi, avvia lo script che leggerà i dati meteorologici e ne eseguirà il push a Google Cloud Pub/Sub. Se non ti trovi nella directory /home/pi/iot-data-pipeline, spostati prima lì

  cd /home/pi/iot-data-pipeline

Avvia lo script del meteo

  python checkWeather.py

Nella finestra del terminale dovresti visualizzare l'eco dei risultati dei dati meteo ogni minuto. Con il flusso di dati, puoi passare alla sezione successiva (Verifica che i dati stiano fluendo).

Flusso di dati simulato

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

Come parte del processo, Dataflow avrà bisogno di una posizione di archiviazione temporanea, quindi creiamo un bucket di archiviazione per questo scopo.

Dalla 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 globalmente univoco in tutto Google Cloud) e fai clic sul pulsante Crea. Ricorda il nome di questo bucket di archiviazione perché sarà necessario a breve.

1dad4cfbccfc96b1.png

Dalla console Cloud, seleziona Dataflow.

43ec245b47ae2e78.png

Fai clic su Crea job da modello (parte superiore della schermata).

da55aaf2a1b0a0d0.png

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

  • Inserisci il nome di un job di Dataflow-gcs-to-pubsub
  • La regione deve essere selezionata automaticamente in base a dove è ospitato il progetto e non deve essere modificata.
  • Seleziona un modello Cloud Dataflow di testo GCS in Cloud Pub/Sub
  • Per i file Cloud Storage di input, 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 al prefisso del nome file "tmp". Dovrebbe avere il seguente formato: "gs://myStorageBucketName/tmp".

Dopo aver inserito tutte le informazioni (vedi sotto), fai clic sul pulsante Esegui job

5f8ca16672f19d9b.png

Dovrebbe iniziare l'esecuzione del job Dataflow.

e020015c369639ad.png

Il completamento del job Dataflow dovrebbe richiedere circa un minuto.

218a3ff7197dcf75.png

8. Verificare il flusso di dati

Log della funzione Cloud Functions

Assicurati che la funzione Cloud Functions sia attivata da Pub/Sub

  gcloud beta functions logs read function-weatherPubSubToBQ

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

d88f7831dabc8b3f.png

Dati BigQuery

Verifica che i dati stiano confluendo nella tabella BigQuery. Nella console Cloud, vai a BigQuery (bigquery.cloud.google.com).

85627127d58f1d2e.png

Sotto il nome del progetto (sul lato sinistro della finestra), fai clic su Dataset (weatherData), quindi sulla tabella (weatherDataTable), quindi fai clic sul pulsante Query Table (Tabella di query).

44dc0f765a69580c.png

Aggiungi un asterisco all'istruzione SQL in modo che restituisca 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 visualizzi dei risultati, significa che i dati scorrono correttamente.

c8a061cebb7b528a.png

Con il flusso di dati, ora sei pronto per creare una dashboard di analisi.

9. Crea 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 all'indirizzo https://datastudio.google.com.

10f8c27060cd7430.png

In "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 interessa ricevere e fai clic sul pulsante Fine. Ancora una volta, nella sezione "Crea un nuovo report", fai clic su Vuoto

55e91d3dd88b05ca.png

Fai clic sul pulsante Crea nuova origine dati

a22f3fac05774fc9.png

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

5ab03f341edc8964.png

Fai clic sul pulsante Consenti

22bcdbb5f5f1d30c.png

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

dc6b6b0ed9ced509.png

Modifica i campi del tipo come mostrato di seguito (tutto deve essere un numero tranne l'ora raccolta e il sensorID). Tieni presente che l'ora raccolta è impostata su Data Ora (e non solo su Data). Modifica i campi di aggregazione come mostrato di seguito (punto di rugiada, temperatura, umidità e pressione devono essere medi 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, fai clic sul pulsante Consenti per consentire a Data Studio di archiviare i propri report su Google Drive.

7b8006a813b3defa.png

Viene visualizzata una tela vuota su cui creare la dashboard. Nella fila di icone superiore, scegli Serie temporali.

c7cd97354e1cde04.png

Disegna un rettangolo nell'angolo in alto a sinistra di un foglio vuoto. Dovrebbe occupare circa 1⁄4 del foglio vuoto totale.

e0e82cb19921f835.png

Sul lato destro della finestra, seleziona la scheda Stile. Modifica dati mancanti da "Linea a zero" in "Interruzioni di riga". Nella sezione Asse Y sinistro, elimina lo 0 da Min asse per modificarlo in (Automatico).

c7620bfe734d546.png

Fai clic sul grafico nel foglio e copialo e incollalo (Ctrl-C/Ctrl-V) per tre volte. Allinea i grafici in modo che ciascuno abbia 1⁄4 del layout.

9a7d3faa28996219.png

Fai clic su ciascun grafico e nella sezione Proprietà serie temporali e dati fai clic sulla metrica esistente (punto di rugiada), scegli una metrica diversa da visualizzare fino a quando tutte e quattro le letture meteorologiche (punto di rugiada, temperatura, umidità e pressione) non avranno un 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 con Data Studio. Inoltre, hai appreso in che modo Google Cloud SDK può essere utilizzato in modo sicuro per importare dati nella piattaforma Google Cloud. Infine, ora avrai un po' di esperienza pratica con un importante pattern architetturale in grado di gestire volumi elevati mantenendo la disponibilità.

79cd6c68e83f7fea.png

Eliminazione

Una volta terminata la sperimentazione dei dati meteorologici e della pipeline di analisi, puoi rimuovere le risorse in esecuzione.

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

  shutdown -h now

Vai a Cloud Functions, fai clic sulla casella di controllo accanto a function-weatherPubSubToBQ e quindi su Delete

ae95f4f7178262e0.png

Vai a Pub/Sub, fai clic su Argomento, seleziona la casella di controllo accanto all'argomento meteodata, quindi fai clic su Elimina

6fb0bba3163d9a32.png

Vai a Archiviazione, fai clic sulle caselle di controllo accanto ai bucket di archiviazione, quindi fai clic su Elimina

9067fb2af9f907f4.png

Vai a 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 meteoData e infine su Elimina set di dati.

a952dfeec49248c4.png

Quando richiesto, digita l'ID del set di dati (weatherData) per terminare l'eliminazione dei dati.

6310b1cc8da31a77.png