介绍
这是什么
Precis 是一款面向 Excel / CSV / JSON 表格数据的本地优先数据质量工具。它把数据校验流程从代码变成可视化 DAG 画布上的拖拽操作——从数据源接入、表结构定义,到多维度质量校验与错误定位,全流程无需编程。数据全程不出本机。
三种入口
- Electron 桌面应用(推荐)—— 一体化体验,自动管理后端进程,开箱即用
- CLI 命令行 —— 适合 CI/CD 集成与批量校验,可
pip install precis-cli独立安装 - REST API —— 适合自定义集成,自带 Swagger UI
另有实验性的 TUI 终端界面(Rust),不随 Release 发布,需从源码构建。
核心特性
- 可视化校验流程 —— 拖拽节点、连线即完成建模,无需编写校验代码
- 10 种约束类型 —— 非空 / 唯一 / 外键 / 枚举值 / 范围 / 条件 / 脚本 / 字符集 / 日期逻辑 / 组合
- 22 种转换算子 —— 字符串拆分、正则提取、数学表达式、聚合、过滤、排序等
- 大文件友好 —— 超大文件自动分块处理
- 本地优先 —— 数据不出本机
- 中英双语界面 —— 简体中文 / English 一键切换
核心概念
项目(Project)
一个 Precis 项目对应一个目录,入口是 project.precis.yaml 清单文件,引用 schemas/、constraints/、transforms/、templates/、regex/ 等子目录中的配置文件,数据文件放在 data/。
Schema(表结构)
描述一张表的列定义与数据源位置,每个 Schema 对应一个 .schema.yaml 文件。
- 数据类型:
string、integer、float、decimal、boolean、date - 数据格式:CSV、Excel(
.xlsx/.xls)、JSON
Constraint(约束)
对数据列施加的校验规则,共 10 种:
| 约束类型 | 说明 |
|---|---|
| NotNull | 列值不允许为空 |
| Unique | 列值唯一(支持复合唯一) |
| ForeignKey | 外键引用完整性 |
| AllowedValues | 值必须在允许列表内 |
| Range | 数值范围校验 |
| Conditional | 条件触发校验 |
| Scripted | 自定义 Python 表达式校验 |
| Charset | 字符集校验(ASCII / 中文 / 中英混合) |
| DateLogic | 日期逻辑校验(比较、年龄计算、天数差) |
| Composite | 多个子约束的逻辑组合 |
约束可以内嵌在 Schema 文件中,也可以作为独立文件跨表引用。
Transform(转换)
对数据列进行转换处理,共 22 种算子:字符串(拆分、截取、大小写、替换、拼接)、正则提取、数学表达式、日期格式化、类型转换、空值填充、字典映射、条件赋值、行过滤、去重、排序、聚合等。转换可以串联成 DAG,按拓扑顺序执行。
Template(模板)
可复用的约束 / 转换组合,支持 参数化,在多个 Schema 上复用同一套规则。
Regex(正则)
对列值执行正则匹配或提取,支持全文匹配、部分匹配与命名捕获组提取三种模式。
DAG 画布
所有节点在画布上通过连线组成有向无环图,数据沿边流动:数据源 → Schema → 约束 / 转换 → 校验结果。