Skip to content

介绍 ​

这是什么 ​

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 → 约束 / 转换 → 校验结果。

下一步 ​

  • 安装 —— 桌面应用 / CLI / API 三种入口的安装方式
  • 快速开始 —— 几分钟完成第一次数据校验
  • 配置参考 —— V2 YAML 配置格式详解

基于 Apache-2.0 许可发布