数据仓库 主题和主题域 划分

数据仓库-主题和主题域-划分

一、什么时候主题?

数据仓库 主题(Subject) 是在较高层次上将企业信息系统中某一分析对象(重点是分析的对象)的数据进行整合、归类并分析的一种范围,属于一个抽象概念,简单点说每一个主题对应一个宏观分析领域。目的是便于数据的管理和应用。

二、什么是主题域?

主题域通常是联系较为紧密的数据主题的集合。可以根据业务的关注点,将这些数据主题划分到不同的主题域(也说是对某个主题进行分析后确定的主题的边界。) 这种划分与Kimball思想更为相似,自下而上的方式,根据业务需求分析视角进行划分。

这是对主题域的描述被归于集合论,还有一种叫做是边界论

边界论的论点是 “主题域是对某个主题进行分析后确定的主题的边界“,这点个人感觉和 Inmon 指导思想类似,理清主题之间的边界,由ER模型进行逻辑转化,对某一主题域的分析,需要先确定这个主题的关系边界,然后再进行逻辑建模。

两者并不矛盾,只是所站的视角不同,边界论是先从细微处也就是微观延伸到宏观,而集合论则是从宏观到微观的过程。

举例说明:

1. 对于一个erp系统而言,"销售分析"就是一个分析领域,这个"销售分析"所涉及到的分析对象有商品、供应商、顾客、仓库等,
那么数仓主题就确定为商品主题、供应商主题、顾客主题、仓库主题,"销售分析"就可以作为一个主题域;

2. 如果"产品分析"是一个分析领域,"产品分析"所涉及到的分析对象为商品、地域、时间、类别等,
那么数仓的主题可以确定为商品主题、地域主题、时间主题、类别主题,"产品分析"可以作为一个主题域。

三、主题的划分

主题的划分和设计是对主题域进一步的分解,细化的过程。主题域下面可以有多个主题,主题还可以划分成更多的子主题,主题和主题之间的建设可能会有交叉现象,而实体则是不可划分的最小单位。

mermaid

graph TD subgraph 主题域 subgraph 主题 A((实体)) end end

主题域是一个更大的概念,主题是略次之,实体最小,这里的实体表示的是实体对象(对应企业中某一宏观分析领域所涉及的分析对象),在维度建模的方法论上也可以说实体和维度某些概念是相似的。

在进行数据仓库设计时,一般是先基于一个主题或某部分主题进行优先建设,所以在大多数数据仓库的设计过程中都有一个主题域的选择过程,主题域的确定必须由最终用户和数据仓库的设计人员共同完成。

而在划分主题域时,大家的切入点不同可能会造成一些争论、重构等的现象

1、按照业务(功能模块/业务线)或业务过程划分

比如一个靠销售广告位置的门户网站主题域可能会有广告域,客户域等,而广告域可能就会有广告的库存,销售分析、内部投放分析等主题;

2、按照部门划分

比如公司里面的人力、财务、销售、运营等,运营域中可能会有工资支出分析、活动宣传效果分析等主题。

3、按照行业案例分析划分

在某些行业,比如电信、金融都是最早建设数仓的行业,都有一些规范,比如IBM 公司的 BDWM 九大金融主题模型,Teradata 公司的 FS-LDM 十大金融主题模型,都是行业应用比较广泛的标准,如果是这两个行业就可以参考构建自己的企业数据仓库模型规范。

比如TD FS-LDM (Financal Services Logical Data Model),适用于证券、银行、保险

十大主题:

当事人、产品、协议、事件、资产、财务、机构、地域、营销、渠道。

IBM BDWM (Banking Date Warehouse Model)

银行九大主题:

关系人、合约、条件、产品、地点、分类、业务方向、事件、资源项目

四、数据域是什么?

数据域是指面向业务分析,将业务过程或者维度进行抽象的集合。为保障整个体系的生命力,数据域需要抽象提炼,并长期维护更新。在划分数据域时,既能涵盖当前所有的业务需求,又能让新业务在进入时可以被包含进已有的数据域或扩展新的数据域。数据域的划分工作可以在业务调研之后进行,需要分析各个业务模块中有哪些业务活动。

在实际过程中可以把主题域和数据域都当做一种域来处理了,不必纠结

