Соединить таблицы Версия 1 (Net)

Группа действий: Таблицы


Описание

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


Настройки

СвойствоАнгл. наименованиеОписаниеТипПример заполненияОбязательность
Параметры
Первая таблицаFirst tableТаблица, в которую будут добавлены данные из второй таблицы. Результаты действия будут сохранены в текущей таблице.Robin.DataTable
Да
Вторая таблица
Second table
Таблица, данные которой будут добавлены к первой таблице.Robin.DataTable.
Да
Тип соединенияConnection type

Выпадающий список из элементов:  Внутреннее, Левое, Полное.


Тип операции объединения таблиц


Robin.String
Да
Условие соединения
Connection condition
Столбцы, по которым будут объединены таблицы.Robin.Collection
Да

Особые условия использования

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


Логика выпадающего списка "Тип соединения":

  • "Внутреннее соединение" - Inner join. Соединяются по горизонтали значения, которые совпадают. Недостающие столбцы дописываются.
  • "Левое соединение" - Left join. Берутся все значения из первой таблицы и добавляются только те, которые совпадают из второй.  Нулевые значения вставляются в столбец для строк из DataTable1, которые не имеют совпадения в строках DataTable2.
  • "Полное соединение" - Full join. Берутся все данные из всех таблиц, дописываются пробелы там, где не сошлись ключи. Значения Null добавляются в строки из обеих таблиц, которые не совпадают.

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

Можно объединять одну и ту же таблицу, робот не выдаст ошибку.

Все изменения применяются к первой таблице.

Условие

Входные данные

Результат

Тип соединения - Внутреннее

{ID} = {ID}


DT1

DT2

Тип соединения - Левое

{ID} = {ID}

те же

Тип соединения - Полное

{ID} = {ID}

те же

Тип соединения - Полное

{rank_id}={rank_id}

{store_id}={store_id}


https://learndb.ru/articles/article/28

Описание параметра "Условие соединения" Robin.Collection:

  • Коллекция строк условий для объединения таблиц по заданным столбцам.
  • Каждая строка это условие вида: [столбец первой таблицы][пробел][операция][пробел][столбец второй таблицы] ИЛИ [столбец первой таблицы][операция][столбец второй таблицы]. Т.е. условие может быть введено как с пробелами, так и без пробелов. Все равно будет распознано роботом корректно. Слева всегда указывается название\индекс столбца из первой таблицы, поиск столбца с таким названием или индексом ведется только в первой таблице. Аналогично, справа указывается название\индекс столбца из второй таблицы, поданной на вход. 
  • Список допустимых операций: =, <>, >, <, >=, <=
  • Вместо имени столбца можно использовать его индекс, нумерация начинается с 1.
  • При написании условия соединения водной строке можно столбец одной таблицы указывать через название, а столбец другой - через индекс.
  • Название столбцов должны быть указаны в {}, а индекс столбца - без скобочек, т.е. вот так {5} - это название, просто 5 - индекс.
  • Если пользователь указал название столбца без {}, действие не выдаст сразу ошибку, а попробует найти значение среди названий столбцов Но если такое название состоит из нескольких слов с пробелами, то робот вернет ошибку бОльшего количества операторов. Название столбца, заключенное в {}, может содержать любое кол-во пробелов; например, {ФИО сотрудников отдела} = {ID}, действие не вернет ошибку.
  • Если на вход подается некорректная строка, робот не смог ее распознать, так как в ней больше операторов, чем нужно, тогда робот выдаст ошибку.
  • В коллекции можно указать несколько условий. Каждое условие должно быть записано в отдельном элементе коллекции.
  • Если указано несколько условий соединения, то действие при соединении таблиц должно учитывать все указанные условия, а не любое из них. Т.е. между условиями стоит логическое "И", а не "ИЛИ".
  • Примеры строк коллекции:
    ID = UserID
    {ID} = {UserID}
    1 > UserID
    1 <> 5
    1>UserID.


Пример использования

Задача: существует 2 таблицы в Excel , необходимо их объединить по типу соединения "внутреннее" (Соединяются по горизонтали значения, которые совпадают. Недостающие столбцы дописываются.). Объединение сделать по условию: {Должность} = {Code}

 и 

Решение: воспользоваться действиями "Открыть", "Взять таблицу", "Соединить таблицы". 

Реализация:

  1. Собрать схему робота, состоящего из действий:
  2. Настроить параметры действия "Открыть" для первого и второго документа (таблицы).


  3. Настроить параметры действия "Взять таблицу" для первого и второго документа (таблицы).
  4. Настроить параметры действия "Соединить таблицы". В поле "Условие соединения"  указать: {Должность} = {CODE}



  5. Запустить робота по кнопке "Старт" в верхней панели. 


Результат:

Программный робот отработал успешно. Таблицы соединены. Результат объединения таблиц будет складываться в первую входную таблицу.

 

  • Нет меток