Como criar um pipeline de dados sem servidor: IoT para análise

1. Visão geral/Introdução

Embora os aplicativos de várias camadas, que consistem em Web, servidor de aplicativos e banco de dados, sejam fundamentais para o desenvolvimento da Web e o ponto de partida de muitos sites, o sucesso geralmente traz desafios relacionados a escalonabilidade, integração e agilidade. Por exemplo, como os dados podem ser processados em tempo real e distribuídos para vários sistemas comerciais importantes? Esses problemas, juntamente com as demandas de aplicativos de grande escala na Internet, impulsionaram a necessidade de um sistema de mensagens distribuído e deram origem a um padrão arquitetônico de uso de pipelines de dados para alcançar sistemas resilientes em tempo real. Por isso, entender como publicar dados em tempo real em um sistema de mensagens distribuído e como criar um pipeline de dados são habilidades cruciais para desenvolvedores e arquitetos.

O que você criará

Neste codelab, você vai criar um pipeline de dados meteorológicos que começa com um dispositivo da Internet das Coisas (IoT), usa uma fila de mensagens para receber e entregar dados, aproveita uma função sem servidor para mover os dados para um data warehouse e cria um painel que mostra as informações. Um Raspberry Pi com um sensor meteorológico será usado como dispositivo IoT, e vários componentes do Google Cloud Platform vão formar o pipeline de dados. A criação do Raspberry Pi, embora seja benéfica, é uma parte opcional deste codelab, e os dados de clima de streaming podem ser substituídos por um script.

79cd6c68e83f7fea.png

Depois de concluir as etapas deste codelab, você terá um pipeline de dados de streaming alimentando um painel que mostra temperatura, umidade, ponto de orvalho e pressão atmosférica.

e28ca9ea4abb1457.png

O que você vai aprender

  • Como usar o Google Pub/Sub
  • Como implantar uma função do Cloud do Google Cloud
  • Como aproveitar o Google BigQuery
  • Como criar um painel usando o Google Data Studio
  • Além disso, se você criar o sensor de IoT, também vai aprender a usar o SDK Google Cloud e proteger chamadas de acesso remoto ao Google Cloud Platform.

O que é necessário

Se você quiser criar a parte do sensor de IoT deste codelab em vez de usar dados de amostra e um script, também vai precisar do seguinte ( que pode ser comprado como um kit completo ou como peças individuais aqui):

  • Raspberry Pi Zero W com fonte de alimentação, cartão de memória SD e caixa
  • Leitor de cartão USB
  • Hub USB (para conectar um teclado e um mouse à única porta USB do Raspberry Pi)
  • Fios de protoboard fêmea-fêmea
  • Cabeçalhos de martelo GPIO
  • Sensor BME280
  • Ferro de solda com solda

Além disso, é necessário ter acesso a um monitor de computador ou TV com entrada HDMI, cabo HDMI, teclado e mouse.

2. Etapas da configuração

Configuração de ambiente personalizada

Se você ainda não tem uma Conta do Google (Gmail ou G Suite), crie uma. Não importa se você já tem uma Conta do Google ou não, aproveite o teste sem custo financeiro de US$300.

Faça login no console do Google Cloud Platform ( console.cloud.google.com). Você pode usar o projeto padrão ("Meu primeiro projeto") para este laboratório ou criar um novo. Se quiser criar um projeto, use a página "Gerenciar recursos". O ID do projeto precisa ser um nome exclusivo em todos os projetos do Google Cloud. O ID mostrado abaixo já foi usado e não vai funcionar para você. Anote o ID do projeto (por exemplo, "O ID do seu projeto será _____"), porque ele será necessário mais tarde.

f414a63d955621a7.png

3415e861c09cd06a.png

A execução deste codelab não deve custar mais do que alguns dólares, mas pode ser mais se você decidir usar mais recursos ou deixá-los em execução. Não se esqueça de ler a seção "Limpeza" no final do codelab.

