← Назад до блогу

Нода Merge в n8n: об'єднання двох гілок без дублікатів

Посібник з ноди Merge в n8n: як об'єднати дві гілки без дублікатів і втрачених елементів, враховуючи збіг полів і конфлікти назв.

Рука вирівнює два потоки паперових карток в один канал, що символізує об'єднання гілок нодою Merge в n8n.

Перевірено за наведеними джерелами .

Передумови: що потрібно перед об'єднанням двох гілок

Перш ніж з'єднати дві гілки в одну, переконайтеся, що нода Merge в n8n отримує потрібні дані для узгодження. Офіційна документація n8n описує ноду Merge як стандартний спосіб об'єднати дані з окремих гілок або нод назад в один потік — незалежно від того, чи стався поділ раніше у workflow, чи ці дві ноди взагалі ніколи не належали до однієї гілки.

Sources: Merge data | Build | n8n Docs

Мета: об'єднати дві гілки в один точний потік

Мету легко сформулювати, але легко й помилитися: взяти дві гілки workflow і отримати один потік елементів, у якому нічого не дублюється і нічого з жодної гілки непомітно не зникає. Нода Merge в n8n створена саме для цього завдання, але саме від вибраних вами налаштувань залежить, чи отримаєте ви чисте об'єднання, чи потік, повний дублікатів або втрачених елементів.

Sources: Merge data | Build | n8n Docs

Кроки: налаштування ноди Merge в n8n

Чотири робочі станції, що показують вирівнювання, збіг і об'єднання елементів гілок в одну доріжку.
Концептуальна ілюстрація кроків налаштування ноди Merge в n8n для об'єднання двох гілок.

Почніть із вирішення того, як дві гілки мають співвідноситися одна з одною. Нода Merge в n8n пропонує налаштування Mode із кількома окремими поведінками, і саме вибраний вами режим визначає, чи отримаєте ви дублікати елементів, втрачені елементи, чи чисте об'єднання двох гілок.

Режими ноди Merge та коли їх використовувати
РежимЩо він робитьНайкраще використовувати, коли
AppendПоміщає кожен елемент з обох гілок в один список, один за іншимВам потрібні просто всі елементи з обох гілок, без узгодження за ключем чи позицією
Combine by Matching FieldsПарує елементи з кожної гілки, що мають однакове значення у вибраному поліОбидві гілки представляють одні й ті самі записи, наприклад за ID або email, і ви хочете отримати один об'єднаний запис на кожен збіг
Combine by PositionПарує перший елемент Input 1 з першим елементом Input 2, другий із другим і так даліОбидві гілки надійно видають однакову кількість елементів у тому самому порядку

Після того як ви обрали Combine, налаштуйте його свідомо, а не приймайте перший варіант, який побачите.

Покрокове налаштування ноди Merge

  1. Оберіть режим: Вирішіть, чи потрібен вам Append, Combine by Matching Fields, чи Combine by Position, залежно від того, як пов'язані дві гілки.
  2. Налаштуйте поля збігу: Для Combine by Matching Fields оберіть поле або поля, що ідентифікують один і той самий запис в обох гілках.
  3. Оберіть налаштування Multiple Matches: Вирішіть, чи включати всі збіги, чи лише перший збіг для кожної пари, що збіглася.
  4. Перевірте на конфлікти назв полів: Перед об'єднанням перевірте, чи є поля з однаковою назвою в обох гілках.

Sources: Merge | Nodes | n8n Docs, Merge data | Build | n8n Docs, Merge Node Only Outputting 1 Instead of 2 Items - Questions - n8n Community

Очікувані результати: як виглядає правильно об'єднаний вивід

Коли нода Merge в n8n налаштована правильно, кількість елементів на виході відповідає тому, що очікується від обраного вами режиму: Append дає суму кількостей елементів обох гілок, Combine by Matching Fields дає один елемент на кожну пару, що збіглася, а Combine by Position дає один елемент на кожну позицію. Значення полів мають надходити з того входу, який ви мали на увазі, і жоден запис не повинен з'являтися більше одного разу, якщо тільки ви свідомо не обрали налаштування, що включає всі збіги.

