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

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

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

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

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

79cd6c68e83f7fea.png

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

e28ca9ea4abb1457.png

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

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

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

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

  • Raspberry Pi Zero W с блоком питания, картой памяти SD и чехлом
  • USB-кардридер
  • USB-концентратор (для подключения клавиатуры и мыши к единственному USB-порту Raspberry Pi)
  • Провода макетной платы «мама-мама»
  • Молотковые разъемы GPIO
  • Датчик 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.

В облачной консоли выберите «Pub/Sub», а затем «Темы».

331ad71e8a1ea7b.png

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

9f6fca9dc8684801.png

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

643670164e9fae12.png

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

d7b049bc66a34db6.png

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

7c385759f65a1031.png

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

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

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

В облачной консоли выберите IAM & Admin, а затем Сервисные учетные записи.

8e2f8a1428d0feca.png

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

60892b564e0ac140.png

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

31f8c944af11270e.png

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

7e3f9d7e56a44796.png

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

60a7da32dd85ba73.png

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

b25f6f5629fe8fd7.png

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

c4414fe61be320a9.png

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

cde91311b267fc65.png

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

28c10e41b401f479.png

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

a0f6d069d42cec4b.png

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

55b25c8b9d73ec19.png

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

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

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

В облачной консоли выберите «Облачные функции».

a14ac2e4f03bf831.png

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

40ba0a08430e0e8a.png

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

5d82d8faeffa55bf.png

В поле «Имя» введите function-weatherPubSubToBQ. В качестве триггера выберите тему Cloud Pub/Sub и в раскрывающемся списке «Тема» выберите данные о погоде. Для исходного кода выберите встроенный редактор. На вкладке 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», измените ее на «подписаться». Нажмите кнопку Создать

3266d5268980a4db.png

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

26f45854948426d0.png

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

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

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

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

а162e24426118c97.png

Осторожно установите штифты молоткового разъема в Raspberry Pi.

a3a697907fe3c9a9.png

Отформатируйте SD-карту и установите установщик NOOBS (новое готовое программное обеспечение), выполнив действия, описанные здесь . Вставьте SD-карту в Raspberry Pi и поместите Raspberry Pi в футляр.

1e4e2459cd3333ec.png

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

392c2a9c85187094.png

Значок Raspberry Pi

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

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

ВИН

Контакт 3 (CPIO2)

СОИ

Контакт 5 (GPIO3)

ССК

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

Земля

44322e38d467d66a.png

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

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

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

a16f0da19b93126.png

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

17f380b2d41751a8.png

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

14741a77fccdb7e7.png

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

9df6f228f6a31601.png

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

  sudo i2cdetect -y 1

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

cd35cd97bee8085a.png

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

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

Откройте окно терминала на 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 Cloud. В этой лаборатории кода он будет использоваться для доступа к хранилищу, чтобы ключ безопасности можно было легко загрузить на 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.

Если вам будет предложено включить 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 (почему оно называется gsutil и почему путь к файлу начинается с gs://). Обязательно измените команду ниже, указав имя корзины и имя файла.

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

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

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

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

Теперь у вас есть готовый датчик погоды IoT, готовый передавать данные в Google Cloud.

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

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

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

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

  cd /home/pi/iot-data-pipeline

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

  python checkWeather.py

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

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

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

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

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

c4414fe61be320a9.png

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

cde91311b267fc65.png

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

1dad4cfbccfc96b1.png

В облачной консоли выберите «Поток данных».

43ec245b47ae2e78.png

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

da55aaf2a1b0a0d0.png

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

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

Когда вы заполните всю информацию (см. ниже), нажмите кнопку «Выполнить задание».

5f8ca16672f19d9b.png

Задание потока данных должно начать выполняться.

e020015c369639ad.png

Завершение задания потока данных должно занять около минуты.

218a3ff7197dcf75.png

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

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

Убедитесь, что функция Cloud запускается Pub/Sub.

  gcloud beta functions logs read function-weatherPubSubToBQ

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

d88f7831dabc8b3f.png

Данные BigQuery

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

85627127d58f1d2e.png

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

44dc0f765a69580c.png

Добавьте звездочку в оператор SQL, чтобы он читался SELECT * FROM..., как показано ниже, а затем нажмите кнопку RUN QUERY.

b3a001e11c2902f2.png

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

2c894d091b789ca3.png

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

c8a061cebb7b528a.png

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

9. Создайте панель управления Студией данных.

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 Platform. Наконец, теперь у вас есть некоторый практический опыт работы с важным архитектурным шаблоном, который может обрабатывать большие объемы данных, сохраняя при этом доступность.

79cd6c68e83f7fea.png

Очистка

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

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

  shutdown -h now

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

ae95f4f7178262e0.png

Перейдите в Pub/Sub, нажмите «Тема», установите флажок рядом с темой данных о погоде, а затем нажмите «Удалить».

6fb0bba3163d9a32.png

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

9067fb2af9f907f4.png

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

a952dfeec49248c4.png

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

6310b1cc8da31a77.png