3. Criar uma tabela do BigQuery

O BigQuery é um data warehouse empresarial sem servidor, altamente escalonável e de baixo custo. Ele é uma opção ideal para armazenar dados transmitidos de dispositivos IoT e permite que um painel de análise consulte as informações.

Vamos criar uma tabela que vai armazenar todos os dados meteorológicos de IoT. Selecione "BigQuery" no console do Cloud. Isso vai abrir o BigQuery em uma nova janela. Não feche a janela original, porque você vai precisar acessar ela de novo.

12a838f78a10144a.png

Clique no ícone de seta para baixo ao lado do nome do projeto e selecione "Criar novo conjunto de dados".

27616683b64ce34a.png

Insira "weatherData" no conjunto de dados, selecione um local para armazená-lo e clique em "OK".

62cfcbd1add830ea.png

Clique no sinal de "+" ao lado do conjunto de dados para criar uma tabela.

3d7bff6f9843fa3c.png

Em Dados de origem, selecione Criar tabela vazia. Em "Nome da tabela de destino", insira "weatherDataTable". Em Esquema, clique no botão Adicionar campo até ter um total de nove campos. Preencha os campos conforme mostrado abaixo e selecione o Tipo adequado para cada campo. Quando tudo estiver concluído, clique no botão Criar tabela.

eef352614a5696a7.png

Você vai ver um resultado como este:

7d10e5ab8c6d6a0d.png

Agora você tem um data warehouse configurado para receber seus dados meteorológicos.

4. Criar um tópico do Pub/Sub

O Cloud Pub/Sub é uma base simples, confiável e escalonável para a análise de streams e sistemas de computação voltados a eventos. Por isso, ele é perfeito para processar mensagens de IoT recebidas e permitir que sistemas downstream as processem.

Se você ainda estiver na janela do BigQuery, volte ao console do Cloud. Se você fechou o console do Cloud, acesse https://console.cloud.google.com

No console do Cloud, selecione Pub/Sub e, em seguida, Tópicos.

331ad71e8a1ea7b.png

Se aparecer uma solicitação para ativar a API, clique no botão "Ativar API".

9f6fca9dc8684801.png

Clique no botão "Criar um tópico".

643670164e9fae12.png

Insira "weatherdata" como o nome do tópico e clique em "Criar".

d7b049bc66a34db6.png

O tópico recém-criado vai aparecer.

7c385759f65a1031.png

Agora você tem um tópico do Pub/Sub para publicar mensagens de IoT e permitir que outros processos acessem essas mensagens.

Publicação segura no tópico

Se você planeja publicar mensagens no tópico do Pub/Sub de recursos fora do console do Google Cloud (por exemplo, um sensor de IoT), será necessário controlar melhor o acesso usando uma conta de serviço e garantir a segurança da conexão criando um certificado de confiança.

No console do Cloud, selecione "IAM e administrador" e "Contas de serviço".

8e2f8a1428d0feca.png

Clique no botão "Criar conta de serviço".

60892b564e0ac140.png

No menu suspenso "Papel", selecione a função "Publicador do Pub/Sub".

31f8c944af11270e.png

Digite um nome de conta de serviço (iotWeatherPublisher), marque a caixa de seleção "Fornecer uma nova chave privada", verifique se o tipo de chave está definido como JSON e clique em "Criar".

7e3f9d7e56a44796.png

O download da chave de segurança vai começar automaticamente. Como há apenas uma chave, é importante não perdê-la. Clique em "Fechar".

60a7da32dd85ba73.png

Uma conta de serviço será criada, e um ID de chave será associado a ela.

b25f6f5629fe8fd7.png

Para facilitar o acesso à chave mais tarde, vamos armazená-la no Google Cloud Storage. No console do Cloud, selecione "Storage" e "Navegador".

c4414fe61be320a9.png

Clique no botão "Criar bucket".

