🔗

ادغام

Merge

ترکیب و ادغام داده‌ها از چند منبع مختلف

منطق و کنترل
متوسط
ویژه
۰بازدید
اشتراک‌گذاری:
مستندات رسمی

نمای کلی

نود Merge به شما اجازه می‌دهد داده‌های ورودی از 2 یا چند نود را با هم ترکیب کنید.

قابلیت‌های کلیدی:

  • ترکیب داده‌ها از چند منبع
  • ادغام بر اساس کلید مشترک (Key)
  • انتخاب روش ادغام (Append, Merge by Key, Wait, ...)
  • حفظ یا حذف تکراری‌ها
  • اولویت‌دهی به یکی از ورودی‌ها

کاربردها:

  • ترکیب اطلاعات از چند API
  • یکپارچه‌سازی داده‌های کاربر از منابع مختلف
  • ادغام نتایج Search از چند منبع
  • همگام‌سازی دیتابیس‌ها
  • ترکیب داده‌های اصلی با متادیتا

حالت‌های Merge:

  • Append: الحاق داده‌ها به هم (یکی پشت سر دیگری)
  • Merge By Key: ادغام بر اساس کلید مشترک
  • Merge By Position: ادغام بر اساس موقعیت (ردیف به ردیف)
  • Multiplex: ترکیب هر ردیف ورودی 1 با همه ردیف‌های ورودی 2
  • Wait: منتظر بماند تا همه ورودی‌ها آماده شوند

کاربردهای متداول

1. ترکیب اطلاعات کاربر از چند جدول

ادغام اطلاعات پایه با آدرس و سفارشات:

Workflow:

code
[MySQL: Users] ────┐
                    ├──→ Merge (by userId) → خروجی کامل
[MySQL: Addresses] ┘

Merge Settings:

  • Mode: Merge By Key
  • Key Input 1: userId
  • Key Input 2: userId
  • Join Mode: Left (همه کاربران، حتی بدون آدرس)

2. ترکیب نتایج جستجو از چند منبع

جستجوی محصول در چند فروشگاه:

Workflow:

code
[HTTP: Shop1 API] ──┐
[HTTP: Shop2 API] ──┼──→ Merge (Append) → لیست کامل
[HTTP: Shop3 API] ──┘

Merge Settings:

  • Mode: Append
  • Result: لیست یکپارچه از همه فروشگاه‌ها

3. ادغام داده اصلی با متادیتا

اطلاعات محصول + موجودی انبار:

Workflow:

code
[Database: Products] ─┐
                       ├──→ Merge (by productId)
[API: Inventory] ─────┘

خروجی:

json
{
  "id": 123,
  "name": "لپ‌تاپ",
  "price": 15000000,
  "stock": 5,  // از API موجودی
  "warehouse": "تهران"  // از API موجودی
}

4. ترکیب لیست کاربران با آمار فعالیت

کاربران + تعداد سفارشات:

Workflow:

code
[SELECT * FROM users] ────────┐
                               ├──→ Merge (by userId)
[SELECT userId, COUNT(*) ...] ┘

5. یکپارچه‌سازی داده از CRM و Email Marketing

ترکیب اطلاعات مشتری:

Workflow:

code
[HubSpot: Contacts] ──┐
                       ├──→ Merge (by email)
[Mailchimp: List] ────┘

6. ادغام قیمت با نرخ ارز

محاسبه قیمت نهایی:

Workflow:

code
[Products with USD price] ──┐
                             ├──→ Merge (Multiplex) → محاسبه
[Current Exchange Rate] ────┘

Multiplex: هر محصول × نرخ ارز

7. ترکیب داده‌های تاریخی با جدید

بروزرسانی اطلاعات:

Workflow:

code
[Old Data] ──┐
             ├──→ Merge (by ID, Prefer Input 2)
[New Data] ──┘

8. جمع‌آوری فایل‌ها از چند منبع

دانلود از چند سرویس:

Workflow:

code
[Google Drive] ──┐
[Dropbox] ───────┼──→ Merge (Append) → لیست کامل فایل‌ها
[OneDrive] ──────┘

9. ترکیب کاربران فعال و غیرفعال

لیست کامل با Status:

Workflow:

code
[Active Users] ──┐
                  ├──→ Merge (Append) → همه کاربران
[Inactive Users] ┘

10. پر کردن اطلاعات خالی

استفاده از داده پیش‌فرض برای فیلدهای خالی:

Workflow:

code
[User Data] ────────┐
                     ├──→ Merge (by ID, Fill Empty)
[Default Values] ───┘

نکات حرفه‌ای

💡 نکات حرفه‌ای:

  1. 1انتخاب حالت Merge:
  • Append: یکی پشت سر دیگری (مثل concat)
  • Merge By Key: ادغام جدول‌ها (مثل SQL JOIN)
  • Merge By Position: ردیف به ردیف (زیپ کردن)
  • Multiplex: ضرب دکارتی (هر با همه)
  1. 1Join Modes در Merge By Key:
