Dqc design
产品概述¶
当前我们后台已经实现了数据质量校验的功能,但是缺乏前端交互功能,用户没法快速上手,需要开发前端页面,让用户直接点点点就能实现数据质量任务的配置、任务状态及结果的查看功能。
用户群体¶
功能列表¶
功能模块 | 功能点 | 功能描述 | 优先级 |
---|---|---|---|
鉴权模块 | keycloak 登录/API 鉴权 | - 实现keycloak 登录 - 用户到表、列级的权限管控 |
P1 |
规则管理 | 预定义规则管理 | - 规则名称 - 规则描述 - 规则适用范围(表级、列级) - 规则类型(唯一性、数值型(单数值型、区间数值型)、缺失性、合法性) - 权重级别 - Owner - 告警订阅列表 |
P0 |
自定义规则管理(全局) | - 规则名称 - 规则描述 - 适用范围 - 规则类型 - 规则计算 SQL/Query Expression - 权重级别 - Owner - 告警订阅列表 |
P0 | |
数据质量任务管理 | 数据集展示 | - 准实时获取DBT 任务信息 - 展示任务信息 |
P0 |
数据质量任务配置 | - 展示数据集基本信息 - 展示现有的表级校验任务列表 - 展示现有的列级校验任务列表 - 添加预定义、自定义的表级校验任务 - 添加预定义、自定义的列级别校验任务 - 删除表级、列级校验任务 |
P0 | |
任务执行状态 | - 任务的运行状态展示 - 任务的告警状态展示 |
P0 |
功能详细¶
鉴权模块¶
用户登录¶
API 鉴权¶
规则管理¶
规则管理主要用于管理预定义的规则和可共用的自定义规则。预定义的规则目前初步设定只支持soda 的25个内置的规则soda-core 内置的25个规则
目前预定义规则只支持查看规则定义、规则描述等功能,不支持删除和修改
自定义规则支持查看规则定义、修改规则定义和删除规则定义。
预定义规则包含以下信息:
- 规则名称
- 规则描述
- 规则适用范围(表级、列级)
- 规则类型(唯一性、数值型(单数值型、区间数值型)、缺失性、合法性)
自定义规则包含以下信息:
数据质量任务管理¶
数据质量任务管理包括: 数据集展示、数据质量任务增删改查操作、每日任务执行状态信息等功能
数据集展示¶
每次 DBT repo merge 过后,触发API 拉取最新的 DBT 模型到数据质量平台中,主要包括的信息: db_name、model_name、owner、table format 等信息,同时有链接到数据质量任务 CRUD 界面,实现用户从数据集创建数据质量任务的功能。
数据质量任务CRUD操作¶
这里用户可以查看、添加或者删除数据质量规则,主要内容:
数据库名、dbt model名称、owner、table format、is_partition 等基础信息,数据校验规则列表:分表级规则列表、列级规则列表,规则列表后边可以实现增删改查,大致如下:
基础属性:
- 数据库名称
- dbt model 名称
- owner
- table format (parquet、hudi、iceberg等)
- is_partition (分区表、非分区表)
- table size
表级校验规则列表:
- 规则名称
- 规则描述
- 规则适用范围(表级、列级)
- 规则类型(唯一性、数值型(单数值型、区间数值型)、缺失性、合法性)
- 权重级别
- Owner
- 告警订阅列表
列级校验规则列表:
每日任务执行情况¶
主要用于查看每日校验规则的运行情况、告警情况。
大致:
dbt 模型名称 | 规则名称 | 执行周期 | 执行状态 | 期望值 | 运行值 | 告警级别 | 告警状态 |
---|---|---|---|---|---|---|---|
dbt_xxxx_000 | row_count | 2024-03-28 | succeed | >=200000 | 210000 | 邮件 | succeed |
dbt_xxxx_001 | row_count | 2024-03-28 | failed | >=200000 | 0 | 邮件 | succeed |
dbt_xxxx_002 | row_count | 2024-03-28 | failed | >=200000 | 0 | 电话+邮件 | succeed |
波动率: 100 * abs(样本值 - 基准值) * 0.01/基准值
eg: 表行数7天波动率:基准值为7天前样本(表行数),比较当天采集的表行数,对比波动率,100 * abs(cnts - cnts_7_days_ago) * 0.01/ cnts_7_days_ago