cde91311b267fc65.png

Escolha um nome para o bucket de armazenamento (ele precisa ser globalmente exclusivo em todo o Google Cloud) e clique no botão "Criar".

28c10e41b401f479.png

Localize a chave de segurança que foi baixada automaticamente e arraste e solte ou faça upload dela no bucket de armazenamento.

a0f6d069d42cec4b.png

Depois que o upload da chave for concluído, ela vai aparecer no navegador do Cloud Storage.

55b25c8b9d73ec19.png

Anote o nome do bucket de armazenamento e o nome do arquivo da chave de segurança para uso posterior.

5. Criar um Cloud Function

A computação em nuvem possibilitou modelos de computação totalmente sem servidor em que a lógica pode ser ativada sob demanda em resposta a eventos originados de qualquer lugar. Neste laboratório, uma função do Cloud será iniciada sempre que uma mensagem for publicada no tópico de clima. Ela vai ler a mensagem e armazená-la no BigQuery.

No Console do Cloud, selecione Cloud Functions.

a14ac2e4f03bf831.png

Se uma mensagem da API aparecer, clique no botão "Ativar API".

40ba0a08430e0e8a.png

Clique no botão "Criar função".

5d82d8faeffa55bf.png

No campo "Nome", digite function-weatherPubSubToBQ. Em "Gatilho", selecione "Tópico do Cloud Pub/Sub" e, no menu suspenso "Tópico", selecione "weatherdata". Para código-fonte, selecione o editor in-line. Na guia index.js, cole o código a seguir sobre o que está lá para começar. Mude as constantes para projectId, datasetId e tableId de acordo com seu ambiente.

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

Na guia "package.json", cole o código a seguir sobre o código do marcador de posição

{
  "name": "function-weatherPubSubToBQ",
  "version": "0.0.1",
  "private": true,
  "license": "Apache-2.0",
  "author": "Google Inc.",
  "dependencies": {
    "@google-cloud/bigquery": "^0.9.6"
  }
}

Se a função a ser executada estiver definida como "HelloWorld", mude para "subscribe". Clique no botão "Criar"

3266d5268980a4db.png

Levará cerca de dois minutos até que a função mostre que foi implantada.

26f45854948426d0.png

Parabéns! Você acabou de conectar o Pub/Sub ao BigQuery usando o Functions.

6. Configurar o hardware de IoT (opcional)

Montar o Raspberry Pi e o sensor

Se houver mais de sete fixações, reduza o cabeçalho para apenas sete. Solde os pinos do conector de cabeçalho à placa do sensor.

a162e24426118c97.png

Instale com cuidado os pinos do cabeçalho do martelo no Raspberry Pi.

a3a697907fe3c9a9.png

Formate o cartão SD e instale o NOOBS (New Out Of Box Software) seguindo as etapas aqui. Insira o cartão SD no Raspberry Pi e coloque o Raspberry Pi na caixa.

1e4e2459cd3333ec.png

Use os fios da placa de ensaio para conectar o sensor ao Raspberry Pi de acordo com o diagrama abaixo.

392c2a9c85187094.png

Pino do Raspberry Pi

Conexão do sensor

Pino 1 (3,3 V)

NIV

Pino 3 (CPIO2)

SDI

Pino 5 (GPIO3)

SCK

Pino 9 (terra)

GND

44322e38d467d66a.png

Conecte o monitor (usando o conector mini-HDMI), o teclado/mouse (com o hub USB) e, por fim, o adaptador de energia.

Configurar o Raspberry Pi e o sensor

Depois que o Raspberry Pi terminar de inicializar, selecione o Raspbian como o sistema operacional desejado, verifique se o idioma está correto e clique em "Instalar" (ícone de disco rígido na parte superior esquerda da janela).

a16f0da19b93126.png

Clique no ícone do Wi-Fi (canto superior direito da tela) e selecione uma rede. Se for uma rede segura, insira a senha (chave pré-compartilhada).

