Перейти к содержимому

Слияние данных

Объединение данных из нескольких потоков в n8n

Нода Merge объединяет данные из нескольких входов.

Объединение всех items в один поток:

Input 1: [A, B]
Input 2: [C, D]
───────────────
Output: [A, B, C, D]

Использование: Собрать данные из разных источников в один список.

Объединение по позиции (индексу):

Input 1: [A1, A2, A3]
Input 2: [B1, B2, B3]
────────────────────
Output: [A1+B1, A2+B2, A3+B3]

Использование: Добавить данные из одного источника к другому.

Все возможные комбинации:

Input 1: [A, B]
Input 2: [1, 2]
──────────────
Output: [A+1, A+2, B+1, B+2]

Использование: Создание всех комбинаций (например, продукты × регионы).

Выбор одного потока данных:

ОпцияОписание
Output TypeFirst non-empty / All
PriorityПорядок приоритета

Использование: Fallback логика — использовать данные из первого успешного источника.

Объединение по значению поля (аналог 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 ModeInner / Left / Right / Full
Field to MatchПоле для сопоставления
Output Data FromBoth / Input 1 / Input 2

Только совпадающие записи из обоих источников.

Настройка:

  • Mode: Combine
  • Type: By Field
  • Field Input 1: userId
  • Field Input 2: userId

Настройка Merge:

  • Mode: Choose Branch
  • Output Type: First Non-Empty

Последовательное обогащение:

  1. Merge Products + Categories by categoryId
  2. Merge результат + Prices by productId

Сравнение двух наборов данных:

РежимОписание
SameItems, присутствующие в обоих
DifferentItems, различающиеся
Only in FirstItems только в первом наборе
Only in SecondItems только во втором наборе

Агрегация items в один:

РежимРезультат
Individual FieldsВыбранные поля в массивы
All Item DataВсе данные в один массив
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"]}]

Разделение массива на отдельные items:

Input:
[{tags: ["a", "b", "c"]}]
Split by field "tags":
[{tags: "a"}, {tags: "b"}, {tags: "c"}]
// В Code node после Merge
const items = $input.all();
const lookup = $('Lookup Table').first().json;
return items.map(item => ({
json: {
...item.json,
categoryName: lookup[item.json.categoryId] || 'Unknown'
}
}));