数据治理——技术角度分享

	前言:在数据治理领域的文章大多都是从业务角度进行切入,本文从纯技术角度切入,介绍了数据血缘关系的图分析思路、领域建模层面构建中间层的思路。以及纯粹从词法分析和语法分析的统计学层面维度。

图视角

受益之前在招商银行的担保圈项目启发,将对于图的分析观点带入到数据治理当中来。我们在DW中获取到数据的血缘关系表schema如下所示(血缘数据见附件,此处仅选取几块关键指标):

src_guid dst_guid edge_type node_ids process_type main_table_flag clt_src_type dt

我们适度从指标中选取图节点的属性和边属性,实验将src_guid和src_db_type作为节点属性,将process_type和main_table_flag作为边的属性,由于边属性的两个数值仅存在唯一枚举值,在边的属性上不好大做文章,本文仅从节点之间的关系出发,谈谈图算法与数据治理的全貌。
由于MaxCompute不具备开发资源。此处我们自力更用开源图数据库Neo4j对数据的血缘关系全貌来进行分析,在我们创建好节点后,导入数据节点和边的关系展示如下所示:
在这里插入图片描述
数据治理节点定义
我们可以看到图中的节点呈现出一定的有向图分布特性,部分稀疏部分密集。我们可以通过具体的量化指标来对于节点的特性进行针对性处理。
入度(indgree):即有向图中以该节点为终点边的数目。
出度(outdgree):即有向图中以该节点为起始点边的数目。
强联通分量:如果一些定点中任意两个顶点都能互相到达(间接或直接),那么这些节点就构成了一个强联通分量,如果一个顶点没有出度,即它不能到达任何顶点则该顶点自身是一个强联通分量。强联通分量SCC算法详情

我们将图的特性应用到数仓领域得出结论如下:

  1. 一个节点表的入度和处度之和越大,说明该节点越重要,适合在梳理数据分层时优先梳理该节点。
  2. 如果一个节点 入度=0 且 出度!=0,说明该节点为源节点,可添加规范如:节点名称是否以ods开头等。
  3. 如果一个节点 出度=0 且 入度!=0,说明该节点为最终节点,可添加规范如:节点名称是否以adm开头等。
  4. 如果一个节点的入度出度!=0 入度>>出度,说明该节点有可能作为中间表又作为最终的指标项表,在数据治理的过程中可以将其中的部分指标项提取出来单独成表。
  5. 如果一个节点的入度出度!=0 入度<出度,说明该节点为中间表,可添加中间表相应规范进行检查。
  6. 如果图中存在表之间的互引用的情况,即上述所说的强联通分量,则针对性的重点处理,梳理清楚表之间的指标关系。

数据治理现状

针对上述关于数据治理的诊断思路,我们来看看香港银行数据治理的现状,首先就强联通分量即表之间的互相引用所展开:

setCount maxCount minSetsize
712 3 1

可见,经由强联通分量算法展开的715张表中,有712个强联通分量,其中大于1的强联通分量有两个,最大联通分量数为3。说明数据之间的互相引用状况良好,我们暂且来编写CQL来看一下这两个大于1的强联通分量图, 分别是:

match(t:Table) where t.componentId=*** return t

在这里插入图片描述

在这里插入图片描述
同时,我们也可以对于其中入节点和出节点来看到有多少张源表和adm数据集市表,相关的CQL如下:

MATCH (n:Table) with n, size((n)-[:process]->()) as OutDgree, size((n)<-[:process]-()) as InDgree set n.OutDgree=OutDgree,n.InDgree=InDgree;
match (n:Table) where n.OutDgree=0 return n
match (n:Table) where n.InDgree=0 return n

综上以出度为0可知共有354张集市表,以入度为0可知有134张ods源表。入度和出度不为0的表一共227张。
其中入度和出度最大相差为8,相差为8的表共两张分别是:odaps.bank_china_libra_new_acc_report、odaps.common_algo_details_di。这其中,按照前面理论所说的 重要性评分=入度+出度 原则,对表的重要性也进行了排序,最重要的 odaps.evt_trd_detail ,其重要性得分为49分。

领域模型视角

由于数据治理的工作展开不可能由一个人完成,故人员的投入和分工存在是当前摆在境外银行工作中的一大问题。分工的方法有许多,可以按照业务系统的分工划分、按照业务线的上下游划分、或是从纯粹的技术视角给出建议。小明的思路是:对于中间层的建设按照系统的域的划分。
在这里插入图片描述
其实飞马模型的应用是十分复杂的,但是建模的结果不是在于简化,而是在于其是否能很好地描述问题。下图是账户域的领域模型,对于这类E—R模型一个最佳的思路就是:从E(实体)入手,结合R(关系)中的统计字段以形成大宽表来构成中间层的表结构设计。
在这里插入图片描述

统计学视角

基本概念:

  1. 抽象语法树 (Abstract Syntax Tree,AST) 抽象语法树是源代码结构的一种抽象表示,它以树的形状表示语言的语法结构。抽象语法树一般可以用来进行代码语法的检查,代码风格的检查,代码的格式化,代码的高亮,代码的错误提示以及代码的自动补全等等。
  2. 语法解析器 (Parser) 语法解析器通常作为编译器或解释器出现。它的作用是进行语法检查,并构建由输入单词(Token)组成的数据结构(即抽象语法树)。语法解析器通常使用词法分析器(Lexer)从输入字符流中分离出一个个的单词(Token),并将单词(Token)流作为其输入。实际开发中,语法解析器可以手工编写,也可以使用工具自动生成。
  3. 词法分析器 (Lexer) 词法分析是指在计算机科学中,将字符序列转换为单词(Token)的过程。执行词法分析的程序便称为词法分析器。词法分析器(Lexer)一般是用来供语法解析器(Parser)调用的。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值