🔗
ادغام
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انتخاب حالت Merge:
- Append: یکی پشت سر دیگری (مثل concat)
- Merge By Key: ادغام جدولها (مثل SQL JOIN)
- Merge By Position: ردیف به ردیف (زیپ کردن)
- Multiplex: ضرب دکارتی (هر با همه)
- 1Join Modes در Merge By Key:
code
Inner Join: فقط مشترکها
Left Join: همه Input 1 + مطابقهای Input 2
Outer Join: همه از هر دو طرف- 1کلید مطابقت: مطمئن شوید فیلد Key در هر دو ورودی یکسان است:
code
❌ Input 1: userId, Input 2: user_id (اشتباه)
✅ Input 1: userId, Input 2: userId (صحیح)- 1چند ورودی: میتوانید بیش از 2 ورودی داشته باشید، اما فقط Append کار میکند.
- 1Multiplex Use Case: زمانی استفاده کنید که میخواهید هر آیتم را با همه آیتمهای دیگر ترکیب کنید:
code
محصولات × نرخ ارز
کاربران × قالب پیام- 1Performance: Merge By Key روی دیتاست بزرگ میتواند کند باشد. اگر امکان دارد، در دیتابیس JOIN کنید.
- 1پیشپردازش: از Set قبل از Merge برای یکسانسازی فرمت استفاده کنید.
- 1حذف تکراری: بعد از Append، از Set (Keep Only Unique) استفاده کنید.
- 1فیلدهای خالی: در Merge By Key، فیلدهای نامطابق null میشوند:
json
{
"name": "علی", // از Input 1
"email": "...", // از Input 1
"address": null // نبود در Input 1، از Input 2
}- 1ترتیب ورودیها: در Merge By Key، ورودی 1 اصلی است:
- Left Join: همه Input 1 نگه داشته میشود
- فیلدهای Input 2 به Input 1 اضافه میشود
- 1Debug: از Execute Node برای دیدن داده هر ورودی قبل از Merge استفاده کنید.
- 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}]- 1Wait Mode: اگر ورودیها ممکن است در زمانهای مختلف برسند:
code
Mode: Wait- 1Conflict Resolution: اگر فیلدی در هر دو ورودی وجود دارد:
- Input 2 اولویت دارد (مقدار Input 2 نگه داشته میشود)
- 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، فیلد را یکسان کنید
- حساس به حروف بزرگ/کوچک است:
userId≠UserId
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، ورودیها را مرتب کنید