Перейти к основному содержимому
Версия: 1.23.3

Импорт данных

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

Механизм импорта SimpleOne поддерживает:

  • различные типы источников данных
  • различные форматы файлов (если в качестве типа источника выбран Файл)

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

подсказка

Требуемая роль: admin, import_admin.

На схеме ниже представлены основные этапы процесса импорта.

Import process

Ключевые понятия

ПонятиеОписание
Источник импортаЗапись, указывающая, какие данные набора для импорта должны быть импортированы.
Набор для импортаЗапись, содержащая ссылки на необработанные данные, загруженные в промежуточную таблицу. Запись также возвращает информацию о состоянии попытки этого импорта.
Таблица импортаАвтоматически сгенерированная таблица, используемая в качестве временного хранилища для импортированных записей перед преобразованием. Структура таблицы формируется автоматически в зависимости от импортируемых данных.
ПреобразованиеПроцесс преобразования данных в соответствии с соотношением таблиц и скриптами преобразований, определяющими исходную таблицу (набор для импорта) и целевую таблицу.
Схема трансформацииЗапись, определяющая соответствие полей исходной и целевой таблиц в виде набора соотношений полей.
Скрипт преобразованийСкрипт, который позволяет настраивать операции импорта с использованием нативного JavaScript, расширенного серверным API SimpleOne.
Соотношение полейЗапись, определяющая связь между полем в исходной таблице и полем в целевой таблице.
Объединение данных

Эта опция позволяет обновлять существующее записи таблицы в процессе преобразования.

Подробнее читайте далее в разделе: Объединение данных (coalesce).

Источники импорта

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

  1. Перейдите в ИмпортИсточники импорта.
  2. Нажмите Создать и заполните поля.
  3. Если вы выбрали тип Файл, нажмите на иконку скрепки и прикрепите нужный файл. Вы можете прикрепить файлы в форматах JSON, XML или Excel.
  4. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.

Поля формы Источники для импорта

ПолеОбязательноОписание
НаименованиеДаУкажите название источника импорта.
Наименование таблицы импортаДаУкажите название временной таблицы импорта.
ТипНет

Выберите тип источника импорта.

Доступные опции для выбора:

  • Файл
  • Текст
  • LDAP
Способ получения файлаНет

Выберите метод добавления файла в источник импорта. Доступные варианты:

  • Вложение

Поле появляется, когда выбран тип Файл.

ФорматДа

Выберите формат файла и прикрепите его к форме. Доступные варианты:

  • JSON
  • XML
  • Excel (опция доступна только когда выбран тип Файл)

Поле появляется, если выбран тип Файл или Текст.

Текст импортаНет

Введите текст в выбранном Формате, который вам нужно импортировать. Поле появляется, когда выбран тип Текст.

Настройка LDAPНет

Нажмите на иконку лупы , чтобы выбрать протокол, который вам необходим.

Поле появляется, когда выбран тип LDAP.

Читайте статью Источник данных LDAP, чтобы узнать больше.

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

ДействиеОписание
Пробная загрузка (20 записей)

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

Не используйте тестовый набор для дальнейшего преобразования.

Загрузить все

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

Используйте этот набор для дальнейшего преобразования.

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

Использование формата JSON


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

  • Файлы JSON должны быть актуальными. Используйте документ RFC 8259 в качестве руководства.
  • Тип данных для использования в структуре JSON один из следующих: объект JSON, массив объектов, оБбъект с массивом объектов. Использование dot-walking не поддерживается.

Объект JSON

  {
"top500": 1,
"name": "More",
"sector": "Oil and gas"
}

Результат: один элемент. В таблице есть поля top500, name, sector и одна запись.

Массив объектов

[ 
{
"top500": 1,
"name": "More",
"sector": "Oil and gas"
},
{
"top500": 2,
"name": "Nevermore",
"sector": "Oil and gas"
}
]

Результат: создан набор для импорта со связанной таблицей. Таблица имеет поля top500, name, sector и содержит две записи.

ОБъект с массивом объектов

// Path for Each Row == exportField
{
"exportField":[
{
"top500":1,
"name":"More",
"sector":"Oil and gas"
},
{
"top500":2,
"name":"Nevermore",
"sector":"Oil and gas"
},
{
"top500": 4,
"name": "Givememore",
"sector": "Oil and gas",
"more_info": "https://instance.example.com/company/34"
}
]
}