17f380b2d41751a8.png

Clique no ícone de framboesa (canto superior esquerdo da tela), selecione "Preferências" e depois "Configuração do Raspberry Pi". Na guia "Interfaces", ative o I2C. Na guia "Localização", defina a localidade e o fuso horário. Depois de definir o fuso horário, permita que o Raspberry Pi seja reiniciado.

14741a77fccdb7e7.png

Depois que a reinicialização for concluída, clique no ícone "Terminal" para abrir uma janela do terminal.

9df6f228f6a31601.png

Digite o seguinte comando para garantir que o sensor esteja conectado corretamente.

  sudo i2cdetect -y 1

O resultado será assim. Verifique se ele mostra 77.

cd35cd97bee8085a.png

Instale o SDK Google Cloud.

Para aproveitar as ferramentas da plataforma Google Cloud, o SDK Google Cloud precisa ser instalado no Raspberry Pi. O SDK inclui as ferramentas necessárias para gerenciar e aproveitar o Google Cloud Platform e está disponível para várias linguagens de programação.

Abra uma janela de terminal no Raspberry Pi, se ainda não tiver uma aberta, e defina uma variável de ambiente que corresponda à versão do SDK ao sistema operacional no Raspberry Pi.

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

Agora adicione o local em que os pacotes do SDK do Google Cloud estão armazenados para que as ferramentas de instalação saibam onde procurar quando for solicitado instalar o 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

Adicione a chave pública do repositório de pacotes do Google para que o Raspberry Pi verifique a segurança e confie no conteúdo durante a instalação.

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

Verifique se todo o software no Raspberry Pi está atualizado e instale o SDK Google Cloud principal.

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

Quando a mensagem "Quer continuar?" aparecer, pressione Enter.

Instale o pacote tendo usando o gerenciador de pacotes do Python. Esse pacote é usado para verificar se um script está sendo executado mais de uma vez e se está sendo instalado para o aplicativo no script de clima.

  pip install tendo

Verifique se os pacotes do Google Cloud Pub/Sub e do OAuth2 para Python estão instalados e atualizados usando o gerenciador de pacotes do Python.

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

Inicialize o SDK Google Cloud.

O SDK permite acesso remoto e autenticado ao Google Cloud. Neste codelab, ele será usado para acessar o bucket de armazenamento para que a chave de segurança possa ser baixada facilmente no Raspberry Pi.

Na linha de comando do Raspberry Pi, insira

  gcloud init --console-only

Quando a mensagem "Quer fazer login (S/N)?" aparecer, pressione Enter.

Quando você vir "Acesse o seguinte link no seu navegador", seguido de um URL longo que começa com https://accounts.google.com/o/oauth?..., passe o cursor sobre o URL com o mouse, clique com o botão direito do mouse e selecione "Copiar URL". Em seguida, abra o navegador da Web (ícone de globo azul no canto superior esquerdo da tela), clique com o botão direito do mouse na barra de endereço e clique em "Colar".

Quando a tela de login aparecer, digite o endereço de e-mail associado à sua conta do Google Cloud e pressione "Enter". Em seguida, digite sua senha e clique no botão "Próxima".

Você vai receber uma solicitação informando que o SDK Google Cloud quer acessar sua Conta do Google. Clique no botão "Permitir".

O código de verificação vai aparecer. Com o mouse, destaque o texto, clique com o botão direito do mouse e escolha "Copiar". Volte à janela do terminal, confira se o cursor está à direita de "Enter verification code:", clique com o botão direito do mouse e escolha "Colar". Pressione o botão "Enter".

Se for solicitado que você "Escolha o projeto na nuvem a ser usado", insira o número correspondente ao nome do projeto que você está usando neste codelab e pressione "Enter".

