Compila una canalización de datos sin servidores: de IoT a Analytics

1. Descripción general/introducción

Si bien las aplicaciones de varios niveles que consisten en la Web, el servidor de aplicaciones y la base de datos son fundamentales para el desarrollo web y son el punto de partida para muchos sitios web, el éxito a menudo conlleva desafíos relacionados con la escalabilidad, la integración y la agilidad. Por ejemplo, ¿cómo se pueden manejar los datos en tiempo real y cómo se pueden distribuir a varios sistemas empresariales clave? Estos problemas, junto con las demandas de las aplicaciones a escala de Internet, impulsaron la necesidad de un sistema de mensajería distribuido y dieron lugar a un patrón arquitectónico de uso de canalizaciones de datos para lograr sistemas resilientes y en tiempo real. Como resultado, comprender cómo publicar datos en tiempo real en un sistema de mensajería distribuido y, luego, crear una canalización de datos son habilidades cruciales tanto para los desarrolladores como para los arquitectos.

Qué compilarás

En este codelab, compilarás una canalización de datos meteorológicos que comienza con un dispositivo de Internet de las cosas (IoT), usa una cola de mensajes para recibir y entregar datos, aprovecha una función sin servidores para mover los datos a un almacén de datos y, luego, crea un panel que muestre la información. Se usará una Raspberry Pi con un sensor meteorológico para el dispositivo de IoT y varios componentes de Google Cloud Platform formarán la canalización de datos. Compilar Raspberry Pi, aunque es beneficioso, es una parte opcional de este codelab, y los datos meteorológicos de transmisión se pueden reemplazar por una secuencia de comandos.

80cd6c68e83f7fea.png

Después de completar los pasos de este codelab, tendrás una canalización de transmisión de datos que alimentará un panel que muestra la temperatura, la humedad, el punto de condensación y la presión del aire.

e28ca9ea4abb1457.png

Qué aprenderás

  • Cómo usar Google Pub/Sub
  • Cómo implementar una Google Cloud Function
  • Cómo aprovechar Google BigQuery
  • Cómo crear un panel con Google Data Studio
  • Además, si compilas el sensor de IoT, también aprenderás a utilizar el SDK de Google Cloud y a proteger las llamadas de acceso remoto a Google Cloud Platform.

Requisitos

  • Una cuenta de Google Cloud Platform Los usuarios nuevos de Google Cloud son aptos para una prueba gratuita de$300.

Si quieres compilar la parte del sensor de IoT de este codelab en lugar de aprovechar los datos de muestra y una secuencia de comandos, también necesitarás lo siguiente ( que se puede pedir como un kit completo o como piezas individuales aquí).

  • Raspberry Pi Zero W con fuente de alimentación, tarjeta de memoria SD y funda
  • Lector de tarjetas USB
  • hub USB (para permitir la conexión de un teclado y un mouse al único puerto USB de la placa Raspberry Pi)
  • Cables de la placa de pruebas hembra a hembra
  • Encabezados de martillo GPIO
  • Sensor BME280
  • Soldador con soldador

Además, se asume que tienes acceso a un monitor de computadora o a una TV con entrada HDMI, cable HDMI, teclado y mouse.

2. Cómo prepararte

Configuración del entorno de autoaprendizaje

Si aún no tienes una Cuenta de Google (Gmail o G Suite), debes crear una. Independientemente de si ya tienes o no una Cuenta de Google, asegúrate de aprovechar la prueba gratuita de USD 300.

Accede a la consola de Google Cloud ( console.cloud.google.com). Puedes usar el proyecto predeterminado (“My First Project”) para este lab o puedes crear un proyecto nuevo. Si quieres crear un proyecto nuevo, puedes usar la página Administrar recursos. El ID del proyecto debe tener un nombre único en todos los proyectos de Google Cloud (el que se muestra a continuación ya está en uso y no funcionará para ti). Toma nota del ID del proyecto (es decir, tu ID del proyecto será _____), ya que lo necesitarás más adelante.

f414a63d955621a7.png

3415e861c09cd06a.png

