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 tratados em tempo real e como podem ser distribuídos para vários sistemas de negócios importantes? Esses problemas, aliados às demandas de aplicativos em escala da Internet, levaram à necessidade de um sistema de mensagens distribuído e deram origem a um padrão de arquitetura de uso de pipelines de dados para 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 sensor climático será usado para o dispositivo de IoT, e vários componentes do Google Cloud Platform formarão o pipeline de dados. A criação do Raspberry Pi, embora benéfica, é uma parte opcional deste codelab, e o streaming de dados meteorológicos pode ser substituído 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 Google Pub/Sub
  • Como implantar uma função do Google Cloud
  • Como usar 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 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 aqui)...

  • 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 fêmeas para placa de ensaio
  • Cabeçalhos de martelo GPIO
  • Sensor BME280
  • Ferro de solda com solda

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

2. Etapas da configuração

Configuração de ambiente personalizada

Se você ainda não tiver uma Conta do Google (Gmail ou G Suite), crie uma. Independentemente de você já ter ou não uma Conta do Google, aproveite a avaliação 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 ("My First Project") para este laboratório ou criar um novo. Para 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 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. Consulte 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 BigQuery no console do Cloud. Isso abrirá o BigQuery em uma nova janela. Não feche a janela original porque você 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

Digite "weatherData" para o Conjunto de dados, selecione o local onde será armazenado e clique em "OK"

62cfcbd1add830ea.png

Clique no sinal "+" 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 concluído, clique no botão Criar tabela.

eef352614a5696a7.png

O resultado deve 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 para o 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 for exibida a solicitação "Ativar API", clique no botão "Ativar API".

9f6fca9dc8684801.png

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

643670164e9fae12.png

Digite "weatherdata" como nome do tópico e, em seguida, clique em

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ê pretende 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 o nome de uma 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. Há apenas uma chave, por isso é importante não perdê-la. Clique em "Fechar".

60a7da32dd85ba73.png

Você verá que uma conta de serviço foi criada e que há um ID de chave 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 que precisa ser exclusivo globalmente 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, ele deverá 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 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 "Gatilho", selecione o tópico "Cloud Pub/Sub" e, no menu suspenso "Tópico", selecione os dados meteorológicos. Para o código-fonte, selecione "Editor in-line". Na guia index.js, cole o código abaixo sobre o que está lá para começar. Altere as constantes para 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 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 alfinetes, corte o cabeçalho para deixá-lo com apenas sete alfinetes. Solde os pinos de cabeçalho na placa do sensor.

a162e24426118c97.png

Instale com cuidado os pinos de 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

Alfinete do Raspberry Pi

Conexão do sensor

Pino 1 (3,3 V)

VIN

Pin 3 (CPIO2)

SDI

Pin 5 (GPIO3)

SCK

Pino 9 (solo)

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 a inicialização, selecione Raspbian para o sistema operacional desejado, verifique se o idioma desejado está correto e clique em Instalar (ícone de disco rígido na parte superior esquerda 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 a I2C. Na guia "Localização", defina a localidade e o fuso horário. Depois de definir o fuso horário, permita a reinicialização do Raspberry Pi.

14741a77fccdb7e7.png

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

9df6f228f6a31601.png

Digite o comando abaixo para conferir se o sensor está conectado corretamente.

  sudo i2cdetect -y 1

O resultado deve ser parecido com este. Verifique se o texto é 77.

cd35cd97bee8085a.png

Instalar o SDK 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 à 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 -

Verificar se todo o software do Raspberry Pi está atualizado e instalar o SDK Google Cloud principal

  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 Pub/Sub 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

Inicialize o SDK Google Cloud

Com o SDK, é possível ter acesso remoto e autenticado ao Google Cloud. Neste codelab, ela será usada para acessar o bucket de armazenamento para facilitar o download da chave de segurança no Raspberry Pi.

Na linha de comando do Raspberry Pi, digite

  gcloud init --console-only

Quando aparecer "Gostaria de fazer login (Y/n)?", pressione Enter.

Quando aparecer a mensagem "Acesse o seguinte link no navegador:" seguido por um URL longo que começa com https://accounts.google.com/o/oauth?..., passe o cursor sobre o URL, 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 sobre a barra de endereço e clique em "Colar".

Quando a tela de login aparecer, insira 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.

Você receberá o código de verificação. Usando o mouse, destaque-o, clique com o botão direito do mouse e escolha Copiar. Volte à janela do terminal, verificando se o cursor está à direita de "Inserir código de verificação:", clique com o botão direito do mouse e escolha "Colar". Pressione o botão Enter.

Se aparecer a mensagem "Pick cloud project to use:", insira o número correspondente ao nome do projeto que você está usando neste codelab e pressione Enter.

Se for solicitado que você ative a API Compute, pressione o botão Enter para ativá-la. Em seguida, você precisará definir as configurações do Google Compute Engine. Pressione Enter. Uma lista de possíveis regiões/zonas será exibida. Escolha uma perto de você, insira o número correspondente e pressione Enter.

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

Instalar o software do sensor e o script climático

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 meteorológico

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

Copie o driver do sensor no mesmo diretório que o 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

Altere o projeto para o ID do seu projeto e o tópico para o nome do seu tópico do Pub/Sub, que foi anotado nas seções "Como configurar" e "Criar um tópico do Pub/Sub" deste codelab.

Mude os valores sensorID, sensorZipCode, sensorLat e sensorLong para o valor desejado. 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 para a próxima etapa e pule para a exportação do 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 Armazenamento do Google (por que ele é chamado gsutil e por que o caminho para o arquivo começa com gs://). Altere o comando abaixo para ter o nome do bucket e do arquivo.

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

Você verá uma mensagem informando que o arquivo está sendo copiado e informando que a operação foi concluída.

Na linha de comando do Raspberry Pi, exporte um caminho para a chave de segurança (altere 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. Inicie o pipeline de dados

Pode ser necessário ativar a API Compute

Streaming de dados de um Raspberry Pi

Se você construiu um sensor climático de IoT Raspberry Pi, inicie o script que lerá os dados meteorológicos e os enviará 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. Com os dados fluindo, 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, é possível simular o streaming de dados usando um conjunto de dados público armazenado no Google Cloud Storage e inserindo-o no tópico atual 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 precisará de um local de armazenamento temporário. Por isso, vamos criar um bucket de armazenamento para isso.

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" na parte superior da tela.

da55aaf2a1b0a0d0.png

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

  • Insira o nome do job 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.
  • Selecionar 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 ser semelhante a "gs://myStorageBucketName/tmp".

Após preencher todas as informações (confira 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 devem mostrar que a função está em execução, 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 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 for solicitado, clique no botão "Executar consulta"

2c894d091b789ca3.png

Se os resultados forem exibidos, os dados estão fluindo corretamente.

c8a061cebb7b528a.png

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

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 seu projeto, o conjunto de dados e a tabela. Em seguida, clique no botão Conectar.

dc6b6b0ed9ced509.png

Altere os campos de tipo conforme mostrado abaixo (tudo deve ser um número, exceto timecollected e sensorID). Observe que timecoletado está definido para 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ê verá uma tela em branco para criar o 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. Alterar dados ausentes de "Linha até zero" até "Quebras de linha". Na seção Eixo Y à esquerda, exclua o 0 do Valor mínimo do eixo para alterá-lo para (Automático).

c7620bfe734d546.png

Clique no gráfico na folha 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 de série temporal" e "Dados", clique na métrica existente (ponto de orvalho) e escolha uma métrica diferente para ser exibida até que todas as quatro leituras meteorológicas (ponto de condensação, temperatura, umidade e pressão) tenham seu próprio gráfico.

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ê viu como o SDK Google Cloud pode ser usado para transferir dados para o Google Cloud Platform com segurança. 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 fazer os testes com 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", na caixa de seleção ao lado do tópico "Dados meteorológicos" e depois em "Excluir"

6fb0bba3163d9a32.png

Acesse "Armazenamento", marque as 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 depois 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