Skip to content

Merge#

ใช้ Merge node เพื่อรวมข้อมูลจากหลายสตรีม เมื่อข้อมูลของทุกสตรีมพร้อมใช้งาน

การเปลี่ยนแปลงที่สำคัญในเวอร์ชัน 0.194.0

ทีม n8n ได้ปรับปรุง node นี้ครั้งใหญ่ใน n8n เวอร์ชัน 0.194.0 เอกสารนี้อธิบาย node เวอร์ชันล่าสุด หากคุณใช้ n8n เวอร์ชันเก่า คุณสามารถดูเอกสารเวอร์ชันก่อนหน้าได้ ที่นี่

การเปลี่ยนแปลงเล็กน้อยในเวอร์ชัน 1.49.0

n8n เวอร์ชัน 1.49.0 ได้เพิ่มตัวเลือกในการเพิ่มอินพุตมากกว่าสองอินพุต เวอร์ชันเก่ารองรับได้สูงสุดเพียงสองอินพุต หากคุณใช้เวอร์ชันเก่าและต้องการรวมอินพุตหลายรายการในเวอร์ชันเหล่านั้น ให้ใช้ Code node

ฟีเจอร์ Mode > SQL Query ถูกเพิ่มเข้ามาใน n8n เวอร์ชัน 1.49.0 และไม่มีในเวอร์ชันเก่า

Node parameters#

คุณสามารถระบุวิธีที่ Merge node ควรจะรวมข้อมูลจากสตรีมข้อมูลต่างๆ โดยเลือก Mode:

Append#

เก็บข้อมูลจากอินพุตทั้งหมด เลือก Number of Inputs เพื่อส่งออกรายการของแต่ละอินพุตทีละรายการ node จะรอการดำเนินการของอินพุตที่เชื่อมต่อทั้งหมด

Sample Append mode inputs and output. Two separate data sources are on the left, one with items A, B, C and one with items D, E, F. The final data source combines both and lists A, B, C, D, E, F.
อินพุตและเอาต์พุตของโหมด Append

Combine#

รวมข้อมูลจากสองอินพุต เลือกตัวเลือกใน Combine By เพื่อกำหนดวิธีที่คุณต้องการรวมข้อมูลอินพุต

Matching Fields#

เปรียบเทียบรายการตามค่าฟิลด์ ป้อนฟิลด์ที่คุณต้องการเปรียบเทียบใน Fields to Match

พฤติกรรมเริ่มต้นของ n8n คือการเก็บรายการที่ตรงกัน คุณสามารถเปลี่ยนสิ่งนี้ได้โดยใช้การตั้งค่า Output Type:

  • Keep Matches: รวมรายการที่ตรงกัน เหมือนกับการทำ inner join
  • Keep Non-Matches: รวมรายการที่ไม่ตรงกัน
  • Keep Everything: รวมรายการที่ตรงกันเข้าด้วยกันและรวมรายการที่ไม่ตรงกันด้วย เหมือนกับการทำ outer join
  • Enrich Input 1: เก็บข้อมูลทั้งหมดจาก Input 1 และเพิ่มข้อมูลที่ตรงกันจาก Input 2 เหมือนกับการทำ left join
  • Enrich Input 2: เก็บข้อมูลทั้งหมดจาก Input 2 และเพิ่มข้อมูลที่ตรงกันจาก Input 1 เหมือนกับการทำ right join
Sample Combine mode inputs and output. Two separate data sources are on the left. The final data source combines these data sources by matching fields.
อินพุตและเอาต์พุตของโหมด Combine by Matching Fields

Position#

รวมรายการตามลำดับ รายการที่ index 0 ใน Input 1 จะรวมกับรายการที่ index 0 ใน Input 2 และต่อไปเรื่อยๆ

Sample Combine mode inputs and output. Two separate data sources are on the left. The final data source combines these data sources by index position.
อินพุตและเอาต์พุตของโหมด Combine by Position

All Possible Combinations#

ส่งออกชุดค่าผสมที่เป็นไปได้ทั้งหมดของรายการ ในขณะที่รวมฟิลด์ที่มีชื่อเดียวกัน

Sample Combine mode inputs and output. Two separate data sources are on the left. The final data source combines these data sources by all possible combinations.
อินพุตและเอาต์พุตของโหมด Combine by All Possible Combinations

Combine mode options#

