如何保证数据产出质量简述

2023-11-20

数据质量的评估

数据质量可以从一下几个角度进行评估:

  • 完整性:
    • 完整性是指数据的记录和信息是否完整,是否存在数据缺失情况。数据缺失主要包括记录的缺失和具体某个字段信息的缺失,两者都会造成统计结果不准确。
  • 准确性
    • 准确性是指数据中记录的信息和数据是否准确、是否存在异常或者错误的信息。例如,成绩单中分数出现负数或订单中出现错误的买家信息等,这些数据都是问题数据。确保记录的准确性也是保证数据质量必不可少的一部分。
  • 一致性
    • 一致性通常体现在跨度很大的数据仓库中。 例如,某公司有很多业务数仓分支,对于同一份数据,在不同的数仓分支中必须保证一致性。例如,从在线业务库加工到数据仓库,再到各个数据应用节点,用户ID必须保持同一种类型,且长度也要保持一致。因此,您需要设计数仓的公共层以确保数据的一致性
  • 及时性
    • 保障数据的及时产出才能体现数据的价值。例如,决策分析师通常希望当天就可以看到前一天的数据。若等待时间过长,数据失去了及时性的价值,数据分析工作将失去意义。

数据质量的保障

  • 事前:
    利用完善的流程和机制辅以工具对数据质量进行保障。
  • 事后:
    同时对于重大事故进行复盘,不断通过一个个case完善工具和机制。

数据产出流程&机制

在建设中间层承接需求或到资产产出上调度之间,需要由一套完善的流程和机制来保障数据质量。

  • 中间层建设:

建设前确保理解其中的业务逻辑,必要情况下建议对产品PRD、业务&数据流程图、E-R图、表&重点指标的使用说明、甚至状态机维护一份文档。

  • APP层建设:

开发前:

理解当前资产的开发背景、意义以及目的(方便后续中间层沉淀),以数据视角给出建议,对不合理或者不准确的指标进行剔除或者修正。
确认维度和指标后,理解维度和每个指标的确切口径,与业务方和DS进行拉齐。重点复杂指标,如果DS已经进行过初步试验,建议给出示例SQL。将所有指标落文档,后续按照文档进行产出。

同时对于已有的口径要保证数据一致性。

  1. 各个域的指标口径有各个域进行收口。对现有指标的加工,直接从对于域的中间层取值,而不从底层重新计算。避免底层数据统计逻辑变更导致的数据不一致性。如,商品对GMV进行汇总加工,直接取财务或订单侧的GMV,而不去关注GMV的底层统计逻辑。
  2. 统一维护一份指标字典,对原子指标进行全覆盖,对衍生指标尽可能的覆盖。一个指标对外只有一个相同的名称,保证一个名称对应且只对应一个统计逻辑,进而保证数据的一致性。

开发中:

对风险严格把控,有指标口径问题或排期问题及时透传。

发布后上调度(交付)前:

对数据进行校验,同时提过review机制进行最后的把控

revire机制

通过revire机制对脚本进行最后的把控,保证脚本质量和整条链路的稳定性。

review主要关注点:

  1. 模型是否规范
数据表命名规范
字段命名规范 字段命名规范
数据表生命周期 数据表生命周期
是否存在数据重复建设 结合数据资产明细,判断是否存在重复建设情况,如现有模型不能满足业务诉求,可以提修改诉求给到相应数据负责人
是否存在跨层级依赖 原则上不允许跨层级依赖,以及反向依赖,dwm原则上不允许依赖ods表,dwd原则上不允许反向依赖dwm表。
  1. 脚本是否规范
文件路径 梳理整体项目文件路径,确认是否按照路径存放
命名规范 参考模型规范
注释 包括字段注释已经表注释
复杂逻辑说明 说明sql代码里的复杂逻辑,方便理解
是否支持重跑 判断任务是否支持重跑
是否包含insert into 代码中原则上不允许加入insert into语句
使用mapjoin 大表join小表,需要声明mapjoin
单任务更新多表 原则上不允许一个任务更新多个表
笛卡尔积 原则上不允许存在笛卡尔积
代码包含ddl 代码中不允许包含ddl语句
动态分区是否检查null 插入动态分区时,是否检测null值影响
任务依赖 查看任务依赖是否合理,尤其是天表依赖小时表的情况
DQC配置 重要任务需要配置DQC,详细可以看监控相关
数据倾斜 任务需要对数据倾斜做相应操作
除数为0情况 计算比率指标时,是否判断除数为0的情况
任务名与表名是否一致 原则上任务名和表名需保持一致
代码格式化 代码需要进行格式化操作
  1. 监控配置是否规范

