Создание бессерверного конвейера данных: от Интернета вещей к аналитике

1. Обзор/Введение

Хотя многоуровневые приложения, состоящие из веб-компонента, сервера приложений и базы данных, являются основой веб-разработки и отправной точкой для многих веб-сайтов, их успех часто сопряжен с проблемами масштабируемости, интеграции и гибкости. Например, как обрабатывать данные в режиме реального времени и как распределять их между несколькими ключевыми бизнес-системами? Эти проблемы в сочетании с требованиями приложений интернет-масштаба обусловили необходимость распределенной системы обмена сообщениями и породили архитектурный шаблон использования конвейеров данных для создания отказоустойчивых систем реального времени. В результате, понимание того, как публиковать данные в режиме реального времени в распределенную систему обмена сообщениями, а затем как построить конвейер данных, является важнейшим навыком как для разработчика, так и для архитектора.

Что вы построите

В этом практическом занятии вы создадите конвейер обработки метеорологических данных, который начнет работу с устройства Интернета вещей (IoT), будет использовать очередь сообщений для приема и доставки данных, задействует бессерверную функцию для перемещения данных в хранилище данных, а затем создаст панель мониторинга для отображения информации. В качестве IoT-устройства будет использоваться Raspberry Pi с датчиком погоды, а конвейер обработки данных будет состоять из нескольких компонентов Google Cloud Platform. Создание Raspberry Pi, хотя и полезно, является необязательной частью этого практического занятия, и потоковую передачу метеорологических данных можно заменить скриптом.

79cd6c68e83f7fea.png

После выполнения шагов в этом практическом задании у вас будет готов потоковый конвейер данных, передающий информацию на панель мониторинга, отображающую температуру, влажность, точку росы и атмосферное давление.

e28ca9ea4abb1457.png

Что вы узнаете

  • Как использовать Google Pub/Sub
  • Как развернуть функцию Google Cloud
  • Как эффективно использовать Google BigQuery
  • Как создать панель мониторинга с помощью Google Data Studio
  • Кроме того, если вы разработаете IoT-датчик, вы также узнаете, как использовать Google Cloud SDK и как обеспечить безопасность удаленного доступа к платформе Google Cloud.

Что вам понадобится

Если вы хотите создать часть этого практического задания, посвященную IoT-датчикам, вместо использования примеров данных и скрипта, вам также понадобятся следующие компоненты ( которые можно заказать как в виде полного комплекта, так и по отдельным частям здесь )...

  • Raspberry Pi Zero W с блоком питания, картой памяти SD и корпусом.
  • USB-кардридер
  • USB-концентратор (для подключения клавиатуры и мыши к единственному USB-порту Raspberry Pi)
  • Провода для макетной платы типа «мама-мама»
  • Разъемы GPIO Hammer
  • датчик BME280
  • Паяльник с припоем

Кроме того, предполагается наличие доступа к компьютерному монитору или телевизору с HDMI-входом, HDMI-кабелю, клавиатуре и мыши.

2. Настройка

Настройка среды для самостоятельного обучения

Если у вас еще нет учетной записи Google (Gmail или G Suite), вам необходимо ее создать . Независимо от того, есть у вас уже учетная запись Google или нет, обязательно воспользуйтесь бесплатной пробной версией за 300 долларов !

Войдите в консоль Google Cloud Platform ( console.cloud.google.com ). Для этой лабораторной работы вы можете использовать проект по умолчанию («Мой первый проект») или создать новый проект. Если вы хотите создать новый проект, воспользуйтесь страницей «Управление ресурсами» . Идентификатор проекта должен быть уникальным именем для всех проектов Google Cloud (приведенное ниже имя уже занято и вам не подойдет). Запишите свой идентификатор проекта (например, ваш идентификатор проекта будет _____), так как он понадобится позже.

f414a63d955621a7.png

3415e861c09cd06a.png