La ejecución de este codelab no debería costar más que unos pocos dólares, pero podría ser más si decides usar más recursos o si los dejas en ejecución. Asegúrate de revisar la sección Limpieza al final del codelab.

3. Crea una tabla de BigQuery

BigQuery es un almacén de datos empresarial de bajo costo, altamente escalable y sin servidores. Es una opción ideal para almacenar los datos que se transmiten desde dispositivos de IoT y, al mismo tiempo, permite un panel de estadísticas para consultar la información.

Creemos una tabla que contenga todos los datos meteorológicos de IoT. Selecciona BigQuery en la consola de Cloud. Se abrirá BigQuery en una ventana nueva (no cierres la ventana original, ya que deberás acceder a ella nuevamente).

12a838f78a10144a.png

Haz clic en el ícono de flecha hacia abajo junto al nombre de tu proyecto y, luego, selecciona "Crear nuevo conjunto de datos"

27616683b64ce34a.png

Ingresa "weatherData" para el conjunto de datos, selecciona la ubicación donde se almacenará y haz clic en "OK"

62cfcbd1add830ea.png

Haga clic en el símbolo "+" junto a tu conjunto de datos para crear una tabla nueva

3d7bff6f9843fa3c.png

En Datos de origen, selecciona Crear tabla vacía. En Nombre de la tabla de destino, ingresa weatherDataTable. En Esquema, haz clic en el botón Agregar campo hasta que haya un total de 9 campos. Completa los campos como se muestra a continuación y asegúrate de seleccionar también el Tipo adecuado para cada campo. Cuando todo esté completo, haz clic en el botón Crear tabla.

eef352614a5696a7.png

Deberías ver un resultado como este...

7d10e5ab8c6d6a0d.png

Ahora tienes un almacén de datos configurado para recibir tus datos del clima.

4. Crea un tema de Pub/Sub

Cloud Pub/Sub es una base sencilla, confiable y escalable para el análisis de flujos y los sistemas de computación basados en eventos. Por lo tanto, es perfecto para manejar los mensajes de IoT entrantes y permitir que los sistemas downstream los procesen.

Si todavía está en la ventana de BigQuery, regrese a la consola de Cloud. Si cerraste la consola de Cloud, visita https://console.cloud.google.com

En la consola de Cloud, selecciona Pub/Sub y, luego, Temas.

331ad71e8a1ea7b.png

Si ves un mensaje para habilitar la API, haz clic en el botón Habilitar API.

9f6fca9dc8684801.png

Haz clic en el botón Crear un tema.

643670164e9fae12.png

Ingresa "weatherdata". como nombre del tema y haz clic en Crear

d7b049bc66a34db6.png

Deberías ver el tema recién creado.

8c385759f65a1031.png

Ahora tienes un tema de Pub/Sub para publicar mensajes de IoT y permitir que otros procesos accedan a esos mensajes.

Publicación segura en el tema

Si planeas publicar mensajes en el tema de Pub/Sub desde recursos fuera de la consola de Google Cloud (p.ej., un sensor de IoT), será necesario controlar el acceso con mayor precisión mediante una cuenta de servicio y garantizar la seguridad de la conexión creando un certificado de confianza.

En la consola de Cloud, selecciona IAM y Cuentas de administrador y, luego, de servicio

8e2f8a1428d0feca.png

Haz clic en el botón Crear cuenta de servicio.

60892b564e0ac140.png

En el menú desplegable Función, selecciona el rol Publicador de Pub/Sub.

31f8c944af11270e.png

Escribe un nombre de cuenta de servicio (iotWeatherPublisher), marca la casilla de verificación Proporcionar una clave privada nueva, asegúrate de que el tipo de clave esté configurado en JSON y haz clic en "Create".

7e3f9d7e56a44796.png

La llave de seguridad se descargará automáticamente. Solo hay una clave, por lo que es importante no perderla. Haga clic en Cerrar.

60a7da32dd85ba73.png

Deberías ver que se creó una cuenta de servicio y que tiene un ID de clave asociado.

b25f6f5629fe8fd7.png