主要是指dqc相关的配置

配置项 配置说明 强弱 需要配置的层级
表行数>0 表行数是否>0 所有
数据量波动 设定阈值,监控数据量,需要考虑大促造成的波动 dwd
字段离散值 类似于城市、仓库的离散值监控 dwm、dm、app
指标值波动 设定阈值,监控指标相关波动,需要考虑大促 dwm、dm、app
主键唯一性 需要监控明细和维表的主键唯一性 dim、dwd
复杂业务逻辑 因任务而异 所有
实时离线监控 较为特殊,没有现成工具 dwm

数据质量保障中的工具&规则

下面通过产出的时间顺序做简单叙述

  1. 脚本提交前:

    利用SQLSCAN定制不同规则对脚本进行校验,严重不合格的脚本不允许上线。

  2. 脚本发布后、上线前:

    不同人员具有不同权限,脚本发布后需要被review后才可以发布

  3. 数据产出前:

​ 利用DQC对脚本产出数据进行校验。不合格的数据不将数据灌入对应分区、不生产成功TAG。并根据资产的重要程度和影响范围利用不同的方式通知对应负责人。

  1. 任务产出追踪:

    通过基线对产出中的资产进行追踪

SQLSCAN

  • SQLSCAN一般是为了保证脚本治理在脚本提交前按照设置好的进行检测。

根据重要程度可以设置不同的检测强度:

  1. “检测强度-强”:失败不允许提交。一般平台级别的都设置为“强”
  2. “检测强度-弱”:失败给与提醒,但是可以提交。项目级别的可以根据项目内部定义设置“强”或“弱“

根据影响范围可以设置不同的分类级别:

  1. 平台级
    1. 分区剪裁失败:SQL查询解析执行计划判断是否进行了分区裁剪
    2. SQL是否包含limit限制:sql是否包含limit限制
    3. 分区数超过上限1000:检查sql中涉及的某个表的分区数是否超过10000个
  2. 项目级别
    1. 表命名规范:开启规范将按照数仓规范来校验表名,
    2. 不能有select *:检测SQL中是否有select * 的写法
    3. SQL是否包含日期常量:检查sql是否包含日期常量的字符串
    4. 禁止代码中含DDL语句:禁止在代码中使用drop table、create table、rename table、change column等DDL语句
    5. 是否存在读写dev库表:检查代码中是否依赖了dev库表,或是否写入了dev库表
    6. 是否存在反向依赖:检查代码中是否存在dwd依赖app层的反向依赖
    7. 数据质量规则:检查任务产出表是否有配置数据质量规则
    8. 是否存在跨层依赖:检查代码中是否存在如app层直接依赖ods层的跨层依赖

DQC

  • DQC(Data Quality Center)主要关注数据质量,通过配置数据治理监控规则,自动在数据产出的过程中进行监控。

根据重要程度可以分为

  1. 强规则:强规则会阻断任务的进行(数据不写入对应分区、任务置为失败阻断下游)
  2. 若规则:给出告警,但并不阻断下游任务

根据监控范围可以分为:

  1. 表级规则监控。常见监控规则如下
    1. 总行数不为空
    2. 主键不重复
      • select goods_id,count() from test.dwd_goods_df where dt = ‘2021-12-12’ group by goods_id having count() > 1;
  2. 字段级规则监控
    1. 重要字段非空监控。设常见默认值为(0,-999,-1)
      • Select state from test.dim_test where dt = ‘2021-12-12’ group bu state and (state is null or state in (0,-999.-1))
    2. 枚举值是否异常
    3. 字段级阈值监控。如:某个重要字段的空值是否大于1%

其他监控规则:

  1. 数据波动监控(监控近3天数据是否在一个量级)

    • select dt,sum(onsale_cnt) from test.dim_gos_goods
      where dt >= ‘2021-12-12’ and dt <= ‘2021-12-15’
      group by dt;
  2. 业务相关指标的漏斗是否存在

    • select sum(case when is_td_sale then 1 else 0 end ) as onsale_cnt --当日上架商品数

      ,select sum(case when is_td_sold then 1 else 0 end) as sold_cnt --当日动销商品数

      from test.dim_gos_goods where dt = ‘2021-12-12’

  3. 业务相关指标勾稽关系是否满足(设gmv = discoupon_gmv+coupon_gmv)

    • select sum(gmv) as gmv

      ,sum(coupon_gmv) as coupon_gmv

      ,sum(discoupon_gmv) as discoupon_gmv

      from test.dwd_fin_di where dt = ‘2021-12-12’