Se você receber uma solicitação para ativar a API Compute, pressione o botão "Enter" para fazer isso. Em seguida, você vai precisar configurar as definições do Google Compute Engine. Pressione "Enter". Uma lista de regiões/zonas em potencial vai aparecer. Escolha uma perto de você, insira o número correspondente e pressione "Enter".

Em instantes, mais informações vão aparecer. O SDK Google Cloud está configurado. Você pode fechar a janela do navegador da Web, porque não vai precisar dela.

Instalar o software do sensor e o script de clima

Na linha de comando do Raspberry Pi, clone os pacotes necessários para ler informações dos pinos de entrada/saída.

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

Instalar os pacotes baixados

  cd Adafruit_Python_GPIO

  sudo python setup.py install

  cd ..

Clone o código do projeto que ativa o sensor de clima.

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

Copie o driver do sensor para o mesmo diretório do restante do software baixado.

  cd iot-data-pipeline/third_party/Adafruit_BME280

  mv Adafruit_BME280.py ../..

  cd ../..

Edite o script digitando...

  nano checkWeather.py

Mude o projeto para seu ID do projeto e o tópico para o nome do tópico do Pub/Sub (esses dados foram anotados nas seções "Como configurar" e "Criar um tópico do Pub/Sub" deste codelab).

Mude os valores de sensorID, sensorZipCode, sensorLat e sensorLong para o que você quiser. Os valores de latitude e longitude de um local ou endereço específico podem ser encontrados aqui.

Quando terminar de fazer as mudanças necessárias, pressione Ctrl-X para sair do editor nano. Pressione 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"

Instalar a chave de segurança

Copie a chave de segurança (na seção "Publicação segura em um tópico") para o Raspberry Pi.

Se você usou SFTP ou SCP para copiar a chave de segurança da máquina local para o Raspberry Pi (no diretório /home/pi), pule a próxima etapa e vá para a exportação do caminho.

