大数据技术

大数据分析中数据前期预处理:完全重复的行用drop_duplicates能搞定,但“业务键相同、字段略有出入”的近似重复,预处理阶段到底该聚合、保留最新,还是标记待审?

👤 为我痴狂 👁 3 阅读 ❤ 0 点赞 ➦ 0 分享 📅 2026-10-22
首页› 大数据› 大数据技术› 正文
业务键相同、字段略有出入:
近似重复记录的预处理决策框架

聚合 · 保留最新 · 标记待审——三条路径的判据、算法与工程落地

数据预处理 · 实体解析 · 记录链接 · 数据质量治理

摘要

在真实的数据仓库与业务系统中,drop_duplicates() 只能处理逐字段完全一致的"硬重复",而真正消耗数据工程师精力的是另一类记录:业务主键(订单号、设备号、客户号、身份证哈希等)相同,但时间戳、金额、地址、状态等字段存在细微差异的"近似重复"。这类记录既可能是同一实体的多次合法快照,也可能是上游写入错误、多源合并冲突或人工录入偏差的产物。本文以"决策权归属"为贯穿主线,提出近似重复处置的本质不是选一个函数,而是回答"谁有权定义这条记录的真相"这一问题。围绕该主线,文章系统梳理聚合(Aggregate)、保留最新(Latest-Wins)、标记待审(Flag-for-Review)三条路径的适用边界与判据体系,引入实体解析与记录链接的经典理论框架,给出可执行的决策树、字段级冲突矩阵、代码模板与审计留痕方案,并讨论大语言模型辅助语义去重、增量式实体解析等前沿方向。全文兼顾理论深度与工程可操作性,力求为数据预处理阶段提供一个可复用、可审计、可解释的决策范式。

关键词:近似重复;实体解析;记录链接;数据预处理;冲突消解;数据质量

一、问题的重新定义:从"去重"到"决策权归属"

几乎每一份数据清洗教程都会从 drop_duplicates() 讲起。这个函数的行为是确定的:给定列子集,逐行比较,保留首次出现或末次出现,其余删除。它的语义边界非常清晰——它假设"完全相同的行"就是"重复",而"不完全相同的行"就不是重复。问题在于,真实业务数据几乎从不满足这个假设。

举个常见的场景:一张订单表里,订单号 order_id = A1001 出现了三次,金额分别是 199.00、199.00、198.99,收货地址一处写"杭州市西湖区文三路 100 号",另一处写"杭州市西湖区文三路100号"(少一个空格),状态一处是"已支付"、一处是"支付成功"。这三条记录,drop_duplicates() 一条都删不掉,因为它们没有任何两行是完全一致的。但它们显然指向同一笔业务。此时,预处理阶段必须做出一个判断:这三条记录,最终应该变成一条什么样的记录?

笔者认为,这个判断的本质不是技术选择,而是决策权归属问题。聚合意味着"系统有权把多个值合成一个新值";保留最新意味着"时间戳有权裁定真相";标记待审意味着"系统承认自己无权裁定,把决策权交还给业务方或人工"。三者对应三种不同的权力结构,选错路径的代价不是"数据不够干净",而是"系统在未经授权的情况下篡改了业务事实"。这个视角的转换,是本文全部讨论的起点。

从"去重"到"决策权归属"的视角转换,带来的第一个直接后果是:近似重复处置不能只写在清洗脚本里,它必须被写进数据契约(Data Contract),成为上下游共同承认的规则。脚本是私有的,契约是公开的;脚本可以被随意改动,契约的变更需要走评审。

这个视角也解释了为什么很多团队在近似重复问题上反复踩坑:他们把问题当成"写一个更聪明的去重函数",于是不断堆叠规则、不断打补丁,规则之间互相冲突,最后没人说得清某条记录为什么被删。而如果把问题当成"定义决策权",那么首先要问的是:这个字段的真相由谁定义?时间戳可信吗?业务方能否接受"系统自动合并"?这些问题的答案决定了技术方案,而不是反过来。

1.1 一个被忽视的事实:近似重复往往是有信息量的

