跳转至

Dqc design

产品概述

当前我们后台已经实现了数据质量校验的功能,但是缺乏前端交互功能,用户没法快速上手,需要开发前端页面,让用户直接点点点就能实现数据质量任务的配置、任务状态及结果的查看功能。

用户群体

分析师、数据开发工程师

功能列表

功能模块 功能点 功能描述 优先级
鉴权模块 keycloak 登录/API 鉴权
- 实现keycloak 登录
- 用户到表、列级的权限管控
P1
规则管理 预定义规则管理
- 规则名称
- 规则描述
- 规则适用范围(表级、列级)
- 规则类型(唯一性、数值型(单数值型、区间数值型)、缺失性、合法性)
- 权重级别
- Owner
- 告警订阅列表
P0
自定义规则管理(全局)
- 规则名称
- 规则描述
- 适用范围
- 规则类型
- 规则计算 SQL/Query Expression
- 权重级别
- Owner
- 告警订阅列表
P0
数据质量任务管理 数据集展示
- 准实时获取DBT 任务信息
- 展示任务信息
P0
数据质量任务配置
- 展示数据集基本信息
- 展示现有的表级校验任务列表
- 展示现有的列级校验任务列表
- 添加预定义、自定义的表级校验任务
- 添加预定义、自定义的列级别校验任务
- 删除表级、列级校验任务
P0
任务执行状态
- 任务的运行状态展示
- 任务的告警状态展示
P0

功能详细

鉴权模块

用户登录

API 鉴权

  • 无权限的用户,不能查看规则、任务运行状态、任务运行结果
  • 用户只能查看赋予权限的规则、任务运行状态和任务运行结果
  • 分析师、数据开发工程师可以看所有

规则管理

规则管理主要用于管理预定义的规则和可共用的自定义规则。预定义的规则目前初步设定只支持soda 的25个内置的规则soda-core 内置的25个规则
目前预定义规则只支持查看规则定义、规则描述等功能,不支持删除和修改
自定义规则支持查看规则定义、修改规则定义和删除规则定义。
预定义规则包含以下信息:

  • 规则名称
  • 规则描述
  • 规则适用范围(表级、列级)
  • 规则类型(唯一性、数值型(单数值型、区间数值型)、缺失性、合法性)

自定义规则包含以下信息:

  • 规则名称
  • 规则描述
  • 适用范围
  • 规则类型(唯一性、数值型(单数值型、区间数值型)、缺失性、合法性)
  • 规则计算 SQL/Query Expression

数据质量任务管理

数据质量任务管理包括: 数据集展示、数据质量任务增删改查操作、每日任务执行状态信息等功能

数据集展示

每次 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
  • 告警订阅列表

列级校验规则列表:

  • 规则名称
  • 规则描述
  • 规则适用范围(表级、列级)
  • 规则类型(唯一性、数值型(单数值型、区间数值型)、缺失性、合法性)
  • 权重级别
  • 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