Materi 7: Memfilter Data dengan IF Node

Di langkah ini, Kita akan belajar cara memfilter data menggunakan logika kondisional. Kita juga akan belajar cara menggunakan Expressions (Ekspresi) di dalam node menggunakan node IF.

Setelah langkah ini, alur kerja Kita akan mulai bercabang dan terlihat seperti ini:

Diagram alur kerja: HTTP Request terhubung ke IF Node, yang bercabang ke Airtable.

Alur kerja Kita sekarang memiliki 'otak' (IF Node) di tengahnya.

Logika "Jika-Maka"

Saat ini, alur kerja Kita mengambil 30 data dan memasukkan semuanya ke Airtable. Tapi, dari percakapan dengan Nathan, Kita tahu dia hanya ingin data "processing" yang masuk ke Airtable.

Pada dasarnya, kita ingin memberi tahu program: JIKA status pesanan adalah "processing", MAKA masukkan data itu ke Airtable; JIKA TIDAK (ELSE), lakukan hal lain (yang akan kita urus nanti).

Perintah "jika-maka-lain" ini adalah logika kondisional. Di n8n, kita bisa menambahkan logika ini dengan IF Node, yang memecah alur kerja berdasarkan operasi perbandingan.

IF vs. Switch
Jika Kita perlu memfilter data berdasarkan lebih dari dua pilihan (misal: 'Booked', 'Processing', 'Cancelled', 'Refunded'), Kita bisa menggunakan node Switch. Node Switch mirip dengan IF, tetapi mendukung banyak cabang output.

Langkah 1: Menambahkan IF Node di Tengah

Pertama, mari kita tambahkan IF Node di antara node HTTP Request dan Airtable.

  1. Arahkan kursor ke panah koneksi antara node "HTTP Request" dan "Airtable".
  2. Kita akan melihat ikon tempat sampah. Klik ikon itu untuk menghapus koneksi.
Menghapus koneksi antara node HTTP Request dan Airtable.

Kita putuskan dulu koneksinya agar bisa menyisipkan node baru di tengah.

Sekarang, klik ikon + di sebelah kanan node HTTP Request Anda:

  • Cari node If.
  • Pilih node tersebut saat muncul di pencarian.
Mencari 'If' di panel pencarian node n8n.

Mencari dan memilih node 'If'.

Langkah 2: Mengonfigurasi IF Node

Jendela IF Node akan terbuka. Di sinilah kita akan mengatur "pertanyaan"-nya. Untuk node IF, kita akan menggunakan Expression.

Apa itu Expression?
Sebuah Expression adalah cara Kita memberi tahu n8n untuk "mengambil data dari node sebelumnya". Alih-alih mengetik nilai statis (seperti "Naufal"), kita mengetik kode khusus (seperti {{ $json.nama }}) yang akan mengambil nilai dinamis dari data yang masuk.

Di jendela IF Node, kita akan mengonfigurasi 3 bidang utama:

2.1: Mengatur Value 1 (Data dari Node Sebelumnya)

  • Arahkan kursor ke bidang Value 1.
  • Klik tab Expression yang muncul di sebelah kanan.
Mengklik tab 'Expression' di bidang Value 1 pada IF Node.

Kita beralih dari nilai 'Fixed' ke 'Expression'.

  • Selanjutnya, buka editor ekspresi dengan mengklik ikon 'tautan' (Open Expression Editor).
Mengklik ikon 'Open Expression Editor' (ikon tautan).

Membuka Expression Editor.

Di dalam Expression Editor, gunakan panel kiri untuk menavigasi ke: Input Data > HTTP Request > orderStatus. Seret (drag) orderStatus ke bidang Expression di tengah.

Expression Editor, menunjukkan 'orderStatus' ditarik dari panel kiri ke bidang Expression.

Ini adalah cara visual untuk membangun ekspresi Kita.

