Слияние данных
Объединение данных из нескольких потоков в n8n
Merge Node
Заголовок раздела «Merge Node»Нода Merge объединяет данные из нескольких входов.
Режимы слияния
Заголовок раздела «Режимы слияния»Объединение всех items в один поток:
Input 1: [A, B]Input 2: [C, D]───────────────Output: [A, B, C, D]Использование: Собрать данные из разных источников в один список.
Combine
Заголовок раздела «Combine»Объединение по позиции (индексу):
Input 1: [A1, A2, A3]Input 2: [B1, B2, B3]────────────────────Output: [A1+B1, A2+B2, A3+B3]Использование: Добавить данные из одного источника к другому.
Multiplex
Заголовок раздела «Multiplex»Все возможные комбинации:
Input 1: [A, B]Input 2: [1, 2]──────────────Output: [A+1, A+2, B+1, B+2]Использование: Создание всех комбинаций (например, продукты × регионы).
Choose Branch
Заголовок раздела «Choose Branch»Выбор одного потока данных:
| Опция | Описание |
|---|---|
| Output Type | First non-empty / All |
| Priority | Порядок приоритета |
Использование: Fallback логика — использовать данные из первого успешного источника.
Расширенные режимы Combine
Заголовок раздела «Расширенные режимы Combine»By Field
Заголовок раздела «By Field»Объединение по значению поля (аналог JOIN):
Input 1: Input 2:┌────┬───────┐ ┌────┬─────┐│ id │ name │ │ id │ age │├────┼───────┤ ├────┼─────┤│ 1 │ John │ │ 1 │ 30 ││ 2 │ Jane │ │ 2 │ 25 │└────┴───────┘ └────┴─────┘
Output (by field "id"):┌────┬───────┬─────┐│ id │ name │ age │├────┼───────┼─────┤│ 1 │ John │ 30 ││ 2 │ Jane │ 25 │└────┴───────┴─────┘Настройка Join
Заголовок раздела «Настройка Join»| Параметр | Описание |
|---|---|
| Join Mode | Inner / Left / Right / Full |
| Field to Match | Поле для сопоставления |
| Output Data From | Both / Input 1 / Input 2 |
Только совпадающие записи из обоих источников.
Все записи из Input 1 + совпадения из Input 2.
Все записи из Input 2 + совпадения из Input 1.
Все записи из обоих источников.
Примеры
Заголовок раздела «Примеры»Объединение данных из API
Заголовок раздела «Объединение данных из API»Настройка:
- Mode: Combine
- Type: By Field
- Field Input 1:
userId - Field Input 2:
userId
Fallback при ошибке
Заголовок раздела «Fallback при ошибке»Настройка Merge:
- Mode: Choose Branch
- Output Type: First Non-Empty
Обогащение данных
Заголовок раздела «Обогащение данных»Последовательное обогащение:
- Merge Products + Categories by
categoryId - Merge результат + Prices by
productId
Compare Datasets
Заголовок раздела «Compare Datasets»Сравнение двух наборов данных:
| Режим | Описание |
|---|---|
| Same | Items, присутствующие в обоих |
| Different | Items, различающиеся |
| Only in First | Items только в первом наборе |
| Only in Second | Items только во втором наборе |
Пример: Синхронизация
Заголовок раздела «Пример: Синхронизация»Aggregate Node
Заголовок раздела «Aggregate Node»Агрегация items в один:
Режимы агрегации
Заголовок раздела «Режимы агрегации»| Режим | Результат |
|---|---|
| Individual Fields | Выбранные поля в массивы |
| All Item Data | Все данные в один массив |
Пример: Сбор email’ов
Заголовок раздела «Пример: Сбор email’ов»Input:[{email: "a@x.com"}, {email: "b@x.com"}, {email: "c@x.com"}]
Aggregate by field "email":[{emails: ["a@x.com", "b@x.com", "c@x.com"]}]Split Out Node
Заголовок раздела «Split Out Node»Разделение массива на отдельные items:
Input:[{tags: ["a", "b", "c"]}]
Split by field "tags":[{tags: "a"}, {tags: "b"}, {tags: "c"}]Паттерны
Заголовок раздела «Паттерны»Fan-out / Fan-in
Заголовок раздела «Fan-out / Fan-in»Lookup Table
Заголовок раздела «Lookup Table»// В Code node после Mergeconst items = $input.all();const lookup = $('Lookup Table').first().json;
return items.map(item => ({ json: { ...item.json, categoryName: lookup[item.json.categoryId] || 'Unknown' }}));Следующие шаги
Заголовок раздела «Следующие шаги»- Циклы — итерация по данным
- Трансформация — преобразование данных
- Логика потоков — условия и ветвление