Выполнение этого практического задания не должно стоить больше нескольких долларов, но может обойтись дороже, если вы решите использовать дополнительные ресурсы или оставите их запущенными. Обязательно пройдите раздел «Очистка ресурсов» в конце выполнения задания.

3. Создайте таблицу BigQuery.

BigQuery — это бессерверное, масштабируемое и недорогое корпоративное хранилище данных, которое станет идеальным вариантом для хранения данных, передаваемых потоком с IoT-устройств, а также позволит аналитической панели запрашивать эту информацию.

Давайте создадим таблицу, которая будет хранить все данные о погоде, полученные с помощью IoT. Выберите BigQuery в консоли Cloud. Это откроет BigQuery в новом окне (не закрывайте исходное окно, так как вам понадобится получить к нему доступ снова).

12a838f78a10144a.png

Нажмите на значок стрелки вниз рядом с названием вашего проекта, а затем выберите «Создать новый набор данных».

27616683b64ce34a.png

Введите "weatherData" в поле "Набор данных", выберите место для его хранения и нажмите "ОК".

62cfcbd1add830ea.png

Нажмите знак «+» рядом с вашим набором данных, чтобы создать новую таблицу.

3d7bff6f9843fa3c.png

В поле «Исходные данные» выберите «Создать пустую таблицу» . В поле «Имя целевой таблицы» введите weatherDataTable. В поле «Схема» нажимайте кнопку «Добавить поле» , пока не появится 9 полей. Заполните поля, как показано ниже, обязательно выбрав соответствующий тип для каждого поля. После завершения всех действий нажмите кнопку «Создать таблицу» .

eef352614a5696a7.png

Вы должны увидеть примерно такой результат...

7d10e5ab8c6d6a0d.png

Теперь у вас настроено хранилище данных для приема метеорологических данных.

4. Создайте тему Pub/Sub.

Cloud Pub/Sub — это простая, надежная и масштабируемая основа для потоковой аналитики и систем событийных вычислений. В результате она идеально подходит для обработки входящих сообщений IoT и последующей обработки их нижестоящими системами.

Если вы все еще находитесь в окне BigQuery, вернитесь в Cloud Console. Если вы закрыли Cloud Console, перейдите по адресу https://console.cloud.google.com

В консоли Cloud выберите Pub/Sub, а затем Topics.

331ad71e8a1ea7b.png

Если появится запрос на включение API, нажмите кнопку «Включить API».

9f6fca9dc8684801.png

Нажмите на кнопку «Создать тему».

643670164e9fae12.png

Введите "weatherdata" в качестве названия темы и нажмите "Создать".

d7b049bc66a34db6.png

Вы должны увидеть только что созданную тему.

7c385759f65a1031.png

Теперь у вас есть тема Pub/Sub, в которую можно публиковать сообщения IoT и предоставлять другим процессам доступ к этим сообщениям.

Безопасная публикация по данной теме.

Если вы планируете публиковать сообщения в тему Pub/Sub из ресурсов, находящихся за пределами вашей консоли Google Cloud (например, с IoT-датчика), потребуется более строгий контроль доступа с использованием учетной записи службы и обеспечение безопасности соединения путем создания доверенного сертификата.

В консоли Cloud выберите IAM & Admin, а затем Service accounts.

8e2f8a1428d0feca.png

Нажмите кнопку «Создать учетную запись службы».

60892b564e0ac140.png

В раскрывающемся списке «Роль» выберите роль «Издатель/Подписчик».

31f8c944af11270e.png

Введите имя учетной записи службы (iotWeatherPublisher), установите флажок «Предоставить новый закрытый ключ», убедитесь, что тип ключа установлен на JSON, и нажмите «Создать».

7e3f9d7e56a44796.png

Ключ безопасности будет загружен автоматически. Ключ всего один, поэтому важно его не потерять. Нажмите «Закрыть».

60a7da32dd85ba73.png

Вы должны увидеть, что учетная запись службы создана и с ней связан идентификатор ключа (Key ID).