เมื่อรวมข้อมูลโดยใช้ Mode > Combine คุณสามารถตั้งค่า Options เหล่านี้ได้:

  • Clash Handling: เลือกวิธีรวมเมื่อสตรีมข้อมูลขัดแย้งกัน หรือเมื่อมีฟิลด์ย่อย อ้างอิงถึง Clash handling สำหรับรายละเอียด
  • Fuzzy Compare: เลือกว่าจะยอมรับความแตกต่างของประเภทเมื่อเปรียบเทียบฟิลด์หรือไม่ (เปิดใช้งาน) หรือไม่ (ปิดใช้งาน, ค่าเริ่มต้น) ตัวอย่างเช่น เมื่อคุณเปิดใช้งานสิ่งนี้ n8n จะถือว่า "3" และ 3 เหมือนกัน
  • Disable Dot Notation: ป้องกันการเข้าถึงฟิลด์ลูกโดยใช้ parent.child ในชื่อฟิลด์
  • Multiple Matches: เลือกวิธีที่ n8n จัดการกับการจับคู่หลายรายการเมื่อเปรียบเทียบสตรีมข้อมูล
    • Include All Matches: ส่งออกหลายรายการหากมีการจับคู่หลายรายการ หนึ่งรายการสำหรับการจับคู่แต่ละครั้ง
    • Include First Match Only: เก็บรายการแรกต่อการจับคู่และทิ้งการจับคู่หลายรายการที่เหลือ
  • Include Any Unpaired Items: เลือกว่าจะเก็บหรือทิ้งรายการที่ไม่มีคู่เมื่อรวมตามตำแหน่ง พฤติกรรมเริ่มต้นคือการละเว้นรายการที่ไม่มีการจับคู่
Clash Handling#

หากหลาย items ที่ index เดียวกันมี field ที่มีชื่อเหมือนกัน นี่คือการ clash ตัวอย่างเช่น หาก items ทั้งหมดใน Input 1 และ Input 2 มี field ชื่อ language field เหล่านี้จะ clash โดยค่าเริ่มต้น n8n จะให้ความสำคัญกับ Input 2 หมายความว่าหาก language มีค่าใน Input 2 n8n จะใช้ค่านั้นเมื่อ merge items

คุณสามารถเปลี่ยนพฤติกรรมนี้ได้โดยเลือก Options > Clash Handling:

  • When Field Values Clash: เลือก input ที่จะให้ความสำคัญ หรือเลือก Always Add Input Number to Field Names เพื่อเก็บ field และค่าทั้งหมด โดยมีหมายเลข input ต่อท้ายชื่อ field เพื่อแสดงว่ามาจาก input ใด
  • Merging Nested Fields
    • Deep Merge: Merge properties ในทุกระดับของ items รวมถึง nested objects สิ่งนี้มีประโยชน์เมื่อต้องจัดการกับโครงสร้างข้อมูลที่ซับซ้อนและซ้อนกัน ซึ่งคุณต้องแน่ใจว่ามีการ merge properties ในทุกระดับ
    • Shallow Merge: Merge properties ที่ระดับบนสุดของ items เท่านั้น โดยไม่ merge nested objects สิ่งนี้มีประโยชน์เมื่อคุณมีโครงสร้างข้อมูลแบบ flat หรือเมื่อคุณต้องการ merge เฉพาะ top-level properties โดยไม่ต้องกังวลเกี่ยวกับ nested properties

SQL Query#

เขียน SQL Query แบบกำหนดเองเพื่อรวมข้อมูล

ตัวอย่าง:

1
SELECT * FROM input1 LEFT JOIN input2 ON input1.name = input2.id

ข้อมูลจาก node ก่อนหน้ามีให้ใช้งานเป็นตาราง และคุณสามารถใช้ใน SQL query เป็น input1, input2, input3 และอื่นๆ ตามลำดับ อ้างอิงถึง AlaSQL GitHub page สำหรับรายการคำสั่ง SQL ที่รองรับทั้งหมด

Choose Branch#

เลือกอินพุตที่จะเก็บ ตัวเลือกนี้จะรอจนกว่าข้อมูลจากอินพุตทั้งสองจะพร้อมใช้งานเสมอ คุณสามารถเลือกที่จะ Output:

  • Input 1 Data
  • Input 2 Data
  • A Single, Empty Item

node จะส่งออกข้อมูลจากอินพุตที่เลือก โดยไม่มีการเปลี่ยนแปลง

Templates and examples#

Scrape and summarize webpages with AI

by n8n Team

View template details
Telegram AI Chatbot

by Eduard

View template details
✨🤖Automate Multi-Platform Social Media Content Creation with AI

by Joseph LePage

View template details
Browse รวมข้อมูล (Merge) integration templates, or search all templates

Merging data streams with uneven numbers of items#

รายการที่ส่งไปยัง Input 1 ของ Merge node จะมีความสำคัญกว่า ตัวอย่างเช่น หาก Merge node ได้รับห้ารายการใน Input 1 และ 10 รายการใน Input 2 มันจะประมวลผลเพียงห้ารายการเท่านั้น รายการที่เหลืออีกห้ารายการจาก Input 2 จะไม่ถูกประมวลผล

Branch execution with If and Merge nodes#

0.236.0 และต่ำกว่า

