1. Descripción general o 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 controlar 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, generaron 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, cómo compilar una canalización de datos son habilidades fundamentales para desarrolladores y arquitectos por igual.
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 la IoT, y varios componentes de Google Cloud Platform formarán la canalización de datos. Si bien compilar la Raspberry Pi es beneficioso, es una parte opcional de este codelab, y los datos meteorológicos en tiempo real se pueden reemplazar por una secuencia de comandos.
Después de completar los pasos de este codelab, tendrás una canalización de datos de transmisión que alimentará un panel que mostrará la temperatura, la humedad, el punto de rocío y la presión del aire.
Qué aprenderás
- Cómo usar Google Pub/Sub
- Cómo implementar una función de Google Cloud
- 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 Platform son aptos para obtener una prueba gratuita de USD 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 prototipado hembra a hembra
- Encabezados de martillo GPIO
- Sensor BME280
- Soldador con soldadura
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 una Cuenta de Google o no, 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 ("Mi primer proyecto") para este lab o crear uno 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 de tu proyecto (es decir, el ID de tu proyecto será _____), ya que lo necesitarás más adelante.
Ejecutar 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 volver a acceder a ella).
Haz clic en el ícono de flecha hacia abajo junto al nombre de tu proyecto y, luego, selecciona "Crear nuevo conjunto de datos"
Ingresa "weatherData" para el conjunto de datos, selecciona una ubicación en la que se almacenará y haz clic en "Aceptar".
Haz clic en el signo "+" junto a tu conjunto de datos para crear una tabla nueva
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 el Tipo adecuado para cada uno. Cuando todo esté completo, haz clic en el botón Crear tabla.
Deberías ver un resultado como el siguiente:
Ahora tienes un almacén de datos configurado para recibir tus datos meteorológicos.
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.
Si ves un mensaje para habilitar la API, haz clic en el botón Habilita la API.
Haz clic en el botón Crear un tema.
Ingresa "weatherdata" como el nombre del tema y haz clic en Crear.
Deberías ver el tema recién creado
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 de forma más estricta con una cuenta de servicio y garantizar la seguridad de la conexión mediante la creación de un certificado de confianza.
En la consola de Cloud, selecciona IAM y administración y, luego, Cuentas de servicio.
Haz clic en el botón Crear cuenta de servicio.
En el menú desplegable Rol, selecciona el rol de publicador de Pub/Sub.
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".
La llave de seguridad se descargará automáticamente. Solo hay una clave, por lo que es importante no perderla. Haga clic en Cerrar.
Deberías ver que se creó una cuenta de servicio y que tiene un ID de clave asociado.
Para 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.
Haz clic en el botón Crear bucket.
Elige un nombre para el bucket de almacenamiento (debe ser un nombre único a nivel global en Google Cloud) y haz clic en el botón Crear.
Ubica la llave de seguridad que se descargó automáticamente y arrástrala, suéltala o súbela al bucket de almacenamiento
Una vez que se complete la carga de la clave, debería aparecer en el navegador de Cloud Storage.
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 permitió crear modelos de computación sin servidores en los que la lógica se puede iniciar 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, lo leerá y, luego, lo almacenará en BigQuery.
En la consola de Cloud, selecciona Cloud Functions.
Si ves un mensaje de la API, haz clic en el botón Habilitar API.
Haz clic en el botón Crear función.
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 editor intercalado. 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
Tomará alrededor de 2 minutos hasta que la función muestre que se implementó
¡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 pines, recorta el encabezado para que solo tenga 7 pines. Solda los pines del encabezado a la placa del sensor.
Instala con cuidado los pines del cabezal del martillo en la placa Raspberry Pi.
Sigue los pasos que se indican aquí para formatear la tarjeta SD y, luego, instalar el instalador de NOOBS (New Out Of Box Software). Inserta la tarjeta SD en la Raspberry Pi y coloca la Raspberry Pi en su estuche.
Usa los cables de la placa de pruebas para conectar el sensor a la placa Raspberry Pi según el siguiente diagrama.
Pin Raspberry Pi | Conexión del sensor |
Pin 1 (3.3 V) | VIN |
Pin 3 (CPIO2) | SDI |
Pin 5 (GPIO3) | SCK |
Pin 9 (masa) | GND |
Conecta el monitor (con el conector mini-HDMI), el teclado o el mouse (con el concentrador USB) y, por último, el adaptador de alimentación.
Configura la 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).
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).
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.
Cuando se complete el reinicio, haz clic en el ícono de terminal para abrir una ventana de terminal.
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 diga 77.
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 la Raspberry Pi si aún no hay una abierta y establece una variable de entorno que coincida con la versión del SDK en 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 la 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 verificar si una secuencia de comandos se ejecuta más de una vez y se instala para su aplicación a 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.
En la línea de comandos de la 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:" seguido 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". Luego, abre el navegador web (ícono de globo azul en la esquina superior izquierda de la pantalla), haz clic con el botón derecho en la barra de direcciones y, luego, 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 informará que el SDK de Google Cloud quiere 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, selecciónalo, haz clic con el botón derecho y elige Copiar. Regresa a la ventana de la terminal, asegúrate de que el cursor esté a la derecha de "Enter verification code:", haz clic con el botón derecho del mouse y, luego, elige 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. Luego, se te pedirá que configures la configuración de Google Compute Engine. Presiona Intro. Se te mostrará una lista de posibles regiones o zonas. Elige una que esté cerca de ti, ingresa el número correspondiente y presiona Intro.
En un momento, verás que se muestra 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 de la Raspberry Pi, clona los paquetes necesarios para leer información de los pines de entrada y 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 tu ID de proyecto y el tema por el nombre de tu tema de Pub/Sub (se anotaron en las secciones Preparación y Crea 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 realizado los cambios necesarios, presiona Ctrl + X para comenzar a 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"
Cómo instalar 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 clave de seguridad en un bucket de almacenamiento, deberás recordar el nombre del bucket y el del archivo. Usa el comando gsutil para copiar la llave de seguridad. Este comando puede acceder a Google Storage (por eso 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 indique que se está copiando el archivo y, luego, que se completó la operación.
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 que está 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 creaste un sensor meteorológico de IoT para Raspberry Pi, inicia la secuencia de comandos que leerá los datos meteorológicos y los 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. Cuando los datos fluyan, puedes avanzar 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 crearemos un bucket de almacenamiento para este fin.
En la consola de Cloud, selecciona Almacenamiento y, luego, Navegador.
Haz clic en el botón Crear bucket.
Elige un nombre para el bucket de almacenamiento (recuerda que debe ser ú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 en breve.
En la consola de Cloud, selecciona Dataflow.
Haz clic en Crear trabajo a partir de una plantilla (parte superior de la pantalla).
Completa los detalles del trabajo como se muestra a continuación y ten en cuenta 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 tu proyecto y no debería ser 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).
- En el tema de Pub/Sub de salida, la ruta de acceso exacta dependerá del nombre de tu proyecto y se verá algo así como “projects/yourProjectName/topics/weatherdata”.
- Establece la ubicación temporal en el nombre del bucket de Google Cloud Storage que acabas de crear junto con un prefijo de nombre de archivo de "tmp". Debería verse como "gs://miNombreDeBucketDeAlmacenamiento/tmp".
Cuando hayas completado toda la información (consulta a continuación), haz clic en el botón Ejecutar trabajo.
El trabajo de Dataflow debería comenzar a ejecutarse.
El trabajo de Dataflow debería tardar aproximadamente un minuto en completarse.
8. Verifica que los datos fluyan
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.
Datos de BigQuery
Asegúrate de que los datos fluyan a la tabla de BigQuery. En la consola de Cloud, ve a BigQuery (bigquery.cloud.google.com).
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 Query Table.
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
Si se te solicita, haz clic en el botón Ejecutar consulta.
Si ves resultados, significa que los datos fluyen correctamente.
Ahora que los datos fluyen, ya puedes crear un panel de estadísticas.
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
En "Iniciar un nuevo informe", haz clic en En blanco y, luego, en el botón Comenzar.
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. Una vez más, en "Iniciar un nuevo informe", haz clic en En blanco.
Haz clic en el botón Crear nueva fuente de datos.
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).
Haz clic en el botón Permitir.
Selecciona el nombre de tu proyecto, el conjunto de datos y la tabla. Luego, haz clic en el botón Conectar.
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 se establece en Date Hour (y no solo en Date). Cambia los campos de agregación como se muestra a continuación (el punto de rocío, la temperatura, la humedad y la presión deben ser promedios, y todo lo demás debe establecerse en "Ninguno"). Haz clic en el botón Crear informe.
Para confirmar, haz clic en el botón Agregar al informe.
Si se te solicita que selecciones tu Cuenta de Google, hazlo y, luego, haz clic en el botón Permitir para permitir que Data Studio almacene sus informes en Google Drive.
Verás un lienzo en blanco para crear tu panel. En la fila superior de íconos, elige Time Series.
Dibuja un rectángulo en la esquina superior izquierda de la hoja en blanco. Debe ocupar alrededor de ¼ de la hoja en blanco.
En el lado derecho de la ventana, selecciona la pestaña Estilo. Cambia los datos faltantes de "Línea a cero" a "Separación de líneas". En la sección Eje Y izquierdo, borra el 0 de Eje mínimo para cambiarlo a (Automático).
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 para que cada uno tenga ¼ del diseño.
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.
Ahora tienes un panel básico.
10. ¡Felicitaciones!
¡Creaste una canalización de datos completa! Al hacerlo, aprendiste a usar Google Pub/Sub, a implementar una función sin servidor, a aprovechar BigQuery y a crear un panel de estadísticas con Data Studio. Además, viste cómo se puede usar de forma segura el SDK de Google Cloud para transferir datos a Google Cloud Platform. Por último, ahora tienes experiencia práctica con un patrón arquitectónico importante que puede controlar volúmenes altos y, al mismo tiempo, mantener la disponibilidad.
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 compilaste 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.
Ve a Pub/Sub, haz clic en Tema, en la casilla de verificación junto al tema weatherdata y, luego, en Borrar.
Ve a Almacenamiento, haz clic en las casillas de verificación junto a los buckets de almacenamiento y, luego, en Borrar.
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.
Cuando se te solicite, escribe el ID del conjunto de datos (weatherData) para terminar de borrar los datos.