Результат: создан набор для импорта со связанной таблицей. Таблица имеет поля top500, name, sector и содержит три записи.

Преобразование имени таблицы импорта и колонок


Во время конвертации данных для импорта системные названия колонок и системные названия таблиц, которые отображаются в поле Наименование таблицы импорта в таблице Источники для импорта, транслитерируются и преобразуются по следующим правилам:

  1. Каждый символ из списка символов кириллицы заменяется на символ, соответствующий порядковому номеру в списке символов латиницы:
Таблица соотнесения
КириллицаЛатиница
аАaA
бБbB
вВvV
гГgG
дДdD
еЕeE
ёЁioIo
жЖzhZh
зЗzZ
иИiI
йЙjJ
кКkK
лЛlL
мМmM
нНnN
оОoO
пПpP
рРrR
сСsS
тТtT
уУuU
фФfF
хХhh
цЦtsTs
чЧchCh
шШshSh
щЩshchShch
ъЪ\\
ыЫyY
ьЬ\\
эЭee
юЮyuYu
яЯyaYa
  1. Затем все символы, не удовлетворяющие регулярному выражению /[^A-Za-z0-9_]+/u, заменяются на нижнее подчеркивание _ . То есть все символы, кроме больших и маленьких букв, цифр и нижнего подчеркивания, заменяются на _.
  2. Текущее имя колонки разбивается на части по символу _, а затем они склеиваются символом _, например, для _DOC_____1 в итоге получим doc_1. При этом повторяющиеся символы нижнего подчеркивания сливаются в один.
  3. Текущее имя колонки приводится к нижнему регистру.
примечание

Если полученное во время конвертации имя колонки пустое, то устанавливается имя imp_invalid_column + номер колонки. Номер колонки определяется ее порядком в таблице, нумерация начинается с 0, например imp_invalid_column0.

  1. К имени добавляется префикс imp, например, imp_spisok_klientov.

Набор для импорта

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

Поля формы Набор для импорта

ПолеОбязательноОписание
НомерНетУникальный номер набора для импорта. Поле заполняется автоматически.
Источник импортаДаПоле содержит соответствующее наименование источника импорта и заполняется автоматически.
Таблица набора импортаДа

Поле содержит наименование временной таблицы импорта и заполняется автоматически.

Системные имена полей таблицы начинаются с префикса imp.

СтатусНет

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

Возможные значения:

  • Загружается – идет загрузка данных в набор для импорта.
  • Загружен – загрузка данных в набор для импорта завершен.
  • Обработан – преобразование набора для импорта обработано.
  • Отменен – загрузка данных отменена.
Краткое описаниеНет

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

Пример значения поля:

Table structure: (top500 | name | sector)

Записи Набора для импорта находятся в отношениях родитель-потомок с записями таблицы Элементы наборов.

Схема трансформации

Схема трансформации представляет собой набор соотношений полей. Укажите этом наборе соотношения полей указывается корреляция между полями временной таблицы импорта и полями целевой таблицы.

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

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

  1. Нажмите на Открыть схему трансформации на форме записи источника импорта, который вы настраиваете.
  2. В появившемся всплывающем сообщении пройдите по ссылке Создать схему трансформации.
  3. Заполните поля в появившейся форме.
  4. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.
подсказка

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

  1. Перейдите в ИмпортСхемы трансформаций, чтобы открыть список соотношений таблиц.
  2. Нажмите Создать и заполните поля.
  3. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.

Поля формы Схемы трансформаций

ПолеОбязательноОписание
НаименованиеДаУкажите отображаемое название схемы трансформации.
АктивнаНетУстановите флажок, чтобы сделать схему трансформации доступной для использования.
Исходная таблицаДаВыберите таблицу, содержащую данные набора для импорта.
Целевая таблицаДаВыберите таблицу, в которую необходимо поместить импортированные данные.
Форсированный импортНет

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

Вы можете найти порядок выполнения механизмов и бизнес-правил в статье Порядок выполнения.

Игнорировать обязательные поляНетУстановите флажок, чтобы игнорировать обязательные поля в целевой таблице.
Использовать скриптНет

Установите флажок, чтобы отобразить поле Скрипт, в котором можно указать скрипт преобразования.

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

СкриптНет

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

Узнайте больше о настройках импорта в разделе API для разработчиков.

Рекомендации к скрипту