Anda akan melihat bidang Expression sekarang berisi {{ $json.orderStatus }}. Tutup dialog "Edit Expression".

2.2: Mengatur Operation (Jenis Perbandingan)

  • Di bidang Operation, klik dropdown dan pilih String > is equal to.
Memilih 'String' dan 'is equal to' dari dropdown Operation.

Kita ingin perbandingan teks yang sama persis.

2.3: Mengatur Value 2 (Nilai Pembanding)

  • Di bidang Value 2, ketik nilai statis: processing.
Mengisi 'processing' di bidang Value 2.

Kondisi lengkap: Apakah 'orderStatus' SAMA DENGAN 'processing'?

2.4: Menguji IF Node

Sekarang, klik Execute step untuk menguji logika Kita.

Hasilnya akan sangat berbeda. Node IF memecah output menjadi dua: True Branch (jika kondisi terpenuhi) dan False Branch (jika kondisi tidak terpenuhi).

Output IF Node, menampilkan 14 item di 'True Branch'.

Output 'True Branch' (Benar): ada 14 item yang statusnya 'processing', output 'False Branch' (Salah): ada 16 item yang statusnya 'booked'.

Sempurna! Node kita berhasil memisahkan data. Tutup jendela IF Node (klik "Back to canvas").

Langkah 3: Menghubungkan & Menguji Ulang Airtable

Sekarang di kanvas, Anda akan melihat node IF Anda memiliki dua titik output: "true" dan "false".

Ingat, Nathan hanya ingin pesanan processing di Airtable. Jadi, kita akan menghubungkan output "true" ke node Airtable.

  • Klik dan seret (drag) titik konektor true dari node IF ke titik input di node Airtable.
Menghubungkan titik output 'true' dari IF Node ke input Airtable Node.

Sekarang, hanya data yang lolos filter (true) yang akan dikirim ke Airtable.

Menguji Ulang Alur

Ini adalah praktik terbaik. Mari kita uji ulang node Airtable Kita.

  1. Buka tabel "orders" Kita di Airtable dan hapus semua 30 baris yang Kita masukkan di materi sebelumnya.
  2. Kembali ke n8n, buka node Airtable.
  3. Klik Execute step.

Hasil di n8n akan menunjukkan "14 items" (bukan 30!):

Output node Airtable di n8n, sekarang hanya menunjukkan 14 item.

Node Airtable hanya menerima dan memproses 14 item dari cabang 'true'.

Jika Kita periksa tabel Airtable Kita, sekarang tabel itu hanya berisi 14 baris, dan semua orderStatus-nya adalah processing!

Tabel Airtable hanya berisi 14 record dengan status 'processing'.

Tabel Airtable kita sekarang sudah benar, hanya berisi data yang difilter.

Langkah Selanjutnya

Kita sudah berhasil memfilter data! Tapi Nathan punya permintaan lain...

Nathan 🙋:

Node IF ini sangat berguna untuk memfilter data! Sekarang saya punya semua informasi tentang pesanan "processing". Sebenarnya saya hanya butuh employeeName dan orderID, tapi saya rasa tidak apa-apa menyimpan semua kolom lainnya.

Kita 🤵🏻:

Sebenarnya, saya tidak merekomendasikan itu. Memasukkan lebih banyak data membutuhkan lebih banyak daya komputasi, transfer data lebih lambat, dan memakan lebih banyak sumber daya penyimpanan di tabel Kita. Dalam kasus ini, 14 record dengan 5 kolom mungkin tidak terasa bedanya, tetapi jika bisnis Kita berkembang menjadi ribuan record dan puluhan kolom, bahkan satu kolom ekstra dapat memengaruhi kinerja.

Nathan 🙋:

Oh, itu poin yang bagus. Bisakah Kita memilih hanya dua kolom saja dari pesanan "processing"?

Kita 🤵🏻:

Tentu saja! Kita akan lakukan itu di langkah selanjutnya.