b25f6f5629fe8fd7.png

Для удобства доступа к ключу в дальнейшем мы сохраним его в Google Cloud Storage. В консоли Cloud выберите «Хранилище», а затем «Обзор».

c4414fe61be320a9.png

Нажмите кнопку «Создать корзину».

cde91311b267fc65.png

Выберите имя для хранилища (это имя должно быть уникальным во всей глобальном пространстве Google Cloud) и нажмите кнопку «Создать».

28c10e41b401f479.png

Найдите автоматически загруженный ключ безопасности и перетащите его в хранилище, либо загрузите оттуда.

a0f6d069d42cec4b.png

После завершения загрузки ключа он должен отобразиться в браузере облачного хранилища.

55b25c8b9d73ec19.png

Запишите имя хранилища и имя файла ключа безопасности для дальнейшего использования.

5. Создайте облачную функцию.

Облачные вычисления сделали возможными полностью бессерверные модели вычислений, где логика может запускаться по запросу в ответ на события, поступающие из любой точки мира. В этой лабораторной работе облачная функция будет запускаться каждый раз, когда сообщение публикуется в тему погоды, считывать сообщение, а затем сохранять его в BigQuery.

В консоли Cloud выберите Cloud Functions.

a14ac2e4f03bf831.png

Если вы видите сообщение об использовании API, нажмите кнопку «Включить API».

40ba0a08430e0e8a.png

Нажмите кнопку «Создать функцию».

5d82d8faeffa55bf.png

В поле «Имя» введите function-weatherPubSubToBQ. В поле «Триггер» выберите тему Cloud Pub/Sub, а в раскрывающемся списке «Тема» — weatherdata. В поле «Исходный код» выберите встроенный редактор. На вкладке index.js вставьте следующий код поверх исходного. Убедитесь, что вы изменили константы projectId, datasetId и tableId в соответствии с вашей средой.

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

На вкладке package.json вставьте следующий код вместо кода-заполнителя.

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

Если для функции, подлежащей выполнению, указано "HelloWorld", измените её на "subscribe". Нажмите кнопку "Создать".

3266d5268980a4db.png

Примерно через 2 минуты ваша функция покажет, что она развернута.

26f45854948426d0.png

Поздравляем! Вы только что подключили Pub/Sub к BigQuery через Functions.

6. Настройка оборудования IoT (необязательно)

Соберите Raspberry Pi и датчик.

Если контактов больше 7, сократите разъем до 7. Припаяйте контакты разъема к плате датчика.

a162e24426118c97.png

Аккуратно установите штырьки разъема Hammer в Raspberry Pi.

a3a697907fe3c9a9.png

Отформатируйте SD-карту и установите программу установки NOOBS (New Out Of Box Software), следуя инструкциям здесь . Вставьте SD-карту в Raspberry Pi и поместите Raspberry Pi в корпус.

1e4e2459cd3333ec.png

Используйте провода макетной платы для подключения датчика к Raspberry Pi в соответствии со схемой ниже.

392c2a9c85187094.png

контакт Raspberry Pi

Подключение датчика

Контакт 1 (3,3 В)

VIN

Контакт 3 (CPIO2)

СДИ

Контакт 5 (GPIO3)

СКК

Контакт 9 (заземление)

НД

44322e38d467d66a.png

Подключите монитор (с помощью разъема mini-HDMI), клавиатуру/мышь (через USB-концентратор) и, наконец, адаптер питания.

Настройте Raspberry Pi и датчик.

После завершения загрузки Raspberry Pi выберите Raspbian в качестве нужной операционной системы, убедитесь, что выбран правильный язык, а затем нажмите кнопку «Установить» (значок жесткого диска в левом верхнем углу окна).

a16f0da19b93126.png

Нажмите на значок Wi-Fi (в правом верхнем углу экрана) и выберите сеть. Если это защищенная сеть, введите пароль (предварительно заданный ключ).

17f380b2d41751a8.png

