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, количество выходных записей может быть больше, чем количество входных записей. На выходе создается декартово произведение записей, имеющих одинаковый ключ.