简介:《DataCleaner 中文官方文档1》是一份系统介绍这款开源数据清洗工具的中文文档,面向在 C# 技术栈下从事数据治理、数据分析或业务系统维护的开发者,重点解决数据质量不高、清洗流程不清晰、规则配置无从下手等问题。资源仅含 1 个 docx 文档,压缩包大小约 3.47MB,结构完整,支持全文检索,便于离线阅读。文档先阐述数据质量、数据画像、数据整理、数据存储、数据监控和主数据管理等基础概念,帮助读者建立统一认知;随后演示桌面版从安装客户端、连接数据库或存储文件、添加与连接组件、执行任务、保存与打开任务,到将清洗结果写入文件的完整流程。后半部分重点介绍转换(Transform)与改进(Improve)类组件,包括 JavaScript 转换器、调用子分析任务、分类回归应用、多个过滤器、联合转换器以及近义词查找等典型功能,并配有目录索引,方便快速定位对应章节。目前已有 364 人学习下载,无论用于概念查漏补缺,还是作为 DataCleaner 实际操作参考,这份文档都有不错的实用价值。
1. DataCleaner 中文官方文档:先画像、再整理、最后监控的数据清洗工作台
这份文档开篇抛出的观点很反直觉:数据清洗不是写几个脚本把脏数据抹掉,而是先画像、再整理、最后监控。DataCleaner 把分析、转换、写回组织成可视化 job,让你在桌面上就能完成从数据质量体检到标准化输出的完整链路。文档里还专门强调,别只盯着你怀疑有问题的字段去查,那些你认为没问题的项目细节同样值得分析——这恰恰是数据画像最容易被低估的价值。它适合正在搭数据质量体系的数据工程师、被脏数据反复折磨的分析岗,以及想找主数据管理(MDM)落地工具的项目组。如果你从没碰过这类工具,这份文档能帮你建立一套可复用的清洗思路。
2. 数据质量与画像:六个概念决定你 DataCleaner 的用法
先花一章把概念理清不是走形式。DataCleaner 组件面板里列着几十个组件,排布逻辑不按字母顺序,而是按“分析、改进、写回”这类数据质量动作来分。不搞懂这些动作背后的概念,进了界面大概率对着组件列表发呆。另外,这套概念跟你用的是 Java、C# 还是 Python 无关——job、组件、数据存储是独立于语言的抽象,理解它们才能在任何语言环境下把 DataCleaner 编排进自己的数据管线。
2.1 数据质量与数据画像:先看清现状再动手
数据质量(DQ)是“用于特定目的的数据质量”,文档列出的典型问题包括完整性缺失、正确性偏差、数据冗余和格式不统一。注意它特意强调了“用于特定目的”——同一份数据,放在交易系统里可能没问题,放在报表口径里就一塌糊涂。数据质量不是绝对概念,而是相对使用场景的。数据质量分析(DQA)是检查和度量数据质量的人工过程,文档明确点了两条线:一条是技术线的数据检查,另一条是非技术线的业务访谈。做 DQA 时跟业务人员聊一圈,往往比直接跑 SQL 更能定位问题源头。
数据画像(Data Profiling)是调查数据存储并生成概要的过程,目的是建立对数据的整体认知,而不是一股脑修数据。文档给了一个很实用的建议:采取探索性方法,即使你觉得自己已经知道数据有哪些问题,也要检查你认为正确的部分。原话大意是“检查你认为正确的项目细节同样重要”。我在实际项目里遇到过多次这种状况:自认为干净的字段拆开看才发现有不可见字符和全角半角混排。多分析一些字段,反而比只盯着已知问题更省时间。在 DataCleaner 里,Analyze 组件对应画像,Transform 组件对应整理,一个 job 里通常先挂分析器看数据,再接转换器修数据,这个先后顺序直接决定 job 的连线方式。
2.2 数据整理、数据监控与主数据管理:从单次清洗到长期治理
数据整理(Data Wrangling)是把数据从原始形式映射成更适合分析的格式。文档引了维基百科的解释后直接指出:DataCleaner 捆绑了大量转换和改进功能,让你在同一个界面里既能分析数据,也能重塑数据。这个“重塑”很关键。很多人在清洗时只想着删空值和去重,其实按规则统一格式、拆分合并字段,才是数据整理里工作量最大的部分。
数据监控是把分析动作从一次性探索变成持续性检查。文档给出了两个层次的方案:一是定期跑批,比如每天晚上跑一遍质量作业,配上阈值报警;二是所谓首次权利(FTR)原则,在数据注册入口就做校验,从源头挡掉坏数据。我个人的体会是,新建项目先用 FTR 思路堵住入口,存量数据靠定期监控慢慢收敛,两条腿走路。DataCleaner 里做监控并不复杂,重复执行同一份 job、对比每次的分析结果即可,job 文件是 XML 格式,天然适合放进版本管理系统跟踪变化。
2.3 数据存储:DataCleaner 眼里只有存储和 job
主数据管理(MDM)被定义为管理组织核心实体数据的过程,核心目标是“单一版本的事实”。多个系统里各存一份客户数据,重复、冲突、粒度不统一是必然的。DataCleaner 在 MDM 里的角色就是一个引擎:从多个数据存储读取,清洗、转换、统一,再输出到主数据视图。理解这个概念,你就明白为什么文档要专门提复合数据存储——同一个 job 里分析处理多个源,是 MDM 场景的硬需求。
数据存储在 DataCleaner 里是个总称,覆盖关系数据库、CSV、Excel、XML 文件甚至标准业务应用。文档里说“数据存储是存储数据的地方”,听起来像废话,但它是 UI 里所有连接操作的统一抽象。你建一个 MySQL 连接是建数据存储,导入一个 Excel 也是建数据存储。后面章节讲的连接数据库、写回文件、CLI 列数据存储列表,全都建立在这个抽象上。创建复合数据存储时,把多个存储挂在一个逻辑名称下,job 里就能跨库做关联分析,但要注意不同存储的字段命名和类型映射差异,否则合并后字段对不齐。设计 job 之前先把数据存储建好,这跟在 IDE 里先配好数据源再写查询是一个道理。
3. 桌面版实操:从安装到写回文件,跑通最小 job 的五个步骤
3.1 安装与启动:jdk1.7 起步,jar 包启动与许可证就位
安装要求很朴素:一台电脑、jdk1.7 及以上、许可证文件。安装程序本身是一个可执行的 jar,多数系统双击就能跑。如果双击没反应,打开命令行手动执行:
java -jar DataCleaner-[edition]-[version]-install.jar[edition] 和 [version] 是安装包文件名里的版本标识,实际运行时替换成你下载的文件名。用命令行启动的好处是能直接看到 Java 报错信息;如果提示找不到 java 命令,先检查 JDK 是否装好、环境变量是否配置。文档写的是 1.7 起步,实际用新版本 JDK 时注意兼容性,遇到启动异常优先看控制台输出而不是盲改配置。
Windows 上安装有两个怪癖。一是没有管理权限时建议装到自定义目录,别塞进系统盘的 Program Files,否则写配置时容易撞上权限限制。二是可能弹“There is no script engine for file extension '.js'”,这通常是 .js 文件被编辑器接管导致的,按文档里的脚本引擎修复指引处理即可。如果安装时许可证文件没就位,可以跳过这步,之后手动复制到用户主目录下的隐藏文件夹:
mkdir .datacleanerWindows 资源管理器不允许直接创建以点开头的目录,但命令行里执行毫无问题。许可证文件放进这个目录后,DataCleaner 启动时会自动读取。这个目录同时存放用户配置,所以备份环境时记得把整个目录一起拷走。
提示:Windows 下 .datacleaner 属于隐藏目录,命令行里可以用
dir /a看到它。
3.2 连接数据存储:关系库与文件的创建流程
连接数据库或导入文件,在 DataCleaner 里统称创建数据存储。UI 操作路径是从主界面打开数据存储管理,选择类型后填连接信息。文档明确列出的类型包括 CSV、Excel、Oracle、MySQL 等。关系库走 JDBC,这里有个关键前提:JDBC 驱动 jar 要能被 DataCleaner 加载。文档第 13 章专门讲驱动安装,常见做法是把驱动 jar 放到 DataCleaner 的驱动目录下,重开客户端后再建连接。
连接串填什么?以 MySQL 为例就是主机、端口、库名、用户名、密码,外加必要的连接参数。我第一次用的时候漏了时区参数,导致日期字段分析结果整体偏移。测试连接成功后再创建存储,避免把错误的连接配置保存进 job。文件型存储更简单,CSV 和 Excel 选文件路径就行,但要注意 CSV 的编码,这个坑后面排查章节会再提。
3.3 搭一条最小 job:加组件、连线、执行
job 是 DataCleaner 的工作流。创建流程分四步:添加组件、连线、执行、保存。组件分四类:Transform(转换)、Improve(改进)、Analyze(分析)、Write(写出)。建议第一条 job 用最小链路:数据存储 → 值分布分析器 → 创建 CSV 文件。这条链路能同时验证数据源连接、组件执行、结果输出三个环节,任何一步失败都能快速定位。
连线时注意方向,数据从上游流向下游。Analyze 类组件不改变数据,Transform 类组件会改变数据,Write 类组件是终点。执行时可以选择全部执行,也可以只跑选中片段,这对调试大 job 很有用。文档里也提到 job 示例模板。我不建议从零开始搭 job,尤其第一次用的时候。模板已经配好了常见的数据质量检查链路,比如值分布加完整性分析,你要做的只是换数据源、调参数。改模板比从空画布开始学组件快得多。
3.4 保存、打开与模板:job 文件就是 XML
job 保存后是一个 analysis job 文件,本质是 XML。文档第 11 章给出了它的结构,包括数据源引用、组件列表、连接关系、参数值。用文本来描述工作流带来两个额外好处:一是可以放进 Git 做版本管理,二是可以通过命令行传参数动态覆盖。打开已有 job 后,组件参数会按保存时的值恢复,换环境跑批时注意检查数据存储引用是否失效。
3.5 写回结果:CSV、Excel、临时表、插入与更新的选择
清洗结果写回有五种组件可用,选择逻辑看下游用途。创建 CSV 文件、创建 Excel 表格适合导出交付;创建临时表适合中间计算,用完不保留;插入表格适合目标表为空的一次性导入;更新表格适合按主键把已有行更新为新值。如果只需要分析结果,用 CSV 最小化依赖;如果清洗完还要继续在数据库里做聚合,直接插入临时表;只有明确要覆盖线上数据时才用更新表格,而且更新前最好先跑一遍主键检查组件,避免重复主键导致更新错行。
4. 组件分析:Transform、Improve、Analyze、Write 四类的选型顺序
DataCleaner 的组件面板分为四组。工程上我的使用顺序是固定的:先 Analyze 摸清底细,再 Transform 修数据,必要时 Improve 做标准化,最后 Write 落到目标端。这个顺序和组件分类的字母排列无关,而是从数据质量动作的依赖关系来的——不知道数据哪里脏,转换规则就是瞎拍脑袋。
| 分组 | 用途 | 对应数据质量动作 |
|---|---|---|
| Transform | 转换字段值、过滤记录 | 数据整理 |
| Improve | 统一与补全字段内容 | 数据改进 |
| Analyze | 度量与画像 | 数据画像 |
| Write | 输出处理结果 | 数据交付 |
4.1 Transform:转换器的六个常用件与参数
Transform 组是清洗动作的主力。JavaScript 转换器提供脚本入口,适合正则替换、字符串拼接这类复杂逻辑;调用子分析 job 用于复用已有流程,把公共清洗步骤抽出来,父 job 里嵌入子 job。Apply classifier 和 Apply regression 是把机器学习模型的预测结果应用到数据流上,先训练好模型再在 job 里调用。
过滤器这组要特别注意参数语义。Equals 过滤器按精确值过滤,适合枚举字段的定向剔除;Max rows 过滤器限制数据行数,验证阶段几乎必用,比如先限制 100 行跑通链路再放全量;Not null 过滤器剔除目标字段为空的记录,但它一次只能按一个字段判空,多字段空值判断要串多个过滤器或用 JavaScript 转换器。Union 转换器合并多个输入流,语义类似 SQL 的 UNION,多数据源合并时它比先写出再读取更直接。
注意:Max rows 的参数是“行数上限”,填 0 等于不限制,填负数会被当成非法参数,执行时报错。
4.2 Improve:近义词查找与表查询的用法边界
Improve 组做的是“在不改变记录粒度的前提下提升数据一致性”。近义词查找依赖字典或同义词目录,典型场景是统一“公司/企业/单位”这类写法差异,输出标准化值。表查询本质是一个查找动作,用查询结果填充当前记录的字段,适合做代码表翻译,比如把部门编号映射为部门名称。
这两个组件都不是万能的。近义词查找需要先维护好同义词目录,目录质量决定替换效果;表查询要求目标表结构稳定,字段名一改 job 就断。我的习惯是:字段值混合度高时优先近义词查找,字段值能精确匹配代码表时用表查询。文档里数据参考章节(Dictionaries、Synonyms、String patterns)就是为这两个组件服务的,字符串模式(String patterns)配合模式工具使用,能识别电话号码、邮编这类固定格式字段的多种写法。
4.3 Analyze:十五种分析器里先跑哪三个
Analyze 组是文档里组件数量最多的分组,完整列表包括:布尔分析器、完整性分析器、字符集分布、日期间隔分析器、日期/时间分析器、数字分析器、模式工具、参考数据匹配器、参照完整性、字符串分析器、主键检查、值分布、值匹配、工作日分布、机器学习。第一次上手不需要全学,先跑三个:
值分布分析器输出字段的取值频率,一眼看出枚举字段有没有脏值;完整性分析器统计空值率和空值模式,定位缺失最严重的字段;模式工具把字段值归纳成掩码模式,像电话号码、邮编这类格式不统一的字段,它能量化存在多少种写法。三件套跑完,一张表的主要问题基本显形。主键检查分析器用于识别重复键值,写回数据库之前总得跑一遍,避免唯一索引冲突。字符集分布分析器用来识别字段编码,处理中文乱码时很管用。参照完整性分析器做外键一致性检测,业务表关联报错时查它。字符串分析器适合统计文本长度分布,能快速发现超长字段和异常短值。
4.4 Write:结果写出的四种姿势与目标选择
Write 组件里,创建 CSV 文件和创建 Excel 表格是最常用的交付方式,参数主要是文件路径、分隔符、是否带表头。创建临时表需要指定连接存储和临时表名,它不落持久化存储,适合 pipeline 中间层。插入表格要求目标表结构与字段映射一致,列名或类型不匹配会直接失败。更新表格必须指定主键字段,执行时按主键匹配更新,主键重复时只更新一条,容易产生脏数据。
选择逻辑就一条:交付用文件,中间过程用临时表,库内落库用插入,已有主键行需要覆盖时再用更新,且更新前务必先跑主键检查。
5. 避坑:安装、驱动与执行中的五个高频问题
5.1 安装与启动:双击没反应与许可证丢失
现象一:双击安装 jar 完全没反应,或者系统提示没有关联的程序。原因可能有两个:一是系统默认程序关联没指向 Java,二是 .js 脚本引擎被编辑器接管导致安装逻辑中断(Windows 专属)。解决方法是先用命令行java -jar方式启动,如果命令行能跑而双击不能,说明问题出在文件关联;修复脚本引擎关联后再双击安装。
现象二:安装时跳过了许可证步骤,软件启动后功能受限。原因是许可证文件没有落到用户主目录下的.datacleaner文件夹。解决方式很简单:先在命令行执行mkdir .datacleaner创建隐藏目录,再把许可证文件复制进去,重启客户端即可。
5.2 数据库连接:驱动没装与连接串参数不全
现象一:选好数据库类型、填完连接信息,测试连接时报找不到驱动。原因九成是 JDBC 驱动 jar 不在 DataCleaner 的驱动目录里。解决方法是把对应数据库的驱动 jar 放入驱动目录后重启客户端。注意驱动版本要和数据库版本匹配,版本差太多会出现连接成功后协议握手失败。
现象二:测试连接成功,但执行 job 后日期字段全部偏移、字符串字段中文变乱码。原因是连接串缺少时区或字符集参数。解决方法是显式指定时区和编码参数,比如 MySQL 连接串加上时区和字符集配置,加完重测确认字段值正常后再保存数据存储。
5.3 执行结果为空或与预期不符:先查组件再查数据
现象一:job 执行成功,输出文件 0 行。原因是 Max rows 或 Not null 过滤器组合把全部数据滤掉了,也可能是源表本来就有大量空值。解决方法是先去掉所有过滤器跑一次 Analyze 看源表行数,再逐个启用过滤器定位是哪个条件把数据清空的。
现象二:数字字段分析结果出现大量异常峰值,肉眼去看却发现“数字没毛病”。原因是原始数据里带了空格、不可见字符或全角数字,被分析器当成不同值处理。解决办法是在 Transform 阶段用 JavaScript 转换器先做 trim 和全角转半角,标准化后再接分析器。
5.4 内存与日志:堆内存不足的定位顺序
现象:大表跑分析时 OOM 或者界面卡死。原因是默认堆内存不够,分析组件是逐行扫描的大操作,几百万行加上桌面渲染一起挤在默认堆里。解决步骤按顺序来:先在关键路径上挂 Max rows 过滤器缩小验证集;不行再改启动配置里的堆内存参数,文档给的参数形态是-Xms开头,常见做法是找到 DataCleaner.l4j 或 console.l4j 配置文件调大堆上限;再不行就换 CLI 跑批,桌面端渲染也占内存。
排错时不要只盯着报错弹窗,文档第 12 章讲了日志级别修改,把日志调到调试级别后能看到组件级别的详细信息。执行异常时看日志往往比猜组件参数靠谱得多。
6. 进阶:命令行执行与参数化,把 DataCleaner 塞进定时任务
6.1 用命令行核对环境与执行 job
命令行接口(CLI)的价值在于无界面跑批。文档第 14 章的场景包括执行分析 job、列出数据存储内容、列出可用组件、动态重写配置元素,以及参数化 job。我常用的两条命令长这样:
# 列出已配置的数据存储和组件,换机器后先核对面貌 DataCleaner -list # 执行指定分析 job,文件路径指向 .analysis 文件 DataCleaner -job quarterly_quality.analysis.xml上面命令的参数名以你下载版本的帮助输出为准,各版本 CLI 标识可能有差异。-list的典型用途是换机器后验证驱动和数据存储是否就位,取代在桌面端一个个窗口去点。-job后面跟 job 文件路径,跑批时强烈建议先小样本验证再全量执行。
除了直接执行,还有参数化 job 和动态重写配置元素。参数化允许在执行时传入参数,比如数据日期、阈值上限;动态重写则可以在不修改 job 文件的前提下覆盖配置元素,换库、换过滤条件都不用再打开桌面端。两个能力配合起来,就能把同一份 job 模板复用到不同环境:调用方传当前环境的库名和阈值,其余部分保持一致。配合系统的计划任务,每天自动跑一遍数据质量检查不是问题。文档第 10 章的配置文件还支持数据存储、参考数据、执行器和存储提供商的统一配置,配好后 CLI 和桌面端共用同一份。
6.2 向上走的几个方向
文档后半部分的内容不一定要马上用,但值得知道它们存在:Hadoop 与 Spark 接口,适合数据量大到单机跑不动时把 job 提交到集群;Pentaho 集成,适合在现成的 ETL 平台里嵌入 DataCleaner 能力;开发者指南,包括架构、通过代码执行 job、扩展包开发和嵌入 API。无论你写 Java、Python 还是 C#,只要最终要跑批,都能通过 CLI 通路把 DataCleaner 编排进自己的调度体系,这是它最实用的集成方式。
我在本地搭 DataCleaner 环境时也栽过几次,最典型的坑是装完驱动忘了重开客户端,连接测试一直报驱动不存在,白折腾半小时。从那以后每换一台机器跑 job,我都强制先跑一遍-list确认数据存储和组件都在,再执行正式 job,这套习惯帮我省掉了一大半“分析到一半才发现连错库”的返工。希望帮到你。
本文还有配套的精品资源,点击获取