Экспорт

Выгрузка данных из системы

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

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

Создадим следующую схему схему:

Для того, чтобы получить из системы колонки, которые мы хотим видеть в excel файле, в нашем случае данные о товарах, вписываем их в схему PIMInput:

Чтобы данные полетели на конкретный сервер в контексте PIMOutput пишем необходимые данные:

  • server - url, путь к вашему серверу (каждой компании выдается свой путь);
  • user - username, имя пользователя, под которым будет производиться запись;
  • password -password, пароль пользователя.

Прописываем для PIMInput следующие опции:

Данные url, user и password берем из контекста.

entity - Куда будут записываться данные. Существуют различные опции:

  • Item - объект;
  • Item Relation - зависимости объекта;
  • Type - тип, Attribute - атрибут;
  • Atribute Group - группа атрибутов;
  • Relation - зависимость;
  • User - пользователь;
  • Role - Роль;
  • List of values - список значений.

(В нашем job мы будем использовать Item, тк. выгружаем объекты)

  • where - какие именно данные вы хотите экспортировать. Формат запроса описан в разделе "Язык запросов";

Для того, чтобы вывести все данные о товарах, у которых parentIdentifier - man_t_shirt, прописываем следующее:

В разделе "Язык запросов" вы можете видеть, что в синтаксисе находимого поля используются "", но в Talend ковычки не нужны!

  • order - в каком порядке делать экспорт. Например, мы можем сортировать по атрибуту id и по возрастанию:
  • page size - сколько записей получать за один запрос к серверу. Это может влиять на производительность экспорта, если вы выгружаете много данных, то небольшое значение этого параметра приведет к увеличению количества запросов и соответственно к большему времени работы.

Для того, чтобы отследить ошибки можно выбрать опцию Show debug output. Если эта опция выбрана, то система будет выводить дополнительную отладочную информацию во время работы.

Чтобы вывести данные в необходимом нам виде, для начала в схеме tJavaRow прописываем их:

А затем уже и в самом tJavaRow:

В результате работы схемы, мы получаем excel файл с данными, которые мы и прописывали в PIMInput и tJavaRow:

Нахождение файлов не связанных с товарами

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

Для того, чтобы найти все картинки, не связанные с товарами, мы создадим следующую схему:

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

Для того, чтобы получить необходимые нам файлы, вписываем в схему PIMInput: identifier и name_en

Чтобы данные полетели на конкретный сервер в контексте PIMOutput пишем необходимые данные:

  • server - url, путь к вашему серверу (каждой компании выдается свой путь);
  • user - username, имя пользователя, под которым будет производиться запись;
  • password -password, пароль пользователя.

Прописываем для PIMInput следующие опции:

Данные url, user и password берем из контекста.

entity - Куда будут записываться данные. Существуют различные опции:

  • Item - объект;
  • Item Relation - зависимости объекта;
  • Type - тип, Attribute - атрибут;
  • Atribute Group - группа атрибутов;
  • Relation - зависимость;
  • User - пользователь;
  • Role - Роль;
  • List of values - список значений.

(В нашем job мы будем использовать Item, тк. выгружаем объекты)

  • where - какие именно данные вы хотите экспортировать. Формат запроса описан в разделе "Язык запросов";

Для того, чтобы найти файлы, прописываем в условие typeIdentifier - image:

В разделе "Язык запросов" вы можете видеть, что в синтаксисе находимого поля используются "", но в Talend ковычки не нужны!

  • order - в каком порядке делать экспорт.

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

Для того, чтобы отследить ошибки можно выбрать опцию Show debug output. Если эта опция выбрана, то система будет выводить дополнительную отладочную информацию во время работы.

На выходе в tJavaRow мы получаем идентификатор и идентификатор картинки:

А затем уже и в самом tJavaRow пишем код:

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

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

В PIMRowInput прописываем entity - Item Relation.

в where пишем следующее условие:

Для того, чтобы отследить сколько связей между файлами и картинками не найдено, после PIMRowInput ставим два выхода FLOW - найдено и Reject - не найдено:


После нахождения всех файлов без связей, дальше за tLogRow вы сможете написать схему для создания связей с помощью PIMOutput.

Выгрузка файлов из системы

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

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

Чтобы данные полетели на конкретный сервер в контексте PIMOutput пишем необходимые данные:

  • server - url, путь к вашему серверу (каждой компании выдается свой путь);
  • user - username, имя пользователя, под которым будет производиться запись;
  • password -password, пароль пользователя.

Прописываем для PIMInput следующие опции:

Данные url, user и password берем из контекста.

entity - Куда будут записываться данные. Существуют различные опции:

  • Item - объект;
  • Item Relation - зависимости объекта;
  • Type - тип, Attribute - атрибут;
  • Atribute Group - группа атрибутов;
  • Relation - зависимость;
  • User - пользователь;
  • Role - Роль;
  • List of values - список значений.

(В нашем job мы будем использовать Item, тк. выгружаем объекты)

  • where - какие именно данные вы хотите экспортировать. Формат запроса описан в разделе "Язык запросов";

Для того, чтобы выгрузить файлы, у которых загружена картинка

в where прописываем следующее:

В разделе "Язык запросов" вы можете видеть, что в синтаксисе находимого поля используются "", но в Talend ковычки не нужны!

  • order - в каком порядке делать экспорт.

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

Для того, чтобы отследить ошибки можно выбрать опцию Show debug output. Если эта опция выбрана, то система будет выводить дополнительную отладочную информацию во время работы.

В tJavaRow подготавливаем данные. Нам необходимо взять id файла и путь на файловой системе, куда будут записываться файлы.

Путь мы можем задать с помощью контекста + оригинальное имя файла.

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

В результате работы схемы, файлы из системы выгрузятся на указанный вами путь: