GSP1342
Descripción general
Imagina que eres un ingeniero de datos en Cymbal Gaming. Tú y el equipo de
desarrollo están creando un nuevo juego de deportes electrónicos, "Galactic
Grand Prix". El juego produce datos en tiempo real basados en juegos cara a
cara entre dos jugadores de diferentes equipos. Por ejemplo, dos jugadores
competirán en un evento. Se determina un ganador y, luego, se otorgan puntos
al jugador y al equipo ganadores. Se te asignó la tarea de crear una solución
para manejar estos datos transmitidos con Pub/Sub y, luego, almacenar los
resultados en tablas en BigQuery. A partir de estas tablas, tu tarea es crear
las vistas de la tabla de clasificación en BigQuery, que servirán como
estructura de datos de backend para los paneles.
Leíste que BigQuery puede conectarse directamente a una suscripción de Pub/Sub
y podría usarse para este tipo de caso de uso. Además, te enteraste de que
Gemini puede asistirte en el proceso; por ejemplo, si te bloqueas al escribir
una nueva consulta, puedes usarlo para obtener ayuda. Incluso también podría
ayudarte con sugerencias para resolver problemas. El uso de estas funciones te
permitirá ser más independiente en tu trabajo y, posiblemente, incluso más
eficiente. Sin embargo, no sabes cómo empezar.
Cuando inicies el lab, el entorno no tendrá ningún recurso precompilado para
ti.
Al final del lab, habrás usado la arquitectura para realizar varias tareas.
En la siguiente tabla, se proporciona una explicación detallada de cada tarea
en relación con la arquitectura del lab.
| Tarea numerada |
Detalle |
| 1. |
Configurar variables de entorno en Cloud Shell |
| 2. |
Crear los recursos de BigQuery:
Usarás comandos de Cloud Shell para crear el conjunto de datos y la
tabla de BigQuery.
|
| 3. |
Crear el tema y la suscripción de Pub/Sub:
Usarás la consola de Pub/Sub para crear el tema y la suscripción, y
modificarás la suscripción para que pueda escribir en tu conjunto de
datos y tabla de BigQuery.
|
| 4. |
Otorgar permisos de IAM de Pub/Sub:
Usarás la consola de IAM para otorgar permisos a la cuenta de servicio
de Compute.
|
| 5. |
Recuperar los archivos de Python del repositorio:
En esta tarea, recuperarás el archivo de Python del repositorio y lo
configurarás para tu proyecto.
|
| 6. |
Generar datos sintéticos:
Con el archivo de Python configurado para tu proyecto, ejecutarás el
archivo esports-simulation.py que usa Python para generar mensajes
continuos de Pub/Sub para eventos de juegos.
|
| 7. |
Verificar los resultados en BigQuery:
Ahora que enviaste los datos a tu tema de Pub/Sub, se capturan y
almacenan en tu tabla de BigQuery. Ejecutarás consultas en la tabla y
usarás la vista para analizar los resultados de los juegos.
|
Objetivos
En este lab, aprenderás a realizar las siguientes tareas:
- Crear los recursos en la nube y otorgar sus accesos
-
Recuperar el archivo de Python del repositorio y modificarlo para tu
proyecto
- Generar datos sintéticos
- Verificar los resultados de los jugadores y los equipos en BigQuery
Por último, tendrás tiempo para reflexionar sobre lo que aprendiste en este
lab y analizar cómo podrías abordar tus propios casos de uso con datos de
transmisión respondiendo las preguntas en tu
diario de lab.
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
- Acceso a un navegador de Internet estándar. Se recomienda el navegador Chrome.
Nota: Usa una ventana del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
- Tiempo para completar el lab (recuerda que, una vez que comienzas un lab, no puedes pausarlo).
Nota: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
-
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago.
A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
- El botón para abrir la consola de Google Cloud
- El tiempo restante
- Las credenciales temporales que debes usar para el lab
- Otra información para completar el lab, si es necesaria
-
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
-
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}}
También puedes encontrar el nombre de usuario en el panel Detalles del lab.
-
Haz clic en Siguiente.
-
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}}
También puedes encontrar la contraseña en el panel Detalles del lab.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud.
Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
-
Haz clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Nota: Para acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar.
Tarea 1: Configurar variables de entorno en Cloud Shell
En esta tarea, configurarás variables de entorno en Cloud Shell.
-
Para abrir Cloud Shell, haz clic en Activar Cloud Shell.
-
Debes autorizar el uso, ya que es la primera vez que usas Cloud Shell en
este lab. Para ello, haz clic en Continuar y, luego, en
Autorizar en las ventanas emergentes.
-
Ejecuta los siguientes comandos:
export PROJECT_ID="{{{project_0.project_id|set at lab start}}}"
export BUCKET_NAME="{{{project_0.project_id|set at lab start}}}-bucket"
-
Ejecuta los comandos que se indican a continuación para confirmar que las
variables están almacenadas.
echo ${PROJECT_ID}
echo ${BUCKET_NAME}
Usarás estas variables más adelante en el lab.
Tarea 2: Crear los recursos de BigQuery
En esta tarea, crearás el conjunto de datos y la tabla de BigQuery que
recibirán los eventos de transmisión sin procesar de Pub/Sub.
Crea el conjunto de datos de BigQuery
En esta tarea, crearás el conjunto de datos de BigQuery que actuará como
contenedor de tus tablas y vistas.
-
En la parte superior de la consola de Google Cloud, usa la barra de
búsqueda para encontrar BigQuery y navegar a ella.
Aparecerá la ventana emergente "Te damos la bienvenida…".
-
Haz clic en Listo.
-
En el panel Explorador de la izquierda, busca y haz clic en tu ID del
proyecto, que es
.
-
Haz clic en los tres puntos verticales (⋮) a la derecha del ID de tu
proyecto para abrir el menú de opciones y, luego, selecciona
Crear conjunto de datos.
-
En el panel Crear conjunto de datos, establece la siguiente configuración:
-
ID del conjunto de datos: esports_analytics
-
Ubicación de los datos: Selecciona una ubicación en el menú
desplegable. Para este lab, EE.UU. (varias regiones en Estados Unidos)
es una opción adecuada.
-
Deja el resto de los parámetros de configuración con sus valores
predeterminados y haz clic en CREAR CONJUNTO DE DATOS.
Verás el nuevo conjunto de datos esports_analytics en el ID
de tu proyecto en el panel Explorador. Esto confirma que creaste el
conjunto de datos correctamente.
Crea la tabla de BigQuery
-
En el panel Explorador, expande tu proyecto y selecciona el conjunto de
datos esports_analytics.
-
Haz clic en los tres puntos verticales (⋮) junto al nombre del conjunto de
datos y selecciona Crear tabla.
-
Configura la tabla con los siguientes parámetros:
-
Nombre de la tabla:
raw_events
-
Esquema: Haz clic en
Editar como texto y proporciona el siguiente array
JSON.
[
{"name": "event_id", "type": "STRING", "mode": "NULLABLE"},
{"name": "match_id", "type": "STRING", "mode": "NULLABLE"},
{"name": "game_name", "type": "STRING", "mode": "NULLABLE"},
{"name": "event_type", "type": "STRING", "mode": "NULLABLE"},
{"name": "team_a_id", "type": "STRING", "mode": "NULLABLE"},
{"name": "player_a_id", "type": "STRING", "mode": "NULLABLE"},
{"name": "team_b_id", "type": "STRING", "mode": "NULLABLE"},
{"name": "player_b_id", "type": "STRING", "mode": "NULLABLE"},
{"name": "winner_player_id", "type": "STRING", "mode": "NULLABLE"},
{"name": "winner_team_id", "type": "STRING", "mode": "NULLABLE"},
{"name": "timestamp", "type": "TIMESTAMP", "mode": "NULLABLE"}
]
-
Haz clic en Crear tabla.
El resultado es que se crea la tabla raw_events en tu
conjunto de datos esports_analytics.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crea los recursos de BigQuery.
Tarea 3: Crear el tema y la suscripción de Pub/Sub
En esta tarea, crearás el tema y la suscripción de Pub/Sub para recibir los
datos de transmisión de juegos, agregarás permisos de IAM y modificarás la
suscripción para permitir que las aplicaciones reciban mensajes de ese tema y
los dirijan a la tabla raw_events en BigQuery.
Crea el tema
-
Navega a Pub/Sub en la consola de Google Cloud. Puedes usar
la barra de búsqueda superior para encontrarlo.
-
En la parte superior de la página, haz clic en
+ CREAR UN TEMA.
-
En ID del tema, ingresa
esports_events_topic.
-
Verás la opción
Agregar una suscripción predeterminada.
Mantenla habilitada.
-
Deja todas las otras opciones de configuración en sus valores
predeterminados.
- Haz clic en CREAR.
El resultado es que se crean el tema y la suscripción.
Edita la configuración de la suscripción y establece permisos de IAM
-
En la lista de suscripciones, haz clic en
esports_events_topic-sub.
-
Haz clic en EDITAR. Verás las opciones de suscripción en
la página Editar suscripción.
-
En Tipo de entrega, elige Escribir en BigQuery. Verás que
aparecen más opciones.
-
Elige esports_analytics para la opción de conjunto de
datos.
-
Ingresa raw_events para la tabla. Observa que se muestra un
error como el siguiente:
La cuenta de servicio service-@gcp-sa-pubsub.iam.gserviceaccount.com no tiene los permisos necesarios para escribir en la tabla de BigQuery: bigquery.tables.get, bigquery.tables.updateData.
Esto significa que debes otorgar los permisos adecuados a la cuenta de
servicio de Pub/Sub para escribir en la tabla de eventos sin procesar. Lo
harás ahora.
Otorga los permisos de la tabla de BigQuery a la cuenta de servicio de Pub/Sub
-
Copia la dirección de correo electrónico de la cuenta de servicio del
mensaje de error.
service-@gcp-sa-pubsub.iam.gserviceaccount.com
-
Navega a BigQuery: Abre la página de
BigQuery desde la consola en una nueva pestaña del
navegador.
-
Compartir el conjunto de datos: En el panel
Explorador, busca tu conjunto de datos
esports_analytics, haz clic en los tres puntos verticales (⋮)
junto a él y selecciona Compartir y, luego,
Administrar permisos.
-
Agrega el principal: En el panel
Permisos del conjunto de datos que aparece, haz clic en
Agregar principal.
-
Pega el correo electrónico completo de la cuenta de servicio de Pub/Sub (del
paso 1) en el campo
Principales nuevas y usa la tecla Tab para
completarlo.
- En Rol, selecciona Editor de datos de BigQuery.
- Haz clic en Guardar.
Tu suscripción a BigQuery ahora está autorizada para escribir mensajes
entrantes directamente en la tabla raw_events.
Completa las modificaciones en la suscripción de Pub/Sub
-
Regresa a la pestaña del navegador con Pub/Sub.
-
En Configuración de esquema, elige Usar esquema de tabla.
-
Mantén las opciones restantes con sus valores predeterminados.
-
Haz clic en ACTUALIZAR.
La configuración de la suscripción ahora está guardada y, con la
suscripción configurada correctamente, Pub/Sub dirigirá todos los mensajes
(los datos de deportes electrónicos de transmisión) a tu tabla
raw_events en BigQuery.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crea el tema y la suscripción de Pub/Sub.
Tarea 4: Otorgar permisos de IAM para Pub/Sub
Para garantizar que tu solución se ejecute sin problemas, también debes
otorgar permiso a la cuenta de servicio de Compute para
publicar mensajes en el tema de Pub/Sub.
Esto permite que tu secuencia de comandos o aplicación de Python envíe
mensajes al tema de Pub/Sub.
-
En la consola de Google Cloud, navega a
IAM y administración > IAM. Verás la
lista de principales que actualmente están configurados con permisos.
-
Encuentra la principal con la dirección de correo electrónico
-compute@developer.gserviceaccount.com.
-
Edita los roles de esta principal: Haz clic en
Editar principal. Verás el panel Editar acceso abierto
para la principal y el rol de editor incluido.
-
Haz clic en + Agregar otro rol.
-
En el campo Selecciona un rol, busca y selecciona el rol
Publicador de Pub/Sub.
-
Haz clic en Guardar.
El rol ahora está asignado al principal de Compute.
Haz clic en Revisar mi progreso para verificar el objetivo.
Otorga los permisos de IAM para Pub/Sub.
Tarea 5: Recuperar los archivos de Python y configurarlos.
En esta tarea, usarás wget en Cloud Shell para recuperar el archivo de Python
de un bucket público de Cloud Storage. Una vez recuperado, abrirás el archivo
en el Editor de Cloud Shell y usarás la función de asistencia de código de
Gemini para explicar cómo funciona el archivo. Por último, usarás el editor de
Cloud Shell para configurar el archivo con los detalles de tu proyecto.
Recupera los archivos de Python
-
Vuelve a Cloud Shell.
-
Ejecuta el siguiente comando para volver al directorio principal.
cd ~
-
Crea el directorio esports y navega hasta él.
mkdir esports
cd esports
-
Recupera el archivo de Python con los comandos wget que se indican a
continuación:
wget https://storage.googleapis.com/spls/gsp1342/esports-simulation.py
Verás una confirmación en la terminal de que se descargaron los archivos.
Usa la asistencia de código para explicar qué hace el archivo de Python
-
Haz clic en el botón Abrir editor en Cloud Shell. Verás que se abre el
editor de Cloud Shell. También verás el panel de Gemini Code Assist.
-
Cierra la pestaña de la explicación.
-
En el panel Explorador, expande la carpeta esports. Verás los
archivos de Python.
-
Abre el archivo esports-simulation.py.
-
En el panel de Gemini Code Assist, en la parte inferior, verás un lugar
para ingresar una instrucción, donde dice "Pedirle a Gemini". Escribe la
siguiente instrucción:
Revisa el código en el archivo esports-simulation.py. Explica qué hace este código.
Verás que Code Assist explica lo que hace el código en detalle. En un nivel
alto, el código simulará un partido de deportes electrónicos de eventos y los
publicará en un tema de Google Cloud Pub/Sub.
Es posible que veas que Code Assist hizo algunas sugerencias para mejorar el
código. No aceptes las sugerencias.
Momento de reflexión
-
Teniendo en cuenta tus datos y casos de uso, piensa en cómo usarías Python
para generar datos sintéticos o recopilar datos de tus aplicaciones y,
luego, publicar estos datos como un tema de Pub/Sub en tu propio flujo de
trabajo de desarrollo.
Nota: Se usó Gemini para ayudar al desarrollador que creó el archivo esports-simulation.py. Considera usar Gemini para generar datos de transmisión sintéticos con Python para tus proyectos y ayuda a explicar y solucionar problemas de tu código con Code Assist.
-
Considerando tus datos y casos de uso, piensa cómo usarías Pub/Sub y, luego,
almacena y analiza los datos transmitidos desde Pub/Sub en BigQuery.
Configura el archivo para tu proyecto
-
Alrededor de la línea 10, establece la variable PROJECT_ID en
tu Project_ID. Al igual que con el otro archivo, simplemente reemplaza la
línea con el código que aparece a continuación.
PROJECT_ID = "{{{project_0.project_id|set at lab start}}}"
Nota: Si no modificas los archivos de tu proyecto, encontrarás errores en el tiempo de ejecución en Cloud Shell cuando ejecutes estos archivos en la siguiente tarea.
-
Guarda el archivo.
Tarea 6: Generar datos sintéticos
En esta tarea, ejecutarás los archivos de Python para generar los datos
sintéticos y ejecutar la canalización.
Instala las dependencias y ejecuta el simulador
-
Regresa a la terminal de Cloud Shell.
-
Confirma que estás en el directorio principal.
cd ~
-
Navega al directorio esports.
cd esports
-
Usa pip para instalar las dependencias, específicamente la biblioteca de
Python para Pub/Sub.
pip install google-cloud-pubsub
-
Ejecuta el simulador. Esta secuencia de comandos se ejecutará de forma
continua y enviará eventos a tu tema de Pub/Sub.
python3 esports-simulation.py
Verás un resultado que indica que los eventos se publican en la terminal.
Importante: Mantén esta terminal abierta y en ejecución.
Tarea 7: Verificar los resultados en BigQuery
En esta tarea, confirmarás que la tabla raw_events se actualiza con mensajes
nuevos de la suscripción a Pub/Sub. Primero, consultarás la tabla raw_events.
Luego, crearás dos vistas y, después, las consultarás para mostrar las tablas
de clasificación de jugadores y equipos. También te tomarás un tiempo para
reflexionar sobre cómo se podría usar Looker para mejorar las visualizaciones
de la tabla de clasificación.
Consulta la tabla raw_events
-
Vuelve a BigQuery.
-
En el panel del explorador, busca y selecciona la tabla
raw_events.
-
Haz clic en Consulta. Se te proporcionará una consulta de
plantilla.
-
Modifica esta consulta seleccionando todos los registros de la tabla
raw_events con la siguiente consulta:
SELECT * FROM `{{{project_0.project_id|set at lab start}}}.esports_analytics.raw_events` LIMIT 1000
-
Ejecuta la consulta. Si ves registros, significa que Pub/Sub está
actualizando la tabla con los mensajes más recientes (datos del juego de
deportes electrónicos) de la simulación.
Crea las vistas en BigQuery
-
En el explorador, expande tu proyecto y selecciona el conjunto de datos
esports_analytics.
-
Haz clic en + para crear una consulta nueva.
-
En la pestaña Consulta, ingresa la siguiente consulta:
-- Query 1: Create the Player Leaderboard View
-- This view calculates player scores from raw events and ranks them.
CREATE OR REPLACE VIEW `esports_analytics.player_leaderboard_live` AS
SELECT
RANK() OVER (ORDER BY SUM(CASE WHEN event_type = 'match_end' THEN 5 ELSE 1 END) DESC) as rank,
winner_player_id AS player_id,
SUM(CASE WHEN event_type = 'match_end' THEN 5 ELSE 1 END) AS total_score,
MAX(timestamp) AS last_updated
FROM
`{{{project_0.project_id|set at lab start}}}.esports_analytics.raw_events`
WHERE
winner_player_id IS NOT NULL
AND (event_type = 'player_elimination' OR event_type = 'match_end')
GROUP BY
winner_player_id;
-- Query 2: Create the Team Leaderboard View
-- This view calculates team wins from raw events and ranks them.
CREATE OR REPLACE VIEW `esports_analytics.team_leaderboard_live` AS
SELECT
RANK() OVER (ORDER BY COUNT(*) DESC) as rank,
winner_team_id AS team_id,
COUNT(*) AS total_wins,
MAX(timestamp) AS last_updated
FROM
`{{{project_0.project_id|set at lab start}}}.esports_analytics.raw_events`
WHERE
winner_team_id IS NOT NULL
AND event_type = 'match_end'
GROUP BY
winner_team_id;
Nota: Las consultas anteriores ya están basadas en plantillas para tu proyecto. Si ejecutaras esto en tu propio proyecto, deberías reemplazar por tu ID del proyecto real.
Esta consulta crea dos vistas, una para la tabla de clasificación de
jugadores y otra para la tabla de clasificación de equipos. Encontrará las
puntuaciones más recientes del jugador y del equipo y las clasificará en
consecuencia.
Ejecuta una consulta para mostrar la tabla de clasificación de los jugadores
-
Haz clic en + para crear una consulta nueva.
-
En la pestaña Consulta, ingresa la siguiente consulta:
SELECT * FROM `esports_analytics.player_leaderboard_live` ORDER BY rank;
El resultado es que se muestra la tabla de clasificación de los jugadores,
en orden del primero al duodécimo lugar, según el total de victorias.
Ejecuta una consulta para mostrar la tabla de clasificación del equipo
-
Haz clic en + para crear una consulta nueva.
-
En la pestaña Consulta, ingresa la siguiente consulta:
SELECT * FROM `esports_analytics.team_leaderboard_live` ORDER BY rank;
El resultado es que los equipos se clasifican en orden del primero al
cuarto lugar en función de las victorias totales.
Momento de reflexión
Considera los resultados que encontraste en BigQuery. En este lab, solo se
usaron tablas de clasificación basadas en consultas en SQL en BigQuery. Piensa
en cómo podrías crear un panel para estas tablas de clasificación en Looker y
responde las siguientes preguntas en tu diario de lab:
- ¿Cómo se vería el panel?
- ¿Qué consultas de BigQuery existentes aprovecharías?
- ¿Quién necesitaría acceder al panel?
-
¿Necesitas modificar las consultas de alguna manera para mantener el panel
de Looker actualizado?
Haz clic en Revisar mi progreso para verificar el objetivo.
Verificar los resultados en BigQuery
¡Felicitaciones!
Usaste una secuencia de comandos de Python para simular datos de juegos.
También usaste Cloud Assist para que te explicara el código en estas
secuencias de comandos. Por último, generaste recursos de Google Cloud para
respaldar tus datos de transmisión de deportes electrónicos, incluidos un tema
y una suscripción de Pub/Sub, un conjunto de datos de BigQuery, tablas y
vistas, para transmitir estos datos y generar informes sobre qué jugadores y
equipos están a la cabeza. Cada día estás adquiriendo más confianza con Google
Cloud y puedes usar Gemini para complementar tu conocimiento y tus habilidades
con flujos de trabajo de ingeniería de datos.
Próximos pasos/Más información
Capacitación y certificación de Google Cloud
Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.
Última actualización del manual: 6 de agosto de 2025
Prueba más reciente del lab: 6 de agosto de 2025
Copyright 2026 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.