code
Inner Join:  فقط مشترک‌ها
   Left Join:   همه Input 1 + مطابق‌های Input 2
   Outer Join:  همه از هر دو طرف
  1. 1کلید مطابقت: مطمئن شوید فیلد Key در هر دو ورودی یکسان است:
code
❌ Input 1: userId, Input 2: user_id  (اشتباه)
   ✅ Input 1: userId, Input 2: userId   (صحیح)
  1. 1چند ورودی: می‌توانید بیش از 2 ورودی داشته باشید، اما فقط Append کار می‌کند.
  1. 1Multiplex Use Case: زمانی استفاده کنید که می‌خواهید هر آیتم را با همه آیتم‌های دیگر ترکیب کنید:
code
محصولات × نرخ ارز
   کاربران × قالب پیام
  1. 1Performance: Merge By Key روی دیتاست بزرگ می‌تواند کند باشد. اگر امکان دارد، در دیتابیس JOIN کنید.
  1. 1پیش‌پردازش: از Set قبل از Merge برای یکسان‌سازی فرمت استفاده کنید.
  1. 1حذف تکراری: بعد از Append، از Set (Keep Only Unique) استفاده کنید.
  1. 1فیلدهای خالی: در Merge By Key، فیلدهای نامطابق null می‌شوند:
json
{
     "name": "علی",      // از Input 1
     "email": "...",     // از Input 1
     "address": null     // نبود در Input 1، از Input 2
   }
  1. 1ترتیب ورودی‌ها: در Merge By Key، ورودی 1 اصلی است:
  • Left Join: همه Input 1 نگه داشته می‌شود
  • فیلدهای Input 2 به Input 1 اضافه می‌شود
  1. 1Debug: از Execute Node برای دیدن داده هر ورودی قبل از Merge استفاده کنید.
  1. 1مثال Merge By Position:
code
Input 1: [{a:1}, {a:2}, {a:3}]
    Input 2: [{b:10}, {b:20}]
    Output:  [{a:1,b:10}, {a:2,b:20}, {a:3}]
  1. 1Wait Mode: اگر ورودی‌ها ممکن است در زمان‌های مختلف برسند:
code
Mode: Wait
  1. 1Conflict Resolution: اگر فیلدی در هر دو ورودی وجود دارد:
  • Input 2 اولویت دارد (مقدار Input 2 نگه داشته می‌شود)
  1. 1SQL Equivalent:
sql
-- Merge By Key (Inner Join)
    SELECT * FROM input1
    JOIN input2 ON input1.id = input2.id

    -- Merge By Key (Left Join)
    SELECT * FROM input1
    LEFT JOIN input2 ON input1.id = input2.id

    -- Append
    SELECT * FROM input1
    UNION ALL
    SELECT * FROM input2

رفع مشکلات

خطاهای رایج

1. داده‌ها تکرار می‌شوند

علت: از Append استفاده کرده‌اید و داده‌های مشترک دارید

راه‌حل

  • از Merge By Key استفاده کنید
  • یا با Set، تکراری‌ها را حذف کنید

2. بعضی داده‌ها ادغام نمی‌شوند

علت: کلید ادغام (Key) مطابقت ندارد

راه‌حل

  • مطمئن شوید نام فیلد در هر دو ورودی یکسان است
  • یا از Set قبل از Merge، فیلد را یکسان کنید
  • حساس به حروف بزرگ/کوچک است: userIdUserId

3. خطای "No data in input 2"

علت: ورودی دوم خالی است

راه‌حل

  • مطمئن شوید نود ورودی 2 داده دارد
  • از IF قبل از Merge استفاده کنید تا خالی نباشد

4. تعداد ردیف‌های خروجی کم است

علت: Join Mode نادرست است

راه‌حل

  • Inner Join: فقط ردیف‌های مشترک
  • Left Join: همه ردیف‌های ورودی 1 + ورودی 2 مطابق
  • Outer Join: همه ردیف‌های هر دو ورودی

5. فیلدها با هم ترکیب نمی‌شوند

علت: از Append استفاده کرده‌اید

راه‌حل

  • Append فقط ردیف‌ها را زیر هم می‌چیند
  • برای ترکیب فیلدها از Merge By Key یا By Position استفاده کنید

6. Multiplex خیلی زیاد داده تولید می‌کند

علت: رفتار عادی است! Multiplex = تعداد ورودی1 × تعداد ورودی2

راه‌حل

  • اگر ورودی 1 = 10 آیتم، ورودی 2 = 5 آیتم → خروجی = 50 آیتم
  • از Multiplex فقط وقتی استفاده کنید که واقعاً نیاز دارید

7. ترتیب داده‌ها اشتباه است

علت: Merge ترتیب خاصی ندارد

راه‌حل

  • بعد از Merge، از Sort استفاده کنید
  • یا قبل از Merge، ورودی‌ها را مرتب کنید

آیا این مستندات مفید بود؟