GSP1342

Visão geral
Imagine que você é engenheiro de dados da Cymbal Gaming. Você e a equipe de desenvolvimento estão criando um novo jogo de e-sports, o "Galactic Grand Prix". O jogo produz dados em tempo real com base em partidas entre dois jogadores de equipes diferentes. Por exemplo, dois jogadores competem em um evento. Um vencedor é anunciado e, em seguida, o jogador e a equipe vencedores recebem os pontos. Sua tarefa é criar uma solução para tratar esses dados transmitidos usando o Pub/Sub e armazenar os resultados em tabelas no BigQuery. Com base nas tabelas, você recebeu a tarefa de criar as visualizações do placar no BigQuery, que servem como estrutura de dados de back-end para os painéis.
Você leu que o BigQuery pode se conectar diretamente a uma assinatura do Pub/Sub e pode ser usado para esse tipo de caso de uso. Você também aprendeu que o Gemini ajuda ao longo do caminho. Por exemplo, se tiver dificuldade em escrever uma nova consulta, o Gemini poderá ajudar. Ele também ajuda com sugestões para resolver problemas. Com esses recursos, você será mais independente no trabalho e, talvez, até mais eficiente. No entanto, você não sabe bem como começar.
Quando iniciar o laboratório, o ambiente não terá nenhum recurso pré-criado.

Ao final do laboratório, você terá usado a arquitetura para realizar várias tarefas.