Щёлкните по значку Raspberry Pi (в верхнем левом углу экрана), выберите «Настройки», а затем «Конфигурация Raspberry Pi». На вкладке «Интерфейсы» включите I2C. На вкладке «Локализация» установите язык и часовой пояс. После установки часового пояса дождитесь перезагрузки Raspberry Pi.

14741a77fccdb7e7.png

После завершения перезагрузки нажмите на значок Терминала, чтобы открыть окно терминала.

9df6f228f6a31601.png

Введите следующую команду, чтобы убедиться в правильном подключении датчика.

  sudo i2cdetect -y 1

Результат должен выглядеть так – убедитесь, что отображается число 77.

cd35cd97bee8085a.png

Установите Google Cloud SDK.

Для использования инструментов платформы Google Cloud необходимо установить Google Cloud SDK на Raspberry Pi. SDK включает в себя инструменты, необходимые для управления платформой Google Cloud и её использования, и доступен для нескольких языков программирования.

Если окно терминала на Raspberry Pi еще не открыто, откройте его и установите переменную среды, которая будет сопоставлять версию SDK с операционной системой Raspberry Pi.

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

Теперь добавьте местоположение, где хранятся пакеты Google Cloud SDK, чтобы инструменты установки знали, где искать их при запросе на установку 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

Добавьте открытый ключ из репозитория пакетов Google, чтобы Raspberry Pi проверял безопасность и доверял содержимому во время установки.

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

Убедитесь, что все программное обеспечение на Raspberry Pi обновлено, и установите основной пакет Google Cloud SDK.

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

Когда появится запрос «Продолжить?», нажмите Enter.

Установите пакет tendo с помощью менеджера пакетов Python. Этот пакет используется для проверки того, выполняется ли скрипт более одного раза и устанавливается ли он для использования в скрипте погоды.

  pip install tendo

Убедитесь, что пакеты Google Cloud PubSub и OAuth2 для Python установлены и обновлены с помощью менеджера пакетов Python.

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

Инициализируйте Google Cloud SDK.

SDK обеспечивает удалённый аутентифицированный доступ к облаку Google. В рамках этого практического занятия он будет использоваться для доступа к хранилищу, чтобы можно было легко загрузить ключ безопасности на Raspberry Pi.

В командной строке Raspberry Pi введите

  gcloud init --console-only

Когда появится запрос "Хотите войти в систему (Да/Нет)?", нажмите Enter.

Когда вы увидите сообщение «Перейдите по следующей ссылке в вашем браузере:», за которым следует длинный URL-адрес, начинающийся с https://accounts.google.com/o/oauth ?..., наведите курсор мыши на этот URL, щелкните правой кнопкой мыши и выберите «Копировать URL». Затем откройте веб-браузер (синяя иконка глобуса в верхнем левом углу экрана), щелкните правой кнопкой мыши по адресной строке и выберите «Вставить».

После появления экрана входа в систему введите адрес электронной почты, связанный с вашей учетной записью Google Cloud, и нажмите Enter. Затем введите свой пароль и нажмите кнопку «Далее».

Вам будет предложено подключиться к Google Cloud SDK и запросить доступ к вашей учетной записи Google. Нажмите кнопку «Разрешить».

Вам будет показан код подтверждения. Выделите его мышью, затем щелкните правой кнопкой мыши и выберите «Копировать». Вернитесь в окно терминала, убедитесь, что курсор находится справа от «Введите код подтверждения:», щелкните правой кнопкой мыши и выберите «Вставить». Нажмите кнопку Enter.

Если вас попросят выбрать облачный проект для использования, введите номер, соответствующий названию проекта, который вы использовали в этом практическом задании, и нажмите Enter.

Если появится запрос на включение API для вычислений, нажмите кнопку Enter. После этого вам будет предложено настроить параметры Google Compute Engine. Нажмите Enter. Вам будет представлен список потенциальных регионов/зон — выберите ближайший к вам, введите соответствующий номер и нажмите Enter.

Через мгновение отобразится дополнительная информация. Google Cloud SDK настроен. Можете закрыть окно веб-браузера, оно вам больше не понадобится.

Установите программное обеспечение для датчиков и скрипт прогноза погоды.

С помощью командной строки на Raspberry Pi клонируйте необходимые пакеты для чтения информации с входных/выходных контактов.

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

Установите загруженные пакеты.

  cd Adafruit_Python_GPIO

  sudo python setup.py install

  cd ..

Клонируйте код проекта, который обеспечивает работу датчика погоды.

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

Скопируйте драйвер датчика в ту же папку, что и остальное загруженное программное обеспечение.

  cd iot-data-pipeline/third_party/Adafruit_BME280

  mv Adafruit_BME280.py ../..

  cd ../..

Отредактируйте скрипт, набрав...

  nano checkWeather.py

Измените имя проекта на ваш идентификатор проекта, а имя темы — на название вашей темы Pub/Sub (эти данные были указаны в разделах «Настройка» и «Создание темы Pub/Sub» данного практического задания).

Измените значения sensorID, sensorZipCode, sensorLat и sensorLong на любые желаемые. Значения широты и долготы для конкретного местоположения или адреса можно найти здесь .

После внесения необходимых изменений нажмите Ctrl-X, чтобы выйти из редактора nano. Нажмите Y для подтверждения.

# 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"

Установите ключ безопасности

Скопируйте ключ безопасности (из раздела «Безопасная публикация в тему») на Raspberry Pi.

Если вы использовали SFTP или SCP для копирования ключа безопасности с локального компьютера на Raspberry Pi (в каталог /home/pi), то можете пропустить следующий шаг и сразу перейти к экспорту пути.

