Пример 1. Работа с простыми файлами, преобразование, запись данных в базу. Автоматизация запуска графа.
Описание задачи
Разработать граф для загрузки данных из CSV файла в таблицу. Добавить поля со временем создания и обновления записей. Изменить в поле price символ точки, на запятую.
Настроить расписание и обработчик событий, вызвать созданный граф из другого графа.
Создание графа для преобразования данных и записи в базу
- Чтобы создать новый граф, найдите в структуре своего проекта на панели Project structure папку
grapf
, в которую поместите граф. Кликните правой кнопкой на папку graph, выберите в меню пунктNew grf file
. Задайте имя графа, напримерload_ecommerce_behavior.grf
и нажмите Создать. - Привяжите к графу внешний файл параметров:
панель Outline -> Parameters -> Link parameters ->
вставьте путь к файлу параметров./workspace.prm
в полеfileURL
. - Привяжите также файл с описанием соединения с базой:
панель Outline -> Connections -> Link connection ->
вставьте путь к файлу соединения./conn/demo2.con
в полеdbConfig
. - Перетащите на рабочую область с панели компонентов узлы CsvReader, Map, PostgresSqlDataWriter.
- Соедините порты узлов рёбрами. Вытягивайте ребро из выходного порта (с правой стороны) узла и отпускайте, когда довели курсор до входного порта (с левой стороны) другого узла.
- Создайте 2 схемы данных через редактор схем.
- на панели Outline откройте контекстное меню раздела
Metadata ->
выберите пунктNew metadata
. Задайте имя схемы -input
. Создайте 8 полей типа string:event_time
,event_type
,product_id
,category_id
,category_code
,brand
,price
,user_id
,user_session
/ Чтобы добавить поля в схему используйте кнопку+
. Чтобы удалить ненужное поле - кнопку-
- на панели Outline откройте контекстное меню схемы
output ->
выберите пунктCopy metadata
. Скопируйте схемуinput
и вставьте ее через контекстное меню разделаMetadata -> Paste metadata
. Откройте редактор и смените название схемы наoutput
. Добавьте еще два поля типа date:created_at
,updated_at
- на панели Outline откройте контекстное меню раздела
- Перетащите схему
input
с панели Outline на ребро между узлами CsvReader и Map, а схемуoutput
на ребро между Map и PostgresSqlDataWriter. - Заполните значения атрибутов узлов. Чтобы открыть редактор узла, дважды кликните по его поверхности.
- в CsvReader нужно вставить имя файла-источника данных в поле
fileURL=${DATAIN_DIR}/2019-Nov.csv
- в Map заполнить поле
transform
кодом трансформации на внутреннем языке Onebridge. Код приведён ниже в таблице "Атрибуты MAP". - в PostgresSqlDataWriter выберите имя нужного
dbConnection
из списка, вставьте имя таблицы для записи в полеtable
, и укажите параметры для записи вparameters
- в CsvReader нужно вставить имя файла-источника данных в поле
Полный список значений атрибутов для каждого узла приведён в следующем разделе Атрибуты используемых узлов.
На рисунке ниже представлен созданный граф для загрузки данных из CSV файла в базу:
Атрибуты используемых узлов
Атрибуты CSV_READER:
Атрибут | Значение | Описание |
---|---|---|
phase | 0 | Фаза узла |
node name | CsvReader | Имя узла, отображаемое в рабочей области |
enabled | true | Работоспособность узла |
fileURL | ${DATAIN_DIR}/2019-Nov.csv | Путь к источнику данных |
charset | UTF_8 | Кодировка файла-источника |
dataPolicy | strict | Политика обработки некорректных данных при чтении |
trim | default | Флаг удаления начальных и конечных пробелов в момент прохождения через данный узел |
header | true | Флаг удаления заголовка файла |
quotedStrings | false | Флаг восприятия спец. символов |
quoteChar | both | Спец. символ для атрибута quotedStrings |
fieldDelimiter | , | Разделитель полей |
recordDelimiter | \n | Разделитель записей |
Атрибуты MAP:
Атрибут | Значение | Описание |
---|---|---|
phase | 0 | Фаза узла |
node name | CsvReader | Имя узла, отображаемое в рабочей области |
enabled | true | Работоспособность узла |
transform |
| Код для преобразования данных и присвоения значений выходной схеме данных |
Атрибуты POSTGRESQL_DATA_WRITER:
Атрибут | Значение | Описание |
---|---|---|
phase | 0 | Фаза узла |
node name | CsvReader | Имя узла, отображаемое в рабочей области |
enabled | true | Работоспособность узла |
dbConnection | ./conn/demo2.con | Имя соединения с базой |
table | ecommerce_behavior | Имя таблицы для записи |
parameters |
| Параметры для утилиты psql и оператора copy, используемых узлом POSTGRESQL_DATA_WRITER |
Вызов графа из другого графа
Чтобы вызвать созданный граф из другого графа, используйте узел ExecuteGraph.
- Создайте новый граф, задайте имя, например
startLoad
- На рабочую область нужно поместить единственный компонент - ExecuteGraph
- Откройте редактор атрибутов узла и задайте в поле
jobURL
имя графа, который нужно запустить:jobURL = ./graph/load_ecommerce_behavior.grf
- Сохраните изменения атрибутов узла, сохраните граф
CTRL+S
.
Так будет выглядеть граф для вызова другого графа:
Теперь, если запустить startLoad.grf
, он следом запустит первоначальный граф load_ecommerce_behavior.grf
.
Результат выполнения можно будет увидеть в панели администратора на странице История выполнения.
Создание расписания
Чтобы запустить граф в определенное время в автоматическом режиме, можно использовать расписание.
- Для этого в панели администратора на странице Расписания диалог создания расписаний.
- Задайте имя -
Расписание запуска startLoad.grf
, периодичность -Один раз
, время исполнения, выберите проект и граф. Сохраните расписание.
Граф будет запущен в назначенное время.
Результат выполнения графа отобразится в панели администратора на странице История выполнения. На вкладке Обзор в поле "Тип запуска" будет указано по расписанию
, а в "Пользователь" - root
.
Создание обработчика событий
Если нужно, чтобы граф запускался по событию - нужно настроить обработчик для события. Триггерным событием для обработчика может быть окончание работы графа с определенным статусом либо создание/удаление файла в указанной директории.
- В панели администратора, на странице Обработчики событий, вызовите диалог создания обработчика кнопкой Новый обработчик.
- Задайте название обработчика, например,
Поступил файл
. Выберите запускающее событие -Файл
и укажите необходимость проверить добавление файла в директорию/srv/projects/DEMO/data-in/*.csv
. Задайте действие, которое надо выполнить -Запуск графа
и его параметры: проект -DEMO
, граф -/graph/startLoad.grf
. Сохраните обработчик.
Когда триггерное событие случится, указанный в поле "Начало" граф будет запущен. Проверить выполнение графа можно на истории выполнения. На вкладке Обзор в поле "Пользователь" будет root
, а в поле "Тип запуска" будет указано по событию
.