主题域:面向业务过程,将业务活动事件进行抽象的集合,如下单、支付、退款都是业务过程,针对公共明细层(DWD)进行主题划分。数据域:面向业务分析,将业务过程或者维度进行抽象的集合,针对公共汇总层(DWS)进行数据域划分。

数据域 业务过程
会员店铺域 注册、登陆、装修、开店、关店
商品域 发布、上架、下架、重发
日志域 曝光、浏览、单击
交易域 下单、支付、发货、确认收货
服务域 商品收藏、拜访、培训、优惠卷领用
采购域 商品采购、供应链管理

具体实例

1、马蜂窝数仓

参考链接: https://blog.csdn.net/Alex_81D/article/details/128020496

马蜂窝订单交易模型的建设为例,基于业务生产总线的设计是常见的模式,首先调研订单交易的完整过程,定位过程中的关键节点,确认各节点上发生的核心事实信息。

数据域/主题域 主题 主题关键字及简写 涵盖内容
交易 订单 Order(ord) 酒店、大交通、自由行等类似订单
交易 财务 Finance(fin) 财务、支付、结算
交易 营销 Marketing(mkt) 市场营销、促销、优惠卷
交易 产品 Product(prd) 平台售卖的产品、商品、SKU等相关属性及供应链如库存等
交易 客服 Customer Service Center(csc) 呼叫中心、IM等
流量 流量 Flow(flw) 各类终端流量、业务流量、渠道流量等
内容 内容 Community(cmt) 内容5大业务线、目的地、POI等
参与人 用户 User(usr) 平台个人用户
参与人 设备 Device(dvc) 各类设备:手机、iPad等
参与人 商家 Vendor(vdr) 供应商、平台卖家等
参与人 员工 employee(epl) 马蜂窝员工

2、网易云音乐数仓主题、主题域划分案例

网易云音乐将一级主题域划分为参与者、服务及产品,版权及协议、公共、事实这5个大的主题域,二级细节分类按照业务过程抽象获得。

其中一致性维度包括:用户、房主、房间、礼物、设备、动态、坑位、进房入口等,主要是对应各个主题和业务过程

一级数据域 二级数据域 业务过程 一致性维度
参与者 用户
参与者 房主
参与者 房间
事实 交易营收 收费
事实 交易营收 收益
事实 交易营收 充值
事实 交易营收 提现
事实 社交互动 进房
事实 社交互动 出房
事实 社交互动 发言
事实 社交互动 上麦
事实 社交互动 下麦
事实 社交互动 分享
事实 社交互动 关注
事实 社交互动 收藏
事实 社交互动 匹配
事实 社交互动 私信
事实 社交互动 点赞
事实 社交互动 评论
事实 日志流量 点击
事实 日志流量 浏览
事实 日志流量 启动
事实 日志流量 曝光
事实 营销活动 push
事实 营销活动 拉新
事实 安全风控
事实 搜索
事实 AB测试
服务及产品 UGC
服务及产品 PGC
服务及产品 公共资源
服务及产品 特权服务
服务及产品 音乐协议
服务及产品 直播协议
公共 日期
公共 设备

指标体系 管理系统 闲扯下

指标体系在数仓物理实现层面主要是结合数仓模型分层架构进行指导建设,数仓建模的过程很大一部分其实就是在构建指标体系,可以说指标体系的好坏决定了模型了健壮性。 构建指标体系需要从“管理、计算、使用”三个角度阐述一下什么样的指标管理方法是“合格的”

指标体系在数仓物理实现层面主要是结合数仓模型分层架构进行指导建设,数仓建模的过程很大一部分其实就是在构建指标体系,可以说指标体系的好坏决定了模型了健壮性。

一、 存在的问题