Используйте функцию runTransformRow() со следующими параметрами:

  • source – запись Элемента набора, которая будет трансформирована. Вызовите определенное поле из записи, как обычный объект SimpleRecord. Например, source.imp_name.
  • map – запись Схемы трансформации, которая используется для процесса преобразования.
  • log – объект, который содержит методы info, warn, и error. Методы предназначены для регистрации процесса трансформации.
  • target – запись в целевой таблице, которая будет создана или обновлена при трансформации исходной записи. Вызовите определенное поле из записи, как обычный объект SimpleRecord. Например, target.name = source.imp_name. При указании объекта параметра target учитывайте тип поля в целевой таблице.
  • isUpdate – Boolean параметр, который проверяет, обновилась ли целевая запись.

Этот скрипт можно использовать для определения связей полей перед трансформацией. Вы также можете настроить соотношения, создав связанные записи на вкладке Соотношения полей схемы трансформации.

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

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

Скрипт преобразования

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

  1. Перейдите на нужную форму записи Схемы трансформации.
  2. В области Связанные списки выберите вкладку Скрипты преобразований.
  3. Нажмите Создать и заполните поля.
  4. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.

Поля формы Скрипт преобразования

ПолеОбязательноОписание
Схема трансформацииДаУкажите схему трансформации, для которой будет выполняться скрипт.
АктивенНетУстановите флажок, чтобы активировать скрипт.
КогдаДаВыберите, когда выполнять скрипт. Доступные опции:
  • При старте импорта – скрипт запускается в начале преобразования до того, как будет прочитана какая-либо запись элемента набора для импорта.
  • В начале трансформации – скрипт запускается в начале преобразования записи элемента набора для импорта в целевую таблицу.
  • По окончании трансформации – скрипт запускается после преобразования каждой записи элемента набора для импорта в целевую таблицу.
  • При завершении импорта – скрипт запускается, когда все записи элементов набора для импорта преобразованы.
ПорядокНетУкажите порядок, в котором будет выполняться скрипт преобразования. Заполните это поле целым числом.
СкриптНетВведите скрипт, используя серверный API SimpleOne.
внимание

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

Рекомендации к скрипту

Используйте функцию runTransformScript() со следующими параметрами:

  • source – запись Элемента набора, которая будет трансформирована. Вызовите определенное поле из записи, как обычный объект SimpleRecord. Например, source.imp_name.
  • map – запись Схемы трансформации, которая используется для процесса преобразования.
  • log – объект, который содержит методы info, warn и error. Методы предназначены для регистрации процесса трансформации.
  • target – запись в целевой таблице, которая будет создана или обновлена при трансформации исходной записи. Вызовите определенное поле из записи, как обычный объект SimpleRecord. Например, target.name = source.imp_name.

При указании объекта параметра target учитывайте тип поля в целевой таблице. Пример заполнения полей скриптом В начале трансформации:

Скрипт заполнения полей в начале трансформации
(function runTransformScript(source, map, log, target /*undefined onStart*/) {
target.email = source.imp_mail; // string
target.username = source.imp_samaccountname; // string

const parsedPhoneDigits = source.imp_mobile.match(/\d/g);
target.phone = parsedPhoneDigits ? parsedPhoneDigits.join('') : null; // phone

const company = new SimpleRecord('org_company');
company.addQuery('name', 'like', source.imp_company);
company.selectAttributes('sys_id');
company.setLimit(1);
company.query();
target.company = company.next() ? company.sys_id : null; // reference
})(source, map, log, target);
  • ignore – Boolean параметр, который позволяет пропустить запись Элемента набора для импорта.
  • status_message – сообщение, которое описывает процесс трансформации записи.
Скрипт пропуска импорта в начале трансформации
(function runTransformScript(source, map, log, target /*undefined onStart*/) {
const duplicate = new SimpleRecord('task');
duplicate.addEncodedQuery(`number=${source.imp_number}^sys_id!=${target.sys_id}`);
duplicate.selectAttributes('sys_id');
duplicate.setLimit(1);
duplicate.query();
if (duplicate.next()) {
ignore = true; // пропуск строки набора для импорта
status_message = 'The "Number" [number] field should be an unique.'; // записать сообщение в строку набора для импорта -> Описание
}
})(source, map, log, target);

Соотношение полей

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

к сведению

В процессе импорта может потребоваться обновить существующие записи в целевой таблице. Чтобы настроить ключевые отношения между исходной и целевой таблицами, создайте хотя бы одну запись соотношения полей с активным атрибутом Объединить данные. Этот атрибут должен быть активен для соотношения полей, которое содержит отношения между колонками с уникальными значениями. Это может быть адрес электронной почты для пользователя или серийный номер для КЕ.

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

Чтобы создать соотношение полей, выполните следующие действия:

  1. Перейдите в ИмпортСхемы трансформаций.
  2. Откройте запись схемы трансформации, которую вам нужно настроить.
  3. Нажмите Создать соотношения полей. Появится виджет Соотношения полей. Смотрите скриншот в таблице ниже.
  4. Настройте соотношения полей в текущем процессе преобразования.
  5. Нажмите Создать, чтобы сохранить изменения, или Отменить, чтобы отменить изменения.
подсказка

Еще один способ создания соотношения полей:

  1. Перейдите в ИмпортСхемы трансформаций.
  2. Откройте запись схемы трансформации, которую вам нужно настроить.
  3. В связаном списке Соотношения полей нажмите Создать и заполните поля.
  4. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.
  5. Повторите шаги 1–4 для каждой пары полей, которые необходимо соотнести.

Поля формы Соотношения полей

ПолеОбязательноОписание
Схема трансформацииДаУкажите схему трансформации, которая использует эту запись соотношения полей. Поле заполняется автоматически, если запись создается через виджет или из связанного списка.
Исходное полеДаВыберите поле исходной таблицы, которое необходимо преобразовать.
Целевое полеДаВыберите поле целевой таблицы, в котором должны храниться значения из исходной таблицы.
Объединить данныеНет

Если этоn поле активно в процессе преобразования, механизм проверяет, равны ли значения в Целевой таблице значениям в Исходной таблице импорта.

Если значения равны, запись в Целевой таблице будет обновлена; в противном случае, будет создана новая запись.

Эту опцию можно настроить в виджете. После нажатия на Создать соотношения полей на форме записи соотношения таблицы появится виджет, содержащий кнопки Add coalesce и Drop coalesce.

Использовать исходный скриптНетУстановите флажок, чтобы определить скрипт преобразования в поле Скрипт.
СкриптДа

Создайте скрипт, чтобы определить функцию, которая принимает объект записи таблицы Набор для импорта в качестве аргумента и возвращает значение для помещения в Целевое поле.

Поле появляется, когда установлен флажок Использовать исходный скрипт.

Не снимайте флажок Использовать исходный скрипт после создания скрипта; иначе он не применится.

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

Рекомендации к скрипту

Используйте функцию transformEntry() со следующими параметрами:

  • source – запись Элемента набора, которая будет трансформирована. Вызовите определенное поле из записи, как обычный объект SimpleRecord. Например, source.imp_name.
  • target – запись в целевой таблице, которая будет создана или обновлена при трансформации исходной записи. Вызовите определенное поле из записи, как обычный объект SimpleRecord. Например, target.name = source.imp_name. При указании объекта параметра target учитывайте тип поля в целевой таблице.

Запуск преобразования

  1. Перейдите в ИмпортНаборы для импорта.
  2. Откройте набор для импорта, который вам нужно преобразовать. Убедитесь, что статус набора Загружен.
  3. Нажмите Трансформировать.

В результате появится всплывающее сообщение Импорт завершен. Импортированные данные будут перенесены в целевую таблицу.

Последовательность трансформации


На схеме ниже показана последовательность событий, вызванных преобразованием:

  1. Последовательность начинается со скрипта преобразования При старте импорта. Он выполняется в начале преобразования до того, как будет прочитана какая-либо запись Элемента набора.
  2. (опционально) Скрипт, указанный в записи Соотношения полей, принимает объект записи таблицы Элемент набора в качестве аргумента и возвращает значение для помещения в целевое поле.
  3. (опционально) Скрипт, указанный в записи Схемы трансформации, преобразует значения полей из исходной строки в целевую строку.
  4. Скрипт преобразования В начале трансформации выполняется до преобразования исходной строки в целевую.
  5. Между выполнением скриптов В начале трансформации и По окончании трансформации создается или обновляется целевая запись.
  6. Скрипт преобразования По окончании трансформации запускается, когда исходная строка преобразуется в целевую.
  7. Скрипт преобразования При завершении импорта выполняется, когда преобразуются все исходные строки.
примечание

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