Sources: Merge | Nodes | n8n Docs, Merge data | Build | n8n Docs, Merge Node Only Outputting 1 Instead of 2 Items - Questions - n8n Community

Усунення проблем із дублікатами елементів

Два кошики: один із перекриваними дублікатами бирок, інший з акуратно розставленими унікальними бирками.
Ілюстративне порівняння виводу, повного дублікатів, і правильно узгодженого результату об'єднання.

Якщо об'єднаний вивід має більше елементів, ніж ви очікували, спершу перевірте налаштування Multiple Matches. Include All Matches спеціально розроблено так, щоб виводити окремий елемент для кожного знайденого збігу, тож повторюване значення поля в будь-якій із гілок навмисно, а не випадково, створює кілька елементів на виході.

Дублікати також з'являються, коли самі вхідні дані вже містять дублікати записів ще до того, як вони потрапляють у Merge. В одному задокументованому випадку у workflow на n8n Cloud, що працював на версії 1.67.1, користувач об'єднував дані за Matching Fields після кроків Split Out і HTTP Request і виявив на виході більше елементів, ніж на вході; модератор спільноти встановив, що причиною були дублікати записів, які вже були присутні в обох вхідних гілках, оскільки нода Merge за задумом не дедуплікує свої входи. Перш ніж вважати винною ноду, перевірте, що насправді надсилає кожна гілка.

Sources: Merge | Nodes | n8n Docs, Merge node creating duplicate records - Questions - n8n Community

Усунення проблем із втраченим або зупиненим виводом

Втрачені елементи зазвичай пов'язані з нерівною кількістю елементів на вході. Коли дві гілки, що подаються в Merge, надсилають різну кількість елементів, n8n у режимі Combine обробляє елементи лише до кількості елементів Input 1, тож будь-які зайві елементи в Input 2 понад цю кількість відкидаються. У гілці обговорень спільноти 2023 року було зазначено пов'язаний ризик: якщо кожна гілка гарантовано видає лише один елемент, Combine by Position парує їх чисто, але будь-яка невідповідність у цій кількості непомітно відкидає елемент.

Інший тип збою виглядає як workflow, що ніколи не завершується, а не той, що втрачає дані. Та сама гілка обговорень 2023 року описує дизайн, за якого два окремі тригери запускають кожен свій власний запуск, тож один запуск workflow досягає Merge з даними лише в одній гілці, і нода залишається чекати вхід, якого ніколи не отримає.

Незалежний технічний блог повідомляє, без підтвердження в офіційній документації n8n, що за замовчуванням нода Merge чекає на обидва входи і може зависнути безкінечно, якщо одна гілка законно не видає жодного елемента. Це джерело описує опцію на кшталт 'Only One Input' як спосіб дозволити виконанню продовжуватися лише з одним наявним входом, хоча точна назва цієї опції не підтверджена в офіційній документації, наданій тут.

Sources: Merge | Nodes | n8n Docs, Merge Node Only Outputting 1 Instead of 2 Items - Questions - n8n Community, n8n Merge Node: Combine, Multiplex, Pass-Through Explained | Emil Ingemar Karlsson

Рекомендації для workflow, що належать команді

Кілька звичок допомагають зробити ноду Merge в n8n передбачуваною, коли за workflow відповідає більше однієї людини.

Одна деталь, яку варто перевірити самостійно: офіційний довідник по ноді Merge, розглянутий тут, не вказує, яке налаштування Multiple Matches є типовим за замовчуванням, тож перевірте це у своєму власному екземплярі ноди, перш ніж на нього покладатися.

Sources: Merge | Nodes | n8n Docs, Merge node creating duplicate records - Questions - n8n Community, Merge Node Only Outputting 1 Instead of 2 Items - Questions - n8n Community, n8n Merge Node: Combine, Multiplex, Pass-Through Explained | Emil Ingemar Karlsson

Спробуйте на практиці

Практичні завдання з n8n

Оберіть завдання й створіть робочий воркфлоу у власному середовищі n8n – до кожного завдання є п’ять поступових підказок.

Спробувати практичне завдання

Для вашої команди

Програми навчання n8n для однієї команди чи відділу – на вашому власному екземплярі n8n, з вашими інструментами й даними.

Навчання для вашої команди