Veja na tabela a seguir uma explicação detalhada de cada tarefa referente à arquitetura do laboratório.
| Número da tarefa |
Detalhes |
| 1. |
Configurar variáveis de ambiente no Cloud Shell. |
| 2. |
Criar os recursos do BigQuery: Você vai usar comandos do Cloud Shell para criar o conjunto de dados e a tabela do BigQuery. |
| 3. |
Criar o tópico e a assinatura do Pub/Sub: você vai usar o console do Pub/Sub para criar o tópico e a assinatura, além de modificar a assinatura para que ela possa gravar no conjunto de dados e na tabela do BigQuery. |
| 4. |
Conceder permissões do IAM do Pub/Sub: Você vai usar o console do IAM para conceder permissões à conta de serviço do Compute. |
| 5. |
Recuperar os arquivos Python do repositório: Você vai recuperar esses arquivos e configurá-los para seu projeto. |
| 6. |
Gerar dados sintéticos: Com o arquivo Python configurado no projeto, você vai executar o arquivo esports-simulation.py, que usa Python para gerar mensagens contínuas do Pub/Sub para eventos de jogos. |
| 7. |
Verifique os resultados no BigQuery: Agora que você enviou os dados para o tópico do Pub/Sub, eles estão sendo capturados e armazenados na tabela do BigQuery. Você vai executar consultas na tabela e usar a visualização para analisar os resultados dos jogos. |
Objetivos
Neste laboratório, você vai aprender a:
- Criar os recursos de nuvem e conceder acesso a eles.
- Recuperar o arquivo Python do repositório e modificá-lo para o projeto.
- Gerar dados sintéticos.
- Verificar os resultados de jogadores e equipes no BigQuery.
Por fim, pense sobre o que você aprendeu neste laboratório e considere como abordar seus próprios casos de uso com dados de streaming. Depois, responda às perguntas do seu Diário do laboratório.
Configuração e requisitos
Antes de clicar no botão Começar o Laboratório
Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é ativado quando você clica em Iniciar laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.
Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, e não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.
Confira os requisitos para concluir o laboratório:
- Acesso a um navegador de Internet padrão (recomendamos o Chrome).
Observação: para executar este laboratório, use o modo de navegação anônima (recomendado) ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e de estudante, o que poderia causar cobranças extras na sua conta pessoal.
- Tempo para concluir o laboratório: não se esqueça que, depois de começar, não será possível pausar o laboratório.
Observação: use apenas a conta de estudante neste laboratório. Se usar outra conta do Google Cloud, você poderá receber cobranças nela.
Como iniciar seu laboratório e fazer login no console do Google Cloud
-
Clique no botão Começar o laboratório. Se for preciso pagar por ele, uma caixa de diálogo vai aparecer para você selecionar a forma de pagamento.
No painel Detalhes do Laboratório, à esquerda, você vai encontrar o seguinte:
- O botão Abrir Console do Google Cloud
- O tempo restante
- As credenciais temporárias que você vai usar neste laboratório
- Outras informações, se forem necessárias
-
Se você estiver usando o navegador Chrome, clique em Abrir console do Google Cloud ou clique com o botão direito do mouse e selecione Abrir link em uma janela anônima.
O laboratório ativa os recursos e depois abre a página Fazer Login em outra guia.
Dica: coloque as guias em janelas separadas lado a lado.
Observação: se aparecer a caixa de diálogo Escolher uma conta, clique em Usar outra conta.
-
Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Fazer login.
{{{user_0.username | "Username"}}}
Você também encontra o nome de usuário no painel Detalhes do Laboratório.
-
Clique em Próxima.
-
Copie a Senha abaixo e cole na caixa de diálogo de Olá.
{{{user_0.password | "Password"}}}
Você também encontra a senha no painel Detalhes do Laboratório.
-
Clique em Próxima.
Importante: você precisa usar as credenciais fornecidas no laboratório, e não as da sua conta do Google Cloud.
Observação: se você usar sua própria conta do Google Cloud neste laboratório, é possível que receba cobranças adicionais.
-
Acesse as próximas páginas:
- Aceite os Termos e Condições.
- Não adicione opções de recuperação nem autenticação de dois fatores (porque essa é uma conta temporária).
- Não se inscreva em testes gratuitos.
Depois de alguns instantes, o console do Google Cloud será aberto nesta guia.
Observação: para acessar os produtos e serviços do Google Cloud, clique no Menu de navegação ou digite o nome do serviço ou produto no campo Pesquisar.
Tarefa 1: configurar variáveis de ambiente no Cloud Shell
Nesta tarefa, você vai configurar variáveis de ambiente no Cloud Shell.
-
Para abri-lo, clique em Ativar Cloud Shell.
-
Como é a primeira vez que o Cloud Shell é usado neste laboratório, você precisa autorizar o uso. Para fazer isso, clique em Continuar e em Autorizar nas janelas pop-up.
-
Execute os seguintes comandos:
export PROJECT_ID="{{{project_0.project_id|set at lab start}}}"
export BUCKET_NAME="{{{project_0.project_id|set at lab start}}}-bucket"
-
Execute os comandos abaixo para confirmar que as variáveis foram armazenadas.
echo ${PROJECT_ID}
echo ${BUCKET_NAME}
Essas variáveis vão ser usadas mais tarde no laboratório.
Tarefa 2: criar os recursos do BigQuery
Nesta tarefa, você vai criar o conjunto de dados e a tabela do BigQuery que vão receber os eventos de streaming brutos do Pub/Sub.
Crie o conjunto de dados do BigQuery
Nesta tarefa, você vai criar o conjunto de dados do BigQuery que vai funcionar como um contêiner para suas tabelas e visualizações.
-
Na parte de cima do console do Google Cloud, use a barra de pesquisa para encontrar e acessar o BigQuery. A janela pop-up "Boas-vindas..." será exibida.
-
Clique em Concluído.
-
No painel "Explorador" à esquerda, encontre e clique no ID do projeto, que é .
-
Clique nos três pontos verticais (⋮) à direita do ID do projeto para abrir o menu de opções e selecione Criar conjunto de dados.
-
No painel "Criar conjunto de dados", ajuste as seguintes configurações:
-
ID do conjunto de dados: esports_analytics
-
Local dos dados: selecione um local no menu suspenso. Para este laboratório, "EUA (várias regiões nos Estados Unidos)" é uma escolha adequada.
-
Deixe as outras configurações nos valores padrão e clique em CRIAR CONJUNTO DE DADOS. O novo conjunto de dados esports_analytics aparece abaixo do ID do projeto no painel "Explorador". Isso confirma que você criou o conjunto de dados.
Criar a tabela do BigQuery
-
No painel "Explorador", expanda o projeto e selecione o conjunto de dados esports_analytics.
-
Clique nos três pontos verticais (⋮) ao lado do nome do conjunto de dados e selecione Criar tabela.
-
Configure a tabela com as seguintes configurações:
-
Nome da tabela:
raw_events
-
Esquema: clique em Editar como texto e forneça a seguinte matriz 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"}
]
-
Clique em Criar tabela.
A tabela raw_events é criada no conjunto de dados esports_analytics.
Clique em Verificar meu progresso para conferir o objetivo.
Criar os recursos do BigQuery.
Tarefa 3: criar o tópico e a assinatura do Pub/Sub
Nesta tarefa, você vai criar o tópico e a assinatura do Pub/Sub para receber os dados de streaming do jogo, adicionar permissões do IAM e modificar a assinatura para permitir que os aplicativos recebam mensagens desse tópico e as direcionem para a tabela raw_events no BigQuery.
Criar o tópico:
- Navegue até o Pub/Sub no console do Google Cloud. Use a barra de pesquisa na parte de cima para encontrá-lo.
- Na parte de cima da página, clique em + CRIAR TÓPICO.
- Em ID do tópico, insira
esports_events_topic.
- Você vai ver a opção
Adicionar uma assinatura padrão, então mantenha isso ativo.
- Mantenha os valores padrão das outras configurações.
- Clique em CRIAR.
O resultado é a criação do tópico e da assinatura.
Editar a configuração da assinatura e definir as permissões do IAM
-
Na lista de assinaturas, clique em esports_events_topic-sub.
-
Clique em EDITAR. As opções aparecem na página "Editar assinatura".
-
Em "Tipo de envio", escolha Gravar no BigQuery. Mais opções vão aparecer.
-
Escolha esports_analytics para a opção de conjunto de dados.
-
Insira raw_events para a tabela. Observe que um erro como o abaixo é exibido:
A conta de serviço service-@gcp-sa-pubsub.iam.gserviceaccount.com não tem as permissões necessárias para gravar na tabela do BigQuery: "bigquery.tables.get" e "bigquery.tables.updateData".
Isso significa que você precisa conceder as permissões adequadas à conta de serviço do Pub/Sub para gravar na tabela de eventos brutos. Vamos fazer isso agora.
Conceder à conta de serviço do Pub/Sub as permissões de tabela do BigQuery
- Copie o endereço de e-mail da conta de serviço da mensagem de erro:
service-@gcp-sa-pubsub.iam.gserviceaccount.com
-
Acesse o BigQuery: abra a página do BigQuery no console em uma nova guia do navegador.
-
Compartilhe o conjunto de dados: no painel Explorador, encontre o conjunto de dados
esports_analytics, clique nos três pontos verticais (⋮) ao lado dele, em Compartilhar e depois em Gerenciar permissões.
-
Adicionar o principal: no painel
Permissões do conjunto de dados, clique em Adicionar principal.
- Cole o e-mail completo da conta de serviço do Pub/Sub (da etapa 1) no campo
Novos principais e use a tecla Tab para concluir.
- Em "Papel", selecione Editor de dados do BigQuery.
- Clique em Salvar.
Sua assinatura do BigQuery agora está autorizada a gravar mensagens recebidas diretamente na tabela raw_events.
Concluir as modificações na assinatura do Pub/Sub
-
Volte para a guia do navegador com o Pub/Sub.
-
Em "Configuração do esquema", escolha Usar esquema de tabela.
-
Mantenha as outras opções com os valores padrão.
-
Clique em ATUALIZAR.
A configuração da assinatura agora está salva e, com a assinatura configurada corretamente, o Pub/Sub vai direcionar todas as mensagens (os dados de e-sports de streaming) para a tabela raw_events no BigQuery.
Clique em Verificar meu progresso para conferir o objetivo.
Criar o tópico e a assinatura do Pub/Sub.
Tarefa 4: conceder permissões IAM do Pub/Sub
Para garantir que sua solução funcione sem problemas, você também precisa conceder permissão à conta de serviço de computação para publicar mensagens no tópico do Pub/Sub.
Isso permite que o script ou aplicativo Python envie mensagens para o tópico do Pub/Sub.
-
No console do Google Cloud, acesse IAM e administrador > IAM. Você verá a lista de principais configurados que têm as permissões no momento.
-
Encontre a entidade com o endereço de e-mail -compute@developer.gserviceaccount.com.
-
Editar os papéis desse principal: clique em Editar principal. O painel "Editar acesso" é aberto para o principal, e o papel de editor está incluído.
-
Clique em + Adicionar outro papel.
-
No campo Selecionar um papel, pesquise e selecione o papel Editor do Pub/Sub.
-
Clique em Salvar.
O papel agora está atribuído ao principal de computação.
Clique em Verificar meu progresso para conferir o objetivo.
Conceder permissões do IAM do Pub/Sub.
Tarefa 5: recuperar e configurar os arquivos Python
Nesta tarefa, você vai usar o wget no Cloud Shell para recuperar o arquivo Python de um bucket público do Cloud Storage. Depois da recuperação, abra os arquivos no editor do Cloud Shell e use o recurso Code Assist do Gemini para explicar como cada arquivo funciona. Por fim, você vai usar o editor do Cloud Shell para configurar o arquivo com detalhes do projeto.
Recuperar os arquivos Python
-
Volte ao Cloud Shell.
-
Execute este comando para retornar ao diretório principal:
cd ~
-
Crie e acesse o diretório esports.
mkdir esports
cd esports
-
Recupere o arquivo Python usando estes comandos wget:
wget https://storage.googleapis.com/spls/gsp1342/esports-simulation.py
No terminal, você recebe a confirmação de que os arquivos foram baixados.
Usar o Code Assist para explicar o que o arquivo Python faz
-
Clique no botão "Abrir editor" no Cloud Shell. O editor do Cloud Shell é aberto. O painel do Gemini Code Assist também aparece.
-
Feche a guia "Tutorial".
-
No painel "Explorador", abra a pasta esports. Você verá os arquivos Python.
-
Abra o arquivo esports-simulation.py.
-
Na parte de baixo do painel do Gemini Code Assist, você pode inserir comandos onde aparece "Peça ao Gemini". Insira o seguinte comando:
Revise o código do arquivo "esports-simulation.py". Quero saber o que esse código faz.
O Code Assist explica com detalhes o que o código faz. Em um nível geral, o código simula uma partida de e-sports com eventos e os publica em um tópico do Google Cloud Pub/Sub.
Você vai notar que o Code Assist fez algumas sugestões de melhoria. Não aceite as sugestões.
Momento de reflexão
- Considerando seus dados e casos de uso, pense em como você usaria o Python para gerar dados sintéticos ou coletar informações dos seus aplicativos e, em seguida, publicar esses dados como mensagens do Pub/Sub em um tópico no seu próprio fluxo de trabalho de desenvolvimento.
Observação: o Gemini foi usado para ajudar o desenvolvedor que criou o arquivo "esports-simulation.py". Peça ajuda ao Gemini para gerar dados de streaming sintéticos com Python para seus projetos. Além disso, use o Code Assist para explicar e resolver problemas no seu código.
- Considerando seus dados e casos de uso, pense em como você usaria o Pub/Sub e como armazenaria e analisaria os dados transmitidos do Pub/Sub no BigQuery.
Configurar o arquivo para seu projeto
-
Por volta da linha 10, defina a variável PROJECT_ID com o ID do projeto. Assim como no outro arquivo, basta substituir a linha por este código:
PROJECT_ID = "{{{project_0.project_id|set at lab start}}}"
Observação: se você não modificar os arquivos do seu projeto, vai encontrar erros no ambiente do Cloud Shell ao executar esses arquivos na próxima tarefa.
-
Salve o arquivo.
Tarefa 6: gerar dados sintéticos
Nesta tarefa, você executa os arquivos Python para gerar os dados sintéticos e executar o pipeline.
Instalar as dependências e executar o simulador
-
Volte ao terminal do Cloud Shell.
-
Confirme se você está no diretório principal:
cd ~
-
Acesse o diretório esports:
cd esports
-
Use o pip para instalar as dependências, mais especificamente a biblioteca Python para Pub/Sub:
pip install google-cloud-pubsub
-
Execute o simulador. Esse script será executado continuamente, enviando eventos para o tópico do Pub/Sub:
python3 esports-simulation.py
Você verá uma saída indicando que os eventos estão sendo publicados no terminal.
Importante: mantenha o terminal aberto e em execução.
Tarefa 7: verificar os resultados no BigQuery
Nesta tarefa, você vai confirmar se a tabela raw_events foi atualizada com novas mensagens da assinatura do Pub/Sub. Primeiro, você consulta a tabela raw_events. Em seguida, você vai criar duas visualizações e consultar essas visualizações para exibir as tabelas de classificação de jogadores e líderes de equipe. Também é preciso pensar sobre como o Looker pode ser usado para melhorar as visualizações desse ranking.
Consultar a tabela raw_events
-
Retorne ao BigQuery.
-
No painel do explorador, encontre e selecione a tabela raw_events.
-
Clique em Consulta. Uma consulta de modelo é fornecida.
-
Modifique esta consulta selecionando todos os registros na tabela raw_events usando a consulta abaixo:
SELECT * FROM `{{{project_0.project_id|set at lab start}}}.esports_analytics.raw_events` LIMIT 1000
-
Execute a consulta. Se os registros forem exibidos, significa que o Pub/Sub está atualizando a tabela com as mensagens mais recentes (dados do jogo de e-sports) da simulação.
Criar as visualizações no BigQuery
-
No "Explorador", abra o projeto e selecione o conjunto de dados esports_analytics.
-
Clique no sinal de mais (+) para criar uma consulta.
-
Na guia da consulta, insira:
-- Consulta 1: criar a visualização da tabela de classificação de jogadores
-- Ela calcula as pontuações dos jogadores com base em eventos brutos e os classifica.
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;
-- Consulta 2: criar a visualização da classificação
-- Ela calcula as vitórias das equipes a partir de eventos brutos e os classifica.
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;
Note: as consultas acima já são modelos no seu projeto. Se estivesse executando isso no seu próprio projeto, precisaria substituir pelo ID do projeto real.
Essa consulta cria duas visualizações: uma para o ranking dos jogadores e outra para o das equipes. Ela encontra as pontuações mais recentes do jogador e do time e os classifica de acordo com isso.
Executar uma consulta para exibir o ranking dos jogadores
-
Clique no sinal de mais (+) para criar uma consulta.
-
Na guia da consulta, insira:
SELECT * FROM `esports_analytics.player_leaderboard_live` ORDER BY rank;
O resultado é que a tabela de classificação dos jogadores é exibida com os jogadores classificados, em ordem do primeiro ao décimo segundo lugar com base no total de vitórias.
Executar uma consulta para exibir a classificação da equipe
-
Clique no sinal de mais (+) para criar uma consulta.
-
Na guia da consulta, insira:
SELECT * FROM `esports_analytics.team_leaderboard_live` ORDER BY rank;
O resultado é que as equipes são classificadas em ordem do primeiro ao quarto lugar com base no total de vitórias.
Momento de reflexão
Considere os resultados encontrados no BigQuery. Este laboratório usou apenas placares baseados em consultas SQL no BigQuery. Pense em como pode criar um painel para esses placares no Looker e responda às seguintes perguntas usando o diário do laboratório:
- Como seria o painel?
- Quais consultas do BigQuery você usaria?
- Quem precisaria ter acesso ao painel?
- Você precisaria modificar as consultas de alguma forma para manter o painel do Looker atualizado?
Clique em Verificar meu progresso para conferir o objetivo.
Verificar os resultados no BigQuery.
Parabéns!
Você usou um script Python para simular dados de jogos. Você também usou o Code Assist para entender melhor o código nesses scripts. Por fim, você gerou recursos do Google Cloud para oferecer suporte aos dados de streaming de e-sports, incluindo um tópico e uma assinatura do Pub/Sub, um conjunto de dados, tabelas e visualizações do BigQuery, para transmitir esses dados e gerar relatórios sobre quais jogadores e equipes estão na liderança. A cada dia, você melhora no Google Cloud e pode usar o Gemini para complementar seu conhecimento e habilidades com fluxos de trabalho de engenharia de dados.
Próximas etapas / Saiba mais
Treinamento e certificação do Google Cloud
Esses treinamentos ajudam você a aproveitar as tecnologias do Google Cloud ao máximo. Nossas aulas incluem habilidades técnicas e práticas recomendadas para ajudar você a alcançar rapidamente o nível esperado e continuar sua jornada de aprendizado. Oferecemos treinamentos que vão do nível básico ao avançado, com opções de aulas virtuais, sob demanda e por meio de transmissões ao vivo para que você possa encaixá-las na correria do seu dia a dia. As certificações validam sua experiência e comprovam suas habilidades com as tecnologias do Google Cloud.
Manual atualizado em 6 de agosto de 2025
Laboratório testado em 6 de agosto de 2025
Copyright 2025 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.