dedup-exact 节点对指定字段进行精确匹配去重,完全相同的文本仅保留最长的一条。计算代价低,适合作为 Pipeline 去重管道的第一道工序。
功能说明
dedup-exact 节点按 field 指定的字段做精确匹配:文本完全相同的记录归为一组,每组仅保留文本最长(信息量最大)的一条。
精确去重的计算开销在所有去重节点中最低,建议在 Pipeline 中优先执行,再接近似去重或语义去重逐级收敛数据量。
适用场景:
日志或数据采集中产生的完全重复文本条目。
重复提交、重复推送导致的冗余记录。
作为近似去重或语义去重前的预处理步骤,降低后续节点的数据量与计算开销。
节点配置
在 Pipeline JSON 中添加 dedup-exact 节点,配置示例如下。
{
"id": "node_1",
"type": "dedup-exact",
"parameters": {
"field": "<字段名>",
"output": "<输出列列表>",
"global": true,
"workspace": "<工作空间>",
"dataset": "<数据集>"
}
}参数说明
参数 | 类型 | 必填 | 默认值 | 说明 |
| String | 是 | 无 | 去重依据的字段名,须为文本类型 |
| String | 否 |
| 输出列,多列以英文逗号分隔。 |
| Boolean | 否 |
| 是否开启全局去重(跨批次与 Dataset 做增量去重) |
| String | 条件必填 | 无 | Dataset 所在工作空间, |
| String | 条件必填 | 无 | Dataset 名称, |
输入与输出
输入要求
上游节点输出的任意列数据。
须包含
field指定的字段,且为文本类型。
输出列
列名 | 类型 | 来源 | 说明 |
| -- | 透传/新增 |
|
| bigint | 新增 | 文本指纹值,标识文本唯一性 |
| integer | 新增 | 文本长度,去重时保留最长文本 |
| integer | 新增 | 组内排名(去重后恒为 1) |
行数变化
M -> N(M >= N)。完全相同的文本聚合为一条,输出行数小于等于输入行数。
效果预览
处理前(5 条):
question | input | output |
什么是机器学习? | 请解释 | 机器学习是人工智能的一个分支... |
什么是机器学习? | 请详细解释一下 | 机器学习(ML)是一种通过数据训练模型... |
如何学习Python? | 入门指南 | 推荐从官方教程开始... |
什么是深度学习? | 简述 | 深度学习是机器学习的子集... |
如何学习Python? | 初学者 | 建议先学基础语法... |
处理后(3 条,field = "question"):
question | input | output | __dedup_hash | __dedup_weight | __dedup_rnk |
什么是机器学习? | 请详细解释一下 | 机器学习(ML)是一种通过数据训练模型... | 8832749102 | 14 | 1 |
如何学习Python? | 入门指南 | 推荐从官方教程开始... | 5561023847 | 8 | 1 |
什么是深度学习? | 简述 | 深度学习是机器学习的子集... | 3347891256 | 7 | 1 |
两组 question 完全相同的记录各保留一条(取文本最长者),5 条数据缩减为 3 条。
使用示例
批内精确去重
对当前批次数据按 question 字段去重,保留全部列。
{
"id": "n2",
"type": "dedup-exact",
"parameters": {
"field": "question"
}
}全局精确去重
在批内去重基础上,额外与 Dataset 历史数据做精确比对,仅保留全新记录。
{
"id": "n2",
"type": "dedup-exact",
"parameters": {
"field": "question",
"global": true,
"workspace": "my-ws",
"dataset": "my-ds"
}
}指定输出列
仅输出 question、answer、model 三列,丢弃其余列。
{
"id": "n2",
"type": "dedup-exact",
"parameters": {
"field": "question",
"output": "question,answer,model"
}
}管道组合(精确 + 近似级联)
先精确去重消除完全相同项,再接近似去重消除微小差异项。
{
"nodes": [
{ "id": "n1", "type": "project", "parameters": { "question": "a", "input": "b", "output": "c" } },
{ "id": "n2", "type": "dedup-exact", "parameters": { "field": "question" } },
{ "id": "n3", "type": "dedup-fuzzy", "parameters": { "field": "question", "threshold": "3" } }
]
}使用建议与边界行为
使用建议
推荐管道顺序:
dedup-exact->dedup-fuzzy->dedup-semantic,逐级收敛数据量。全局去重(
global = true)适用于增量入库场景,确保 Dataset 中无重复数据。多字段去重(如同时对
question和output去重)时,拆分为多个 dedup-exact 节点串联。确保
field字段有实际文本内容,空字符串可能导致意外保留。
NULL 值的行不参与去重且不出现在输出中。如需保留 NULL 行,请在上游节点先做 NULL 值处理。
边界与异常
场景 | 行为 |
| 校验失败 |
| 运行时报错 |
| 该行不参与去重,不出现在输出中 |
| 校验失败 |
Dataset 不存在或不可达 | 运行时报错 |
输入数据为空 | 正常返回空结果集 |