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

1. Panoramica/Introduzione

Sebbene le applicazioni multilivello composte da web, server di applicazioni e database siano fondamentali per lo sviluppo web e siano il punto di partenza di molti siti web, il successo spesso comporta sfide in termini di 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, comprendere come pubblicare i 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 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 sfruttare 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 del sensore IoT di questo codelab anziché utilizzare dati di esempio e uno script, ti serviranno anche i seguenti componenti (che possono essere ordinati come kit completo o come singoli 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 a tuo ritmo

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 per tutti i progetti Google Cloud (quello mostrato di seguito è già stato utilizzato e non funzionerà). 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, altamente scalabile e a basso costo. È un'opzione ideale per archiviare i dati in streaming dai dispositivi IoT e, al contempo, consentire a una dashboard di analisi di eseguire query sulle informazioni.

Creiamo una tabella che contenga tutti i dati meteo 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 località 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

In 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 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 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 alla pagina https://console.cloud.google.com

In Cloud Console, 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 un argomento Pub/Sub in cui pubblicare i messaggi IoT e consentire ad altre procedure di accedervi.

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à.

Nella console Cloud, seleziona IAM e amministrazione 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 Pub/Sub Publisher

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 un ID chiave.

b25f6f5629fe8fd7.png

Per poter accedere facilmente alla chiave in un secondo momento, la memorizzeremo in Google Cloud Storage. In Cloud Console, seleziona Archiviazione 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 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 della chiave, questa dovrebbe essere visualizzata nel browser di Cloud Storage

55b25c8b9d73ec19.png

Prendi nota del nome del bucket di archiviazione e del nome del file della chiave di sicurezza per riferimento futuro.

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. Per il codice sorgente, seleziona l'editor incorporato. Nella scheda index.js, incolla il codice seguente sopra quello esistente 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", impostala su "subscribe". Fai clic sul pulsante Crea

3266d5268980a4db.png

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

26f45854948426d0.png

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

6. (Facoltativo) Configurare 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 cura i pin del connettore a martello su 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 a Raspberry Pi in base allo schema seguente.

392c2a9c85187094.png

Pin Raspberry Pi

Connessione del sensore

Pin 1 (3,3 V)

Numero di telaio

Pin 3 (CPIO2)

SDI

Pin 5 (GPIO3)

SCK

Pin 9 (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 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 dell'unità disco rigido nella parte superiore 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 pre-condivisa).

17f380b2d41751a8.png

Fai clic sull'icona del lampone (in alto a sinistra nella schermata), seleziona Preferenze e poi Configurazione Raspberry Pi. Nella scheda Interfacce, abilita I2C. Nella scheda Localizzazione, imposta le impostazioni Locale e 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 collegato correttamente.

  sudo i2cdetect -y 1

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

cd35cd97bee8085a.png

Installa 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 dei pacchetti di Google in modo che Raspberry Pi verifichi la sicurezza e attenda 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 l'SDK di Google Cloud 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 dei 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à 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 sul Raspberry Pi, inserisci

  gcloud init --console-only

Quando viene visualizzato il messaggio "Vuoi accedere (S/N)?", premi Invio.

Quando visualizzi 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, fai clic con il tasto destro del mouse e seleziona "Copia URL". Apri il browser web (icona a forma di globo blu nell'angolo in alto a sinistra dello schermo), fai clic con il tasto destro del mouse sulla barra degli indirizzi e poi su "Incolla".

Quando viene visualizzata 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 il Google Cloud SDK può accedere al tuo Account Google. Fai clic sul pulsante Consenti.

Ti verrà mostrato il codice di verifica. Utilizzando il mouse, evidenzialo, fai clic con il tasto destro del mouse e scegli Copia. Torna alla finestra del terminale, assicurati che il cursore sia a destra di "Inserisci il codice di verifica:", fai clic con il tasto destro del mouse e scegli Incolla. Premi il tasto Invio.

Se ti viene chiesto di selezionare "Scegli 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 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 perché non ti servirà più.

Installare 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

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 del tuo argomento Pub/Sub (sono stati indicati nelle sezioni Preparativi e Crea 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 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 il token di sicurezza (dalla sezione "Pubblicazione sicura in un argomento") su 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 la chiave 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 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 che l'operazione è stata completata.

Dalla riga di comando su Raspberry Pi, esporta un percorso per il 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 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 costruito un sensore meteorologico 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 prima lì

  cd /home/pi/iot-data-pipeline

Avvia lo script 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 passando).

Streaming di dati simulati

Se non hai creato il sensore meteorologico 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.

In Cloud Console, seleziona Archiviazione 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 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 dello schermo)

da55aaf2a1b0a0d0.png

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

  • Inserisci il nome del job 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 testo GCS in Cloud Pub/Sub
  • Per i file di Cloud Storage di input, inserisci gs://codelab-iot-data-pipeline-sampleweatherdata/*.json (si tratta di 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://nomeBidoneStorage/tmp".

Dopo aver inserito tutte le informazioni (vedi di seguito), 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 venga 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 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 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 alla pagina 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, poi fai clic sul pulsante Avanti, seleziona le email che ti interessa ricevere e fai clic sul pulsante Fine. Ancora una volta, fai clic su Vuoto in "Crea un nuovo report".

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 di tipo come mostrato di seguito (devono essere tutti numeri, ad eccezione di timecollected e sensorID). Tieni presente che timecollected è impostato su Data Hour (e non solo su Date). 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 report su Google Drive.

7b8006a813b3defa.png

Viene visualizzata una tela vuota su cui creare la dashboard. Nella riga superiore di icone, 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. Cambia i dati mancanti da "Linea a zero" a "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 occupi ¼ 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 hanno 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 scoperto 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 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 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 Spazio di archiviazione, fai clic sulle caselle di controllo accanto ai bucket di archiviazione e poi su Elimina.

9067fb2af9f907f4.png

Vai alla pagina 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 su Elimina set di dati.

a952dfeec49248c4.png

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

6310b1cc8da31a77.png