资料名称: OpenRefine 官方用户手册(OpenRefine user manual),即 openrefine.org/docs 下那份完整手册,配软件本身的官方文档页与源码仓库
帖内资料: 手册的十一个章节与各自覆盖的操作、数据类型与日期格式规则、分面筛选的各类分面与使用边界、聚类合并近似值的方法、表达式语言与函数目录、实体对齐两种做法与类型层级、以及九种导出格式与各自选项
时间覆盖: 手册首页标注最后更新于 2022 年 12 月 29 日,各章更新日期不一;所对应的软件版本为 OpenRefine 3.10.1,发布于 2026 年 3 月 4 日
许可与引用: 官方文档站标注为 Creative Commons Attribution 4.0 International License,软件代码为 BSD-3-Clause;本贴只整理手册的结构、操作规则与格式清单,不复制原文段落、不提供软件或数据包
适用任务: 想系统学一遍 OpenRefine 清洗流程的,要查某个操作在手册哪一节的,想知道有哪些导出格式可以选的,要用表达式做批量改值的
这份手册是什么
OpenRefine 是一个免费开源的脏数据处理工具,官方仓库的描述就是"处理杂乱数据并改进它"。它是 Java 写的,跑在自己的电脑上当本地小服务器,用浏览器访问。手册首页的定位是:这份手册设计成全面走一遍 OpenRefine 使用的每个方面,包括每一个界面功能和特性。
手册的路径是一条完整的工作流:先讲在 Windows、Mac、Linux 上安装或升级;再讲界面长什么样、怎么从程序或命令行启动、怎么设自定义偏好;然后教怎么用已有数据集建项目,怎么用分面、筛选和排序来看懂和熟悉自己的数据;接着是永久地改造数据,包括常用与自定义转换、聚类、从网上取数、实体对齐和写表达式;最后是把改好的数据集导出成文件,或者把陈述上传到 Wikidata、Wikimedia Commons 或别的 Wikibase 实例。
看手册的目录,一眼能看出十一个章节的分工:Introduction、Installing、Running、Starting a project、Exploring data、Transforming data、Reconciling、Expressions、Exporting、Troubleshooting、Contributing to OpenRefine。
手册之外还有两块
站点的 Documentation 区除了用户手册,还有技术参考(technical-reference)与路线图(development-roadmap);另外还有 Training and Courses 入口,收录社区贡献的教程。
数据类型和日期这两块规则最细
Exploring data 这一章从数据类型讲起,这是后面所有筛选和表达式的基础。
每个单元格都有数据类型。导入时部分文件格式能直接带出类型,识别不出来的先算 string,之后可以再转。类型是设在单元格层面,不是列层面。预览新项目时勾上"尝试把单元格文本解析为数字",能识别的数字会从黑字变绿字。
支持的类型是四种:string、number、boolean、date;另外两种是 OpenRefine 自己在处理过程中产生的——error 是转换过程中生成错误时留下的,null 表示这个单元格没有值。null 和值为"0"或"false"、或看起来空但其实有空格、或含空字符串的单元格都不一样;用 type(value) 会显示该单元格值是"null"、类型是"undefined",也可以在 All → View 里选择显示 null 值。
date 类型统一转成带 UTC 时间的 ISO-8601 扩展格式 YYYY-MM-DDTHH:MM:SSZ。手册给了一组转换对照:23/12/2019 变 2019-12-23T00:00:00Z,14-10-2015 变 2015-10-14T00:00:00Z,2012 02 16 变 2012-02-16T00:00:00Z,August 2nd 1964 变 1964-08-02T00:00:00Z;today 会保持 today,never 保持 never。
手册特别强调一个容易踩的区分:改单元格的数据类型和转换它的内容是两回事。像 Transform → Common transforms → To date 这种整列转换可能转不干净,但单独点进某个单元格改类型却能成功,因为这两者走的是不同的底层代码。
分面:看数据和筛数据的手段
分面是 OpenRefine 的看家能力。手册对分面的定位是:即使一个字都不改,它也能帮你了解自己的数据集。
文本分面可以对任何 text 类型的列生成,默认按字母序排列、也可以按计数排序。它的逻辑很简单——把该列单元格的内容整体取出来做匹配,不对拼写错误或近似值做任何猜测。可以直接编辑分面里的任一显示项,这会批量修改列里所有相同的单元格,官方说这适合修拼写错误、多余空格之类影响分面显示的问题;分面窗口里还有个 Cluster 按钮,可以用聚类来自动清理。
手册给了两个实用细节:每个文本分面默认最多显示 2000 个选项,可以在 Preferences 里调高但会拖慢浏览器;分面里的选项和计数可以复制成制表符分隔的值,用来做小的汇总表。
数值分面则相反,它是把数字按区间排序、以直方图显示,可以拖动最小和最大值标记来设自定义区间。
还有一章专门讲"哪些操作不尊重分面",这一点很关键:在分面筛选状态下执行下列操作,作用于表里所有相关的数据、列和行,而不只是当前筛出来的部分——移动、删除、重命名或重排列;拆分或合并多值单元格;重排行;转置(列变行、行变列,以及按键值列做列化)。
分面本身不随项目数据一起保存,但可以在项目名旁边找到 Permalink 保存当前状态的链接;分面表达式可以用列名右侧的"change"按钮修改;侧边栏里的分面框可以拖动标题栏重排、拖底栏改高度。
聚类:把近似写法并到一起
聚类是把写法不一致的同类值归并的功能。手册给的用法路径是:先在文本分面里点 Cluster 按钮,把一批近似值聚成一组,然后在聚类操作窗口里把它们批量改成你想要的字符串。前面提到的 GEO 问题——大量文本类别写法不一致时如何先聚类检查再批量改值——对应的就是这个流程。
表达式:一次性改写,不是电子表格公式
Expressions 这一章开头就点明:OpenRefine 的表达式和你习惯的电子表格公式有显著差别。
OpenRefine 不在单元格里存公式、也不动态显示计算结果,它的转换是一次性操作,会改变列内容或生成新列。这些操作用 value、cell 这类变量,对列里的每个单元格做同样的修改。手册给的例子是在 friend 列上用 value.split(" ")[1],第一行的 John Smith 会得到 Smith,第二行的 Jane Doe 会得到 Doe——同一个表达式对不同行给出不同结果。
旧信息会被丢弃,除非在 History 标签里撤销这一步才能拿回 John 和 Jane。
手册还提醒一个容易误解的点:如果用 row.starred 生成一列 true 和 false,之后再标星或取消标星,这些数据不会自动更新,得重新跑一次操作。
表达式编辑器是选中接受表达式的函数后弹出的窗口,有一个输入公式的字段,并在前面几行单元格里显示转换结果的预览。可以从下拉菜单选表达式语言,默认是 GREL;换用别的语言后这个选择会一直保持。安装包还提供 Jython 和 Clojure,也可以通过第三方扩展加更多语言支持。
GREL 函数目录
GREL 的函数参考页按用途分了组:布尔函数、字符串函数、测试字符串特征、基本字符串修改、字符串解析与拆分、编码与哈希、翻译、基于格式的函数(JSON、HTML、XML)、Jsoup 的 XML 与 HTML 解析、URI 解析、数组函数、日期函数、数学函数,以及其他函数。
实体对齐:两种做法
Reconciling 这一章讲的是把本地数据里的名称对到外部权威库里的标准条目。
第一种做法是用已有的唯一标识符直接对齐。手册举例说,第十四世达赖喇嘛的 VIAF ID 是 38242123、Wikidata ID 是 Q17293。选中装着已知标识符的列,执行 Reconcile → Use values as identifiers,它不会走常规的对齐设置,而是弹窗让你从已添加的服务列表里选一个。
这个操作假定这些 ID 在服务里已经存在,因此不做查询,跑完通常很快,所有单元格会变成深蓝色的"已确认"匹配。手册提醒可能出现假阳性(比如这些 ID 在服务里已经不存在),需要悬停或点击才能发现。
第二种做法是按类型对齐。服务被加进 OpenRefine 后会从自己的数据库里推荐类型,通常是它专精的领域——人、事件、地点、建筑、工具、植物、动物、组织等等。按更具体的类型对齐可能更快更准,但匹配数会变少。有些服务有层级类型(比如"哺乳动物"是"动物"的子类型),按更具体的类型对齐时未匹配的值可能回退到更宽的类型;另一些服务不会这样,你就得连续按不同类型试几轮。
手册建议分批做、从具体到宽泛地推进,并且可以为"最佳候选的类型"建一个分面,看清楚数据里实际出现了哪些类型。
类型是按内容结构化的:Wikidata 的"human"类型可以带出生死亡日期、国籍等字段,VIAF 的"person"类型可以带国籍和性别。利用这些字段能纳入更多属性、找到更好的匹配。手册也说,如果某列不适合任何特定类型,可以选"不对特定类型对齐",只是会更慢。
导出:九种格式
Exporting 这一章列出的导出选项是:制表符分隔值(TSV)或逗号分隔值(CSV)、HTML 格式表格、Excel 电子表格(XLS 或 XLSX)、Open Document Format 电子表格(ODS)、上传到 Google Sheets(需要 Google 账号授权)、自定义表格导出器、SQL 语句导出器、以及模板导出器(默认生成 JSON)。
对已对齐的数据还可以导出到 Wikibase:上传编辑到 Wikidata、导出为 QuickStatements(版本
1)、导出 Wikidata schema。
手册提醒一个容易忽略的点:很多选项只导出当前视图,也就是带着当前筛选和分面的结果;有些会给你选择导出整个数据集还是只导当前可见的行。
自定义表格导出器这一块细节最多:可以选要导出哪些数据、用什么分隔符、结果下载到本地还是上传到 Google Sheet;Content 标签页里可以拖放列来调整输出顺序,对齐数据和日期的选项逐列单独设置。它对已对齐数据特别有用,因为可以选择输出单元格的原始值、匹配到的值、还是匹配到的 ID——选"输出匹配实体的名称""输出匹配实体的 ID""输出单元格内容",对应的就是 cell.recon.match.name、cell.recon.match.id 和 cell.value。
勾上"未匹配单元格输出为空"会把新建匹配和没有选择的匹配都导出成空单元格;"链接到匹配实体的页面"只在 HTML 表格输出里生效,其他格式无效。手册也直说这个窗口里的日期格式选项目前不工作。
原页在哪
手册在 openrefine.org/docs,下面的每个章节都有独立地址;软件本体在 openrefine.org 下载,源码在 GitHub 的 OpenRefine/OpenRefine。完整地址和引用提醒放在下面。
────────────────
手册首页、几个关键章节地址、软件下载与源码仓库都在下面,回复一下就能看到。