Was this article helpful?

Спасибо за вашу оценку!

Оставляя более подробный отзыв, вы помогаете нам улучшать документацию

Практикум. Загрузка данных о курсах валют

Описание практикума

Данный практикум описывает процесс настройки загрузки данных о курсах валют относительно рубля от внешнего веб-сервиса с использованием модуля интеграций low-code платформы GreenData.

Необходимо настроить механизм интеграции для получения актуальных сведений о курсах валют от веб-сервиса Центрального Банка России (cbr.ru/DailyInfoWebServ/DailyInfo.asmx). Сервис предоставляет структуру запросов и ответов для получения ежедневных курсов валют на определенную дату (https://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?op=GetCursOnDateXML).

В практикуме рассмотрен механизм обращения к веб-сервису по протоколу HTTP, предоставляющему данные о курсах валют на указанную дату. Запрос осуществляется с помощью URI – ссылки на веб-сервис, предоставляющей унифицированный идентификатор ресурса cbr.ru/DailyInfoWebServ/DailyInfo.asmx.

Для получения данных о курсах валют используется запрос в формате XML, передающий сведения по запросу с указанным аргументом. В используемом запросе для получения данных используется аргумент On_date, который определяет дату запроса для курсов валют.

В качестве ответа используется XML-документ, который представляет из себя набор данных в виде таблицы со следующими полями:

  • Vname — Название валюты;

  • Vnom — Номинал;

  • Vcurs — Курс;

  • Vcode — ISO Цифровой код валюты;

  • VchCode — ISO Символьный код валюты;

  • VunitRate — Курс за 1 единицу валюты.

Процесс интеграции состоит из следующих основных этапов:

  • Получение данных в результате запроса к веб-сервису;

  • Преобразования входных данных в нужный формат для сохранения;

  • Фильтрация полученных данных и удаление лишних;

  • Сохранения преобразованных данных.

Для реализации интеграции в рамках практикума необходимо выполнить следующие шаги:

  1. Определить структуру данных для хранения загружаемых сведений;

  2. Настроить схему интеграции:

    1. Создать необходимые объекты для хранения результата процесса интеграции;

    2. Определить структуру и параметры запроса к внешнему сервису для получения данных;

    3. Определить правила преобразования входных данных;

    4. Настроить связи входных данных и структур для их хранения;

    5. Определить параметры для проверки данных на дублирование в процессе их сохранения.

  3. Настроить механизмы запуска интеграции.

Создание и настройка ETL

Для решения бизнес-задачи необходимо использовать следующие типы объектов:

  • ETL. Загрузка курсов валют – ключевой тип объектов, экземпляры которого будут содержать информацию о результатах выполнения интеграции;

  • Данные курсов валют – тип объектов для хранения результатов выполнения интеграции, а именно информацию о валюте и ее курсе относительно рубля;

  • Валюта – системный справочник, который хранит в себе информацию о валютах. По умолчанию содержит экземпляры Рубль, Евро, Доллар.

При настройке интеграции можно использовать заранее созданные типы. Далее будет рассмотрено создание типов в процессе настройки.

Создание объекта ETL

Для создания интеграции, необходимо создать объект ETL.

Объект ETL – главная сущность ETL-процесса, содержащая в себе основные атрибуты процесса и правила выполнения этапов загрузки в виде схемы. Для его создания откройте реестр объектов ETL, для этого перейдите в пункт главного меню «Интеграция»«ETL».

media

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

В появившейся форме заполните поля: Наименование«Загрузка курсов валют», ИдентификаторEXCH_RATE_LOAD. Сохраните объект.

image013

Произведите настройку созданного объекта ETL.

«Управление параметрами запуска ETL» необходимо заполнить поле «Тип стартового объекта». Для этого в системе предусмотрен тип объекта «ETL. Экземпляр объекта ETL» – он по умолчанию является стартовым типом объекта, так как обладает всеми необходимыми атрибутами для хранения информации по запускам ETL. Экземпляры этого типа создаются системой автоматически после запуска ETL-процесса и содержат в себе стартовые параметры (объект ETL, дата и время запуска и прочее) и лог выполнения.

Если требуется добавить какие-то атрибуты для передачи их значений в качестве аргументов к запросу, необходимо создать дочерний от типа «ETL. Экземпляр объекта ETL» и уже в него добавить требуемые атрибуты.

Создайте дочерний тип для хранения информации о выполнении созданного объекта ETL: в поле «Тип стартового объекта» раскройте панель дополнительных действий и выберите действие «Добавить».

media

В результате появится модальное окно создания нового типа объектов.

image015

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

Важно корректно заполнить поля «Наименование таблицы» и «Родитель», так как после сохранения данного типа, изменить их будет нельзя.

Заполните поле Наименование – «ETL. Загрузка курсов валют» и идентификатор – [ETL_CUR_RATE_LOAD]. В качестве родителя выберите тип объектов «ETL. Экземпляр объекта ETL». Сохраните настройки типа объектов по кнопке на панели управления.

image016

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

media

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

media

В появившемся модальном окне активируйте переключатель «Выбор атрибута из полного списка атрибутов» и в раскрывающемся списке с помощью поиска найдите и выберите «Загрузить с даты» [LOAD_FROM_DT]. Установите флаг «Обязательный». Добавьте атрибут с помощью кнопки «Добавить».

media

Выделите добавленный атрибут и отредактируйте его: на вкладке «Визуал» в поле «Можно указать будущую дату» - укажите «Нет».

media

Аналогично добавьте существующий атрибут «Загрузить до даты» [LOAD_TO_DT], укажите обязательность и на вкладке «Визуал» в поле «Можно указать будущую дату» - укажите «Нет».

Сохраните произведенные изменения на уровне типа объектов.

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

image022

В появившемся модальном окне заполните поля:

  • Наименование – «Проверка дат загрузки курсов валют»;

  • Обязательность выполнения – «Да»;

  • Возможность прекращения необязательных проверок – «Нет»;

  • Тип проверки – «Алгоритмическая».

В поле «Алгоритм проверки» создайте новый алгоритм, раскрыв панель дополнительных действий поля и выбрав пункт «Добавить».

media

В модальном окне появится форма для создания алгоритма.

В группе «Общая информация» заполните основную информацию об алгоритме:

  • Наименование – Алгоритм проверки даты загрузки курсов валют;

  • Идентификатор – CHECK_DATE_EXCHANGE_ALG;

  • Базовый тип – ETL. Загрузка курсов валют.

image024

Необходимо указать папку для хранения алгоритма. Для этого на панели управления создайте новую папку, раскрыв панель дополнительных действий для поля/

image025

В модальном окне заполните наименование для папки – «Алгоритмы для загрузки курсов валют». Наименование созданной папки появится в поле автоматически. Сохраните алгоритм по кнопке сохранения на панели управления.

media

Перейдите к созданию формулы алгоритма. Редактор алгоритмов содержит в себе поле для формулы и панель «Инструменты», на которой располагаются доступные функции: набор функций определяется типом алгоритма.

image027

Заполните формулу алгоритма, который будет проверять, что значение атрибута «Загрузить с даты» не больше «Загрузить до даты», в случае возвращения алгоритмом значения false, сохранить объект и запустить процесс загрузки курсов валют будет невозможно до тех пор, пока алгоритм не вернет значение true:

image028

Воспользуйтесь функциями:

Выполните следующие шаги, чтобы повторить формулу алгоритма:

  1. Чтобы указать условие для выполнения алгоритма, на панели функций «Инструменты» раскройте группу «Логико-арифметические» выберите из списка функцию «iif». После этого в поле формулы появится синтаксис выбранной функции; media

  2. Чтобы указать условие, в котором будут сравниваться значения атрибутов, переместите курсов в скобки функции «iif» и на панели функций в группе «Источники» выберите функцию «attr» – функцию вставки значения атрибута в алгоритм. В модальном окне выберите из списка атрибут «Загрузить с даты» и вставьте его в алгоритм с помощью кнопки «Ок». После этого поле формулы заполнится динамическим значением, связывающим с выбранным атрибутом и позволяющим производить различные манипуляции с его значениями. image030

  3. После атрибута «Загрузить с даты» введите с клавиатуры знак «не больше» и добавьте атрибут «Загрузить до даты», аналогично шагу 2.

Условный оператор по умолчанию вернет значение true в случае, если условие выполнено, и значение false в случае, если условие не выполняется, в данном случае прописывать дополнительно эти значения нет необходимости. В случае, если необходимо вернуть иные значения, они указываются через запятую в качестве операндов условного оператора.

Сохраните алгоритм проверки.

Сохраните настройки типа объектов. После этого поле «Тип стартового объекта» будет заполнено созданным типом объекта.

В окне настройки объекта ETL продолжите настройку.

В группе настроек «Управление логированием» можно настроить уровень логирования:

  • информация по этапам – отображение ошибок (в случае их возникновения) и дан-ных о прохождении этапов процесса.

  • отладочная информация – отображение ошибок (в случае их возникновения), данных о прохождении этапов процесса (включая действия и результат);

  • полный лог – отображение полного лога процесса ETL, описывает, что происходи-ло на каждом из этапов работы процесса. Рекомендовано при настройке процесса для проверки корректности выполнения ETL-процесса;

  • только ошибки – отображение ошибок процесса ETL (в случае их возникновения).

Измените уровень логирования в лог экземпляра на «Полный лог».

Для определения записи результирующей структуры данных этапов в лог в поле «Записывать в протокол результирующие структуры данных этапов» укажите «Да».

Сохраните произведенные изменения.

image031

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

Создание схемы ETL

Схема ETL определяет ход процесса ETL.

Перейдите к настройке схемы с помощью кнопки «Схема ETL», расположенной на панели управления в созданном ранее объекте ETL.

media

Работа со схемой процесса ETL аналогична настройке схем бизнес-процессов: определение схемы процесса ETL осуществляется на рабочей области посредством размещения необходимых элементов и их связывания.

Перейдите к настройке схемы ETL и создайте схему.

image033

Наименования элементов задаются на самой схеме процесса ETL в режиме редактирования элемента (переход к режиму редактирования осуществляется с помощью двойного клика по элементу). Установите наименования для элементов схемы.

image034

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

media

Присвойте типы для каждого элемента схемы:

  • Запрос данных – Источник. Внешний сервис;

  • Обработка ответа – Преобразователь;

  • Удаление нераспознанных данных – Преобразователь;

  • Сохранение – Приёмник. Внутренний;

  • Увеличение даты – Преобразователь.

media

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

media

Настройка схемы ETL

Для перехода к настройкам этапа необходимо на панели инструментов для элемента нажать на кнопку media . После этого будет открытаотроется вкладка с формой настройки этапа.

Настройка этапа «Запрос данных»

Произведите настройку этапа «Запрос данных». На вкладке «Основные параметры» заполните следующие поля:

image040

В группе настроек «Описание структуры ответа» поле «WSDL/JSON» необходимо заполнить структурой, в виде которой будет формироваться ответ на запрос.

В качестве ответа будет использоваться созданный вручную XML-документ на основании информации о структуре ответа, описании структуры документа и примера ответа, полученных на сайте Центрального Банка России. Ответ представляет из себя набор данных в виде таблицы с данными о названии валюты, номинале, курсе на указанную дату, цифровом коде валюты (по стандарту ISO), символьном коде валюты (ISO) и курсе за 1 единицу валюты.

XML-документ для заполнения поля «WSDL/JSON» вы можете найти в Приложении.

Сохраните настройки этапа, в поле «Структура выходов источника» появится код в структурированном виде.

image041

Для настройки запроса и параметров перейдите на вкладку «Параметры запроса».

Заполните поле «Тело запроса». В качестве запроса будет использоваться XML-документ о структуре запроса на сайте Центрального Банка России. Наполнение для этого поля вы можете найти в Приложении.

image042

Создайте новый параметр запроса с помощью кнопки создания. В модальном окне заполните поля:

  • Наименование – Дата загрузки курса;

  • Идентификатор – CURRDATE;

  • Вид параметра – BODY.

media

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

media

В модальном окне появится форма для создания алгоритма. В группе «Общая информация» заполните основную информацию об алгоритме:

  • Наименование – Вернуть дату загрузки курсов валют;

  • Идентификатор – EXCHANGE_RATE_DATE_ALG;

  • Базовый тип – ETL. Загрузка курсов валют.

image045

Также выберите папку алгоритма «Алгоритмы для загрузки курсов валют».

Заполните формулу алгоритма:

image046

На панели инструментов из группы «Источники» вызовите функцию attr. В появившемся модальном окне появится список атрибутов, указанного ранее базового типа объектов. Выберите атрибут «Загрузить с даты» и вставьте его в алгоритм с помощью кнопки «Ок».

image047

Сохраните алгоритм и вернитесь к настройкам параметра запроса, сохраните его тоже с помощью кнопки «Ок».

Сохраните настройки этапа с помощью кнопки image048 на панели управления.

Настройка этапа «Обработка ответа»

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

Чтобы в выходных данных появилась динамическая структура ответа, необходимо раскрыть поля и выделить основную коллекцию, затем выбрать действие «Добавить с сохранением иерархии».

media

Сохраните настройки этапа с помощью кнопки сохранения на панели управления.

Необходимо оптимизировать выходную структуру – удалить лишние на данном этапе поля и оставить поля с данными о коде валюты и курсе. Поле «Vcurs» необходимо оставить для сохранения его значения на этапе сохранения, а поле «VchCode» потребуется для идентификации валюты в системе.

media

Для этого раскройте все поля и удалите следующие элементы с помощью кнопки «Удалить поле»:

  • XmlAttr_xmlns:soap;

  • XmlAttr_xmlns:xsd;

  • XmlAttr_xmlns:xsi;

  • Vcode;

  • Vname;

  • Vnom;

  • XmlAttr_diffgr:id;

  • XmlAttr_msdata:rowOrder;

  • XmlAttr_xmlns;

  • XmlAttr_xmlns:diffgr;

  • XmlAttr_xmlns:msdata;

  • xs:schema;

  • XmlAttr_xmlns.

image051

Если вы случайно удалили нужное поле, вы можете добавить его в таблице слева, выбрав действие «Добавить с сохранением иерархии».

Сохраните настройки этапа.

Далее нужно добавить новые поля в выходную структуру. Для этого необходимо выбрать последнюю вложенную коллекцию и нажать на кнопку «Добавить поле».

media

Добавьте поле для хранения даты запроса курсов валют. В появившемся модальном окне заполните Наименование поля«curr_date», Тип поляDATATIME.

media

После нажатия на кнопку «Добавить» поле отобразится в выходной структуре.

media

Аналогично добавьте еще два поля:

  • «currency_id», тип NUBMER – поле для указания кода валюты из справочника валют;

  • «rub_id», тип NUMBER – поле для указания базовой валюты (рубль) из справочника валют.

media

Сохраните настройки этапа.

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

Перейдите на вкладку «Дополнительно» и в поле «Трансформаторы данных» добавьте новый объект с типом «ETL. Трансформатор данных. По алгоритму».

media

Создайте трансформатор для поля «rub_id», который будет заполнять поле значением из справочника – рубль. Заполните поле Наименование – «Базовая валюта – Рубль». Для того чтобы заполнить поле «Коллекция входных данных», откройте панель и поочередно раскрывайте выпадающий список до тех пор, пока не дойдете до поля «VchCode», а затем выберите его. После этого поле автоматически заполнится значением пути к выбранному элементу.

image057

Аналогично заполните поле «Коллекция выходных данных» путем к элементу «rub_id».

image058

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

image059

В модальном окне выберите тип «Алгоритм. Карточки объектов».

media

Создайте алгоритм «Вернуть идентификатор Рубль» [RETURN_RUB_ID_ALG], базовый тип объектов – «ETL. Загрузка курсов валют». Также выберите папку алгоритма «Алгоритмы для загрузки курсов валют». Алгоритм должен возвращать код валюты «Рубль» из справочника «Валюта» - системного справочника, в котором по умолчанию есть объекты.

Сохраните настройки алгоритм с помощью кнопки на панели управления.

image061

Заполните формулу алгоритма:

image062

Используйте функцию «dict» из группы «Источники» – функцию вставки объекта системы в алгоритм. В появившемся модальном окне выберите тип объектов «Валюта». После этого появится список объектов выбранного типа объектов. Выберите «Рубль» и вставьте его в алгоритм с помощью кнопки «Ок».

image064

Сохраните алгоритм с помощью кнопки «Ок» и вернитесь к настройке трансформатора.

Установите флаг «Игнорировать ошибки» и сохраните трансформатор.

image065

Аналогично создайте новый трансформатор с типом «ETL. Трансформатор данных. По алгоритму». Создайте трансформатор для поля «curr_date», который будет заполнять поле значением даты загрузки курсов валют.

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

  • Наименование – «Дата котировки»;

  • Коллекция входных данных – «VchCode»;

  • Коллекция выходных данных – «curr_date».

Аналогично добавьте новый алгоритм, по которому поле «curr_date» будет принимать значение даты котировки. Для этого в поле «Алгоритм» раскройте панель дополнительных действий и выберите «Добавить». В модальном окне выберите тип «Алгоритм. Карточки объектов».

Создайте алгоритм «Вернуть дату котировки» [RETURN_EXCHANCHE_DATE_ALG], базовый тип объектов – «ETL. Загрузка курсов валют». Также выберите папку для хранения алгоритма «Алгоритмы для загрузки курсов валют». Сохраните настройки алгоритма с помощью кнопки на панели управления.

Заполните формулу алгоритма:

media

Воспользуйтесь функцией attr и в модальном окне выберите атрибут «Загрузить с даты».

image067

Сохраните алгоритм и вернитесь к настройке трансформатора. Установите флаг «Игнорировать ошибки» и сохраните трансформатор.

image068

Аналогично создайте новый трансформатор с типом «ETL. Трансформатор данных. Поиск объекта в справочнике». Создайте трансформатор для поля «currency_id», который будет сопоставлять по идентификатору и заполнять поле значением кода валюты из справочника валют.

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

  • Наименование – «Курируемая валюта»;

  • Коллекция входных данных – «VchCode»;

  • Тип объекта – Валюта;

  • Атрибут типа – Идентификатор;

  • Атрибут с необходимым значением – Код;

  • Коллекция выходных данных – «currency_id».

Также установите флаг «Игнорировать ошибки».

image069

Сохраните настройки трансформатора с помощью кнопки «Ок».

Сохраните настройки этапа с помощью кнопки сохранения на панели управлении.

Настройка этапа «Удаление нераспознанных данных»

Вернитесь к схеме ETL и перейдите к настройке этапа «Удаление нераспознанных данных».

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

Аналогично предыдущему этапу перенесите динамическую структуру входных данных в выходные данные.

Так как для удаления полученных данных данные о коде валют не нужны, удалите поле «VchCode» выходной структуры. Это поле не будет использоваться на этом этапе и сохраняться в системе.

media

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

Добавьте трансформатор с типом «ETL. Трансформатор. Фильтрация по алгоритму».

Заполните поле Наименование«Фильтрация валют». В качестве входных данных выберите поле, обозначающее объекты коллекции «ValuteCursOnDate».

image071

В поле «Условие фильтрации» нужно вставить значение «etlValue("currency_id")!=null». Это условие определяет строки в коллекции входных данных, где поле «currency_id» не пустое. Таким образом в выборку попадут строки, где это поле заполнено.

Установите флаг «Игнорировать ошибки» и сохраните трансформатор с помощью кнопки «Ок».

image072

Сохраните настройки этапа с помощью кнопки сохранения на панели управлении.

Настройка этапа «Сохранение»

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

В поле «Базовый тип объектов» необходимо указать тип объектов, экземпляры которого будут хранить результаты выполнения загрузки валют. Выберите системный примитивный тип объектов «Данные курсов валют», так как он имеет атрибуты для хранения информации о наименовании валюты, датах котировки и курсе.

Примечание: данный тип содержит в себе атрибуты «Дата начала курса» и «Дата окончания курса». Для решения текущей бизнес-задачи требуется только один атрибут для хранения даты. Так как тип «Данные курсов валют» доступен только для чтения и изменить атрибутивный состав бизнес-аналитик не может, необходимо скрыть один из атрибутов в настройках реестра и на визуале.

image073

Снимите флаги «Отобразить результаты ETL без сохранения» и «Очистить лог при успешном выполнении этапа».

image074

Далее требуется связать коллекции загружаемой структуры данных с атрибутами типа объекта для того, чтобы указать данные какой коллекции в какой атрибут должны быть сохранены. Для этого необходимо сначала выбрать необходимую коллекцию слева, затем атрибут справа и нажать на кнопку «Связать». Свяжите коллекцию «currency_id» и Атрибут «Валюта 1».

image075

После этого колонка «Поле из источника» автоматически заполнится значением.

image076

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

  • Валюта 2 – rub_id;

  • Дата начала курса – curr_date;

  • Дата окончания курса – curr_date;

  • Значение курса – Vcurs.

image077

После настройки связей необходимо указать настройки связи входной структуры этапа и структуры результирующего типа. Для этого необходимо создать новый объект в реестре «Настройка связей типов». Необходимо проверять есть ли объекты в реестре базового типа объектов по текущему запросу: если есть, то обновлять их, а если нет – создавать новый экземпляр.

Тип объектов «Данные курсов валют» дочерний для

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

В базовой поставке платформы тип «Данные курсов валют» по умолчанию содержит суррогатный ключ, составленный из полей Валюта 1, Валюта 2, Дата начала. Такой ключ используется для однозначной идентификации записей и поможет исключить дублирование данных.

Заполните поля в появившемся модальном окне:

  • Базовый тип объектов – Данные курсов валют;

  • Тип связи приемника – Альтернативный ключ;

  • Альтернативный ключ – Индекс данных курс валют [Валюта 1, Валюта 2, Дата начала].

image078

Сохраните настройки связи с помощью кнопки «Ок». Сохраните изменения в настройках этапа по кнопке сохранения на панели управления.

Настройка этапа «Увеличение даты»

Вернитесь к схеме ETL и перейдите к настройке этапа «Увеличение даты».

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

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

media

Создайте поле «NextDate» с типом «STRING».

image080

Сохраните изменения в настройках этапа по кнопке сохранения на панели управления.

image081

Перейдите на вкладку «Дополнительно» и в поле «Трансформаторы данных» добавьте новый объект с типом «ETL. Трансформатор данных. По алгоритму».

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

  • Наименование – Увеличение даты;

  • Коллекция выходных данных – $.NextDate.

В поле «Алгоритм» создайте новый, выбрав на панели дополнительных действий «Добавить».

image082

Выберите тип алгоритма «Алгоритм. Карточки объектов».

Создайте алгоритм «Вернуть следующую дату курса» [NEXT_DAY_EXCHANGE_DATE_ALG], Базовый тип объектов – «ETL. Загрузка курсов валют». Также выберите папку алгоритма «Алгоритмы для загрузки курсов валют». Алгоритм будет присваивать атрибуту «Загрузить с даты» значение, больше текущего на 1.

Заполните поле формулы алгоритма:

image083

Воспользуйтесь следующими функциями:

Выполните следующую последовательность чтобы повторить формулу алгоритма:

  • На панели инструментов в группе «Алгоритмы» выберите функцию «var», в модальном окне заполните поле наименования переменной – «actual_date» и создайте переменную;

media

  • После знака присваивания в группе «Даты» вызовите функцию «plusPeriod» и в модальном окне выберите «День»;

media

  • Для того, чтобы в актуальной дате указывалась дата, выбранная пользователем, в добавленной функции удалите второй аргумент и замените его на атрибут «Загрузить с даты» с помощью функции attr» из группы «Источники»;

media

  • На следующей строке вызовите функцию «attr» и в модальном окне установите флаг «Установить значение», а затем выберите атрибут «Загрузить с даты»;

image087

  • Для добавленной функции удалите второй аргумент, на его месте вызовите функцию «var» и выберите переменную «actual_date», чтобы присвоить атрибуты значение переменной;

image088

  • На следующей строке из группы «Алгоритмы» вызовите функцию «return», а затем с помощью функции «attr» добавьте атрибут «Загрузить с даты» (не забудьте снять флаг «Установить значение»).

Сохраните алгоритм, а затем настройки трансформатора с помощью кнопки «Ок».

image089

Сохраните настройки этапа с помощью кнопки сохранения на панели управлении.

Настройка переходов шлюза

Вернитесь к схеме ETL и настройте условие перехода «Да» для шлюза «Требуется увеличение даты?». Перейдите к настройкам перехода аналогично предыдущим этапам

media

В появившейся вкладке добавьте новый алгоритм условия перехода, который будет проверять даты загрузки курсов валют: если значение атрибута «Загрузить с даты» меньше значения атрибута «Загрузить до даты», то процесс пойдет по выбранному потоку к этапу «Увеличение даты». Для этого в поле «Условие перехода (алгоритм)» раскройте панель дополнительных действий и выберите «Добавить».

media

Создайте алгоритм «Проверить требование к увеличению даты» [EXCHANGE_DATE_CHECK_ALG], базовый тип объектов – ETL. Загрузка курсов валют. Также выберите папку алгоритма «Алгоритмы для загрузки курсов валют».

Заполните поле формулы алгоритма:

image092

Воспользуйтесь следующими функциями:

Выполните следующие шаги, чтобы повторить формулу алгоритма:

  1. На панели функций «Инструменты» в группе «Логико-арифметические» вызовите функцию «if»;

  2. В скобках в качестве условия проверьте что атрибут «Загрузить с даты» меньше атрибута «Загрузить до даты», воспользовавшись функцией «attr». Знак «меньше» введите с помощью клавиатуры;

  3. В качестве операторов к выполнению из группы «Алгоритмы» вызовите функцию «return», а затем с помощью клавиатуры введите значение «true».

Сохраните алгоритм с помощью кнопки «Ок».

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

Вернитесь к схеме ETL. Переход по ветке «Нет» должен осуществляться в том случае, если условие, заданное в рамках настройки перехода «Да» шлюза «Требуется увеличение даты?» – не выполняется.

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

image093

Сохраните схему ETL.

Подготовка к запуску ETL

При работе Системы создание нового типа объекта сопровождается автоматическим созданием визуала на основании объекта-родителя. Для того чтобы запустить ETL, необходимо настроить визуал и добавить на него поля для указания дат котировок. Необходимо создать новый визуал и отредактировать его согласно требованиям.

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

Создание визуала для запуска ETL

Настройте визуал вызова ETL. Перейдите к пункту меню «Интеграция»«ETL».

media

В реестре выберите объект ETL «Загрузка курсов валют» и нажмите на кнопку на панели управления - «Выполнить ETL».

image095

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

media

Сохраните визуал и выйдите из режима редактирования.

media

Создайте копию текущего визуала с названием «Визуал для выполнения загрузки курсов валют».

В появившемся модальном окне измените наименование на «Визуал для выполнения загрузки курсов валют» и сохраните с помощью кнопки «Ок».

media

После сохранения будет выбрана последний созданный визуал.

Настройка структуры визуала

Перейдите к редактированию визуала «Визуал для выполнения загрузки курсов валют» с помощью кнопки image096. Добавьте на визуал поля для заполнения даты начала и окончания загрузки курсов валют.

Перетащите группировку «Ряд» в рабочую область настройки визуала и поместите его над остальными рядами.

image101

В этот ряд расположите группировку «Группа атрибутов».

image102

Для группы атрибутов измените наименование на «Входящие параметры».

image103

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

image104

После определения структуры визуала и размещения контейнеров, на панели элементов перейдите на вкладку «Атрибуты», на которой расположен список атрибутов текущего типа объекта.

В колонку слева разместите атрибут «Загрузить с даты», а справа – «Загрузить до даты».

image105

Настройка алгоритмов на визуале

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

Для атрибута «Загрузить с даты» раскройте панель настройки отображения атрибута и перейдите к настройке алгоритма подсветки.

media

В модальном окне создайте новый алгоритм с помощью кнопки «Создать новый».

media

Создайте алгоритм «Проверка начальной даты» [VIS_CHECK_START_DATE_ALG], базовый тип объектов будет выбран автоматически – «ETL. Загрузка курсов валют». Если в результате выполнения алгоритм вернет значение true, то поле окрасится в красный цвет.

Заполните поле формулы алгоритма:

media

Воспользуйтесь функциями:

Выполните следующую последовательность действий, чтобы повторить алгоритм:

  1. Вызовите функцию «if», в качестве условия с помощью функции «attr» проверьте, что атрибут «Загрузить с даты» «больше» атрибута «Загрузить до даты»;

  2. В блоке операторов выберите функцию «color» - на появившейся панели выберите цвет. После этого код цвета автоматически появится в формуле алгоритма.

Сохраните настройки алгоритма, а затем визуала с помощью кнопки «Ок».

Настройка реестра для типа объектов «Данные курсов валют»

Так как у типа объектов «Данные курсов валют» два атрибута, которые в результате выполнения ETL хранят одинаковые значения даты, необходимо скрыть один из таких атрибутов в реестре типа.

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

media

Воспользуйтесь поиском и найдите тип «Данные курсов валют»: выделите его и перейдите в реестр с помощью кнопки «Открыть реестр» на панели управления.

image110

В реестре типа объектов «Данные курсов валют» перейдите в настройки реестра с помощью кнопки image111 на панели управления.

В появившемся модальном окне на вкладке «Настройка колонок» необходимо скрыть атрибут «Дата окончания курса». Для этого в поле «Колонки» установите флаг для атрибута «Дата окончания курса» и перенесите его в поле «Атрибуты для колонок» с помощью кнопок навигации между рабочими полями.

image112

Для атрибута «Дата начала курса» необходимо изменить наименование на «Дата котировки». Для этого в поле «Колонки» установите флаг для атрибута «Дата окончания загрузки» и нажмите на кнопку image113. В появившемся модальном окне измените наименование и примените изменения с помощью кнопки «Сохранить».

media

Сохраните настройки реестра с помощью кнопки «Ок». В результате реестр будет иметь только одну колонку с датой – «Дата котировки».

image115

Запуск ETL

Для запуска настроенного объекта ETL необходимо реализовать несколько способов:

  • Запуск вручную, выбрав объект ETL в реестре;

  • По расписанию, создав и настроив соответствующий тип объектов.

Ручной запуск процесса загрузки данных

Перейдите к пункту меню «Интеграция»«ETL».

media

В реестре выберите объект ETL «Загрузка курсов валют» и нажмите на кнопку на панели управления – «Выполнить ETL».

image095

Выберите ранее настроенный визуал «Визуал для выполнения загрузки курсов валют». Для запуска ETL выберите даты котировок, а затем нажмите на кнопку «Запустить».

image116

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

Если у вас возникли ошибки при выполнении ETL, убедитесь в корректной настройке предыдущих этапов.

image117

Для просмотра информации обо всех запусках ETL, перейдите к реестру указанного в объекте ETL типа стартового объекта «ETL. Загрузка курсов валют».

image118

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

Для просмотра данных, полученных в ходе выполнения ETL, перейдите к реестру типа объектов «Данные курсов валют». Для того, чтобы увидеть подробную информацию по содержанию объекта, необходимо открыть его двойным нажатием.

image119

Запуск процесса загрузки данных по расписанию

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

Для этого перейдите в пункт меню «Администрирование» - «Настройки» - «Расписание запуска действий».

media

Для создания расписания запуска ETL необходимо создать новый объект типа объекта с помощью кнопки создания на панели управления.

Заполните поля:

  • Наименование – Запуск загрузки курсов валют на текущий день;

  • Системное действие – Запуск ETL;

  • Расписание работы действия – Ежедневно (7.00 утра);

  • Расписание действует – Да.

image121

В качестве параметров для запуска ETL выступают значения атрибутов «Загрузить с даты» и «Загрузить до даты», которые по умолчанию заполняются текущим значением даты. Таким образом настройка параметров для запуска процесса не требуется.

Сохраните изменения объекта расписания по кнопке сохранения на панели управления.

Для того, чтобы проверить корректность настроек расписания запуска действий, можно изменить значение в поле «Расписание работы действия» на «Ежеминутно» и сохранить изменения объекта. После реализации автоматического запуска действия по расписанию поля «Последнее выполнение прошло успешно» и «Дата последнего выполнения» заполнятся соответствующими значениями. В результате выполнения в реестрах типов объектов «Данные курсов валют» и «ETL.Загрузка курсов валют» появятся новые экземпляры, аналогично ручному запуску.

Применение ETL

Загруженные данные будут сохранены в типе объектов Данные курсов валют.

Настроенный объект ETL можно использовать в рамках бизнес-процесса для автоматического запуска процесса загрузки курсов валют.

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

Аналогичным образом может быть настроена загрузка данных с этого или других веб-сервисов.