Para poder acceder fácilmente a la clave más adelante, la almacenaremos en Google Cloud Storage. En la consola de Cloud, selecciona Almacenamiento y, luego, Navegador.

c4414fe61be320a9.png

Haz clic en el botón Crear bucket.

cde91311b267fc65.png

Elige un nombre para el bucket de almacenamiento (debe ser un nombre que sea único a nivel global en todo Google Cloud) y haz clic en el botón Crear

28c10e41b401f479.png

Ubica la llave de seguridad que se descargó automáticamente y arrástrala, suéltala o súbela al bucket de almacenamiento

a0f6d069d42cec4b.png

Una vez que se complete la carga de la clave, debería aparecer en el navegador de Cloud Storage.

55b25c8b9d73ec19.png

Toma nota del nombre del bucket de almacenamiento y del nombre del archivo de la clave de seguridad para usar más adelante.

5. Crea una función de Cloud Functions

La computación en la nube ha posibilitado modelos de computación sin servidores en los que la lógica se puede poner en marcha a pedido en respuesta a eventos que se originan en cualquier lugar. En este lab, se iniciará una Cloud Function cada vez que se publique un mensaje en el tema del clima, se leerá el mensaje y se almacenará en BigQuery.

En la consola de Cloud, selecciona Cloud Functions.

a14ac2e4f03bf831.png

Si ves un mensaje de la API, haz clic en el botón Habilitar API.

40ba0a08430e0e8a.png

Haz clic en el botón Crear función.

5d82d8faeffa55bf.png

En el campo Nombre, escribe function-weatherPubSubToBQ. En Activador, selecciona el tema Cloud Pub/Sub y, en el menú desplegable Tema, selecciona weatherdata. Para el código fuente, selecciona el editor directo. En la pestaña index.js, pega el siguiente código sobre el contenido que viene para comenzar. Asegúrate de cambiar las constantes de projectId, datasetId y tableId para que se ajusten a tu entorno.

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

En la pestaña package.json, pega el siguiente código sobre el código de marcador de posición que se encuentra allí.