实际工作中不管是做BI还是数仓项目,只要存在计算指标的功能就会存在以下问题:

  • 命名不规范:好的指标命名是可以推断出其包含的业务过程的,但工作中总会碰到一些指标,很难判断这个指标是描述什么业务的。
  • 计算口径不统一:有些指标的计算口径不同的人会有不同的理解方式,导致使用者对这一指标理解产生歧义。
  • 数据来源、计算逻辑不清晰:之前工作中经常会碰到这类问题,当指标出现问题时需要去查代码才能找到指标使用了哪些表中的数据。而有些计算逻辑比较复杂的指标很难用语言描述清楚,即使能够描述清楚也会需要大段文字。指标开发人员很清楚其中的计算逻辑,使用者用起来是一头雾水。
  • 指标重复/冲突/过度开发:由于没有统一的指标管理体系,导致很多指标重复开发,不同指标名称背后很可能是相同的计算逻辑和统计口径;指标名称相同,计算逻辑、统计口径、数据源等不一样,这种情况非常让人费解;工作中有时要开发一些由于“某些原因”必须开发的指标,而这些指标很多时候只使用一次
  • 指标使用不明确:由于指标命名不规范、指标描述不清晰等问题,使用者不知道如何使用、分析这一指标。

二、 指标管理的一些原则

  1. 指标体系化管理、全局统一管理
  2. 指标计算逻辑、计算口径、数据源表述清晰。
  3. 指标命名规范、描述清晰且含义明确
  4. 明确指标的使用方式、系统、使用人等权限明确

从 “管理、计算、使用”三个角度阐述一下什么样的指标管理方法是“合格的”:

三、 基本概念

  • 指标:业务单元细分之后量化的度量值

  • 数据域:业务过程或者维度的抽象集合

    其中,业务过程可以概括为一个个不拆分的行为事件,在业务过程之下,可以定义指标;维度,是度量的环境,如乘客呼单事件,呼单类型是维度。为了保障整个体系的生命力,数据域是需要抽象提炼,并且长期维护更新的,变动需执行变更流程。

  • 业务过程:不可拆分的业务活动事件,如库房操作中的拣选、复核、打包等都是业务过程

  • 时间周期:统计的时间范围或者时间点,非统计口径; 最近30天、自然周、截止当日等

  • 修饰词:业务场景限定词,如AGV仓、Shuttle仓、立体仓库等,个人理解可以和维度属性等同; 修饰类型从属于某个业务域,如日志域的访问终端类型涵盖APP端、PC端等修饰词

  • 修饰类型:修饰词的抽象划分,从属于某个业务域,如仓库类型下包含上述仓库类型在内的多种仓库

  • 原子指标/度量:基于某一业务行为下的量化值,具有明确的业务含义,适合用“动作+度量”的方式命名;

    原子指标和度量含义相同,基于某一业务事件行为下的度量,是业务定义中不可再拆分的指标,具有明确业务含义的名称,如支付金额。

    指标分类主要分为原子指标、派生指标、衍生指标。

    原子指标    基于某一业务事件行为下的度量,是业务定义中不可再拆分的指标,具有明确业务含义的名称,如呼单量、交易金额
    
    派生指标    是1个原子指标+多个修饰词(可选)+时间周期,是原子指标业务统计范围的圈定。派生指标又分以下二种类型:
    
        事务型指标:是指对业务过程进行衡量的指标。例如,呼单量、订单支付金额,这类指标需要维护原子指标以及修饰词,在此基础上创建派生指标。
        存量型指标:是指对实体对象(如司机、乘客)某些状态的统计,例如注册司机总数、注册乘客总数,这类指标需要维护原子指标以及修饰词,在此基础上创建派生指标,对应的时间周期一般为“历史截止当前某个时间”。
    
    衍生指标是在事务性指标和存量型指标的基础上复合成的。主要有比率型、比例型、统计型均值 
  • 维度:度量的环境,反映业务的一类属性,如库房维度、SKU品类维度、时间维度

    维度是度量的环境,用来反映业务的一类属性,这类属性的集合构成一个维度,也可以称为实体对象。维度属于一个数据域,如地理维度(其中包括国家、地区、省市等)、时间维度(其中包括年、季、月、周、日等级别内容)。

  • 维度属性:维度的属性,比如库房维度的属性:库房名称、库房位置、库房类型等

  • 派生指标:时间周期+统计粒度+修饰词+原子指标,采用“修饰词__原子指标_时间周期”命名方式。一个简单的判断标准:如果修饰词有对应的维表,就可以作为派生指标,否则可以当作原子指标管理

四、指标管理方法

指标管理的几项目标是

