data-quality-frameworks 是做什么的?
使用 Great Expectations、dbt 测试和数据契约实现数据质量验证。适用于构建数据质量管道、实施验证规则或建立数据契约的场景。
概述
本技能提供了一套完整的数据质量框架实现方案,帮助开发者通过 Great Expectations 的期望定义、dbt 的测试机制以及数据契约的规范约定,系统性地保障数据管道的可靠性。
核心组件
Great Expectations
- 使用 Expectation Suites 定义数据质量期望
- 自动化数据验证并生成详细文档
- 支持多种数据源(PostgreSQL、Snowflake、BigQuery 等)
- 集成 Airflow 等调度系统
dbt 测试
- 内置通用测试(unique、not_null、accepted_values 等)
- 自定义 SQL 测试满足复杂业务规则
- 支持测试分类与选择性运行
- 生成测试结果报告
数据契约
- 以 YAML 或 JSON 格式定义表结构约束
- 明确字段类型、长度、精度等元数据
- 支持业务规则编码(如外键约束、范围校验)
- 提供版本化管理和变更追踪
使用场景
| 场景 | 说明 |
|---|---|
| 数据管道验证 | 在 ETL/ELT 流程中自动检查数据质量 |
| 数据迁移审核 | 对比源系统和目标系统的数据一致性 |
| 数据仓库治理 | 建立团队级数据质量规范 |
| 实时数据监控 | 结合事件流实现持续验证 |
快速开始
安装依赖
pip install great_expectations
pip install dbt-core
git clone https://github.com/wshobson/data-quality-frameworks.git
配置 Great Expectations
- 初始化项目目录:
great_expectations init - 定义数据源:编辑
great_expectations.yml配置文件 - 创建期望套件:
great_expectations suite new
配置 dbt 测试
- 在
models/目录下的 SQL 文件中定义模型 - 在
tests/目录添加测试 SQL 文件 - 运行测试:
dbt test --select my_model
定义数据契约
创建 contract.yml 文件并指定字段规则:
version: 1
contract:
tables:
- name: orders
schema:
- field: order_id
type: integer
nullable: false
unique: true
- field: order_date
type: date
nullable: false
rules:
- field: order_amount
type: decimal(10,2)
minimum: 0
maximum: 1000000
最佳实践
- 将 Great Expectations 检查和 dbt 测试集成到 CI/CD 管道的测试阶段
- 对核心业务表建立完整的数据契约,并作为版本管理的一部分
- 使用
airflow调度器周期性运行验证套件,实现数据质量监控 - 在数据变更流程中引入契约变更审核机制
参考资源
许可证
MIT