{
  "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 función que se ejecutará está configurada en "HelloWorld", cámbiala a "subscribe". Hacer clic en el botón Crear

3266d5268980a4db.png

Tomará alrededor de 2 minutos hasta que la función muestre que se implementó

26f45854948426d0.png

¡Felicitaciones! Acabas de conectar Pub/Sub a BigQuery a través de Functions.

6. Configura el hardware de IoT (opcional)

Arma la placa Raspberry Pi y el sensor

Si hay más de 7 marcadores, corta el encabezado para que tenga solo 7 marcadores. Suelta los pines del encabezado a la placa del sensor.

a162e24426118c97.png

Instala con cuidado los pines del cabezal del martillo en la placa Raspberry Pi.

a3a697907fe3c9a9.png

Formatea la tarjeta SD e instala el instalador NOOBS (nuevo software listo para usar) siguiendo los pasos que se indican aquí. Inserta la tarjeta SD en la placa Raspberry Pi y coloca la Raspberry Pi en la caja.

1e4e2459cd3333ec.png

Usa los cables de la placa de pruebas para conectar el sensor a la placa Raspberry Pi según el siguiente diagrama.

392c2a9c85187094.png

Pin Raspberry Pi

Conexión del sensor

Pin 1 (3.3V)

VIN

Pin 3 (CPIO2)

SDI

Pin 5 (GPIO3)

SCK

Pin 9 (suelo)

GND

44322e38d467d66a.png

Conecta el monitor (con el conector mini-HDMI), el teclado o el mouse (con el hub USB) y, por último, el adaptador de alimentación.

Cómo configurar la placa Raspberry Pi y el sensor

Cuando la Raspberry Pi termine de iniciarse, selecciona Raspbian para el sistema operativo que desees, asegúrate de que el idioma que prefieras y haz clic en Instalar (ícono de disco duro ubicado en la parte superior izquierda de la ventana).

a16f0da19b93126.png

Haz clic en el ícono de Wi-Fi (en la parte superior derecha de la pantalla) y selecciona una red. Si es una red segura, ingresa la contraseña (clave precompartida).

17f380b2d41751a8.png

Haz clic en el ícono de la frambuesa (en la parte superior izquierda de la pantalla), selecciona Preferences y, luego, Raspberry Pi Configuration. En la pestaña Interfaces, habilita I2C. En la pestaña Localización, establece la configuración regional y la zona horaria. Después de configurar la zona horaria, permite que se reinicie la placa Raspberry Pi.

14741a77fccdb7e7.png

Cuando se complete el reinicio, haz clic en el ícono de terminal para abrir una ventana de terminal.

9df6f228f6a31601.png

Escribe el siguiente comando para asegurarte de que el sensor esté conectado correctamente.

  sudo i2cdetect -y 1

El resultado debería verse así: asegúrate de que sea 77.

cd35cd97bee8085a.png

Instala el SDK de Google Cloud

Para aprovechar las herramientas de Google Cloud, el SDK de Google Cloud deberá estar instalado en la placa Raspberry Pi. El SDK incluye las herramientas necesarias para administrar y aprovechar Google Cloud Platform y está disponible para varios lenguajes de programación.

Abre una ventana de terminal en Raspberry Pi, si aún no tiene una abierta, y configura una variable de entorno que haga coincidir la versión del SDK con el sistema operativo de la Raspberry Pi.

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

Ahora, agrega la ubicación donde se almacenan los paquetes del SDK de Google Cloud para que las herramientas de instalación sepan dónde buscar cuando se les solicite instalar el 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

Agrega la clave pública del repositorio de paquetes de Google para que Raspberry Pi verifique la seguridad y confíe en el contenido durante la instalación.

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

Asegúrate de que todo el software de Raspberry Pi esté actualizado y, luego, instala el SDK principal de Google Cloud.

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

Cuando se te pregunte “¿Quieres continuar?”, presiona Intro.

Instala el paquete tendo con el administrador de paquetes de Python. Este paquete se usa para comprobar si una secuencia de comandos se está ejecutando más de una vez y si se está instalando para su aplicación en la secuencia de comandos del clima.

  pip install tendo

Asegúrate de que los paquetes de Google Cloud Pub/Sub y OAuth2 para Python estén instalados y actualizados con el administrador de paquetes de Python

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

Inicializa el SDK de Google Cloud

El SDK permite el acceso remoto y autenticado a Google Cloud. En este codelab, se usará para acceder al bucket de almacenamiento, de modo que la llave de seguridad se pueda descargar fácilmente en Raspberry Pi.

Desde la línea de comandos de Raspberry Pi, ingresa

  gcloud init --console-only

Cuando se te pregunte “¿Quieres acceder (Y/n)?”, presiona Intro.

Cuando veas el mensaje "Ir al siguiente vínculo en tu navegador", haz lo siguiente: seguida de una URL larga que comienza con https://accounts.google.com/o/oauth?... coloca el mouse sobre la URL, haz clic con el botón derecho y selecciona "Copiar URL". A continuación, abre el navegador web (el ícono de globo azul en la esquina superior izquierda de la pantalla), haz clic con el botón derecho sobre la barra de direcciones y haz clic en "Pegar".

Cuando veas la pantalla de acceso, ingresa tu dirección de correo electrónico asociada con tu cuenta de Google Cloud y presiona Intro. Luego, ingresa tu contraseña y haz clic en el botón Siguiente.

Se te pedirá que el SDK de Google Cloud quiera acceder a tu Cuenta de Google. Haz clic en el botón Permitir.

Se te mostrará el código de verificación. Con el mouse, destácalo, luego haz clic con el botón derecho y elige Copiar. Regresa a la ventana de terminal y asegúrate de que el cursor esté a la derecha de “Enter verification code:”, haz clic con el botón derecho del mouse y selecciona Pegar. Presiona el botón Intro.

Si se te solicita "Elegir un proyecto de la nube para usar:", ingresa el número correspondiente al nombre del proyecto que usaste en este codelab y, luego, presiona Intro.

Si se te solicita que habilites la API de Compute, presiona el botón Intro para habilitarla. A continuación, se te pedirá que establezcas la configuración de Google Compute Engine. Presiona Intro. Verás una lista de posibles regiones o zonas. Elige una cercana, ingresa el número correspondiente y presiona Intro.

En unos minutos, verás información adicional. El SDK de Google Cloud ya está configurado. Puedes cerrar la ventana del navegador web, ya que no la necesitarás de ahora en adelante.

Instala el software del sensor y la secuencia de comandos del clima

Desde la línea de comandos en Raspberry Pi, clona los paquetes necesarios para leer información de las clavijas de entrada/salida.

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

Instala los paquetes descargados

  cd Adafruit_Python_GPIO

  sudo python setup.py install

  cd ..

Clona el código del proyecto que habilita el sensor de clima

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

Copia el controlador del sensor en el mismo directorio que el resto del software descargado.

  cd iot-data-pipeline/third_party/Adafruit_BME280

  mv Adafruit_BME280.py ../..

  cd ../..

Escribe... para editar la secuencia de comandos.

  nano checkWeather.py

Cambia el proyecto por el ID de tu proyecto y el tema por el nombre de tu tema de Pub/Sub (se anotaron en las secciones del tema sobre cómo configurar y crear un tema de Pub/Sub de este codelab).

Cambia los valores sensorID, sensorZipCode, sensorLat y sensorLong al valor que desees. Aquí encontrarás los valores de latitud y longitud de una ubicación o dirección específica.

Cuando hayas terminado de realizar los cambios necesarios, presiona Ctrl + X para salir del editor nano. Presiona Y para confirmar.

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

Instala la llave de seguridad

Copia la llave de seguridad (de la sección "Publicación segura en un tema") en la tarjeta Raspberry Pi.

Si usaste SFTP o SCP para copiar la llave de seguridad de tu máquina local a tu Raspberry Pi (en el directorio /home/pi), puedes omitir el siguiente paso y continuar con la exportación de la ruta de acceso.

Si colocaste la llave de seguridad en un bucket de almacenamiento, deberás recordar el nombre del bucket y del archivo. Usa el comando gsutil para copiar la llave de seguridad. Este comando puede acceder a Google Storage (por qué se llama gsutil y por qué la ruta de acceso al archivo comienza con gs://). Asegúrate de cambiar el siguiente comando para que sea el nombre del bucket y del archivo.

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

Deberías ver un mensaje que indica que el archivo se está copiando y que la operación se completó.

Desde la línea de comandos en Raspberry Pi, exporta una ruta de acceso a la llave de seguridad (cambia el nombre del archivo para que coincida con el que tienes).

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

Ahora tienes un sensor meteorológico de IoT completo y listo para transmitir datos a Google Cloud.

7. Inicia la canalización de datos

Es posible que debas habilitar la API de Compute

Transmisión de datos desde una Raspberry Pi

Si construiste un sensor meteorológico de IoT Raspberry Pi, inicia la secuencia de comandos que leerá los datos meteorológicos y lo enviará a Google Cloud Pub/Sub. Si no estás en el directorio /home/pi/iot-data-pipeline, primero desplázate allí

  cd /home/pi/iot-data-pipeline

Inicia la secuencia de comandos del clima

  python checkWeather.py

Deberías ver que la ventana de la terminal reproduce los resultados de los datos meteorológicos cada minuto. Con el flujo de datos, puedes pasar a la siguiente sección (Verifica que los datos fluyan).

Transmisión de datos simulada

Si no creaste el sensor meteorológico de IoT, puedes simular la transmisión de datos. Para ello, usa un conjunto de datos públicos que se haya almacenado en Google Cloud Storage y agrégale al tema de Pub/Sub existente. Se usará Google Dataflow y una plantilla proporcionada por Google para leer desde Cloud Storage y publicar en Pub/Sub.

Como parte del proceso, Dataflow necesitará una ubicación de almacenamiento temporal, así que creemos un bucket de almacenamiento para este propósito.

En la consola de Cloud, selecciona Almacenamiento y, luego, Navegador.

c4414fe61be320a9.png

Haz clic en el botón Crear bucket.

cde91311b267fc65.png

Elige un nombre para el bucket de almacenamiento (recuerda que debe ser un nombre que sea único a nivel global en todo Google Cloud) y haz clic en el botón Crear. Recuerda el nombre de este bucket de almacenamiento, ya que lo necesitarás pronto.

1dad3cfbccfc96b1.png

En la consola de Cloud, selecciona Dataflow.

43ec245b47ae2e78.png

Haz clic en Crear trabajo a partir de una plantilla (en la parte superior de la pantalla).

da55aaf2a1b0a0d0.png

Completa los detalles del trabajo como se muestra a continuación y presta atención a lo siguiente:

  • Ingresa un nombre de trabajo de dataflow-gcs-to-pubsub
  • La región debería seleccionarse automáticamente según el lugar donde se aloja el proyecto, por lo que no es necesario cambiarla.
  • Selecciona una plantilla de Cloud Dataflow de texto de GCS para Cloud Pub/Sub
  • Para los archivos de Cloud Storage de entrada, ingresa gs://codelab-iot-data-pipeline-sampleweatherdata/*.json (este es un conjunto de datos públicos).
  • Para el tema de Pub/Sub de salida, la ruta de acceso exacta dependerá del nombre de tu proyecto y será similar a “projects/yourProjectName/topics/weatherdata”.
  • Establece la ubicación temporal como el nombre del bucket de Google Cloud Storage que acabas de crear, junto con el prefijo del nombre de archivo “tmp”. Debería verse así: “gs://myStorageBucketName/tmp”.

Cuando hayas completado toda la información (ver a continuación), haz clic en el botón Ejecutar trabajo.

5f8ca16672f19d9b.png

El trabajo de Dataflow debería comenzar a ejecutarse.

e020015c369639ad.png

El trabajo de Dataflow debería tardar aproximadamente un minuto en completarse.

218a3ff7197dcf75.png

8. Comprobar que los datos fluyen

Registros de Cloud Function

Asegúrate de que Pub/Sub active la Cloud Function

  gcloud beta functions logs read function-weatherPubSubToBQ

Los registros deben mostrar que la función se está ejecutando, que se reciben los datos y que se están insertando en BigQuery.

d88f7831dabc8b3f.png

Datos de BigQuery

Asegúrate de que los datos estén fluyendo en la tabla de BigQuery. En la consola de Cloud, ve a BigQuery (bigquery.cloud.google.com).

85627127d58f1d2e.png

Debajo del nombre del proyecto (en el lado izquierdo de la ventana), haz clic en el conjunto de datos (weatherData), luego en la tabla (weatherDataTable) y luego en el botón Consultar tabla.

44dc0f765a69580c.png

Agrega un asterisco a la instrucción de SQL para que diga SELECT * FROM... como se muestra a continuación y, luego, haz clic en el botón EJECUTAR CONSULTA

b3a001e11c2902f2.png

Si se te solicita, haz clic en el botón Ejecutar consulta.

8c894d091b789ca3.png

Si ves resultados, entonces los datos fluyen correctamente.

c8a061cebb7b528a.png

Con el flujo de datos, ahora tienes todo listo para crear un panel de análisis.

9. Crea un panel de Data Studio

Google Data Studio transforma tus datos en informes y paneles de control útiles, fáciles de leer y compartir, y completamente personalizables.

En tu navegador web, ve a https://datastudio.google.com

10f8c27060cd7430.png

En "Iniciar un nuevo informe", haz clic en En blanco y, luego, en el botón Comenzar.

df1404bc0047595e.png

Haz clic en la casilla de verificación para aceptar las condiciones, luego en el botón Siguiente, selecciona los correos electrónicos que te interesa recibir y haz clic en el botón Listo. En "Iniciar un nuevo informe", haga clic en En blanco

55e91d3dd88b05ca.png

Haz clic en el botón Crear nueva fuente de datos.

a22f3fac05774fc9.png

Haz clic en BigQuery, luego en el botón Autorizar y elige la Cuenta de Google que quieres usar con Data Studio (debe ser la misma que usaste para el codelab).

5ab03f341edc8964.png

Haz clic en el botón Permitir

22bcdbb5f5f1d30c.png

Selecciona el nombre, el conjunto de datos y la tabla de tu proyecto. Luego, haz clic en el botón Conectar.

dc6b6b0ed9ced509.png

Cambia los campos de tipo como se muestra a continuación (todo debe ser un número, excepto timecollected y sensorID). Ten en cuenta que timecollected está configurado como Fecha, hora (y no solo Fecha). Cambia los campos Agregación como se muestra a continuación (el punto de condensación, la temperatura, la humedad y la presión deben ser promedios, y todo lo demás debe configurarse en "Ninguno"). Haz clic en el botón Crear informe.

c60887e29c3bdf9b.png

Para confirmar, haz clic en el botón Agregar al informe.

5ec3888dfdd85095.png

Si se te solicita que selecciones tu Cuenta de Google, hazlo y, luego, haz clic en el botón Permitir para que Data Studio almacene sus informes en Google Drive.

7b8006a813b3defa.png

Verás un lienzo en blanco para crear tu panel. En la fila superior de íconos, elige Time Series.

c7cd97354e1cde04.png

Dibuja un rectángulo en la esquina superior izquierda de la hoja en blanco. Debería ocupar aproximadamente 1⁄4 del total de la hoja en blanco.

e0e82cb19921f835.png

En el lado derecho de la ventana, selecciona la pestaña Estilo. Cambiar los datos faltantes de "Line to Zero" (Línea a cero) a “Saltos de línea”. En la sección Eje Y izquierdo, borra el 0 de Min del eje para cambiarlo a (Automático).

c7620bfe734d546.png

Haz clic en el gráfico de la hoja y cópialo y pégalo (Ctrl-C/Ctrl-V) 3 veces. Alinea los gráficos de modo que cada uno tenga 1⁄4 del diseño.

9a7d3faa28996219.png

Haz clic en cada gráfico y, en la sección Datos y propiedades de serie temporal, haz clic en la métrica existente (punto de rocío) y elige una métrica diferente para que se muestre hasta que las cuatro lecturas meteorológicas (punto de rocío, temperatura, humedad y presión) tengan su propio gráfico.

d29b21cac9e1ef5d.png

fda75a2f2a77a323.png

Ahora tienes un panel básico.

8f59e8f4d44b8552.png

10. ¡Felicitaciones!

Creaste una canalización de datos completa. De esta forma, aprendiste a usar Google Pub/Sub, a implementar una función sin servidores, a aprovechar BigQuery y a crear un panel de análisis con Data Studio. Además, has visto cómo el SDK de Google Cloud se puede usar de forma segura para transferir datos a Google Cloud Platform. Por último, obtendrás experiencia práctica con un patrón arquitectónico importante que puede manejar volúmenes altos y, al mismo tiempo, mantener la disponibilidad.

80cd6c68e83f7fea.png

Corrección

Una vez que termines de experimentar con los datos meteorológicos y la canalización de estadísticas, puedes quitar los recursos en ejecución.

Si creaste el sensor de IoT, ciérralo. Presiona Ctrl + C en la ventana de terminal para detener la secuencia de comandos y, luego, escribe lo siguiente para apagar la Raspberry Pi.

  shutdown -h now

Ve a Cloud Functions, haz clic en la casilla de verificación junto a function-weatherPubSubToBQ y, luego, en Borrar.

ae95f4f7178262e0.png

Ir a Pub/Sub, hacer clic en Tema, hacer clic en la casilla de verificación junto al tema weatherdata y, luego, en Borrar

6fb0bba3163d9a32.png

Ve a Almacenamiento, haz clic en las casillas de verificación junto a los buckets de almacenamiento y, luego, haz clic en Borrar

9067fb2af9f907f4.png

Ve a bigquery.cloud.google.com, haz clic en la flecha hacia abajo que se encuentra junto al nombre de tu proyecto, a la derecha del conjunto de datos weatherData y, a continuación, haz clic en Borrar conjunto de datos.

a952dfeec49248c4.png

Cuando se te solicite, escribe el ID del conjunto de datos (weatherData) para terminar de borrar los datos.

6310b1cc8da31a77.png