Materi 17: Menggabungkan dan Memecah Data
Dalam pengelolaan data tingkat lanjut, kita sering kali perlu menggabungkan (Merge) data dari berbagai sumber menjadi satu, atau sebaliknya, memecah (Loop/Split) proses untuk menangani banyak item secara bergantian.
Bagian 1: Menggabungkan Data (Merge)
Menggabungkan data berguna untuk:
- Membuat satu set data lengkap dari berbagai sumber (misal: Nama dari Database, Alamat dari Excel).
- Sinkronisasi data antar sistem (misal: Update CRM A jika ada perubahan di CRM B).
Node "Merge"
Di n8n, kita menggunakan node Merge. Node ini memiliki beberapa mode penggabungan:
- Append: Menambahkan data baru di bawah data lama (seperti copy-paste baris baru di Excel).
- Combine (Merge by Fields): Menggabungkan data berdasarkan "kunci" yang cocok (seperti VLOOKUP di Excel atau JOIN di SQL).
- Merge by Position: Menggabungkan item ke-1 dari Input A dengan item ke-1 dari Input B, dst.
Berbagai cara untuk menggabungkan dua aliran data.
Latihan 1: Menggabungkan Data Pelanggan
Mari kita coba menggabungkan data dari Customer Datastore (Database) dengan data manual yang kita buat di Code Node.
Tantangan:
- Gunakan Customer Datastore untuk mengambil semua orang.
- Gunakan Code Node untuk membuat data tambahan (Negara & Bahasa) untuk salah satu orang (misal: Jay Gatsby).
- Gunakan Merge Node untuk menyatukan kedua informasi tersebut menjadi satu profil lengkap.
👉 Lihat Solusi Merge
Langkah 1: Persiapan Data
- Node 1: Customer Datastore (Operation: Get All People).
- Node 2: Code Node. Masukkan kode berikut:
return [
{
json: {
name: 'Jay Gatsby',
language: 'English',
country: {
code: 'US',
name: 'United States'
}
}
}
];
Langkah 2: Penggabungan
- Tambahkan node Merge.
- Hubungkan Customer Datastore ke Input 1.
- Hubungkan Code Node ke Input 2.
- Mode: Combine > Merge By Fields.
-
Fields to Match:
- Input 1 Field:
name - Input 2 Field:
name
- Input 1 Field:
Flow merge node dengan dua input dan satu output.
Kita mencocokkan data berdasarkan Nama.
Hasilnya: Data Jay Gatsby dari database akan "diperkaya" dengan info Negara dan Bahasa dari Code Node.
Bagian 2: Looping (Loop Over Items)
Secara umum, n8n memproses data secara otomatis untuk setiap item. Namun, ada beberapa node (seperti RSS Read atau beberapa API request) yang hanya bisa memproses satu item pertama saja.
Dalam kasus ini, kita perlu memaksa n8n untuk melakukan Looping (perulangan). Kita menggunakan node Loop Over Items (sebelumnya bernama Split In Batches).
Kapan Menggunakannya?
- Saat memproses data dalam jumlah sangat besar (untuk menghindari memori penuh).
- Saat berhadapan dengan API yang memiliki Rate Limit (batas kecepatan).
- Saat menggunakan node yang tidak mendukung banyak item sekaligus (seperti RSS Read).
Latihan 2: Membaca Banyak RSS Feed
Bayangkan Kita ingin membaca berita dari Medium DAN Dev.to sekaligus.
Tantangan:
- Gunakan Code Node untuk membuat daftar URL RSS (Medium & Dev.to).
- Gunakan Loop Over Items untuk memproses URL satu per satu.
- Gunakan RSS Read untuk membaca konten dari setiap URL tersebut.
👉 Lihat Solusi Looping
Langkah 1: Daftar URL (Code Node)
return [
{ json: { url: 'https://medium.com/feed/n8n-io' } },
{ json: { url: 'https://dev.to/feed/n8n' } }
];
Langkah 2: Loop (Loop Over Items)
- Hubungkan Code Node ke Loop Over Items.
-
Batch Size:
1(Proses 1 URL dalam satu waktu).
Node ini akan memecah 2 URL menjadi antrian.
Langkah 3: Baca RSS
- Hubungkan Loop Node ke RSS Read.
-
URL: Gunakan Expression
{{ $json.url }}(mengambil URL yang sedang diproses saat ini).
PENTING: Menutup Loop
Hubungkan output dari RSS Read KEMBALI ke input Loop Over Items. Ini memberi sinyal "Saya sudah selesai dengan item ini, berikan saya item berikutnya!".
Perhatikan panah yang kembali ke Loop Node.
Ringkasan
Kita 🤵🏻:Kemampuan untuk menggabungkan data yang terpisah dan memproses data secara berurutan (looping) adalah teknik level lanjut yang sangat penting untuk otomatisasi yang kompleks.
Di materi selanjutnya, kita akan belajar tentang sesuatu yang tidak kalah pentingnya: Menangani Error (Error Handling). Apa yang terjadi jika alur kerja kita gagal di tengah jalan?