技术目标   统一指标和维度管理,指标命名、计算口径、统计来源唯一, 维度定义规范、维度值一致
业务目标   统一数据出口、场景化覆盖
产品目标   指标体系管理工具产品化落地;指标体系内容产品化落地支持决策、分析、运营例如决策北极星、智能运营分析产品等

认识和管理复杂事物最好的方法之一就是分类

    A[业务线] -->B{主题域}
    B--> G(修饰类型)
    B --> D(纬度)
    B --> C(业务过程)
    D-->K(纬度属性)
    G-->H(修饰词)
    C -->E(原子指标)
    C-->J(度量)
    H-->F(派生指标)
    E -->F(派生指标)
    F-->M(汇总事实表)
    J-->N(明细纬度事实表)
    K-->N(明细纬度事实表)
    K-->L(纬度表)
    K-->M(汇总事实表)
    J-->M(汇总事实表)

一般会按照业务线、主题域、业务过程三级目录的方式管理指标,如果业务线条之间交叉较多,也可直接按照主题域划分。例如电商行业划分仓储、配送、零售、客服等主题域,都是为电商业务服务等,仓储主题域下面又划分为拣选、复核、打包等业务过程

规范的命名

  • 原子指标:指标名称适合用“动作+度量”的命名方式,标识的命名用英文简称或者汉语拼音缩写比较好。
  • 派生指标:指标名称应严格遵循“时间周期+统计粒度+业务限定+原子指标”的命名方式,标识命名要用“业务限定_原子指标_时间周期”的方式。
  •  

指标管理系统的基本功能

  1. 系统应当能按照指标管理体系进行多维度分类
  2. 能够清晰的描述指标名称(中英文)、业务口径、计算逻辑等;
  3. 能够较为便利的管理指标,进行添加、删除、修改等操作。
  4. 指标能够关联应用系统
  5. 指标应该和能数仓中的数据模型动态关联,即指标能够关联到表和字段上,以便使用者能够深入了解指标的计算过程,开发者能够较为便捷的定位数据源
  6. 系统应该和元数据管理系统关联,否则指标无法关联表和字段
  7. 应当能够同步数仓的主题域和业务过程,并按照命名规范创建指标
  8. 提供指标检索功能

数据血缘 Data Lineage 基础概念

数据血缘 (Data Lineage) ,又称数据血统、数据起源、数据谱系,是指数据的全生命周期中,数据从产生、处理、加工、融合、流转到最终消亡,数据之间自然形成一种关系。其记录了数据产生的链路关系,这些关系与人类的血缘关系比较相似,所以被成为数据血缘关系。它是数据治理的重要组成部分。

数据血缘 (Data Lineage) ,又称数据血统、数据起源、数据谱系,是指数据的全生命周期中,数据从产生、处理、加工、融合、流转到最终消亡,数据之间自然形成一种关系。其记录了数据产生的链路关系,这些关系与人类的血缘关系比较相似,所以被成为数据血缘关系。它是数据治理的重要组成部分。

  1. 血缘系统评价标准是什么?
  2. 如何构建数据血缘系统?
  3. 数据血缘落地有哪些方式?

一、数据血缘是什么

数据血缘是在数据的加工、流转过程产生的数据与数据之间的关系。

提供一种探查数据关系的手段,用于跟踪数据流经路径。

二、数据血缘的组成

1、数据节点

数据血缘中的节点,可以理解为数据流转中的一个个实体,用于承载数据功能业务。例如数据库、数据表、数据字段都是数据节点;从广义上来说,与数据业务相关的实体都可以作为节点纳入血缘图中,例如指标、报表、业务系统等。

按照血缘关系划分节点,主要有以下三类:流出节点->中间节点->流入节点

  • 流出节点: 数据提供方,血缘关系的源端节点。
  • 中间节点: 血缘关系中类型最多的节点,既承接流入数据,又对外流出数据。
  • 流入节点: 血缘关系的终端节点,一般为应用层,例如可视化报表、仪表板或业务系统。

2、节点属性

当前节点的属性信息,例如表名,字段名,注释,说明等。

3、流转路径

