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

1. Visão geral/Introdução

Embora aplicativos de vários níveis compostos de Web, servidor de aplicativos e banco de dados sejam fundamentais para o desenvolvimento da Web e sejam o ponto de partida de muitos sites, o sucesso muitas vezes traz desafios relacionados à escalonabilidade, integração e agilidade. Por exemplo, como os dados podem ser processados em tempo real e distribuídos para vários sistemas de negócios importantes? Esses problemas, juntamente com as demandas de aplicativos em escala de Internet, geraram a necessidade de um sistema de mensagens distribuído e deram origem a um padrão de arquitetura para usar pipelines de dados e alcançar sistemas resilientes em tempo real. Como resultado, 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ê criará um pipeline de dados meteorológicos que começa com um dispositivo de Internet das Coisas (IoT), utiliza uma fila de mensagens para receber e entregar dados, aproveita uma função sem servidor para movê-los para um data warehouse e, em seguida, cria um painel que exibe as informações. Um Raspberry Pi com um sensor meteorológico será usado para o dispositivo IoT, e vários componentes do Google Cloud Platform vão formar o pipeline de dados. Criar o Raspberry Pi, embora seja benéfico, é uma parte opcional deste codelab, e os dados meteorológicos 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 exibe temperatura, umidade, ponto de orvalho e pressão do ar.

e28ca9ea4abb1457.png

O que você vai aprender

  • Como usar o Pub/Sub do Google
  • Como implantar uma Função 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 do Google Cloud e a 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 solicitado como um kit completo ou como partes individuais).

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

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

2. Etapas da configuração

Configuração de ambiente personalizada

Crie uma se você ainda não tem uma Conta do Google (Gmail ou G Suite). Independente de você já ter uma Conta do Google ou não, aproveite o teste gratuito de US$ 300.

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

f414a63d955621a7.png

3415e861c09cd06a.png

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

3. Criar uma tabela do BigQuery

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

Vamos criar uma tabela para armazenar todos os dados climáticos de IoT. Selecione o BigQuery no console do Cloud. O BigQuery será aberto em uma nova janela. Não feche a janela original, porque você vai precisar acessá-la novamente.

12a838f78a10144a.png

Clique no ícone de seta para baixo ao lado do nome do projeto e selecione "Create new dataset"

27616683b64ce34a.png

Insira "weatherData" para o conjunto de dados, selecione um local onde ele será armazenado e clique em "OK".

62cfcbd1add830ea.png

Clique no sinal de "+" ao lado do conjunto de dados para criar uma nova 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é que haja um total de nove campos. Preencha os campos conforme mostrado abaixo e selecione também o Tipo apropriado para cada um deles. Quando tudo estiver pronto, clique no botão Criar tabela.

eef352614a5696a7.png

O resultado será parecido com este...

7d10e5ab8c6d6a0d.png

Agora você tem um data warehouse configurado para receber 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 lidar com mensagens de IoT recebidas e permitir que os sistemas downstream as processem.

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

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

331ad71e8a1ea7b.png

Se um prompt "Ativar API" aparecer, 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 deve aparecer

7c385759f65a1031.png

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

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 o acesso com mais rigor 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 o papel Editor 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 será feito automaticamente. Como há apenas uma chave, é importante não perdê-la. Clique em "Fechar".

60a7da32dd85ba73.png

Uma conta de serviço foi criada e um ID de chave foi associado a ela.

b25f6f5629fe8fd7.png

Para facilitar o acesso à chave mais tarde, vamos armazená-la no Google Cloud Storage. No Console do Cloud, selecione "Armazenamento" 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 salva automaticamente e arraste/solte ou faça upload dela para o 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 do arquivo de 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 vai ser iniciada toda vez que uma mensagem for publicada no tópico de clima, vai ler a mensagem e a armazenar no BigQuery.

No console do Cloud, selecione Cloud Functions

a14ac2e4f03bf831.png

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

40ba0a08430e0e8a.png

Clique no botão Criar função

5d82d8faeffa55bf.png

No campo Nome, digite function-weatherPubSubToBQ. Em "Acionador", selecione "Tópico do Cloud Pub/Sub" e, no menu suspenso "Tópico", selecione "weatherdata". Para o código-fonte, selecione o editor in-line. Na guia index.js, cole o código abaixo sobre o que está lá para começar. Altere as constantes de projectId, datasetId e tableId para se adequar ao 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 abaixo no 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 as Funções.

6. Configurar o hardware de IoT (opcional)

Montar o Raspberry Pi e o sensor

Se houver mais de sete pinos, corte o cabeçalho para apenas sete pinos. Solde os pinos de cabeçalho na 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 instalador do novo software pronto para uso (NOOBS, na sigla em inglês) seguindo estas etapas. Insira o cartão SD no Raspberry Pi e coloque o Raspberry Pi no estojo.

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)

VIN

Pino 3 (CPIO2)

SDI

Pin 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 Raspbian para o sistema operacional desejado, verifique se o idioma está correto e clique em "Instalar" (ícone do disco rígido no canto superior esquerdo da janela).

a16f0da19b93126.png

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

17f380b2d41751a8.png

Clique no ícone de framboesa no 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, reinicie o Raspberry Pi.

14741a77fccdb7e7.png

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

9df6f228f6a31601.png

Digite o comando a seguir para garantir que o sensor esteja conectado corretamente.

  sudo i2cdetect -y 1

O resultado será semelhante a este: verifique se o valor é 77.

cd35cd97bee8085a.png

Instalar o SDK do Google Cloud

Para aproveitar as ferramentas do Google Cloud Platform, o SDK Google Cloud precisará 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.

Se ainda não tiver feito isso, abra uma janela do terminal no Raspberry Pi e defina uma variável de ambiente que corresponda a versão do SDK ao sistema operacional no Raspberry Pi.

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

Agora adicione o local onde os pacotes do SDK Google Cloud estão armazenados para que as ferramentas de instalação saibam onde procurar quando forem solicitadas a 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 todos os softwares do Raspberry Pi estão atualizados e instale o SDK principal do Google Cloud.

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

Quando a mensagem "Do you want to continue?", pressione Enter.

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

  pip install tendo

Verifique se os pacotes Google Cloud PubSub e OAuth2 para Python estão instalados e atualizados usando o gerenciador de pacotes Python

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

Inicializar o SDK do Google Cloud

Com o SDK, é possível ter acesso remoto e autenticado ao Google Cloud. Para este codelab, ele será usado para acessar o bucket de armazenamento, para que a chave de segurança possa ser transferida facilmente para o Raspberry Pi.

Na linha de comando do Raspberry Pi, digite

  gcloud init --console-only

Quando for exibida a mensagem "Quer fazer login (Y/n)?", pressione Enter.

Quando você vir "Acesse o link a seguir no seu navegador:" seguido por 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ê verá um aviso de que o SDK Google Cloud quer acessar sua Conta do Google. Clique no botão "Permitir".

O código de verificação vai aparecer. Usando o mouse, destaque-o, clique com o botão direito do mouse e escolha Copiar. Volte para a janela do terminal, verifique se o cursor está à direita de "Insira o código de verificação:", clique com o botão direito do mouse e escolha "Colar". Pressione o botão Enter.

Se você receber a mensagem "Selecione o projeto do Cloud 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 ativar. Em seguida, você precisará definir as configurações do Google Compute Engine. Pressione Enter. Uma lista de possíveis regiões/zonas vai aparecer. Escolha uma perto de você, insira o número correspondente e pressione Enter.

Em instantes, serão exibidas algumas informações adicionais. O SDK do Google Cloud está configurado. Você pode fechar a janela do navegador da Web, porque não vai precisar dela daqui para frente.

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 transferidos

  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 transferido por download.

  cd iot-data-pipeline/third_party/Adafruit_BME280

  mv Adafruit_BME280.py ../..

  cd ../..

Para editar o script, digite...

  nano checkWeather.py

Mude o projeto para o ID do projeto e o tópico para o nome do tópico do Pub/Sub. Eles foram anotados nas seções "Configuração inicial" e "Criar um tópico do Pub/Sub" deste codelab.

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

Quando terminar de fazer as alterações necessárias, pressione Ctrl-X para começar a 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 da 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 exporte o caminho.

