where 節點按條件運算式過濾資料行,僅保留滿足條件的記錄,丟棄不滿足條件的行。
功能說明
where 節點對輸入資料逐行執行條件判斷,保留運算式結果為 true 的行。支援所有布林運算式、比較子和內建函數。
適用情境:
過濾低品質資料,如文本過短、欄位為空白。
按業務條件式篩選特定類別的資料。
基於上遊計算結果做條件過濾,如 AI 評分低於閾值的記錄。
節點配置
where 節點的基本配置格式如下:
{
"id": "node_1",
"type": "where",
"parameters": {
"filter": "<布林運算式>"
}
}參數說明
參數 | 類型 | 必填 | 預設值 | 說明 |
| String | 是 | 無 | 過濾條件運算式,結果須為布爾值。支援 |
支援的運算子:=、!=、>、<、>=、<=、LIKE、IN、IS NULL、IS NOT NULL、BETWEEN、AND、OR、NOT。
輸入/輸出
輸入要求
上遊節點輸出的任意列資料。
運算式中引用的欄位必須存在於輸入資料中。
輸出資料行
列名 | 類型 | 來源 | 說明 |
全部原始輸入列 | -- | 透傳 | 列結構不變,僅過濾行。 |
行數變化
M → N(M ≥ N):輸出行數始終小於或等於輸入行數。
使用樣本
樣本 1:按文本長度過濾
僅保留 question 欄位長度大於 10 的記錄:
{
"id": "n3",
"type": "where",
"parameters": {
"filter": "length(question) > 10"
}
}樣本 2:組合條件過濾
同時滿足文本長度和非空條件,過濾掉文本過短或輸出為空白的記錄:
{
"id": "n3",
"type": "where",
"parameters": {
"filter": "length(question) > 10 AND output IS NOT NULL"
}
}樣本 3:基於 AI 評分過濾
以下樣本展示了一個典型的 Pipeline 流程:先使用 project 節點選擇列,再通過 LLM 評估打分,最後用 where 節點過濾掉低分記錄。
{
"nodes": [
{
"id": "n1",
"type": "project",
"parameters": { "question": "a", "output": "c" }
},
{
"id": "n2",
"type": "llm-call",
"parameters": {
"prompt": "@eval/prompt.md",
"fields": "question,output",
"format": "json",
"as": "eval"
}
},
{
"id": "n3",
"type": "where",
"parameters": {
"filter": "json_extract_scalar(eval, '$.score') >= '3'"
}
}
]
}樣本 4:基於文檔統計過濾
先計算文檔統計指標,再過濾掉過短的文本。該流程先用 project 節點選擇列,然後使用 doc-stats 節點計算文本統計資訊,最後基於字元長度進行過濾。
{
"nodes": [
{
"id": "n1",
"type": "project",
"parameters": { "question": "a", "output": "c" }
},
{
"id": "n2",
"type": "doc-stats",
"parameters": { "field": "question" }
},
{
"id": "n3",
"type": "where",
"parameters": {
"filter": "json_extract_scalar(__doc_stats, '$.doc_len_char') > '10'"
}
}
]
}注意事項
推薦用法
適合資料品質篩選、LLM 評分過濾、長度和格式校正等情境。
常與
extend、doc-stats、llm-call搭配使用,先計算或標註,再按結果過濾。支援所有 SQL 布林運算式(
AND、OR、NOT、比較運算、函數調用等)。
常用過濾運算式
情境 | 運算式樣本 |
過濾 LLM 評估結果 |
|
過濾文本長度 |
|
複合條件過濾 |
|
邊界與異常行為
情境 | 行為 |
| 校正失敗,必須提供過濾條件。 |
運算式中引用的欄位不存在 | 運行時報錯。 |
運算式結果不是布爾值 | 運行時報錯。 |
運算式語法錯誤 | 運行時報錯。 |
所有行均不滿足條件 | 輸出空資料集,後續節點正常處理空輸入。 |