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 评估结果 |
|
过滤文本长度 |
|
复合条件过滤 |
|
边界与异常行为
场景 | 行为 |
| 校验失败,必须提供过滤条件。 |
表达式中引用的字段不存在 | 运行时报错。 |
表达式结果不是布尔值 | 运行时报错。 |
表达式语法错误 | 运行时报错。 |
所有行均不满足条件 | 输出空数据集,后续节点正常处理空输入。 |