DATA_INTERSECTION
DATA_INTERSECTION получает отсортированные данные с двух портов, сравнивает их значения по ключу и обрабатывает записи следующим образом:
-
Входные записи с обоих входных портов, совпавшие по ключу, обрабатываются в соответствии с определённым в атрибуте
transform
преобразованием, и результат отправляется на выходной порт 1. -
Не подошедшие по ключу записи со входного порта 0, отправляются без изменений на выходной порт 0.
-
Не подошедшие по ключу записи из порта 1 - на выходной порт 2.
Записи считаются находящимися на обоих портах, если значения всех полей ключа соединения в них совпадают.
Преобразование должно быть определено, если подключён выходной порт 1.
Перед попаданием в данный шаг данные должны быть отсортированы.
Порты DATA_INTERSECTION:
Тип порта | Номер | Обязательный | Описание | Метаданные |
---|---|---|---|---|
Input | 0 | да | Для входных записей (поток данных A). |
Любые1 |
1 | да | Для входных записей (поток данных Б). |
Любые1 | |
Output2 | 0 | нет | Для неизмененных выходных записей (содержащихся только в потоке A). | Как на Input 0 |
1 | нет | Для измененных выходных записей (содержащихся в обоих входных потоках). | Любые | |
2 | нет | Для неизмененных выходных записей (содержащихся только в потоке Б). | Как на Input 1 |
Часть полей метаданных должна совпадать с полями ключа соединения.
Хотя бы один выходной порт из трех должен быть подключён.
Атрибуты DATA_INTERSECTION:
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
joinKey | да | Ключ, для сравнения записей из входных портов. |
|
transform |
обязательно, если порт | Определение способа пересечения записей со входных портов. |
|
equalNull | нет |
По умолчанию записи с нулевыми значениями ключевых полей считаются равными. Если установлено значение |
|
keyDuplicates | нет |
Разрешает дублирование ключа. По умолчанию установлено значение |
|
Ключ соединения
Выражается как последовательность отдельных подвыражений, отделенных друг от друга точкой с запятой. Каждое подвыражение представляет собой присвоение имени поля из первого входного порта (с префиксом в виде знака доллара $
) слева и имени поля из второго входного порта (с префиксом $
) с правой стороны.
Дублирование данных
Компонент DATA_INTERSECTION может возвращать количество записей, отличное от исходного количества входных записей.
Если для параметра keyDuplicates
установлено значение false
, количество выходных записей может быть меньше количества входных записей, поскольку используется только первая из записей с дубликатом ключа.
Если для параметра keyDuplicates
установлено значение true
, количество выходных записей может быть больше, чем количество входных записей. На выходе создается декартово произведение записей, имеющих одинаковый ключ.