数据流转路径通过表现数据流动方向、数据更新量级、数据更新频率三个维度的信息,标明了数据的流入流出信息:

  • 数据流动方向: 通过箭头的方式表明数据流动方向
  • 数据更新量级: 数据更新的量级越大,血缘线条越粗,说明数据的重要性越高。
  • 数据更新频率: 数据更新的频率越高,血缘线条越短,变化越频繁,重要性越高。

4、流转规则-属性

流转规则体现了数据流转过程中发生的变化,属性则记录了当前路径对数据的操作内容,用户可通过流转路径查看该路径规则与属性,规则可以是直接映射关系,也可以是复杂的规则,例如:

  • 数据映射: 不对数据做任何变动,直接抽取。
  • 数据清洗: 表现数据流转过程中的筛选标准。例如要求数据不能为空值、符合特定格式等。
  • 数据转换: 数据流转过程中,流出实体的数据需要进行特殊处理才能接入到数据需求方。
  • 数据调度: 体现当前数据的调度依赖关系。
  • 数据应用: 为报表与应用提供数据。

三、我们为什么需要数据血缘

1、日益庞大的数据开发导致表间关系混乱,管理成本与使用成本激增

数据血缘产生最本质的需求。大数据开发作为数据汇集与数据服务提供方,庞大的数据与混乱的数据依赖导致管理成本与使用成本飙升。

2、数据价值评估,数据质量难以推进

表的优先级划分,计算资源的倾斜,表级数据质量监控,如何制定一个明确且科学的标准。

3、什么表该删,什么表不能删,下架无依据

业务库,数仓库,中间库,开发库,测试库等众多库表,是否存在数据冗余(一定存在)。以及存储资源如何释放?

4、动了一张表,错了一堆表

你改了一张表的字段,第二天醒来发现邮件里一堆任务异常告警。

5、ETL任务异常时的归因分析、影响分析、恢复

承接上个问题,如果存在任务异常或者ETL故障,我们如何定位异常原因,并且进行影响分析,以及下游受影响节点的快速恢复。

6、调度依赖混乱

数据依赖混乱必然会带来调度任务的依赖混乱,如何构建一个健壮的调度依赖。

7、数据安全审计难以开展

针对银行、保险、政府等对安全关注度较高的行业,数据安全-数据泄露-数据合规性需要重点关注。
由于数据存在ETL链路操作,下游表的数据来源于上游表,所以需要基于数据全链路来进行安全审计,否则可能会出现下游数据安全等级较低,导致上游部分核心数据泄露。

四、数据血缘可以做什么

1、流程定位,追踪溯源

通过可视化方式,将目标表的上下游依赖进行展示,一目了然。

2、确定影响范围

通过当前节点的下游节点数量以及类型可以确定其影响范围,可避免出现上游表的修改导致下游表的报错。

3、评估数据价值、推动数据质量

通过对所有表节点的下游节点进行汇总,排序,作为数据评估依据,可重点关注输出数量较多的数据节点,并添加数据质量监控。

4、提供数据下架依据

例如以下数据节点,无任何下游输出节点,且并无任何存档需求,则可以考虑将其下架删除。

5、归因分析,快速恢复

当某个任务出现问题时,通过查看血缘上游的节点,排查出造成问题的根因是什么。同时根据当前任务节点的下游节点进行任务的快速恢复。

6、梳理调度依赖

可以将血缘节点与调度节点绑定,通过血缘依赖进行ETL调度。

7、数据安全审计

数据本身具有权限与安全等级,下游数据的安全等级不应该低于上游的安全等级,否则会有权限泄露风险。

可以基于血缘,通过扫描高安全等级节点的下游,查看下游节点是否与上游节点权限保持一致,来排除权限泄露、数据泄露等安全合规风险。

五、数据血缘落地方案

目前业内常见的落地数据血缘系统以及应用,主要有以下三种方式:

1、采用开源系统:

Atlas、Metacat、Datahub等

采用开源系统最大的优点是投入成本较低,但是缺点主要包括

    1、适配性较差,开源方案无法完全匹配公司现有痛点。

    2、二开成本高,需要根据开源版本进行定制化开发。

2、厂商收费平台:

亿信华辰,网易数帆等

此类数据平台中会内置数据血缘管理系统,功能较为全面,使用方便。但是同样也有以下缺点:

    1、贵

    2、需要ALL IN平台,为保障数据血缘的使用,数据业务需要全部迁移到厂商平台中。

