CROSS_JOIN
CROSS_JOIN создает декартово произведение записей из подключенных входных портов.
Каждая строка из первого порта соединяется с каждой строкой из последующих портов, в результате получаются все возможные сочетания значений со всех портов. Возможно преобразование данных с помощью атрибута transform.
CROSS_JOIN автоматически передаёт метаданные на выходной порт в соответствии с метаданными на его входных портах.
Заметка: при обработке очень большого количества записей, на жёстком диске могут быть созданы временные файлы с обрабатываемыми записями. Это предотвращает чрезмерное использование оперативной памяти.
Порты CROSS_JOIN:
Тип порта | Номер | Обязательный | Описание | Метаданные |
---|---|---|---|---|
Input | 0 | да | Главный входной порт | любые |
1-n | нет | Ведомый входной порт(ы) | ||
Output | 0 | да | Для выходных записей |
Атрибуты CROSS_JOIN:
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
transform |
нет | Функция преобразования данных, определённая в графе |
|
Пример.
Создать таблицу со всеми возможными сочетаниями игроков в бильярд из двух команд:
Игроки первой команды:
Вася
Маша
Никита
Игроки второй команды:
Алёна
Петя
Лиза
Решение: Нужно только подключить источники данных к портам компонента CROSS_JOIN. Настройка атрибутов компонента не требуется.
В результате получится такой набор пар игроков в бильярд:
Вася | Алёна
Вася | Петя
Вася | Лиза
Маша | Алёна
Маша | Петя
Маша | Лиза
Никита | Алёна
Никита | Петя
Никита | Лиза
Заметка: Ребро, по которому передаётся наибольшее количество записей, должно быть подключено к первому входному порту.