n8n ได้ลบพฤติกรรมการ execution นี้ในเวอร์ชัน 1.0 ส่วนนี้ใช้กับ workflows ที่ใช้ลำดับการ execution แบบ v0 (legacy) โดยค่าเริ่มต้น นี่คือ workflows ทั้งหมดที่สร้างก่อนเวอร์ชัน 1.0 คุณสามารถเปลี่ยนลำดับการ execution ได้ใน workflow settings

หากคุณเพิ่ม Merge node ไปยัง workflow ที่มี If node อาจส่งผลให้ data streams ทั้งสองของ If node ทำงาน

Data stream หนึ่งจะ trigger Merge node ซึ่งจากนั้นจะไป execute data stream อีกอัน

ตัวอย่างเช่น ในภาพหน้าจอด้านล่าง มี workflow ที่มี Edit Fields node, If node และ Merge node พฤติกรรมมาตรฐานของ If node คือการ execute data stream เดียว (ในภาพหน้าจอคือ output true) อย่างไรก็ตาม เนื่องจากมี Merge node ทำให้ data streams ทั้งสองทำงาน แม้ว่า If node จะไม่ได้ส่งข้อมูลใดๆ ไปยัง data stream false ก็ตาม

Screenshot of a workflow. The workflow has an Edit Fields node, followed by an If node. It ends with a Merge node.

Try it out: A step by step example#

สร้าง workflow พร้อมข้อมูลอินพุตตัวอย่างเพื่อลองใช้ Merge node

Set up sample data using the Code nodes#

  1. เพิ่ม Code node ลงใน canvas และเชื่อมต่อกับ Start node
  2. วางโค้ด JavaScript ต่อไปนี้ในฟิลด์ JavaScript Code:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    return [
      {
        json: {
          name: 'Stefan',
          language: 'de',
        }
      },
      {
        json: {
          name: 'Jim',
          language: 'en',
        }
      },
      {
        json: {
          name: 'Hans',
          language: 'de',
        }
      }
    ];
    
  3. เพิ่ม Code node ที่สอง และเชื่อมต่อกับ Start node
  4. วางโค้ด JavaScript ต่อไปนี้ในฟิลด์ JavaScript Code:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    return [
    	  {
        json: {
          greeting: 'Hello',
          language: 'en',
        }
      },
      {
        json: {
          greeting: 'Hallo',
          language: 'de',
        }
      }
    ];
    

Try out different merge modes#

เพิ่ม Merge node เชื่อมต่อ Code node แรกกับ Input 1 และ Code node ที่สองกับ Input 2 รัน workflow เพื่อโหลดข้อมูลลงใน Merge node

workflow สุดท้ายควรมีลักษณะดังนี้:

ตอนนี้ลองใช้ตัวเลือกต่างๆ ใน Mode เพื่อดูว่ามีผลต่อข้อมูลเอาต์พุตอย่างไร

Append#

เลือก Mode > Append จากนั้นเลือก Test step

เอาต์พุตของคุณในมุมมองตารางควรมีลักษณะดังนี้:

name language greeting
Stefan de
Jim en
Hans de
en Hello
de Hallo

Combine by Matching Fields#

คุณสามารถรวมข้อมูลอินพุตทั้งสองนี้เพื่อให้แต่ละคนได้รับคำทักทายที่ถูกต้องสำหรับภาษาของพวกเขา

  1. เลือก Mode > Combine
  2. เลือก Combine by > Matching Fields
  3. ในทั้ง Input 1 Field และ Input 2 Field ป้อน language สิ่งนี้จะบอก n8n ให้รวมข้อมูลโดยการจับคู่ค่าในฟิลด์ language ในแต่ละชุดข้อมูล
  4. เลือก Test step

เอาต์พุตของคุณในมุมมองตารางควรมีลักษณะดังนี้:

name language greeting
Stefan de Hallo
Jim en Hello
Hans de Hallo

Combine by Position#

เลือก Mode > Combine, Combine by > Position จากนั้นเลือก Test step

เอาต์พุตของคุณในมุมมองตารางควรมีลักษณะดังนี้:

name language greeting
Stefan en Hello
Jim de Hallo
Keep unpaired items#

หากคุณต้องการเก็บรายการทั้งหมด ให้เลือก Add Option > Include Any Unpaired Items จากนั้นเปิด Include Any Unpaired Items

เอาต์พุตของคุณในมุมมองตารางควรมีลักษณะดังนี้:

name language greeting
Stefan en Hello
Jim de Hallo
Hans de

Combine by All Possible Combinations#

เลือก Mode > Combine, Combine by > All Possible Combinations จากนั้นเลือก Test step

เอาต์พุตของคุณในมุมมองตารางควรมีลักษณะดังนี้:

name language greeting
Stefan en Hello
Stefan de Hallo
Jim en Hello
Jim de Hallo
Hans en Hello
Hans de Hallo