3、自建

通过图数据库、后端、前端自建数据血缘管理系统,此方案开发投入较大,但是有以下优点

    1、因地制宜,可根据核心痛点定制化开发元数据及数据血缘系统。

    2、技术积累,对于开发人员来说,从0-1开发数据血缘系统,可以更深刻的理解数据业务。

    3、平台解耦,独立于数据平台之外,数据血缘的开发不会对正常业务造成影响。

六、如何构建数据血缘系统

1、明确需求,确定边界

在进行血缘系统构建之前,需要进行需求调研,明确血缘系统的主要功能,从而确定血缘系统的最细节点粒度,实体边界范围。

例如节点粒度是否需要精确到字段级,或是表级。一般来说,表级粒度血缘可以解决75%左右的痛点需求, 字段级血缘复杂度较表级血缘高出许多,如果部门人数较少,可以考虑只精确到表级粒度血缘。

常见的实体节点包括:任务节点、库节点、表节点、字段节点、指标节点、报表节点、部门节点等。血缘系统可以扩展数据相关的实体节点,可以从不同的场景查看数据走向,例如表与指标,指标与报表的血缘关系。但是实体节点的范围需要明确,不可无限制的扩展下去。

明确需求,确定节点粒度与范围之后,才可根据痛点问题给出准确的解决方案,不至于血缘系统越建越臃肿,提高ROI(投入产出比)。

2、构建元数据管理系统

目前市面上所有的血缘系统都需要依赖于元数据管理系统而存在。

元数据作为血缘的基础,
    一是用于构建节点间的关联关系,
    二是用于填充节点的属性,
    三是血缘系统的应用需要基于元数据才能发挥出最大的价值。

所以构建血缘系统的前提一定是有一个较全面的元数据。

3、技术选型:图数据库

目前业内通常采用图数据库进行血缘关系的存储。

对于血缘关系这种层级较深,嵌套次数较多的应用场景,关系型数据库必须进行表连接的操作,表连接次数随着查询的深度增大而增多,会极大影响查询的响应速度。

而在图数据库中,应用程序不必使用外键约束实现表间的相互引用,而是利用关系作为连接跳板进行查询,在查询关系时性能极佳,而且利用图的方式来表达血缘关系更为直接。

4、血缘关系录入:自动解析and手动登记

自动解析:

    获取到元数据之后,首先可以根据元数据表中的SQL抽取语句,通过SQL解析器可自动化获取到当前表的来源表【SQL解析器推荐jsqlparse】,并进行血缘关系录入。

手动登记:

    如果当前表无SQL抽取语句,数据来源为手动导入、代码写入、SparkRDD方式等无法通过自动化方式确定来源表的时候,我们需要对来源表进行手动登记,然后进行血缘关系的录入。

5、血缘可视化

血缘系统构建完成后,为了能够更好的体现血缘价值,量化产出,需要进行血缘可视化的开发,分为两步:

 (1) 链路-属性展示:

    根据具体节点,通过点击操作,逐级展示血缘节点间的链路走向与涉及到的节点属性信息。

 (2)节点操作:

    基于可视化的血缘节点与当前节点附带的元数据属性,我们可以设想一些自动化操作例如:

        - 节点调度:直接基于血缘开启当前表节点的调度任务

        - 属性修改:通过前端修改当前节点的元数据属性并保存

6、血缘统计分析

数据血缘构建完成后,我们可以做一些统计分析的操作,从不同层面查看数据的分布与使用情况,从而支撑业务更好更快更清晰。

例如:
1. 数据节点下游节点数量排序,用于评估数据价值及其影响范围
2. 查询当前节点的所有上游节点,用于业务追踪溯源
3. 数据节点输出报表信息详情统计,用于报表的上架与更新
4. 查询孤岛节点,即无上下游节点的节点,用于数据删除的依据

7、血缘驱动业务开展

数据血缘构建完成,统计分析结果也有了,业务痛点也明确了,接下来我们即可利用数据血缘驱动业务更好更快开展。

落地的血缘相关业务有以下几点:

(1)影响范围告警:

    将血缘关系与调度任务打通,监测当前血缘节点的调度任务,如果当前节点调度出现异常,则对当前节点的所有下游节点进行告警。