Se você colocou a chave de segurança em um bucket de armazenamento, lembre-se do nome dele e do nome do arquivo. Use o comando gsutil para copiar a chave de segurança. Esse comando pode acessar o Google Storage (por isso, ele é chamado de gsutil e o caminho para o arquivo começa com gs://). Mude o comando abaixo para incluir o nome do bucket e do arquivo.

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

Uma mensagem vai indicar que o arquivo está sendo copiado e que a operação foi concluída.

Na linha de comando do Raspberry Pi, exporte um caminho para a chave de segurança (mude o nome do arquivo para corresponder ao que você tem).

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

Agora você tem um sensor meteorológico de IoT concluído e pronto para transmitir dados ao Google Cloud.

7. Iniciar o pipeline de dados

Talvez seja necessário ativar a API Compute

Streaming de dados de um Raspberry Pi

Se você construiu um sensor meteorológico de IoT Raspberry Pi, inicie o script que vai ler os dados meteorológicos e enviá-los para o Google Cloud Pub/Sub. Se você não estiver no diretório /home/pi/iot-data-pipeline, vá até ele primeiro.

  cd /home/pi/iot-data-pipeline

Iniciar o script de clima

  python checkWeather.py

A janela do terminal vai mostrar os resultados dos dados meteorológicos a cada minuto. Com o fluxo de dados, você pode pular para a próxima seção (Verificar se os dados estão fluindo).

Streaming de dados simulados

Se você não criou o sensor climático de IoT, pode simular o streaming de dados usando um conjunto de dados públicos armazenado no Google Cloud Storage e inserindo-o no tópico do Pub/Sub. O Google Dataflow será usado com um modelo fornecido pelo Google para leitura do Cloud Storage e publicação no Pub/Sub.

Como parte do processo, o Dataflow vai precisar de um local de armazenamento temporário. Por isso, vamos criar um bucket de armazenamento para essa finalidade.

No console do Cloud, selecione "Storage" e "Navegador".

c4414fe61be320a9.png

Clique no botão "Criar bucket".

cde91311b267fc65.png

Escolha um nome para o bucket de armazenamento (lembre-se de que ele precisa ser globalmente exclusivo em todo o Google Cloud) e clique no botão "Criar". Lembre-se do nome desse bucket de armazenamento, porque ele será necessário em breve.

1dad4cfbccfc96b1.png

No console do Cloud, selecione Dataflow.

43ec245b47ae2e78.png

Clique em "Criar job usando um modelo" (parte superior da tela).

da55aaf2a1b0a0d0.png

Preencha os detalhes do job conforme mostrado abaixo, prestando atenção ao seguinte:

  • Insira o nome do job dataflow-gcs-to-pubsub.
  • Sua região será selecionada automaticamente de acordo com o local de hospedagem do projeto e não precisará ser alterada.
  • Selecione um modelo do Cloud Dataflow de texto do GCS para o Cloud Pub/Sub.
  • Em "Arquivos de entrada do Cloud Storage", insira gs://codelab-iot-data-pipeline-sampleweatherdata/*.json. Esse é um conjunto de dados público.
  • Para o tópico de saída do Pub/Sub, o caminho exato vai depender do nome do projeto e será algo como "projects/yourProjectName/topics/weatherdata".
  • Defina o local temporário como o nome do bucket do Cloud Storage que você acabou de criar junto com um prefixo de nome de arquivo "tmp". Ele terá esta aparência: "gs://myStorageBucketName/tmp".

Quando todas as informações estiverem preenchidas (veja abaixo), clique no botão "Executar job".

5f8ca16672f19d9b.png

O job do Dataflow vai começar a ser executado.

e020015c369639ad.png

O job do Dataflow leva aproximadamente um minuto para ser concluído.

218a3ff7197dcf75.png

8. Verificar se os dados estão fluindo

Registros de funções do Cloud

Verificar se a função do Cloud está sendo acionada pelo Pub/Sub

  gcloud beta functions logs read function-weatherPubSubToBQ

Os registros precisam mostrar que a função está sendo executada, que os dados estão sendo recebidos e que estão sendo inseridos no BigQuery.

d88f7831dabc8b3f.png

Dados do BigQuery

Verifique se os dados estão sendo transferidos para a tabela do BigQuery. No console do Cloud, acesse o BigQuery (bigquery.cloud.google.com).

85627127d58f1d2e.png

Abaixo do nome do projeto (no lado esquerdo da janela), clique no conjunto de dados (weatherData), na tabela (weatherDataTable) e no botão "Consultar tabela".

44dc0f765a69580c.png

Adicione um asterisco à instrução SQL para que ela seja SELECT * FROM... conforme mostrado abaixo e clique no botão EXECUTAR CONSULTA.

b3a001e11c2902f2.png

Se for solicitado, clique no botão "Executar consulta".

2c894d091b789ca3.png

Se você vir resultados, os dados estão fluindo corretamente.

c8a061cebb7b528a.png

Com o fluxo de dados, agora você pode criar um painel de análise.

9. Criar um painel do Data Studio

O Google Data Studio transforma os dados em relatórios e painéis informativos, fáceis de ler e de compartilhar e totalmente personalizáveis.

No navegador da Web, acesse https://datastudio.google.com

10f8c27060cd7430.png

Em "Iniciar um novo relatório", clique em "Em branco" e depois no botão "Começar".

df1404bc0047595e.png

Marque a caixa de seleção para aceitar os termos, clique no botão "Próxima", selecione os e-mails que você quer receber e clique no botão "Concluído". Mais uma vez, em "Iniciar um novo relatório", clique em "Em branco".

55e91d3dd88b05ca.png

Clique no botão "Criar nova fonte de dados".

a22f3fac05774fc9.png

Clique em "BigQuery", depois no botão "Autorizar" e escolha a Conta do Google que você quer usar com o Data Studio. Ela precisa ser a mesma que você usou no codelab.

5ab03f341edc8964.png

Clique no botão "Permitir".

22bcdbb5f5f1d30c.png

Selecione o nome do projeto, o conjunto de dados e a tabela. Em seguida, clique no botão "Conectar".

dc6b6b0ed9ced509.png

Mude os campos de tipo conforme mostrado abaixo. Tudo deve ser um número, exceto "timecollected" e "sensorID". O timecollected está definido como "Data e hora", e não apenas "Data". Mude os campos de agregação conforme mostrado abaixo. O ponto de orvalho, a temperatura, a umidade e a pressão precisam ser médias, e todo o resto precisa ser definido como "Nenhum". Clique no botão "Criar relatório".

c60887e29c3bdf9b.png

Confirme clicando no botão "Adicionar ao relatório".

5ec3888dfdd85095.png

Se for solicitado, selecione sua Conta do Google e clique no botão "Permitir" para que o Data Studio armazene os relatórios no Google Drive.

7b8006a813b3defa.png

Uma tela em branco é apresentada para você criar seu painel. Na linha superior de ícones, escolha "Série temporal".

c7cd97354e1cde04.png

Desenhe um retângulo no canto superior esquerdo da folha em branco. Ela deve ocupar cerca de ¼ da página em branco total.

e0e82cb19921f835.png

No lado direito da janela, selecione a guia "Estilo". Mude "Dados ausentes" de "Linha até zero" para "Quebras de linha". Na seção "Eixo Y à esquerda", exclua o 0 de "Valor mínimo do eixo" para mudar para "(Automático)".

c7620bfe734d546.png

Clique no gráfico na planilha e copie/cole (Ctrl-C/Ctrl-V) três vezes. Alinhe os gráficos para que cada um ocupe ¼ do layout.

9a7d3faa28996219.png

Clique em cada gráfico e, na seção "Propriedades e dados da série temporal", clique na métrica atual (ponto de orvalho) e escolha outra para ser exibida até que todas as quatro leituras de clima (ponto de orvalho, temperatura, umidade e pressão) tenham um gráfico próprio.

d29b21cac9e1ef5d.png

fda75a2f2a77a323.png

Agora você tem um painel básico.

8f59e8f4d44b8552.png

10. Parabéns!

Você criou um pipeline de dados completo. Assim, você aprendeu a usar o Google Pub/Sub, implantar uma função sem servidor, aproveitar o BigQuery e criar um painel de análise usando o Data Studio. Além disso, você aprendeu a usar o SDK Google Cloud com segurança para trazer dados para o Google Cloud Platform. Por fim, você agora tem experiência prática com um padrão arquitetônico importante que pode lidar com grandes volumes e manter a disponibilidade.

79cd6c68e83f7fea.png

Limpeza

Depois de terminar de testar os dados meteorológicos e o pipeline de análise, remova os recursos em execução.

Se você criou o sensor de IoT, desligue-o. Pressione Ctrl+C na janela do terminal para interromper o script e digite o seguinte para desligar o Raspberry Pi:

  shutdown -h now

Acesse o Cloud Functions, clique na caixa de seleção ao lado de function-weatherPubSubToBQ e clique em "Excluir".

ae95f4f7178262e0.png

Acesse o Pub/Sub, clique em "Tópico", marque a caixa de seleção ao lado do tópico "weatherdata" e clique em "Excluir".

6fb0bba3163d9a32.png

Acesse "Armazenamento", clique nas caixas de seleção ao lado dos buckets de armazenamento e clique em "Excluir".

9067fb2af9f907f4.png

Acesse bigquery.cloud.google.com, clique na seta para baixo ao lado do nome do projeto, clique na seta para baixo à direita do conjunto de dados "weatherData" e clique em "Excluir conjunto de dados".

a952dfeec49248c4.png

Quando solicitado, digite o ID do conjunto de dados (weatherData) para concluir a exclusão dos dados.

6310b1cc8da31a77.png