Se você colocou a chave de segurança em um bucket de armazenamento, precisará lembrar o nome do bucket de armazenamento e do arquivo. Use o comando gsutil para copiar a chave de segurança. Esse comando pode acessar o Google Storage (por isso é chamado de gsutil e o caminho do 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 aparecer informando 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 climático de IoT completo 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ê criou um sensor de clima IoT Raspberry Pi, inicie o script que vai ler os dados meteorológicos e enviá-los ao Google Cloud Pub/Sub. Se você não estiver no diretório /home/pi/iot-data-pipeline, vá para lá primeiro.

  cd /home/pi/iot-data-pipeline

Iniciar o script de previsão do tempo

  python checkWeather.py

A janela do terminal vai transmitir os resultados dos dados meteorológicos a cada minuto. Se os dados estiverem fluindo, pule para a próxima seção: "Verificar se os dados estão fluindo".

Streaming de dados simulado

Se você não criou o sensor de clima da IoT, é possível simular o streaming de dados usando um conjunto de dados público armazenado no Google Cloud Storage e alimentando-o no tópico do Pub/Sub. O Google Dataflow será usado com um modelo fornecido pelo Google para leitura no Cloud Storage e publicação no Pub/Sub.

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

No Console do Cloud, selecione "Armazenamento" e "Navegador".

c4414fe61be320a9.png

Clique no botão "Criar bucket".

cde91311b267fc65.png

Escolha um nome para o bucket de armazenamento (ele precisa ser exclusivo globalmente em todo o Google Cloud) e clique no botão "Criar". Não se esqueça do nome deste 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 de cima da tela).

da55aaf2a1b0a0d0.png

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

  • Insira um nome de job de dataflow-gcs-to-pubsub
  • Sua região precisa ser selecionada automaticamente de acordo com o local em que seu projeto está hospedado e não precisa ser alterada.
  • Selecione um modelo do Cloud Dataflow de texto do GCS para o Cloud Pub/Sub
  • Para os arquivos de entrada do Cloud Storage, insira gs://codelab-iot-data-pipeline-sampleweatherdata/*.json (este é um conjunto de dados público).
  • Para o tópico de saída do Pub/Sub, o caminho exato dependerá do nome do seu projeto e será algo como "projects/yourProjectName/topics/weatherdata"
  • Defina o local temporário como o nome do bucket do Google Cloud Storage que você acabou de criar com o prefixo de nome de arquivo "tmp". Ele deve 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 começará a ser executado.

e020015c369639ad.png

Leva cerca de um minuto para que o job do Dataflow seja concluído.

218a3ff7197dcf75.png

8. Verificar se os dados estão fluindo

Registros de funções do Cloud

Verifique 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 eles estão sendo inseridos no BigQuery.

d88f7831dabc8b3f.png

Dados do BigQuery

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

85627127d58f1d2e.png

No nome do projeto (no lado esquerdo da janela), clique no Conjunto de dados (weatherData), na tabela (weatherDataTable) e, em seguida, clique no botão Query Table

44dc0f765a69580c.png

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

b3a001e11c2902f2.png

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

2c894d091b789ca3.png

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

c8a061cebb7b528a.png

Com os dados fluindo, você já 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 seu navegador da Web, acesse https://datastudio.google.com.

10f8c27060cd7430.png

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

df1404bc0047595e.png

Clique na caixa de seleção para aceitar os termos, clique no botão Avançar, selecione quais e-mails você está interessado em 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 no BigQuery e, em seguida, no botão "Autorizar" e escolha a Conta do Google que você quer usar com o Data Studio (precisa ser a mesma usada 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 precisa ser um número, exceto timecollected e sensorID. Observe que a variável timecollected é definida como "Data e hora" (e não apenas "Data"). Altere os campos de agregação como mostrado abaixo (ponto de condensação, temperatura, umidade e pressão devem ser as médias e todo o restante deve 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

Você vai encontrar uma tela em branco para criar seu painel. Na linha superior de ícones, selecione "Série temporal".

c7cd97354e1cde04.png

Desenhe um retângulo no canto superior esquerdo da folha em branco. Ela deve ocupar cerca de 1⁄4 da folha em branco total.

e0e82cb19921f835.png

No lado direito da janela, selecione a guia Style. Mude os dados ausentes de "Linha para zero" para "Quebras de linha". Na seção "Eixo Y à esquerda", exclua o 0 do 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 tenha 1⁄4 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 métrica para ser exibida até que as quatro leituras do tempo (ponto de orvalho, temperatura, umidade e pressão) tenham gráficos próprios.

d29b21cac9e1ef5d.png

fda75a2f2a77a323.png

Agora você tem um painel básico.

8f59e8f4d44b8552.png

10. Parabéns!

Você criou um pipeline de dados inteiro. Ao fazer isso, você aprendeu a usar o Google Pub/Sub, a implantar uma função sem servidor, a aproveitar o BigQuery e a criar um painel de análise usando o Data Studio. Além disso, você aprendeu a usar o SDK do Google Cloud de forma segura para trazer dados para o Google Cloud Platform. Por fim, agora você tem uma experiência prática com um padrão de arquitetura importante que pode lidar com altos volumes e, ao mesmo tempo, 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 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, em seguida, 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