基线

基线一般用于保障重要生产链路的时效。当基线中任务未在预期产出时间产出或者报错后,触达资产负责人,由人工介入处理任务保障基线正常产出。

基线的设置:

  • 结合业务的影响程度,对不同资产进行资产等级划分。同时根据不同的时效要求,将资产划分到对应的基线中。如:默认非重要资产基线、核心决策8点基线、宽表10点基线等
  • 重要基线所含资产建议设置DQC强校验,任务未能如期产出时,第一时间触达资产负责人。

基线的保障机制:

  • 根据不同基线的重要程度不同,设置不同的保障机制。
    • 非重要基线可以通过邮件、工作群触达。
    • 重要基线通过电话触达,规定时间内资产负责人未响应或未处理完成,触达目标升级至其leader。并且每日配备至少主、副两位基线负责人对基线中异常情况进行追踪。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何保证数据产出质量简述 的相关文章

  • 互联网“香饽饽”?数据挖掘或成热门行业

    何为 数据挖掘 信息化社会的高速发展下 大数据 云计算 物联网等技术应运而生 海量的数据资源逐渐在人们的生产生活中高速地产生 积累 带动全社会迈入了大数据时代 这些代表信息的数据就好像大海 而要在广阔的大海里面找到想要的某一条信息或知识 也
  • 数据质量评价体系参考

    数据质量人人有责 这不仅仅只是一句口号 更是数据工作者的生命线 数据质量的好坏直接决定着数据价值高低 数据质量管理是指在数据创建 加工 使用和迁移等过程中 通过开展数据质量定义 过程控制 监测 问题分析和整改 评估与考核等一系列管理活动 提
  • Spark Job写文件个数的控制以及小文件合并的一个优化

    文章目录 背景说明 通过引入额外Shuffle对写入数据进行合并 EnsureRepartitionForWriting Rule CoalesceShufflePartitions Rule OptimizeShuffleWithLoca
  • 你真的把数据库事务搞懂了吗,有图有真相,图文并茂!

    数据库事务 数据库事务 jdbc事务 事务的ACID 数据库的并发 数据库的四种隔离级别 数据库事务 数据库事务 transaction 是访问 并可能操作各种数据项的 一个数据库操作序列 这些操作要么 全部执行 要么 全部不执行 是一个不
  • 大数据入门 - 基础概念

    文章目录 1 发展历史 2 分布式系统 可靠性 可扩展性 可维护性 4 单机引擎的问题 事务 写入和存储 数据的序列化 3 GFS Google File System master 的快速恢复性和可用性保障 数据写入的优化 4 MapRe
  • 商务智能-第六章 数据挖掘

    Lecture6 Data Mining 1 数据挖掘 在数据库及数据仓库中存贮有大量的数据 它们具有规范的结构形式与可靠的来源 且数量大 保存期间长 是一种极为宝贵的数据资源 充分开发 利用这些数据资源是目前计算机界的一项重要工作 1 1
  • 数据挖掘知识点总结

    1 数据挖掘产生的背景 驱动力是什么 四种主要技术激发了人们对数据挖掘技术的开发 应用和研究的兴趣 超大规模数据库的出现 如商业数据仓库和计算机自动收集数据记录手段的普及 先进的计算机技术 如更快和更大的计算能力和并行体系结构 对海量数据的
  • 数据中台-让数据用起来-6

    文章目录 第六章 数据开发 数据价值提炼工厂 6 1 数据计算能力的4种类型 6 1 1 批计算 6 1 2 流计算 6 1 3 在线查询 6 1 4 即席分析 6 2 离线开发 1 作业调度 2 基线控制 3 异构存储 4 代码校验 5
  • Hbase Sehll基本命令

    进入hbase shell命令 hbase shell 1 status 查看hbase运行状态 2 version 查看hbase版本 3 list 列出hbase所有的 表 4 创建表 create info member member
  • 一文了解Clickhouse

    ClickHouse是什么 ClickHouse是一个存储计算一体的工具 其与spark flink等大数据框架不同的在于它有自己的存储层 在数据压缩 存储上做了更多的优化 所以导致它在某些数据处理能力上比其他工具快上了不少 毕竟一般框架只
  • mtb2_VizQL_Cleaning_Regx phone email_CRISP-DM_pdf table to text then to Excel

    Changing field attribution Let us look at the World Happiness Report We create the following worksheet by placing Start
  • 中国智慧能源行业行情监测及未来动向规划预测报告2022-2028年

    中国智慧能源行业行情监测及未来动向规划预测报告2022 2028年 报告目录 第一章 智慧能源的基本概述 第二章 2021 2021年全球智慧能源产业发展分析 2 1 2021 2021年全球智慧能源产业发展综况 2 1 1 全球智慧能源网
  • pycharm如何连接数据库并往数据库插入内容

    1 创建connection对象 2 创建cursor对象 游标对象 主要用于操作数据库 3 执行查询 4 关闭cursor对象 5 关闭connection 首先要先安装pumysql库 pip install pymysql 连接测试
  • DAMA-DMBOK2重点知识整理CDGA/CDGP——第2章 数据处理伦理

    目录 一 分值分布 二 重点知识梳理 1 语境关系图 2 引言 3 业务驱动因素 4 基本概念 一 分值分布 CDGA 2分 2单选 CDGP 0分 不考 二 重点知识梳理 1 引言 预警关系图 数据处理伦理定义 如何以符合道德准则及社会责
  • Python Pandas导出Hbase数据到dataframe

    Python导出Hbase数据的思路 使用happybase连接Hbase 使用table scan 扫数据 将得到的数据整理为dataframe格式 将从Hbase中得到的byte类型的数据转为str类型的数据 示例代码 import h
  • 数据挖掘知识浅析

    一 什么是数据挖掘 数据挖掘是指从大量数据中提取或 挖掘 知识 数据挖掘是一种 黄金挖掘 从沙子堆中挖掘出黄金 找出最有价值的黄金 这种有机的价值物提取的过程称为 黄金挖掘 通过某种手段或者经验丰富人士 从海量的数据中找出有用的 数据 掌握
  • 头歌—Hive的安装与配置

    第1关 Hive的安装与配置 在修改 conf 下面的 hive site xml 文件这里 题目给的信息是错误的 正确的内容如下
  • 数据仓库与数据挖掘复习资料

    一 题型与考点 第一种 1 解释基本概念 中英互译 解释简单的含义 2 简答题 每个10分有两个一定要记住 考时间序列Time series 第六章 的基本概念含义 解释 作用 序列模式挖掘的作用 考聚类 第五章 重点考密度聚类的定义描述
  • ETL.NET 助力海量数据轻松处理

    ETL NET 助力海量数据轻松处理 什么是 ETL EtlT About ETL About EtlT 谈谈 ETL 作用 ETL 对企业的作用 ETL 对个人职业发展的作用 ETL NET 介绍
  • 解决 Hive 外部表分隔符问题的实用指南

    简介 在使用 Hive 外部表时 分隔符设置不当可能导致数据导入和查询过程中的问题 本文将详细介绍如何解决在 Hive 外部表中正确设置分隔符的步骤 问题描述 在使用Hive外部表时 可能会遇到分隔符问题 这主要是因为Hive在读取数据时

随机推荐

  • Java实现文件传输

    Java实现文件传输 在Java编程中 我们可以使用各种方法实现文件传输 文件传输是将文件从一个位置传输到另一个位置的过程 可以用于各种应用场景 如文件备份 文件共享等 下面我将介绍一种基于Socket的Java文件传输实现方法 首先 我们
  • C++程序中使用openpose预测关节点坐标的简易实现

    C 程序中使用openpose预测关节点坐标的简易实现 虽然在openpose的官网上已经给出了很多可用的demo 但是如果我们在自己的C 项目中想要使用openpose来预测三维关键点官网给出的例子不是很适用 所以我现在给出了C 程序中使
  • Go切片排序

    Go 语言标准库提供了sort包 用于对切片和用户定义的集合进行排序 具体示例如下 基本排序 package main import fmt sort func main float 从小到大排序 f float64 5 2 1 3 0 7
  • 解决elementUI的对话框(Dialog)组件点击自动跳转到页面顶部问题

  • Python身份运算符(is , is not) 和比较运算符(==,!=)区别

    学习的时候无意中翻到 就在这里稍微记录一下 从名字上看 身份运算符的意思是 运算 两个对象的身份的 那怎么 运算 两个对象的身份呢 那么就自然而然想到比较两个对象的身份是否是相同的 在这里的身份就是他们的id 也就是内存地址 所以身份运算符
  • 【数据结构】哈夫曼编码与前缀编码

    1 前缀编码 首先对于一个串可以用等长的二进制位表示 这样就叫做固定长度编码 如果可以用不等长的二进制位表示 则称之为可变长度编码 那么对于那些频度高的字符我们采用短二进制位编码 出现频度低的采用长二进制位编码的话 将会极大地减少编码长度
  • Win2012服务器 远程桌面帐户允许多用户同时登录的配置方法(2个用户)

    打开任务栏左下角的 服务器管理器 在左侧列表中选中 本地服务器 然后将右侧 远程桌面 功能的选项修改为 启用 注意取消下面复选框的选中状态 修改本地组策略 允许远程桌面帐户的多用户访问 同时按住 Win键 R 组合键调出运行窗口 输入 gp
  • MySQL cmd窗口输入密码后闪退

    最近重新使用回 MySQL 到官网下载客户端版 MySQL Installer 进行安装时 已经设置过 root 密码为 123456 第一次用 cmd 登录时成功 然后再安装 MySQL Workbench 进行连接 却报了错误 auth
  • 基本的Java的MVC入门案例

    概念 MVC Model View Controller 模型 视图 控制器 他是一种专门设计web程序的模式 高内聚 低耦合 高内聚 专人干专事 低耦合 让类与类之间的关系不能太紧密 模型 Model 是应用程序中与处理应用程序数据逻辑的
  • React抽离组件到独立的JS文件中

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 React学习记录 一 抽离组件到独立的JS文件中 1 先创建一个Hello js 2 再创建一个index js文件 React学习记录 一 抽离组件到独立的JS
  • PHP is_array()函数详解,PHP判断是否为数组

    作者主页 士别三日wyx 作者简介 CSDN top100 阿里云博客专家 华为云享专家 网络安全领域优质创作者 推荐专栏 对网络安全感兴趣的小伙伴可以关注专栏 网络安全入门到精通 is array 一 基本使用 二 空数组 三 同时判断多
  • 字节对齐规则和位域

    字节对齐规则 结构体的起始存储位置必须是能够被该结构体中最大的数据类型所整除 每个数据成员存储的起始位置是自身大小的整数倍 比如int在32位机为4字节 则int型成员要从4的整数倍地址开始存储 结构体总大小 也就是sizeof的结果 必须
  • matlab 因果分析,matlab非参数的格兰杰因果分析

    代码1 deseason m function rp vp deseason data textdata days flipud textdata 1 days days 1 end 1 volume flipud data 5 price
  • Vue如何将数据显示在页面中

    如何将data的数据显示在页面中 1 文本插值 div msg div 渲染结果 div hello world div 2 原始HTML插值 v html v text 区别 v text不会对标签进行转义而v html会对标签进行一次转
  • QT笔记——初识QHostInfo、QHostAddress、QNetworkInterface

    网络模块需要在 pro文件中添加 QT network QHostInfo 利用操作系统提供的查询机制来查询与特定主机名相关联的主机的 IP 地址 头文件 include
  • Js中的defer属性和async属性

    Js中的defer属性和async属性 一 defer和async 1 defer 指外部js文件和当前html页面同时加载 异步加载 但只在当前页面解析完成之后执行js代码 async 指外部js文件和当前html页面同时加载 异步加载
  • Redhat Add and Remove Software[No Groups Available in any repository ]

    在 etc yum repos d中把rhel debuginfo repo 修改一下 enabled 1 修改为 enabled 1
  • Java 实现令牌桶限流算法 原生极简实现 包括单机和多线程版本

    文章目录 令牌桶算法简介 令牌桶算法限流范围 单机版实现 多线程版实现 令牌桶算法简介 令牌桶是指一个限流容器 容器有最大容量 每秒或每100ms产生一个令牌 具体取决于机器每秒处理的请求数 当容量中令牌数量达到最大容量时 令牌数量也不会改
  • Python中访问类中的私有变量的两种方法

    我们知道 类中的私有变量是不能直接在类外访问或修改的 因此我们可以设置一个get函数和一个set函数来间接访问和修改私有属性 那么每次访问和修改的都需要调用函数 有没有更简单的方法呢 下面介绍两种方法 1 property 属性函数 比如P
  • 如何保证数据产出质量简述

    如何保证数据产出质量简述 数据质量的评估 数据质量的保障 数据产出流程 机制 revire机制 数据质量保障中的工具 规则 SQLSCAN DQC 基线 数据质量的评估 数据质量可以从一下几个角度进行评估 完整性 完整性是指数据的记录和信息