DATA_INTERSECTION

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

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

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

  • Не подошедшие по ключу записи из порта 1 - на выходной порт 2.

Записи считаются находящимися на обоих портах, если значения всех полей ключа соединения в них совпадают.

Преобразование должно быть определено, если подключён выходной порт 1.

Перед попаданием в данный шаг данные должны быть отсортированы.

Порты DATA_INTERSECTION:

Тип портаНомерОбязательныйОписаниеМетаданные
Input0даДля входных записей (поток данных A).

Любые1

1даДля входных записей (поток данных Б).

Любые1

Output2

0нетДля неизмененных выходных записей (содержащихся только в потоке A).Как на Input 0
1нетДля измененных выходных записей (содержащихся в обоих входных потоках).Любые
2нетДля неизмененных выходных записей (содержащихся только в потоке Б).Как на Input 1
1

Часть полей метаданных должна совпадать с полями ключа соединения.

2

Хотя бы один выходной порт из трех должен быть подключён.

Атрибуты DATA_INTERSECTION:

АтрибутОбязательныйОписаниеВозможные значения
joinKeyдаКлюч, для сравнения записей из входных портов.

joinKey="$field1=$field1"

transform

обязательно, если порт Output[1] подключён

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

function integer transform() {
    $out[0] = $in[0];
    $out[1] = $in[0] + $in[1];
    $out[2] = $in[1];
return ALL;
}
equalNullнет

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

equalNull="true" по умолчанию

keyDuplicatesнет

Разрешает дублирование ключа. По умолчанию установлено значение true, записи с повторяющимися значениями ключей допускаются. В противном случае, для объединения используется только первая запись.

keyDuplicates="true" по умолчанию

Ключ соединения

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

Дублирование данных

Компонент DATA_INTERSECTION может возвращать количество записей, отличное от исходного количества входных записей.

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

Если для параметра keyDuplicates установлено значение true, количество выходных записей может быть больше, чем количество входных записей. На выходе создается декартово произведение записей, имеющих одинаковый ключ.