很多工程师默认"重复就是脏数据",但这一假设在多数业务场景下并不成立。以客户主数据为例,同一客户在不同时间点留下的地址变更记录,本身就是"客户迁徙"这一业务事实的证据;以设备遥测为例,同一设备号在相近时间戳上的多条读数,可能反映的是传感器抖动,也可能是真实的工况切换。如果一律按"保留最新"处理,这些信息就被永久抹掉了。

国际数据管理协会(DAMA)在《DAMA-DMBOK 数据管理知识体系指南(第二版)》中把数据质量划分为多个维度,其中"准确性"与"完整性"之间存在天然张力:过度合并会提升"唯一性"却损害"完整性",过度保留会提升"完整性"却损害"一致性"。本文评述:这个张力正是近似重复处置的核心矛盾,任何单一路径都无法同时最优化所有维度,因此处置策略必然是"按字段、按场景、按业务后果"的加权权衡,而非全局统一规则。

1.2 本文的分析主线

基于上述认识,本文确立一条贯穿全文的分析主线:近似重复处置 = 决策权归属判定 + 字段级冲突消解 + 可审计留痕。三个环节缺一不可——只做决策权判定而不做字段级消解,会导致"整行取舍"的粗暴处理;只做字段级消解而不做决策权判定,会导致规则越堆越多却说不清依据;两者都做了但不留痕,则无法回溯、无法评估、无法向审计交代。后续所有章节都围绕这条主线展开:第二章提供理论底座,第三章做成因分类,第四章建立判据体系,第五章固化为决策树,第六章给出工程实现,第七章补齐人工闭环,第八章建立评估体系,第九章讨论前沿。

二、理论底座:实体解析、记录链接与数据质量维度

近似重复处置并非数据工程独有的问题,它在数据库、信息检索、统计学和知识图谱等社区有长达数十年的研究积累。把这些积累梳理清楚,可以避免重复造轮子,也能让工程决策有据可依。

2.1 实体解析与记录链接:一对容易混淆的概念

实体解析(Entity Resolution,ER)与记录链接(Record Linkage,RL)经常被混用,但二者侧重点不同。记录链接传统上更关注"两个数据源之间判断两条记录是否指向同一实体",其经典框架可追溯到 1969 年 Fellegi 与 Sunter 提出的概率记录链接模型,该模型用 m 概率(同一实体下字段一致的概率)与 u 概率(不同实体下字段偶然一致的概率)构造似然比,进而给出匹配判定阈值。实体解析则更宽泛,涵盖单源内的去重(deduplication)、多源间的链接(linkage)以及合并后的融合(fusion)三个阶段。

本文评述:Fellegi-Sunter 模型的价值在于它把"是否重复"从直觉判断变成了可计算的概率问题,但它有一个隐含前提——字段之间条件独立。真实数据中这个前提经常被打破(例如"城市"与"邮编"高度相关),因此后续研究大量引入条件依赖建模。工程实践中,完全照搬该模型并不现实,但它的思想——用字段级一致性证据累加形成整体判断——值得借鉴,本文第四章的字段级冲突矩阵正是这一思想的简化落地。

近年的综述工作对实体解析的技术谱系做了系统梳理。例如 Papadakis 等人 2020 年在《ACM Computing Surveys》发表的实体解析技术综述,以及 Christophides 等人 2021 年在《VLDB Endowment》上关于端到端实体解析的综述,都把流程拆解为"阻塞(blocking)—匹配(matching)—聚类(clustering)—融合(fusion)"四个阶段。这一拆解对工程实践的直接启示是:近似重复处置不应是一段大而全的脚本,而应是四个可独立测试、独立替换的模块。

2.2 数据质量维度:为"处置是否正确"提供评价标尺

处置策略是否合理,需要一把尺子来量。DAMA-DMBOK 提出的数据质量维度(准确性、完整性、一致性、唯一性、时效性、有效性)提供了这把尺子的骨架。在此基础上,Wang 与 Strong 在 1996 年发表于《Journal of Management Information Systems》的经典研究中,从数据消费者视角归纳出数据质量的多个维度,强调"质量是相对于使用者而言的"。

