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