Lazy loaded image
大数据运维之数据质量管理
字数 1545阅读时长 4 分钟
2026-1-2
2026-1-4
type
status
date
slug
summary
tags
category
icon
password
🎉这篇文章主要介绍了如何使用 Azkaban 调度数据质量监控流程,包括创建调度脚本、配置工作流等内容。文章还提供了一个完整的示例,包括创建 Python 脚本、配置Azkaban 工作流等步骤。

第1章 数据质量管理概述

1.1 数据质量管理定义

数据质量管理(Data Quality Management),是指对[数据](https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE/5947370)从计划、获取、存储、共享、维护、应用、消亡生命周期的每个阶段里可能引发的各类数据质量问题,进行识别、度量、监控、预警等一系列管理活动,并通过改善和提高组织的管理水平使得[数据质量](https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E8%B4%A8%E9%87%8F/5134536)获得进一步提高。
数据质量管理是循环管理过程,其终极目标是通过可靠的数据提升数据在使用中的价值,并最终为企业赢得经济效益。

1.2 数据质量评价指标

数据质量管理的最终目标是改善,任何改善都是建立在评价的基础上。通常[数据质量](https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E8%B4%A8%E9%87%8F/5134536)的评价标准包括以下内容。
_评价标准_| _描述_| _监控项_
_唯一性_| 指主键保持唯一| 字段唯一性检查 _完整性_| 主要包括记录缺失和字段值缺失等方面| 字段枚举值检查 字段记录数检查| | 字段空值检查| | _精确度_| 数据生成的正确性,数据在整个链路流转的正确性| 波动阀值检查 _合法性_| 主要包括格式、类型、域值的合法性| 字段日期格式检查 字段长度检查| | 字段值域检查| | _时效性_| 主要包括数据处理的时效性| 批处理是否按时完成

第2章 数据质量管理实操

2.1 需求分析

我们的数仓项目主要监控以下数据的指标:
ODS层数据量,每日环比和每周同比变化不能超过一定范围
DIM层不能出现id空值,重复值;
DWD层不能出现id空值,重复值;
在每层中任意挑选一张表作为示例。
_表_| _检查项目_| _依据_| _异常值下限_| _异常值上限_
_ods_order_info_| 同比增长| 数据总量| -10%| 10% 环比增长| 数据总量| -10%| 50%| 值域检查| final_amount| 0| 100| _dwd_order_info_| 空值检查| id| 0| 10 重复值检查| id| 0| 5| _dim_user_info_| 空值检查| id| 0| 10 重复值检查| id| 0| 5|

2.2 功能模块

img
img

2.3 开发环境准备

2.3.1 Python开发环境准备

本文使用Python和Shell脚本实现数据质量监控的各项功能,故需先搭建相应的开发环境,Python开发可选择IDEA(需安装Python插件),或PyCharm等工具,本文使用IDEA作为开发工具。
_1._ _安装Python插件_
(1)在IDEA中点击“File”,在下拉选择中点击“Settings…”
img
img
(2)点击“Plugins”,点击右上角的“Marketplace”,然后在搜索框中输入“python”,在搜索结果列表中找到Python插件,点击“Install”,安装插件。
img
img
_2._ _新建一个Python项目_
(1)点击Idea中的“File”,在下列列表中点击“New”,在右侧弹出的列表中点击“Project…”
img
img
(2)在新建的工程中,点击“Python”,然后点击Next
img
img
(3)首次创建Python项目,会提示无Python SDK,此处选择Yes,后续再添加SDK。
img
img
(4)填写项目名称和项目路径等基本信息,点击Finish
img
img
(5)添加Python SDK
为了保证测试和运行的Python环境一致,我们配置项目采用远程集群的Python环境执行本地代码,以下为具体配置步骤。
第一步:点击“File”→“Project Structure”
img
img
第二步:按照下图操作,增加Python SDK。
img
img
第三步:点击“SSH Interpreter”,选择“Existing server configuration”,点击“…”
img
img
第四步:点击“+”,填入ssh连接信息,点击Next
img
img
第五步:点击Finish
img
img
第六步:点击OK
img
img

2.3.2 初始化MySQL环境

MySQL主要用于存储数据质量监控的结果值,这里需要提前建库建表。详细建表语句如下:
(1)创建data_supervisor库
drop database if exists data_supervisor;
create database data_supervisor;
(2)创建空值指标表,null_id
CREATE TABLE data_supervisor.`null_id`
(
`dt` date NOT NULL COMMENT ‘日期’,
`tbl` varchar(50) NOT NULL COMMENT ‘表名’,
`col` varchar(50) NOT NULL COMMENT ‘列名’,
`value` int DEFAULT NULL COMMENT ‘空ID个数’,
`value_min` int DEFAULT NULL COMMENT ‘下限’,
`value_max` int DEFAULT NULL COMMENT ‘上限’,
`notification_level` int DEFAULT NULL COMMENT ‘警告级别’,
PRIMARY KEY (`dt`, `tbl`, `col`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8
comment ‘空值指标表’;
(3)创建重复值指标表,duplicate
CREATE TABLE data_supervisor.`duplicate`
(
`dt` date NOT NULL COMMENT ‘日期’,
`tbl` varchar(50) NOT NULL COMMENT ‘表名’,
`col` varchar(50) NOT NULL COMMENT ‘列名’,
`value` int DEFAULT NULL COMMENT ‘重复值个数’,
`value_min` int DEFAULT NULL COMMENT ‘下限’,
`value_max` int DEFAULT NULL COMMENT ‘上限’,
`notification_level` int DEFAULT NULL COMMENT ‘警告级别’,
PRIMARY KEY (`dt`, `tbl`, `col`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8
comment ‘重复值指标表’;
(4)创建值域指标表,rng
CREATE TABLE data_supervisor.`rng`
(
`dt` date NOT NULL COMMENT ‘日期’,
`tbl` varchar(50) NOT NULL COMMENT ‘表名’,
`col` varchar(50) NOT NULL COMMENT ‘列名’,
`value` int DEFAULT NULL COMMENT ‘超出预定值域个数’,
`range_min` int DEFAULT NULL COMMENT ‘值域下限’,
`range_max` int DEFAULT NULL COMMENT ‘值域上限’,
`value_min` int DEFAULT NULL COMMENT ‘下限’,
`value_max` int DEFAULT NULL COMMENT ‘上限’,
`notification_level` int DEFAULT NULL COMMENT ‘警告级别’,
PRIMARY KEY (`dt`, `tbl`, `col`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8
comment ‘值域指标表’;
上一篇
如何利用AI生成专业级海报教程:解决中文嵌入问题的实战指南
下一篇
大数据开发工程师基本功修炼之史上最全Linux学习笔记(建议)

评论
Loading...