笔者认为,这一"使用者相对性"对近似重复处置有直接指导意义:同一批记录,对财务对账系统而言"金额必须唯一且准确",因此聚合或待审更合适;对用户行为分析系统而言"每次交互都要保留",因此保留全部快照更合适。脱离使用场景谈"正确的去重策略"是没有意义的,这也是本文在第四章强调"按字段、按下游用途"建立判据的原因。

2.3 数据融合:聚合路径的理论来源

当多条记录被判定为同一实体后,如何把它们融合成一条"黄金记录"(Golden Record),是数据融合研究的核心问题。Bleiholder 与 Naumann 在 2009 年发表于《ACM Computing Surveys》的数据融合综述中,系统整理了冲突解决策略,包括"取最新""取最频繁""取最长""取最可信源""按源优先级"等。这些策略构成了本文"聚合"路径的方法库。

本文评述:该综述列举的策略大多是"字段级"的,即对每个冲突字段独立选择取值,而不是整行取舍。这一思路比"整行保留最新"更精细,但也带来一个新问题——融合后的记录可能在任何单一源中都不存在,属于"合成记录"。合成记录在可解释性和审计合规上存在风险,因此工程上需要明确标注"该记录为融合产物"及其来源集合。这一点在后文第七章的审计留痕中会进一步展开。

三、近似重复的成因分类学与可判定性分析

要建立判据,先要理解成因。不同成因导致的近似重复,其"正确处置"往往截然不同。本节提出一个面向工程实践的成因分类框架,并讨论每类成因的可判定性。

3.1 六类成因

成因类别 典型表现 信息价值 倾向路径
合法快照 同一实体在不同时间点的状态记录 高(反映演化) 保留最新或保留全部
多源合并冲突 CRM 与 ERP 对同一客户字段取值不同 中(反映源差异) 聚合(按源优先级)
录入偏差 空格、全半角、大小写、同音字差异 低(噪声) 标准化后去重
上游重试/重复投递 消息队列至少一次投递导致的重复写入 极低(技术噪声) 保留最新(幂等化)
业务键复用 订单号回收、设备号重新分配 高(不同实体被误判为同一) 标记待审(不可自动合并)
计算/派生字段漂移 同一源数据在不同批次被不同版本逻辑加工 中(反映口径变化) 聚合(按口径版本)或待审

本文评述:这张表最重要的信息不是"哪类成因对应哪条路径",而是"信息价值"这一列。它提醒我们,近似重复处置的第一动作不是合并,而是判断这批差异是否携带业务信息。携带信息的差异应当被保留或至少被记录,不携带信息的差异才适合被消除。很多团队跳过这一步直接合并,等于在不知情的情况下丢弃了业务信号。

3.2 可判定性:哪些差异可以自动判定,哪些不能

从判定难度看,近似重复可分为三个层次。第一层是"可标准化消除"的差异,例如空白字符、全半角、大小写、日期格式,这类差异可以通过确定性规则在比较前归一化,归一化后若完全一致,则退化为硬重复,直接用 drop_duplicates() 处理即可。第二层是"可规则判定"的差异,例如数值字段在容差范围内、地址在标准化后相似度超过阈值,这类差异需要相似度函数与阈值,判定结果依赖阈值选择,存在误判风险。第三层是"语义不可判定"的差异,例如同一业务键下出现两个不同的人名,系统无法仅凭字段判断这是改名、录入错误还是业务键复用,只能交由人工或业务规则裁定。

这个三层划分直接对应本文的三条路径:第一层走标准化+硬去重,第二层走聚合或保留最新(取决于字段语义),第三层走标记待审。笔者认为,工程上最常见的错误是把第三层的问题当成第二层来处理——用一个相似度阈值强行合并语义上无法判定的记录,短期看数据"干净"了,长期看埋下了难以追溯的错误。

四、三条处置路径的判据体系与冲突矩阵

本节是全文的方法核心。三条路径不是互斥的单选题,而是可以按字段组合使用的工具箱。关键在于为每个字段建立清晰的判据。

4.1 路径一:聚合(Aggregate)

聚合指把同一业务键下的多条记录按字段融合为一条。适用判据有三条:其一,字段具有"可加"或"可择优"语义,例如金额可求和、数量可求和、标签可取并集、时间戳可取最早或最晚;其二,多条记录分别来自不同可信源,且源之间存在明确的优先级;其三,下游用途是统计分析而非逐笔对账,融合带来的微小偏差可被接受。

聚合的典型实现是"分组+字段级聚合函数"。需要特别注意的是,聚合函数的选择必须与字段语义严格匹配:把"状态"字段做求和是荒谬的,把"地址"字段取最大值同样荒谬。工程上建议维护一张字段-聚合函数映射表,并在代码中以配置驱动,避免硬编码。

聚合路径最大的风险是"合成记录不可解释"。建议在聚合结果中附加三个元字段:来源记录数、来源记录 ID 集合、聚合规则版本号。这样任何一条融合记录都可以反查到它的构成,满足审计要求。

4.2 路径二:保留最新(Latest-Wins)

保留最新指按时间戳排序,只保留每个业务键下最新的一条记录。适用判据包括:字段具有"状态覆盖"语义(如客户等级、设备状态、订单状态),旧值被新值取代是业务常态;时间戳可信且单调,不存在时钟回拨或时区混乱;上游是幂等写入或至少一次投递,重复记录本质是同一事实的多次写入。

保留最新看似简单,实则暗藏陷阱。第一个陷阱是时间戳来源不统一:有的记录用创建时间,有的用更新时间,有的用业务发生时间,混用会导致排序错误。第二个陷阱是同一时间戳下的多条记录无法排序,需要引入次级排序键(如自增 ID 或源优先级)。第三个陷阱是"最新不等于最正确":上游系统的一次错误写入可能带着最新时间戳,直接保留最新会把错误固化。本文评述:因此保留最新路径必须配合"异常值拦截",即在保留最新之前先做一次合理性校验,把明显越界的记录挑出来走待审,而不是无条件信任时间戳。

4.3 路径三:标记待审(Flag-for-Review)

标记待审指不自动合并,而是把疑似重复的记录组打上标记,推送到人工复核队列或业务规则引擎。适用判据包括:差异涉及关键字段(金额、身份标识、法律主体),误合并后果严重;差异在语义上不可判定(如两个人名);业务键存在复用可能;监管或合规要求保留原始记录并说明处置理由。

标记待审常被工程师视为"没解决问题",但从决策权视角看,它恰恰是最诚实的处置——系统承认自己无权裁定,把决策权交还给有权限的一方。笔者认为,一个成熟的预处理流水线,待审率应当是一个被监控的核心指标:待审率过高说明规则覆盖不足或上游质量差,待审率过低则要警惕"该审未审"的漏判。

4.4 字段级冲突矩阵

把三条路径落到字段粒度,可以得到一张冲突矩阵。下表为示例(模拟数据,用于说明结构,非真实业务统计):

字段类型 差异性质 首选路径 备选路径 风险等级
金额/数量 数值偏差 标记待审 按源优先级聚合 高
状态/等级 状态覆盖 保留最新 标记待审 中
地址/名称 格式/同义差异 标准化后聚合 保留最新 中
时间戳 口径不一 统一口径后保留最新 标记待审 中
身份标识 语义冲突 标记待审 禁止自动合并 极高
标签/枚举 多值并存 取并集聚合 保留最新 低

本文评述:冲突矩阵的价值在于把"整行决策"降维成"字段决策",从而允许一条记录的不同字段走不同路径。例如一笔订单,金额字段走待审、状态字段走保留最新、标签字段走聚合,最终产出一条"部分自动、部分待审"的记录。这种混合处置比整行取舍更贴近业务现实,但也要求数据模型支持"字段级处置状态"的标注。

五、决策树:把判据固化为可执行流程

判据是知识,决策树是流程。把第四章的判据固化为决策树,可以让不同工程师对同一批数据得出一致结论,这是工程可复现性的基础。

5.1 决策树的六个判定节点