(2)异常原因探查:

    还是将血缘关系与调度任务打通,监测当前血缘节点的调度任务,如果当前节点调度出现异常,则会给出当前节点的直接上游节点,用于探查异常原因。

(3)异常链路一键恢复:

    基于上一应用,异常原因定位并且修复完成之后,可以通过血缘系统,一键恢复当前数据节点的所有下游节点调度任务,真正实现一键操作。

(4)支撑数据下架:

    根据探查孤岛节点即无上下游节点的节点,归档数据表,节省存储空间。

(5)数据质量监控:

    对当前血缘中所有节点输出的下游节点数量进行排序,可以精确的判断某张表的影响范围大小,从而可以根据此对高排序表进行数据质量的监控。

(6)数据标准化监控:

    如果当前公司制定了基于库、表、字段的命名规范,我们可以通过探查血缘中的所有数据节点,并命名规范进行匹配,得到不符合规范的库、表、字段进行整改。

    当然了,此业务仅基于元数据也可实现。

(7)数据安全审计:

    团队基于用户职级、部门、操作行为等权重对目前的库表进行了数据权限等级划分,权限等级越高,当前表的安全级别越高。

    团队基于血缘进行数据全链路的安全等级监测,如果发现下游节点安全等级低于上游节点,则会进行告警并提示整改。确保因为安全等级混乱导致数据泄露。

七、血缘系统评价标准

在推动数据血缘落地过程中,经常会有用户询问:

  • 血缘质量如何?
  • 覆盖场景是否全面?
  • 能否解决他们的痛点?
  • 做出来好用吗?

市面上血缘系统方案那么多,我们自建系统的核心优势在哪里,血缘系统的优劣从哪些层次进行评价,于是量化出了以下三个技术指标:

1、准确率

定义: 假设一个任务实际的输入和产出与血缘中该任务的上游和下游相符,既不缺失也不多余,则认为这个任务的血缘是准确的,血缘准确的任务占全量任务的比例即为血缘准确率。

准确率是数据血缘中最核心的指标,例如影响范围告警,血缘的缺失有可能会造成重要任务没有被通知,造成线上事故。

我们在实践中通过两种途径,尽早发现有问题的血缘节点:

    人工校验: 通过构造测试用例来验证其他系统一样,血缘的准确性问题也可以通过构造用例来验证。实际操作时,我们会从线上运行的任务中采样出一部分,人工校验解析结果是否正确。

    用户反馈: 全量血缘集合的准确性验证是个漫长的过程,但是具体到某个用户的某个业务场景,问题就简化多了。实际操作中,我们会与一些业务方深入的合作,一起校验血缘准确性,并修复问题。

2、覆盖率

定义: 当有数据资产录入血缘系统时,则代表数据血缘覆盖了当前数据资产。被血缘覆盖到的数据资产占所有数据资产的比例即为血缘覆盖率。

血缘覆盖率是比较粗粒度的指标。作为准确率的补充,用户通过覆盖率可以知道当前已经支持的数据资产类型和任务类型,以及每种覆盖的范围。

在内部,我们定义覆盖率指标的目的有两个,
    一是我方比较关注的数据资产集合,
    二是寻找当前业务流程中尚未覆盖的数据资产集合,以便于后续血缘优化。

当血缘覆盖率低时,血缘系统的应用范围一定是不全面的,通过关注血缘覆盖率,我们可以知晓血缘的落地进度,推进数据血缘的有序落地。

3、时效性

定义: 从数据资产新增和任务发生修改的时间节点,到最终新增或变更的血缘关系录入到血缘系统的端到端延时。

对于一些用户场景来说,血缘的时效性并没有特别重要,属于加分项,但是有一些场景是强依赖。不同任务类型的时效性会有差异。

例如:故障影响范围告警以及恢复,是对血缘实时性要求很高的场景之一。如果血缘系统只能定时更新T-1的状态,可能会导致严重业务事故。

提升时效性的瓶颈,需要业务系统可以近实时的将任务相关的修改,以通知形式发送出来,并由血缘系统进行更新。

参考地址:https://www.aboutyun.com/forum.php?mod=viewthread&tid=33811&highlight=%26%231130%3B%26%231333%3B