Skip to content

Latest commit

 

History

68 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

数据血缘分析系统:把 Oracle 与企业数仓 SQL 解析成可追溯的字段级血缘图

v2.2.0 · Python 3.11+ · FastAPI · D3.js
中文 | English


面向 Oracle 脚本企业数仓 SQL 的开源字段级数据血缘分析系统。
解析 DDL / DML / 存储过程 / 控制文件 / 指标表,构建表级与字段级血缘、口径链与可视化图谱,用于数据治理、影响分析、审计复核与改造评估。

效果一览

字段级血缘泳道图:按层级着色的上下游依赖

血缘查询交互演示

更多演示:演示说明 · Demo walkthrough

它解决什么

审核或改造时,经常要回答:

  • 这个字段从哪里来?经过了哪些表、过程、表达式?
  • 改一张中间表,会冲击哪些下游报表与指标?
  • 能否导出可复核的口径证据,而不是只看一张图?

本系统把这些问题落到可查询的图与可导出的证据上。

为什么有用

能力 说明
字段级血缘 BFS 追溯上下游,支持 upstream / downstream / both
企业数仓分层 识别 SRC → MSL → ITL → IOL → ICL → IML → IDL → IEL → DQC 等层级(共 17 种)
Type5 ICL 交换表 xxx_ex 映射回正式表,避免分区交换导致血缘断裂
口径追溯与导出 提取加工口径,导出 Excel 审计证据
指标血缘 针对指标表与配置的专项构建
D3 可视化 分层着色、路径高亮、搜索与节点详情

企业数仓分层链路与 Type5 ICL 交换表映射

它如何工作

解析 → 索引 → BFS 追溯 → 图谱与导出

SOURCE_DATA/  →  ParserRegistry  →  SQLite / 内存索引  →  LineageService / CaliberTracer  →  API + D3

三层边界:app/api(路由)→ app/services(编排)→ core/(纯算法,不依赖 FastAPI)。

30 秒启动

环境:Python 3.11+,pip 或 uv

python3.11 -m venv .venv
source .venv/bin/activate
python3.11 -m pip install -r requirements.txt

# 默认端口 8899
python3.11 run_app.py

# 强制重新解析数据源
python3.11 run_app.py --reparse

打开:

入口 URL
前端图谱 http://localhost:8899/static/index.html
API 文档 http://localhost:8899/docs

也可用 ./start.sh / ./stop.sh 管理后台进程。

示例:查一个字段的上游

示例 SQL 见 docs/examples/oracle_warehouse_lineage.sql

CREATE TABLE ICL.CUSTOMER_DAILY_SNAPSHOT AS
SELECT
    c.CUST_ID,
    c.CUST_NAME,
    a.ACCT_BALANCE,
    CASE WHEN a.ACCT_BALANCE > 100000 THEN 'VIP' ELSE 'STANDARD' END AS CUSTOMER_TIER
FROM IML.CUSTOMER_PROFILE c
LEFT JOIN IOL.ACCOUNT_BALANCE a
    ON c.CUST_ID = a.CUST_ID;
curl -X POST http://localhost:8899/api/lineage/query \
  -H 'Content-Type: application/json' \
  -d '{
    "target_table": "ICL.CUSTOMER_DAILY_SNAPSHOT",
    "target_field": "CUSTOMER_TIER",
    "direction": "upstream"
  }'

输出示例:docs/examples/lineage_query_output.json

数据准备

将脚本放入 SOURCE_DATA/(不参与版本控制):

SOURCE_DATA/
├── EDW/          # 数仓 DDL / DML
├── BRT/          # 报表等业务脚本
├── RRP/          # Oracle .tab / .prc 等
└── manifest.yml  # 数据源与解析配置(可选)

主要 API

能力 方法 路径
血缘查询 POST /api/lineage/query
快捷血缘 GET /api/lineage/{table}/{field}
口径查询 POST /api/caliber/query
口径导出 POST /api/caliber/export
指标血缘 POST /api/indicator/build
表 / 过程搜索 GET /api/tables · /api/procedures
文件 / 目录解析 POST /api/parse/upload · /api/parse/directory
系统统计 / 层级 GET /api/stats · /api/system/layers

完整契约见启动后的 Swagger:/docs

技术栈

层级 技术
后端 FastAPI + Python 3.11+
模型 Pydantic v2 + dataclass
SQL 解析 sqlglot + Oracle / 数仓专用解析器
前端 D3.js v7 + 原生 JS
缓存 SQLite(默认)+ 内存索引;可选 legacy pickle/json

测试

python3.11 -m pytest tests/
python3.11 -m pytest tests/test_lineage_api.py -v

本地质量门禁(可选):

bash scripts/install-git-hooks.sh   # 安装 pre-commit / pre-push
scripts/agent-verify.sh quick       # 提交前快检
scripts/agent-verify.sh full        # 推送前全量测试

文档与路线

文档 说明
演示说明 界面与查询走查
v2.2.0 发布说明 含 ICL 血缘修复与 17 层级扩展
变更日志 版本历史
贡献指南 开发约定与提交范围
安全策略 漏洞报告
路线图 后续方向
代码 Wiki 模块导航
架构评估 架构说明

安全说明

  • SOURCE_DATA/ 含真实业务脚本时已在 .gitignore 中忽略,勿提交真实数据
  • 无外部数据库依赖;结果默认落在本地 SQLite / 内存索引
  • 生产环境请配置 ADMIN_API_KEY 保护缓存重建等管理接口

许可证

MIT

About

数据血缘分析平台

Resources

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages