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 行,請在上遊節點先做 NULL 值處理。
邊界與異常
情境 | 行為 |
| 校正失敗 |
| 運行時報錯 |
| 該行不參與去重,不出現在輸出中 |
| 校正失敗 |
Dataset 不存在或不可達 | 運行時報錯 |
輸入資料為空白 | 正常返回空結果集 |