Если вы поместили ключ безопасности в хранилище данных, вам нужно запомнить имя этого хранилища и имя файла. Используйте команду gsutil для копирования ключа безопасности. Эта команда может получить доступ к Google Storage (поэтому она называется gsutil и почему путь к файлу начинается с gs://). Убедитесь, что вы изменили команду ниже, указав имя вашего хранилища данных и имя файла.

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

Вы должны увидеть сообщение о том, что файл копируется, а затем сообщение о завершении операции.

В командной строке Raspberry Pi укажите путь к ключу безопасности (измените имя файла в соответствии с имеющимся у вас ключом).

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

Теперь у вас есть готовый IoT-датчик погоды, который может передавать данные в облако Google.

7. Запустите конвейер обработки данных.

Возможно, потребуется включить Compute API.

Потоковая передача данных с Raspberry Pi

Если вы собрали IoT-датчик погоды на базе Raspberry Pi, запустите скрипт, который будет считывать данные о погоде и отправлять их в Google Cloud Pub/Sub. Если вы находитесь не в каталоге /home/pi/iot-data-pipeline, сначала перейдите туда.

  cd /home/pi/iot-data-pipeline

Запустить скрипт погоды

  python checkWeather.py

В окне терминала каждую минуту должны отображаться результаты анализа погодных данных. После того, как данные начали поступать, можно перейти к следующему разделу (Проверка потока данных).

Имитация потоковой передачи данных

Если вы не создавали датчик погоды для IoT, вы можете имитировать потоковую передачу данных, используя общедоступный набор данных, хранящийся в Google Cloud Storage, и передавая его в существующую тему Pub/Sub. Будет использоваться Google Dataflow вместе с предоставленным Google шаблоном для чтения из Cloud Storage и публикации в Pub/Sub.

В рамках этого процесса Dataflow потребуется временное место хранения, поэтому давайте создадим для этой цели хранилище (storage bucket).

В консоли Cloud выберите «Хранилище», а затем «Браузер».

c4414fe61be320a9.png

Нажмите кнопку «Создать корзину».

cde91311b267fc65.png

Выберите имя для хранилища (помните, что это должно быть уникальное имя во всей сети Google Cloud) и нажмите кнопку «Создать». Запомните имя этого хранилища, так как оно понадобится в ближайшее время.

1dad4cfbccfc96b1.png

В консоли Cloud выберите Dataflow.

43ec245b47ae2e78.png

Нажмите на кнопку «Создать задание из шаблона» (в верхней части экрана).

da55aaf2a1b0a0d0.png

Заполните информацию о вакансии, как показано ниже, обращая внимание на следующее:

  • Введите имя задания: dataflow-gcs-to-pubsub
  • Регион должен автоматически выбираться в зависимости от того, где размещен ваш проект, и его не нужно будет менять.
  • Выберите шаблон Cloud Dataflow для GCS Text to Cloud Pub/Sub.
  • В поле "Входной(ые) файл(ы) облачного хранилища" введите gs://codelab-iot-data-pipeline-sampleweatherdata/*.json (это общедоступный набор данных).
  • Для выходной темы публикации/подписки точный путь будет зависеть от названия вашего проекта и будет выглядеть примерно так: "projects/yourProjectName/topics/weatherdata".
  • В поле «Временное расположение» укажите имя только что созданного вами сегмента Google Cloud Storage с префиксом имени файла «tmp» . Должно получиться что-то вроде «gs://myStorageBucketName/tmp».

После заполнения всей необходимой информации (см. ниже) нажмите кнопку «Запустить задание».

5f8ca16672f19d9b.png

Задача Dataflow должна начать выполнение.

e020015c369639ad.png

Выполнение задания Dataflow должно занять приблизительно минуту.

218a3ff7197dcf75.png

8. Убедитесь, что данные передаются.

Журналы облачных функций

Убедитесь, что облачная функция запускается через механизм публикации/подписки (Pub/Sub).

  gcloud beta functions logs read function-weatherPubSubToBQ

В логах должно быть видно, что функция выполняется, данные принимаются и вставляются в BigQuery.

d88f7831dabc8b3f.png

данные BigQuery

Убедитесь, что данные поступают в таблицу BigQuery. В консоли Cloud перейдите в BigQuery (bigquery.cloud.google.com).

85627127d58f1d2e.png

В окне с названием проекта (в левой части) щелкните по набору данных (weatherData), затем по таблице (weatherDataTable) и нажмите кнопку «Запрос к таблице».

44dc0f765a69580c.png

Добавьте звездочку к SQL-запросу, чтобы он выглядел как SELECT * FROM..., как показано ниже, а затем нажмите кнопку ВЫПОЛНИТЬ ЗАПРОС

b3a001e11c2902f2.png

При появлении запроса нажмите кнопку «Выполнить запрос».

2c894d091b789ca3.png

Если вы видите результаты, значит, поток данных работает корректно.

c8a061cebb7b528a.png

После начала обработки данных вы готовы создать аналитическую панель.

9. Создайте панель мониторинга в Data Studio.

Google Data Studio превращает ваши данные в информативные панели и отчеты, которые легко читаются, легко распространяются и полностью настраиваются.

В веб-браузере перейдите по адресу https://datastudio.google.com

10f8c27060cd7430.png

В разделе «Создать новый отчет» выберите «Пустой», а затем нажмите кнопку «Начать».

df1404bc0047595e.png

Установите флажок, чтобы принять условия, нажмите кнопку «Далее», выберите, какие электронные письма вы хотите получать, и нажмите кнопку «Готово». Еще раз, в разделе «Начать новый отчет», нажмите «Пустой».

55e91d3dd88b05ca.png

Нажмите кнопку «Создать новый источник данных».

a22f3fac05774fc9.png

Нажмите на BigQuery, затем на кнопку «Авторизовать» и выберите учетную запись Google, которую вы хотите использовать с Data Studio (это должна быть та же учетная запись, которую вы использовали для выполнения практического задания).

5ab03f341edc8964.png

Нажмите кнопку «Разрешить».

22bcdbb5f5f1d30c.png

Выберите название проекта, набор данных и таблицу. Затем нажмите кнопку «Подключить».

dc6b6b0ed9ced509.png

Измените поля типа, как показано ниже (все поля, кроме timecollected и sensorID, должны быть числами). Обратите внимание, что для поля timecollected установлено значение «Дата и час» (а не просто «Дата»). Измените поля агрегации, как показано ниже (для точки росы, температуры, влажности и давления должны быть установлены средние значения, а для всех остальных — значение «Нет»). Нажмите кнопку «Создать отчет».

c60887e29c3bdf9b.png

Подтвердите, нажав кнопку «Добавить в отчёт».

5ec3888dfdd85095.png

Если вас попросят выбрать свою учетную запись Google, сделайте это, а затем нажмите кнопку «Разрешить», чтобы Data Studio могла сохранять отчеты в Google Диск.

7b8006a813b3defa.png

Перед вами открывается пустое поле для создания панели мониторинга. В верхнем ряду значков выберите «Временные ряды».

c7cd97354e1cde04.png

Нарисуйте прямоугольник в верхнем левом углу чистого листа. Он должен занимать примерно ¼ всей площади листа.

e0e82cb19921f835.png

В правой части окна выберите вкладку «Стиль». Измените параметр «Отсутствующие данные» с «Линия до нуля» на «Разрывы линий». В разделе «Левая ось Y» удалите 0 из параметра «Минимальное значение оси», чтобы изменить его на (Авто).

c7620bfe734d546.png

Щелкните по графику на листе и скопируйте/вставьте его (Ctrl-C/Ctrl-V) 3 раза. Выровняйте графики так, чтобы каждый занимал ¼ площади листа.

9a7d3faa28996219.png

Щелкните по каждому графику, а затем в разделе «Свойства и данные временного ряда» щелкните по существующему показателю (точка росы), выберите другой показатель для отображения, пока для всех четырех метеорологических параметров (точка росы, температура, влажность и давление) не появится свой собственный график.

d29b21cac9e1ef5d.png

fda75a2f2a77a323.png

Теперь у вас есть базовая панель управления!

8f59e8f4d44b8552.png

10. Поздравляем!

Вы создали целый конвейер обработки данных! При этом вы научились использовать Google Pub/Sub, развертывать бессерверные функции, работать с BigQuery и создавать аналитические панели с помощью Data Studio. Кроме того, вы увидели, как безопасно использовать Google Cloud SDK для загрузки данных на платформу Google Cloud. Наконец, у вас появился практический опыт работы с важным архитектурным шаблоном, способным обрабатывать большие объемы данных, сохраняя при этом доступность.

79cd6c68e83f7fea.png

Уборка

После завершения экспериментов с данными о погоде и аналитическим конвейером вы можете удалить запущенные ресурсы.

Если вы установили IoT-датчик, выключите его. Нажмите Ctrl-C в окне терминала, чтобы остановить скрипт, а затем введите следующее, чтобы выключить Raspberry Pi.

  shutdown -h now

Перейдите в раздел «Облачные функции», установите флажок рядом с функцией weatherPubSubToBQ, а затем нажмите «Удалить».

ae95f4f7178262e0.png

Перейдите в раздел «Публикация/Подписка», нажмите «Тема», поставьте галочку рядом с темой «Данные о погоде», а затем нажмите «Удалить».

6fb0bba3163d9a32.png

Перейдите в раздел «Хранилище», установите флажки рядом с ячейками хранения, а затем нажмите «Удалить».

9067fb2af9f907f4.png

Перейдите на bigquery.cloud.google.com, нажмите стрелку вниз рядом с названием вашего проекта, затем нажмите стрелку вниз справа от набора данных weatherData и выберите «Удалить набор данных».

a952dfeec49248c4.png

При появлении запроса введите идентификатор набора данных (weatherData), чтобы завершить удаление данных.

6310b1cc8da31a77.png