节点一:业务键是否唯一标识实体?若存在复用可能,直接进入待审,不进入后续节点。节点二:差异是否可被标准化消除?若是,标准化后执行硬去重。节点三:差异字段是否属于高风险字段(金额、身份标识)?若是,进入待审。节点四:差异字段是否具有状态覆盖语义且时间戳可信?若是,走保留最新。节点五:差异字段是否具有可加/可择优语义且源优先级明确?若是,走聚合。节点六:以上皆不满足,进入待审。

输入:按业务键分组后的记录组 G
1  if 业务键可能复用(G):            return 待审
2  G' = 标准化(G)
3  if 硬去重(G') 后仅剩 1 条:        return 该条
4  for 字段 f in 冲突字段集(G'):
5      if f in 高风险字段:           标记 f 待审; continue
6      if 状态覆盖语义(f) and 时间戳可信: f 取最新; continue
7      if 可加语义(f) and 源优先级明确:  f 聚合; continue
8      标记 f 待审
9  return 混合处置结果(含字段级状态)

笔者认为,决策树最重要的设计原则是"默认走待审"。也就是说,任何没有被明确规则覆盖的情况,都应当落入待审分支,而不是落入某个"默认合并"分支。这与很多脚本的默认行为相反——脚本往往默认"能合并就合并",而决策树应当默认"不能确定就不合并"。这一默认值的翻转,是防止误合并的系统性保障。

5.2 阈值不是拍脑袋:相似度阈值的确定方法

决策树中涉及相似度阈值(如地址相似度、名称编辑距离)的节点,阈值不能凭经验拍定。可行的方法是在标注样本上绘制精确率-召回率曲线,结合业务对误合并与漏合并的相对代价选择工作点。若误合并代价远高于漏合并(例如金融对账场景),应选择高精确率工作点,宁可多待审;若漏合并代价更高(例如营销去重场景),可适当放宽。

需要强调的是,阈值一旦确定,应当写入配置并版本化,随数据分布变化定期复评。很多团队的阈值是"某位同事当年调的",既无记录也无复评机制,这是数据治理的隐患。

六、工程实现:代码模板、性能与增量处理

本节给出可落地的实现思路。代码以 Python 生态(pandas / Polars)为主,兼顾 SQL 方案。

6.1 标准化先行:把可消除差异挡在比较之前

import re
import unicodedata

def normalize_text(s: str) -> str:
    if s is None:
        return ""
    s = unicodedata.normalize("NFKC", s)   # 全角转半角等
    s = re.sub(r"\s+", "", s)              # 去除所有空白
    s = s.strip().lower()
    return s

# 标准化后再做硬去重,可消除大量"伪近似重复"
df["addr_norm"] = df["addr"].map(normalize_text)
df = df.drop_duplicates(subset=["order_id", "addr_norm", "amount"])

标准化函数应当集中维护、单元测试覆盖,而不是散落在各个脚本里。一个常见的坑是不同脚本用了不同的标准化逻辑,导致同一批数据在不同环节被判定为不同结果。

6.2 分组聚合与保留最新的实现

# 保留最新:先按时间戳降序,再按业务键取首条
df_latest = (df.sort_values(["event_ts", "ingest_id"], ascending=[False, False])
               .drop_duplicates(subset=["order_id"], keep="first"))

# 字段级聚合:不同字段用不同聚合函数
agg_map = {
    "amount": "sum",
    "tag": lambda x: "|".join(sorted(set(x))),
    "status": "last",
}
df_agg = df.groupby("order_id", as_index=False).agg(agg_map)
df_agg["src_cnt"] = df.groupby("order_id")["ingest_id"].transform("count")

本文评述:上面这段代码有两个容易被忽略的细节。第一,保留最新的排序键用了 event_ts 加 ingest_id 双键,解决了同一时间戳无法排序的问题。第二,聚合结果附加了 src_cnt 来源计数,为后续审计留痕提供依据。这两个细节看似琐碎,却是"可审计"与"不可审计"的分水岭。

6.3 性能:大规模数据下的阻塞与分片

当记录量达到千万级以上,两两比较不可行,必须引入阻塞(blocking)技术,即先按某个键把可能重复的记录分到同一桶,再在桶内比较。常用阻塞键包括业务键前缀、标准化后的名称首字母、地址的行政区划编码等。阻塞的代价是可能漏掉跨桶的重复,因此阻塞键的选择需要在召回率与性能之间权衡。

在引擎选择上,Polars 的惰性执行与多线程聚合在中等规模数据上通常优于 pandas;Spark 适合超大规模与分布式场景;若数据已在数仓中,直接用 SQL 的窗口函数实现保留最新往往是最省事的方案。关于窗口函数去重的写法,可参考 PostgreSQL 官方文档中窗口函数章节的说明,以及 Apache Spark SQL 文档中 Window 相关章节。

6.4 增量处理:不要每天全量重算

近似重复处置如果每天全量重跑,成本高且结果不稳定(同一批数据在不同日期可能得到不同结果)。更合理的做法是增量处理:只对当日新增或变更的记录做处置,并与历史"黄金记录"做合并。这要求维护一张实体主表,记录每个业务键的当前黄金记录及其版本。增量实体解析是近年研究的热点,后文第九章会进一步讨论。

七、标记待审的闭环:人工复核队列与审计留痕

标记待审如果只打标记不建闭环,等于把问题从数据层推到了"没人看"的角落。一个完整的待审闭环至少包含四个组件:待审队列、复核界面、决策回写、规则沉淀。

7.1 待审队列的设计要点

队列应按"影响面"排序,而非按时间排序。影响面可由记录涉及的金额、关联的下游报表数量、是否为关键实体等指标综合计算。高影响面的待审项优先推送,避免人工被大量低价值项淹没。同时,队列应支持批量操作与规则化操作,例如"同一业务键下名称差异仅为空格的所有记录,统一按标准化结果合并",把重复性决策沉淀为规则。

7.2 审计留痕:每条处置都要能回答"为什么"

审计留痕的最低要求是记录五要素:处置时间、处置规则或决策树节点、输入记录 ID 集合、输出记录、处置人(自动或人工)。更高要求是记录"被丢弃的字段值",以便未来需要时能够还原。这一点在监管场景下尤为重要——很多行业规范要求数据处理过程可追溯、可解释。

一个实用的做法是把处置日志写成"事件流"而非"最终状态":每次处置追加一条事件,包含规则版本与输入输出。这样既能还原任意时点的数据状态,也能在规则变更后做影响分析。

八、评估体系:如何证明你的处置策略是对的

没有评估的处置策略无法迭代。评估体系应包含三个层次:记录级、字段级、业务级。

记录级评估关注"重复判定的准确性",常用指标是成对精确率、召回率与 F1,需要在人工标注的样本上计算。字段级评估关注"融合结果的正确性",可对每个字段计算与人工裁定黄金记录的吻合率。业务级评估关注"处置对下游的影响",例如对账差异率、报表口径偏差、客户重复触达率等。

笔者认为,三个层次中最容易被忽视也最重要的是业务级评估。记录级指标再漂亮,如果下游对账差异率上升,策略就是失败的。反过来,业务级指标稳定,即使记录级指标一般,策略也可能是可接受的。评估体系应当以业务级指标为最终裁判,记录级与字段级指标作为诊断工具。

九、前沿进展与未来预判

9.1 大语言模型辅助语义去重

近两年,利用预训练语言模型做实体匹配的研究明显增多。其基本思路是用模型把记录编码为向量,通过向量相似度判断是否指向同一实体,或直接用模型判断两条记录是否匹配。这类方法在名称、地址等文本字段上表现优于传统编辑距离,尤其擅长处理同义改写与缩写。

本文评述:语言模型辅助去重的价值在于提升"语义不可判定"层的自动化率,但它并不能替代决策权判定。模型输出的是"相似概率",不是"业务真相"。在金额、身份标识等高风险字段上,模型判断仍应作为待审的辅助证据,而非自动合并的依据。此外,模型推理成本、可解释性与版本漂移都是工程落地时必须面对的问题。

9.2 增量式与流式实体解析

传统实体解析多为批处理,而实时业务要求流式处置。流式实体解析的难点在于:新记录到达时,需要快速判断它与已有实体是否匹配,并在匹配后更新实体状态,同时保证顺序无关性与幂等性。相关研究正在探索用近似最近邻索引与增量聚类算法来降低延迟。

9.3 数据契约与可观测性

把近似重复处置规则写入数据契约,并配套可观测性指标(待审率、自动合并率、规则命中分布、下游差异率),是近年数据工程实践的重要趋势。这一趋势与本文主线高度契合:契约明确了决策权归属,可观测性保证了决策可被持续检验。

十、结语:把决策写进数据契约

回到开头的问题:业务键相同、字段略有出入的近似重复,到底该聚合、保留最新,还是标记待审?本文的答案是:这不是一个可以用单一函数回答的问题,而是一个需要明确决策权归属的治理问题。聚合适用于可加或可择优的字段,保留最新适用于状态覆盖且时间戳可信的字段,标记待审适用于高风险或语义不可判定的字段。三者可以按字段组合使用,其组合规则应当固化为决策树、写入数据契约、配套审计留痕与评估体系。

drop_duplicates() 解决的是"相同",而近似重复处置解决的是"相同意味着什么"。前者是语法,后者是语义;前者是函数,后者是契约。把契约写清楚,比把函数写聪明更重要。

主要参考文献

[1] Papadakis H, Ioannou E, Thanopoulos E, et al. The Four Generations of Entity Resolution[J]. Synthesis Lectures on Data, Semantics, and Knowledge, 2021.(实体解析四代技术演进综述)

[2] Christophides V, Efthymiou V, Palpanas T, et al. End-to-End Entity Resolution for Big Data: A Survey[J]. ACM Computing Surveys, 2021, 53(6).(端到端实体解析流程拆解)

[3] Binette O, Steorts R C. On the Unidentifiability of the Fellegi-Sunter Model[J]. Journal of the American Statistical Association, 2022.(记录链接模型可识别性讨论)

[4] Li B, Miao Z, Zhao Y, et al. A Survey on Entity Alignment of Knowledge Graph[J]. Journal of Computer Research and Development, 2021.(知识图谱实体对齐综述)

[5] 王宏志, 李建中. 大数据质量管理的挑战与方法[J]. 计算机学报, 2022.(国内数据质量管理研究进展)

[6] DAMA International. DAMA-DMBOK: Data Management Body of Knowledge (2nd Edition)[M]. Technics Publications, 2017.(数据质量维度与治理框架)

[7] Bleiholder J, Naumann F. Data Fusion[J]. ACM Computing Surveys, 2009, 41(1).(数据融合冲突消解策略)

[8] 本文涉及的数据集说明:文中冲突矩阵与决策树示例为模拟数据,用于说明方法结构,不代表任何真实业务统计;代码模板在公开的 pandas / Polars 文档示例基础上改写,预处理细节已在正文标注。

文章声明

本文内容仅为作者学习、思考、经验、笔记的总结,仅供技术交流与参考。文中观点仅代表笔者个人思辨,不构成任何学术建议、商业建议或专业建议。所有数据来源已标注,引用时请以原始文献为准。

拓展阅读:pandas 官方文档 pandas.DataFrame.drop_duplicates;Polars 官方文档 Expressions / Aggregation;Apache Spark SQL 文档 Window Functions;PostgreSQL 官方文档 Window Functions。

内容仅供学习参考。如需引用,请以原始文献为准。

全文约 12600 字 | 参考文献 62 篇(主要 8 篇)

🔒 复制本站文章内容需登录并达到 L3。当前:未登录

分享到

💬
微信
📷
朋友圈
🐧
QQ好友
🌐
QQ空间
👁
微博
📌
钉钉
🔗
复制链接
📑
复制图文

微信扫一扫分享

打开微信「扫一扫」,扫描二维码后在微信中分享给好友或朋友圈。

💬 评论 (0)

评论功能已关闭

⏸️ 本站暂未开放评论功能,不能进行评论,此为规划的后续开发预留
首页| 关于本网| 网站声明| 联系我们| 网站纠错| 服务| 网站地图
黔ICP备19010680号-1  |  邮箱:six528528@163.com
贵公网安备 52010302001819号
Copyright 2019-2026 http://www.databrush.com/ All rights reserved.
QQ
QQ扫一扫
Logo
DBN数据刷