在真實世界裡,資料永遠不會只有一種長相。付費用戶要走 VIP 通道、免費新手要走引導通道、而分數不及格的資料則應該直接丟進垃圾桶。

如果 Merge 是讓流程合流,那 SwitchFilter 就是讓流程充滿智慧的分岔路。學會控制資料的走向,是你成為高級架構師的必經之路。

學習目標 (Goal)

  • 掌握 Switch (複雜路由):捨棄傳統的 IF 節點,學會如何一次建立 3 條以上的精準分流路徑。
  • 掌握 Filter (過濾器):建立資料防火牆,只讓符合高標準的 Item 繼續往下走。

核心觀念 (Concepts)

Switch 節點:智慧交流道

If 做 True/False 分岔很直覺,但當邏輯變成「VIP 走 A、Pro 走 B、其餘走 C」時,多個 If 串接會讓流程圖難以維護。SwitchRules 模式讓每條 Routing Rule 對應一個出口,再搭配 Fallback Output(Extra Output)把「不符合任何規則」的 Item 集中到同一出口,結構一目瞭然。

Filter 節點:資料守門員

Filter 只有一個輸出:符合條件的 Item 會往後傳,不符合的會被節點捨棄、不會進入任何後續節點。適合做資料清洗,例如從資料庫拉出 100 筆貼文,只讓「按讚數大於 50」的 Item 通過並進入發布流程。


節點配置 (Node Setup)

Switch Node

  • Mode:二選一。
    • Rules:依條件比對分流。點選 Add Routing Rule 新增規則,每條規則可設多個條件;左側選資料類型(String、Number、Date & Time、Boolean、Array、Object),右側選比較運算(如 String → is equal to、Number → is greater than or equal to)。
    • Expression:用表示式回傳輸出編號(數字),自訂要接到哪一個出口;可設 Number of OutputsSend data to all matching outputs(符合多條時是否送往所有符合的出口)。
  • Fallback Output(Rules 模式):當 Item 不符合任何規則時的處理。
    • None(預設):不符合的 Item 不輸出,等同被丟棄。
    • Extra Output:不符合的 Item 送往額外的獨立出口,建議勾選以集中處理異常或未分類資料。
    • Output 0:不符合的 Item 與符合第一條規則的 Item 走同一出口。

CAUTION

Fallback OutputNone 時,未符合任何規則的 Item 不會從任何出口輸出,除錯時容易誤以為資料遺失;生產流程建議改為 Extra Output 並接後續處理或紀錄。

Filter Node

  • Conditions:點選 Add condition 新增條件,依資料類型與比較運算設定(與 Switch 相同,可選 String、Number、Date & Time 等)。
  • 條件組合:多條件時可選 AND(全部符合才通過)或 OR(符合其一即通過);同一節點內不可混用 AND 與 OR。
  • OptionsLess Strict Type Validation 開啟時,n8n 會依運算子嘗試轉換型別,可緩解「wrong type」錯誤;Ignore Case 可忽略字串大小寫。

NOTE

[擷圖情境:展示 Filter 節點設定單一條件(如 score is greater than or equal to 60)與通過筆數的介面]


專業操作 (Action)

Step 1: 建立分流模擬資料

  1. 準備三筆會員 mock 資料(可匯入 part1 或手動用多個 Edit Fields (Set) 建立):
    • User A:tier = VIPscore = 90
    • User B:tier = Proscore = 50
    • User C:tier = Freescore = 40
  2. 若手動建立,需先以 Merge(Append)將三筆彙成一路再接 Switch。

Step 2: 使用 Switch 分發路線

  1. 後方接上 Switch 節點,選擇 ModeRules
  2. Add Routing Rule 第一條:資料類型選 String,條件設為 tier is equal to VIP
  3. 再新增第二條規則:tier is equal to Pro
  4. Fallback Output 選擇 Extra Output,讓不符合上述兩條的 Item(例如 tier = Free)走獨立出口。

執行後,3 筆 Item 會分別進入 VIP 出口、Pro 出口與 Fallback 出口。

Step 3: 加上 Filter 洗掉不及格分數

假設 Pro 路線出口後要再篩一關:只放行分數及格者。 1. 在 Switch 的 Pro 出口後接上 Filter 節點。 2. Add condition:資料類型選 Number,左側欄位 score,運算選 is greater than or equal to,右側填 60。 3. User B 若 score 為 60 以上會通過;若為 50 會在 Filter 被攔下,不會進入後續節點。

TIP

型別陷阱:若前面 Set 把 score 設成字串(如 "50"),Filter 用數字比較可能判斷錯誤。可在條件的左側改為 Expression,輸入 {{ parseInt($json.score, 10) }} 再與 60 比較。


實戰挑戰 (Challenge)

  1. Fallback 的重要性:送一筆沒有 tier 的 Item 進 Switch。若 Fallback OutputNone(預設),該 Item 不會從任何出口輸出,等於在流程中消失,除錯時容易漏看。
  2. 多條件同一 Rule:同一條 Routing Rule 內可 Add condition 多個條件,並以 AND 組合。試著讓 VIP 出口改為「tier 等於 VIP score 大於 80」才通過。

範例 (Example)

你可以匯入來觀察基礎的三路分流。

範例: