Практикум. Сервис сбора данных о погоде
Описание практикума
Данный практикум описывает процесс настройки загрузки данных о погоде в выбранном населенном пункте от внешнего веб-сервиса с использованием модуля интеграций low-code платформы GreenData.
Необходимо настроить механизм интеграции для получения актуальных сведений о прогнозе погоды в различных населенных пунктах от веб-сервиса https://openweathermap.org/. Сервис предоставляет подробное описание API для различных запросов (https://openweathermap.org/api ).
В практикуме рассмотрен механизм обращения к веб-сервису по протоколу HTTP, предоставляющему данные о погоде в конкретном городе на указанную дату. Запрос осуществляется с помощью URI – ссылки, содержащей имя ресурса сети и адрес, который определяет местонахождение и способ обращения к ресурсу - https://api.openweathermap.org/data/2.5/weather?q={city_name}&appid={API_key}.
В данном запросе используются два обязательных параметра:
-
API_key – ключ, который нужен для верификации пользователя ресурса (вы можете зарегистрироваться самостоятельно и использовать собственный ключ либо использовать указанный в практикуме параметр);
-
city_name – наименование города.
Результатом станет JSON запрос, передающий сведения по запросу с указанными параметрами (структура запроса представлена в приложении, структуру ответов сервиса на другие запросы можно получить в документации https://openweathermap.org/api).
В рамках интеграции в запрос данных от веб-сервиса подставляются значения параметров. формируемые с использованием алгоритмов.
Процесс интеграции состоит из следующих этапов:
-
Формирования запроса к веб-сервису;
-
Преобразования входных данных в формат для сохранения;
-
Сохранения преобразованных данных.
Для реализации интеграции в рамках практикума необходимо выполнить следующие шаги:
-
Определить структуры данных для хранения загружаемых сведений;
-
Настроить схему интеграции:
-
Создать необходимые объекты для хранения описанного процесса интеграции и их свойств;
-
Определить запрос к внешнему сервису для получения данных;
-
Определить правила преобразования входных данных;
-
-
Настроить связи входных данных и структур для их хранения.
-
Настроить механизмы запуска интеграции.
Данный практикум рассматривает работу со следующими функциональными модулями low-code платформы GreenData:
-
Объектная модель;
-
Визуалы;
-
Алгоритмы;
-
Интеграции.
Время на прохождение практикума составляет 3-5 часов.
Предварительные действия
Выполнение практикума должно происходить в приложении на платформе GreenData.
Если вы никогда не работали с платформой GreenData, необходимо пройти регистрацию.
Если у вас уже есть учетная запись, войдите в нее и создайте новое приложение для выполнения практикума.
Создание предметной области
Определите структуру для хранения загружаемых данных.
Для удобства работы бизнес-аналитика в платформе предусмотрена работа с моделью данных в виде ER-диаграммы (диаграммы предметной области), которая наглядно отображает связи настраиваемой объектной модели.
Создайте новую предметную область на стартовой странице. Для этого нажмите на кнопку «Создать» в разделе «Предметная область». Измените для предметной области наименование на «Сервис данных о погоде».
Добавьте на предметную область системный тип объектов «Населенный пункт» – это справочник, в котором находится список городов, с указанием региона и страны. Для этого на предметной области нажмите на кнопку «Добавить Тип объекта на Предметную область» и в поле слева с помощью поиска найдите тип объектов «Населенный пункт». Выберите его и с помощью стрелки перенесите тип объекта в область справа и нажмите «Ок».
После этого тип объектов будет отображен на предметной области. Сохраните предметную область с помощью кнопки на панели управления.
Создайте новый тип объектов, который будет использоваться для хранения логов - данных о результатах загрузки процесса интеграции. Он будет являться стартовым типом объектов, в котором будет записываться информация, необходимая для формирования запроса к внешнему ресурсу. Для этого на предметной области нажмите на кнопку «Создать новый тип объектов».
Заполните наименование «Получение данных о погоде» и наименование таблицы . В качестве родительского типа объектов укажите *«ETL. Экземпляр объекта ETL», для этого разверните список элементов в поле «Родитель» и с помощью поиска найдите необходимый тип родительского объекта. Сохраните изменения в карточке типа объектов.
Вернитесь к предметной области и создайте ассоциативную связь от типа объектов «Получение данных о погоде» к типу объектов «Населенный пункт» при этом будет создан атрибут «Город» [PARAMETER_CITY_ID]. Установите для атрибута «Обязательность» – «Да» и сохраните изменения на предметной области.
После этого между таблицами типов объектов будет отображаться стрелка обозначающая связь. Сохраните настройки предметной области.
Настройка ETL
Создание объекта ETL
Настройте интеграцию для загрузки данных о погоде, используя инструменты ETL.
Объект ETL – главная сущность ETL-процесса, содержащая в себе основные атрибуты процесса и схему выполнения. Для его создания необходимо открыть реестр объектов ETL: перейдите в пункт главного меню «Интеграция» – «ETL».
В реестре создайте новый объект с помощью кнопки создания на панели управления. Создайте новый объект ETL «ETL. Получение данных о погоде» [GETTING_WEATHER_DATA_ETL]. Сохраните объект по кнопке сохранения на панели управления.
В группе «Управление параметрами запуска ETL» в качестве типа стартового объекта можно указать дочерний типа «ETL. Экземпляр объекта ETL», в котором будет храниться информация о текущем процессе, логи запроса. Если оставить это поле пустым, то данные будут автоматически сохраняться в реестре типа объектов «ETL. Экземпляр объекта ETL». Чтобы открыть его реестр, необходимо к главном меню перейти в пункт «Интеграция» – «Протокол запуска ETL».
В группе «Управление параметрами запуска ETL» в качестве типа стартового объекта укажите «Получение данных о погоде».
В группе «Управление логированием» можно настроить уровень логирования:
-
информация по этапам – отображение ошибок (в случае их возникновения) и данных о прохождении этапов процесса.
-
отладочная информация – отображение ошибок (в случае их возникновения), данных о прохождении этапов процесса (включая действия и результат);
-
полный лог – отображение полного лога процесса ETL. Рекомендовано при настрой-ке процесса;
-
только ошибки – отображение ошибок процесса ETL (в случае их возникновения).
В поле «Уровень логирования в лог экземпляра» измените уровень логирования на «Полный лог». Укажите «Да» в поле «Записывать в протокол результирующие структуры данных этапов».
Также можно оставить комментарий с описанием входных данных и результата интеграции.
Сохраните настройки объекта ETL.
Создание схемы ETL
Схема ETL определяет ход процесса ETL.
Перейдите к настройке схемы с помощью кнопки «Схема ETL», расположенной на панели управления.
Работа со схемой процесса ETL аналогична настройке схем бизнес-процессов: создание схемы процесса ETL осуществляется на рабочей области посредством перетаскивания необходимых элементов с панели и установления между ними связи.
Создайте следующую схему:
Наименования элементов задаются на самой схеме процесса ETL после двойного клика по нему. Заполните наименования для этапов.
Каждому из этапов необходимо присвоить тип. Для выбора типа необходимо нажать правой кнопкой мыши на нужный этап, далее нажать на кнопку и в появившемся списке выбрать соответствующий тип:
-
Запрос и получение данных о погоде в выбранном городе – Источник. Внешний сервис;
-
Преобразование полученных данных – Преобразователь;
-
Сохранение полученных данных – Приемник. Внутренний.
После добавления всех элементов на схему ETL, сохраните ее с помощью кнопки сохранения и перейдите к настройке каждого из этапов.
Настройка этапа «Запрос и получение данных о погоде в выбранном городе»
На первом этапе будет происходить запрос данных. Для перехода в настройки этапа необходимо нажать на кнопку .
На вкладке «Основные параметры» в группе «Тип и адрес сервиса» заполните поля:
-
Формат ответа – JSON – формат данных ответа ресурса;
-
HTTP метод – GET – метод, при помощи которого будет происходить обращение к ресурсу;
-
URL – https://api.openweathermap.org/data/2.5/weather?q={city_name}&appid={API_key}.
О содержании ссылки URL можно посмотреть на странице веб-сервиса https://openweathermap.org/ - там есть описание параметров, а также другие варианты URL.
У указанной ссылки URL есть два параметра: API_key – ключ, который нужен для верификации пользователя ресурса, и city_name – наименование города. Оба эти параметра обязательны к заполнению, чтобы выполнился запрос.
В поле «Описание структуры ответа» необходимо вставить структуру, в виде которой будет формироваться ответ на запрос. На странице веб-сервиса https://openweathermap.org/ для используемого URL есть готовая структура ответа.
Наполнение для поля «WSDL/JSON» вы можете найти в Приложении. Сохраните настройки этапа ETL. После этого в поле «Структура выходов источника» появится автоматически сформированная структура.
Для осуществления запроса необходимо чтобы в URL на месте параметров указывались значения пользователя. Для настройки параметров перейдите во вкладку «Параметры запроса» и создайте новый параметр запроса.
В модальном окне заполните поля: Наименование – «Наименование города», Идентификатор – {city_name}, Вид параметра – «URL». Необходимо настроить параметр таким образом, чтобы значение города, указанное пользователем, подставлялось в запрос на место {city_name}. Сохраните настройку параметра с помощью кнопки «Сохранить».
На платформе GreenData предусмотрена работа с алгоритмами.
Алгоритм – это некая последовательность вычислительных шагов, используемая для выполнения определенной задачи или преобразования данных. Все системные и созданные пользователями алгоритмы выражений хранятся в реестре алгоритмов объектов в папке «Карточки объектов», в который можно перейти с помощью главного меню: «Администрирование» - «Управление объектами» - «Алгоритмы объектов».
Также можно создать собственную папку для хранения созданных алгоритмов с помощью кнопки на верхней панели.
Добавьте новый алгоритм параметра, для этого раскройте список дополнительных действий в поле «Алгоритм» и выберите «Добавить».
Создайте новый алгоритм «Получить Город из стартового типа ETL» [GET_PARAMETER_CITY_ALG], в качестве базового типа объектов выберите «Получение данных о погоде». Алгоритм будет передавать в параметр значение города, указанного при запуске ETL.
Редактор алгоритмов содержит в себе поле для формулы и панель «Инструменты», на которой располагаются доступные функции: набор функций определяется типом алгоритма.
Заполните поле формулы алгоритма:
Чтобы повторить формулу алгоритма, на панели «Инструменты» в группе «Источники» воспользуйтесь функцией attr, которая указывает атрибут базового типа объектов алгоритма. В модальном окне раскройте список атрибутов объектного атрибута «Город» и выберите «Наименование».
Сохраните настройки алгоритма, параметра запроса и текущего этапа.
Для настройки следующего параметра и корректного хранения данных, не подвергающихся разглашению, реализован системный тип «Секретная переменная» [SYS_SECRET_VARIABLE]. Сохраните текущий объект и перейдите в реестр типа объектов (для этого вернитесь на стартовую страницу и в разделе «Типы объектов» нажмите на кнопку «Показать все»).
На открывшейся станице воспользуйтесь поиском, найдите тип «Секретная переменная» и перейдите в реестр с помощью кнопки «Открыть реестр».
В реестре добавьте новый объект «API KEY» [API_KEY], укажите «Значение» – «2480123c6b0579efb6c5c18b4f8e21ad». Указанное значение – заранее сгенерированный уникальный ключ пользователя, который имеет доступ к реализации запроса к ресурсу https://openweathermap.org/. Для того чтобы сгенерировать свой, необходимо пройти регистрацию сервиса. При реализации практикума воспользуйтесь предложенным значением ключа пользователя.
Вернитесь к настройке этапа загрузки данных схемы ETL. Аналогично предыдущему параметру создайте новый параметр запроса «Ключ API» {API_key}, вид параметра – URL.
Добавьте новый алгоритм «Получить API_KEY из секретной переменной» [GET_API_KEY_ALG]. Указывать базовый тип не нужно. После срабатывания алгоритма в тело запроса на месте {API_key} автоматически подставится указанное в секретной переменной значение.
Заполните формулу алгоритма:
Чтобы повторить формулу алгоритма, на панели «Инструменты» в группе «Дополнительные» воспользуйтесь функцией secretVariable: в появившемся модальном окне в списке выберите созданную ранее переменную API KEY.
Сохраните настройки алгоритма по кнопке «Ок».
Сохраните настройки этапа ETL.
Настройка этапа «Преобразование полученных данных»
Вернитесь к схеме ETL и перейдите к настройке этапа «Преобразование полученных данных». На вкладке «Основное» можно настроить структуру выходов элемента системы: в поле слева показаны входные данные, справа – выходные.
Чтобы в выходных данных появилась динамическая структура, необходимо выделить поле и нажать на кнопку «Добавить с сохранением иерархии». Добавьте все переменные в список выходных данных и сохраните этап.
В качестве выходных данных должна быть определена дата загрузки погоды в формате даты и времени. Для этого необходимо настроить преобразование выходных данных. Сохраните настройки этапа по кнопке сохранения на панели управления.
В поле со структурой выходных данных у поля «dt», которое отвечает за обозначение даты и времени, разорвите связь с источником, чтобы изменить тип NUMBER на дату и время.
Смените тип на DATETIME и сохраните настройки этапа.
Добавьте трансформатор по алгоритму для переменной «dt».
В появившемся окне заполните поля:
-
Наименование - Преобразование данных из числа в дату;
-
Коллекция входных данных - $.dt;
-
Коллекция выходных данных - $.dt.
Сохраните настройки трансформатора по кнопке «Сохранить».
В поле «Алгоритм» создайте новый алгоритм типа «Алгоритм.Карточки объектов».
Создайте алгоритм «Преобразовать данные из числа в дату» [CONVERT_DATA_TO DATE_ALG], базовый тип объектов указывать не нужно. Алгоритм будет возвращать значение даты и времени запроса в указанном в алгоритме формате.
Заполните поле формулы алгоритма:
Используйте следующие функции:
-
dateFormat – отображение даты в заданном формате;
-
truncDate – возвращает дату, усеченную к определенной единице измерения;
-
currentDate – возвращает текущее на момент запуска алгоритма значение даты и времени;
Выполните следующую последовательность действий:
-
В группе «Даты» воспользуйтесь функцией dateFormat;
-
В качестве первого аргумента необходимо указать усеченную к секундам дату. Для этого очистите значение первого аргумента с помощью клавиатуры, а затем на этом месте вызовите функцию truncDate: в модальном окне выберите «Секунда»;
-
Дополните второй параметр, который обозначает формат даты: измените формат на «dd.MM.yyyy HH:mm:ss».
Сохраните алгоритм, вернитесь к настройке создания трансформатора. Сохраните настройки трансформатора, затем сохраните изменения текущего этапа.
Настройка этапа «Сохранение полученных данных»
Перейдите к настройке этапа «Сохранение полученных данных».
Создайте новый базовый тип объекта для сохранения результатов запроса. Для этого в поле «Базовый тип объектов» раскройте список дополнительных действий и выберите «Добавить».
Создайте новый тип объектов «Данные о погоде» [WEATHER_DATA], родительский тип объектов – «Объект». В нем будут сохраняться данные, полученные в результате запроса.
Чтобы все результаты запроса были сохранены, необходимо создать для каждого элемента структуры ответа на запрос (коллекции) свой атрибут. В структуре ответа находятся следующие коллекции:
-
visibility – видимость;
-
dt – дата и время;
-
coord.lon – долгота;
-
coord.lat – широта;
-
clouds.all – облака;
-
weather.description – описание погоды;
-
wind.speed – скорость ветра.
Создайте новые атрибуты для типа объектов для коллекции в структуре ответа:
-
«Видимость» [VISIBILITY] – Числовой;
-
«Время получения данных» [TIME_DATA_CALC] – Дата;
-
«Долгота» [COORD_LONGITUDE] – Числовой;
-
«Название города» [CITY_NAME] – Строка;
-
«Облака» [CLOUDS_ALL] – Числовой;
-
«Описание погоды» [WEATHER_DESCRIPTION] – Текст;
-
«Скорость ветра» [WIND_SPEED] – Числовой;
-
«Широта» [COORD_LATITUDE] – Числовой.
Сохраните настройки типа по кнопке «Ок». Вернитесь к настройке этапа ETL. В поле «Базовый тип объектов» автоматически будет выбран созданный тип «Данные о погоде».
Снимите флаги для параметров «Отобразить результаты ETL без сохранения» и «Очистить лог при успешном выполнении этапа». Прочие параметры оставьте без изменений.
Далее требуется связать коллекции с атрибутами типа объекта, для того, чтобы указать данные какой коллекции в какой атрибут должны быть сохранены. Для этого необходимо сначала выбрать необходимую коллекцию слева, затем атрибут справа и нажать на кнопку «Связать». Свяжите коллекцию «VISIBILITY» и Атрибут «Видимость».
После этого колонка «Поле из источника» автоматически заполнится значением.
Свяжите следующие атрибуты:
-
Время получения данных (DATE) TIME_DATA_CALC – $.dt;
-
Долгота (DOUBLE) COORD_LONGITUDE – $.coord.lon;
-
Название города (STRING) CITY_NAME – $.name;
-
Облака (DOUBLE) CLOUDS_ALL – $.clouds.all;
-
Описание погоды (TEXT) WEATHER_DESCRIPTION – $.weather.$.description;
-
Скорость ветра (DOUBLE) WIND_SPEED – $.wind.speed;
-
Широта (DOUBLE) COORD_LATITUDE – $.coord.lat.
После настройки связей необходимо создать новый объект в поле «Настройка связей типов». Заполните поля в открывшемся окне: Базовый тип объектов – «Данные о погоде», Тип связи приёмника – «Всегда новая запись». Сохраните изменения в настройках этапа. Вернитесь к схеме ETL и сохраните ее.
Запуск ETL
Подготовка к запуску
Для того чтобы запустить ETL, необходимо настроить визуал и добавить на него атрибут «Город». Для этого в меню перейдите к «Интеграция» – «ETL», перейдите к объекту ETL «ETL. Получение данных о погоде» и нажмите на «Выполнить ETL». Перейдите к настройке визуала появившегося окна, нажав на соответствующую кнопку справа сверху: разместите новый ряд, группу атрибутов, установите для нее параметры представления – «Без имени» и разместите атрибут «Город» [PARAMETR_CITY]. Сохраните изменения.
Запуск процесса загрузки данных
Для запуска ETL выберите город из выпадающего списка, а затем нажмите на кнопку «Запустить». В результате поля объекта будут заполнены данными.
Если у вас возникли ошибки при выполнении ETL, убедитесь в корректной настройке предыдущих этапов. |
Для того, чтобы проверить как выполнилась интеграция, нужно перейти в реестр запусков через пункт меню «Интеграция» - «Протокол запуска ETL» или к реестру указанного в объекте ETL типа стартового объекта «Получение данных о погоде».
Для просмотра данных, полученных в ходе выполнения ETL, перейдите к реестру типа объектов «Данные о погоде».
Для того чтобы увидеть подробную информацию по экземплярам ETL, необходимо открыть объект двойным нажатием на него.
Для просмотра данных, полученных в ходе выполнения ETL, перейдите к реестру типа объектов «Данные о погоде». Для того, чтобы увидеть подробную информацию по содержанию объекта, необходимо открыть его.
В экземпляре запуска интеграции отображается ETL и объект, по которому он был запущен, а также информация о признаке активности и ошибках при выполнении. В логе отображается выполнение этапа и ошибки, возникающие во время выполнения.
Запуск ETL по расписанию
Система позволяет настроить запуск ETL по расписанию.
Перейдите в «Администрирование» - «Настройки» - «Расписание запуска действий». Для создания расписания запуска ETL необходимо создать новый объект.
Заполните поля:
-
Наименование – Ежедневная выгрузка погоды;
-
Системное действие – Запуск ETL;
-
Расписание работы действия – Ежедневно (7.00 утра);
-
Расписание действует – Да.
В поле «Объект ETL» укажите «ETL. Получение данных о погоде» и добавьте новый алгоритм, раскрыв список дополнительных действий и выбрав «Добавить».
Создайте алгоритм «Алгоритм автозаполнения параметров» [AUTO_FUL_ALG], укажите Базовый тип объектов – «Получение данных о погоде».
Алгоритм будет самостоятельно возвращать значение города Москва и передавать его для реализации запроса.
Заполните формулу алгоритма:
Воспользуйтесь следующими функциями:
Выполните следующую последовательность действий:
1. В группе «Источники» воспользуйтесь функцией attr: в модальном окне установите флаг на «Установить значение» и выберите атрибут «Город»;
2. В качестве второго параметра функции необходимо указать подставляемое значение. Для этого очистите второй параметр с помощью клавиатуры и в этой же группе воспользуйтесь функцией dict. В модальном окне выберите тип объектов «Населенный пункт» и в качестве значения справочника – «Москва».
Сохраните настройки алгоритма и настройки расписания.
Таким образом, каждый день в 7.00 утра будет выполняться запуск ETL, после его завершения появляться запись с данными о погоде в Москве в типе объектов «Данные о погоде».
Применение ETL
Загруженные данные будут сохранены в типе объектов Данные о погоде.
Настроенный объект ETL можно использовать в рамках бизнес-процесса для автоматического запуска процесса загрузки данных о погоде.
Загруженные данные могут быть визуализированы с помощью виджетов на визуалах или использованы для аналитики с помощью дашбордов.
Аналогичным образом может быть настроена загрузка данных с этого или других веб-сервисов.