精华内容
下载资源
问答
  • 数据血缘

    2019-05-20 10:12:00
    转载于:https://www.cnblogs.com/zhaodagang8/p/10892513.html

    转载于:https://www.cnblogs.com/zhaodagang8/p/10892513.html

    展开全文
  • 数据治理:数据血缘关系分析

    千次阅读 2020-07-16 16:33:14
    数据治理:数据血缘关系分析 此文章由百度的多篇文章归纳总结而成,以供本人学习和记录方便,不做任何商务用途,如有侵权,请联系我删除,谢谢! 参考列表: 微信 - 头哥侃码公众号:数据治理的大方向是Database ...

    数据治理:数据血缘关系分析

    此文章由百度的多篇文章归纳总结而成,以供本人学习和记录方便,不做任何商务用途,如有侵权,请联系我删除,谢谢!

    参考列表:

    微信 - 头哥侃码公众号:数据治理的大方向是Database Mesh?先把数据之间的血缘关系搞明白,咱再吹行吗?

    搜狐 - 数据大家:数据之间有血缘关系?数据治理不得不懂的血缘关系梳理方法

    知乎 - NBI大数据可视化分析平台: 数据治理中的数据血缘关系是什么?用来解决什么问题

    相亲相爱的数据:论数据血缘关系

    前言

    数据血缘属于数据治理中的一个概念,是在数据溯源的过程中找到相关数据之间的联系,它是一个逻辑概念。
    数据治理里经常提到的一个词就是血缘分析血缘分析是保证数据融合的一个手段,通过血缘分析实现数据融合处理的可追溯。大数据数据血缘是指数据产生的链路,直白点说,就是我们这个数据是怎么来的,经过了哪些过程和阶段。

    血缘关系概念

    Data Lineage 数据血统,也叫做Data Provenance 数据起源或Data Pedigree 数据谱系。

    任何的数据,从产生、ETL处理、加工、融合、流转,到最终消亡,数据之间自然会形成一种关系。好比人类社会中的人际关系,类似的一种关系来表达数据之间的这种关系,称之为数据的血缘关系。

    从技术角度来讲,数据a通过ETL处理生成了数据b,那么,我们会说,数据a与数据b具有血缘关系。不过与人类的血缘关系略有不同,数据血缘关系还具有一些个性化的特征。

    数据血缘关系的应用场景是什么

    在数据的处理过程中,从数据源头到最终的数据生成,每个环节都可能会导致我们出现数据质量的问题。比如我们数据源本身数据质量不高,在后续的处理环节中如果没有进行数据质量的检测和处理,那么这个数据信息最终流转到我们的目标表,它的数据质量也是不高的。也有可能在某个环节的数据处理中,我们对数据进行了一些不恰当的处理,导致后续环节的数据质量变得糟糕。因此,对于数据的血缘关系,我们要确保每个环节都要注意数据质量的检测和处理,那么我们后续数据才会有优良的基因,即有很高的数据质量。

    特有特征

    1. 归属性:特定的数据归属特定的组织(或个人),数据具有归属性。

    2. 多源性:同一个数据可以有多个来源, 一个数据可以是多个数据经过加工而生成的,而且这种加工过程可以是多个。

    3. 可追溯性: 数据的血缘关系,体现了数据的生命周期,体现了数据从产生到消亡的整个过程,具备可追溯性。

    4. 层次性: 数据的血缘关系是有层次的。对数据的分类、归纳、总结等对数据进行的描述信息又形成了新的数据,不同程度的描述信息形成了数据的层次。

    数据血缘关系的层次

    img

    上图描述的是存储在数据库中的结构化数据血缘关系的层次结构,是最典型的一种血缘关系的层次结构。对于不同类型的数据,血缘关系的层次结构有细微的差别。

    一般来说,数据都归属于某个组织或者某个人,数据都有所有者。数据在不同的所有者之间流转、融合,形成所有者之间通过数据联系起来的一种关系,是数据血缘关系的一种,在层次结构中处在最上层。这种关系,清楚地表明了数据的提供者和需求者。

    数据库、表和字段,是数据的存储结构。不同类型的数据,有不同的存储结构。存储结构决定了血缘关系的层次结构。所以不同类型的数据的血缘关系层次结构有些差别。相对之下,结构化数据血缘关系的层次结构比较简单,对于非结构化数据,如以文件服务器存储的数据来说,血缘关系的层次结构会略有不同,如下图所示

    img

    不同层级数据的血缘关系,体现着不同的含义。所有者层次,体现了数据的提供方和需求方,其他的层次则体现了数据的来龙去脉。通过不同层级的血缘关系,可以很清楚地了解数据的迁徙流转,为数据价值的评估、数据的管理提供依据。

    数据血缘关系的可视化

    img

    根据数据血缘关系的特点,我们设计了数据的血缘关系可视化图形。

    当时的规划,是希望通过可视化,将规则、流向分布显示在图形上的不同位置,从而起到如下几个方面的作用:

    • 追踪数据溯源:当数据发生异常,帮助追踪到异常发生的原因,平时也能帮助我们追踪数据的来源,追踪数据处理过程。
    • 评估数据价值:要对数据价值进行评估,就需要有依据,数据血缘关系,可以从#数据受众、数据更新量级、数据更新# 频次等方面给数据价值的评估提供依据。
    • 数据质量评估:数据的血缘关系图上,可以方便的看到数据清洗的标准清单,这个清单反映了对数据质量的要求。

    根据表现含义的不同,血缘关系的可视化图形包括5种可视化元素,分布在图形的不同位置。可视化元素分别是:

    1.信息节点

    信息节点用来表现数据的所有者和数据层次信息或终端信息。根据血缘关系层次的不同,数据信息有所区别。所有者层次只有所有者的信息,其他的层次则包括所有者信息和数据层次信息或者终端信息,例如关系数据库的字段间的血缘关系,该节点的描述信息就是:所有者.数据库.数据表.数据字段。

    信息节点有三种类型:主节点,数据流出节点,数据流入节点。

    • 主节点只有一个,位于整个图形的中间,是可视化图形的核心节点。图形展示的血缘关系就是此节点的血缘关系,其他与此节点无关的血缘关系都不在图形上展示,以保证图形的简单、清晰。
    • 数据流入节点可以有多个,是主节点的父节点,表示数据来源
    • 数据流出节点也可以有多个,是主节点的子节点,表示数据的去向;包括一种特殊的节点,即终端节点,终端节点是一种特殊的数据流出节点,表示数据不再往下进行流转,这种数据一般用来做可视化展示。

    2.数据流转线路

    数据流转线路表现的是数据的流转路径,从左到右流转。数据流转线路从数据流入节点出来往主节点汇聚,又从主节点流出往数据流出节点扩散。

    数据流转线路表现了三个维度的信息,分别是方向、数据更新量级、数据更新频次。

    • 方向的表现方式,没有做特别的设计,默认从上到下流转;
    • 数据更新的量级通过线条的粗细来表现。线条越粗表示数据量级越大,线条越细则表示数据量级越小。
    • 数据更新的频次用线条中线段的长度来表现。线段越短表示更新频次越高,线段越长表示更新频次越底,一根实线则表示只流转一次。

    3.清洗规则节点

    清洗规则节点用来表现数据流转过程中的筛选标准。大量的数据分布在不同的地方,每个地方对数据质量的要求都有所不同,数据接受方会根据自己对数据的要求来过滤接入的数据,这些要求就形成数据标准,并依据这些标准来做数据清洗。

    清洗规则可能会有多种。例如要求不能是空值、要求符合某种格式。在可视化图形上,清洗规则用一个标有大写字母“E”的圆圈表示,把各种规则简略化表达,以保证图形的简洁、清晰。查看规则内容的操作也很简单,鼠标移动到标有大写字母“E”的圆圈上,则会自动展示标准清单列表。

    清洗规则的简略图形位于数据流转线路上,表示该线路上流转的数据符合这些标准才能继续流转下去。

    4.转换规则节点

    转换规则节点在表现形式上类似于清洗规则节点,用一个标有大写字母“T”的圆圈表示。位于数据流转线路上,用来表现数据流转过程中发生的变化、变换。

    从数据提供方出来的数据,有时候需要进行特殊处理才能接入到数据需求方,这种处理可能比较简单,例如:只是截取源数据的前四位。也可能非常复杂,需要用到特殊的公式。在可视化方面,为了保证图形的简洁、清晰,做了简略处理。查看数据经过了哪些转换规则,也很简单,鼠标移动到标有大写字母“T”的圆圈上,则会自动展示转换规则清单。

    5.数据归档销毁规则节点

    我们认为数据是有生命周期的,当数据不再具备使用价值,他的生命就结束了,或者归档或者直接销毁。

    判断数据是否还具备使用价值非常困难,需要设计一些条件,当这些条件满足了以后,就认为数据不再具有使用价值,可以归档或者销毁了。

    举例说明

    现在假设你是一名数据开发工程师,为了满足一次业务需求,然后为了生成这张表,可能是处于程序逻辑清晰或者性能优化的考虑,你会使用很多份数据表,也会通过 MR、Spark 或者 Hive 来生产很多中间表。
    如下图,是你将花费时间来实现的整个数据流。

    • 其中 Table X 是最终给到业务侧的表。
    • 蓝色的 Table A-E,是原始数据。
    • 黄色的 Table F-I 是你计算出来的中间表。这些表都是你自己写程序要处理的表。
    • 然后你为了懒省事,嗯,应该说本着不重复开发的原则,你还要用到同事小伙伴处理的表,Table J 就是别人处理过的结果表。

    img

    过了一段时间后,业务侧的同事感觉你提供的数据中有个字段总是不太对劲,其实就是怀疑你的数据出问题!需要你来追踪一下这个字段的来源。
    首先你从 Table X 中找到了异常的字段,然后定位到了它来源于 Table I,再从 Table I 定位到了它来源于 Table G, 再从 Table G 追溯到了 Table D,最终发现是某几天的来源数据有异常。
    或者说,你从 Table X 定位到了异常的字段原来来自于其它小伙伴处理的表 Table J,然后继续向前回溯,找到了这张表在处理过程中的某一个步出现了问题。

    我们如何将数据血缘关系进行可视化呢

    方法一: 桑基图

    img

    数据血缘关系分析

    考虑到数据血缘的重要性和特性,以一般来讲,我们在血缘分析时,会关注应用(系统)级、程序级、字段级三个层次间数据间的关系。比较常见的是,数据通过系统间的接口进行数据的交换和传输。例如下图,银行业务系统中的数据,由统一数据交换平台进行流转分发给传统关系型数据库和非关系型大数据平台,数据仓库和大数据平台汇总后,交流各个应用集市分析使用。其中涉及大量的数据处理和数据交换工作,我们在分析其中的血缘关系时,主要考虑以下几个方面,

    1. 全面性,数据处理过程实际上是程序对数据进行传递、运算演绎和归档的过程,即使归档的数据也有可能通过其他方式影响系统的结果或流转到其他系统中。为了确保数据流跟踪的连贯性,必须将整个系统集作为分析的对象。
    2. 静态分析法,本方法的优势是,避免受人为因素的影响,精度不受文档描述的详细程度、测试案例和抽样数据的影响,本方法基于编译原理,通过对源代码进行扫描和语法分析,以及对程序逻辑涉及的路径进行静态分析和罗列,实现对数据流转的客观反映。
    3. 接触感染式分析法,通过对数据传输和映射相关的程序命令进行筛选,获取关键信息,进行深度分析。
    4. 逻辑时序性分析法,为避免冗余信息的干扰,根据程序处理流程,将与数据库、文件、通信接口数据字段没有直接关系的传递和映射的间接过程和程序中间变量,转换为数据库、文件、通信接口数据字段之间的直接传递和映射。
    5. 及时性,为了确保数据字段关联关系信息的可用和及时,必须确保查询版本更新与数据字段关联信息的同步,在整个系统范围内做到“所见即所得”。

    附 一

    Data provenanceData lineage 区别:

    From our experience, data provenance includes only high level view of the system for business users, so they can roughly navigate where their data come from. It’s provided by variety of modeling tools or just simple custom tables and charts. Data lineage is a more specific term and includes two sides - business (data) lineage and technical (data) lineage. Business lineage pictures data flows on a business-term level and it’s provided by solutions like Collibra, Alation and many others. Technical data lineage is created from actual technical metadata and tracks data flows on the lowest level - actual tables, scripts and statements. Technical data lineage is being provided by solutions such as MANTA or Informatica Metadata Manager.

    资料来源: What the difference between data provenance and data lineage?

    展开全文
  • 今天聊下如果需要开发一个数据血缘平台,需要考虑哪些内容,如何去设计架构,如何做底层存储的设计,希望大家会有收获,没讲明白的地方大家可以留言。数据血缘和元数据有紧密的联系,通常我们聊的数据血缘都指的是表...

    今天聊下如果需要开发一个数据血缘平台,需要考虑哪些内容,如何去设计架构,如何做底层存储的设计,希望大家会有收获,没讲明白的地方大家可以留言。

    数据血缘和元数据有紧密的联系,通常我们聊的数据血缘都指的是表与表之间的依赖关系,表A经过了某些操作生成了表B,那么表A与表B有血缘关系。但数据血缘又不局限于数据表之间。比如说数据表与离线ETL任务的查询写入关系,与Streaming入库任务的查询写入关系,与存储引擎的依赖关系等。当我们构建了数据源、ETL平台、调度平台、数据和各存储引擎之间的关系,打通各系统之间的隔阂,以全局的视角看数据的时候,是不是有种了如指掌的感觉?

    回归正题,如何构建各个系统,各个数据间的血缘?

    首先你应该有一个扩展性较好的血缘数据存储方案,不仅仅是数据上面的可扩展,还有业务上面的可扩展,不能说后面多了一个存储引擎ES,原有生成的关系和存储方式要大改。该模块可以说是整个系统的核心。

    其次你应该有一个好的血缘解析模块。这一块会比较复杂,不但要解析各种sql中表之间的依赖,还要解析table与平台任务id之间的关系。如果etl平台、调度平台等设计之初没有考虑到血缘,没留接口,这里做起来会非常复杂。

    再次你还需要一个调度平台。一些平台的血缘解析是定时获取数据解析的,你需要配置定时爬虫获取数据。

    最后,如果每天新增的数据量很大,你可能需要一个消息队列(kafka)缓存血缘数据,起一个消费任务从kafka同步数据到存储引擎中。

    其架构图如下所示:

    a63d996ee1b3d6669cd2f3078780896b.png

    下面挑几个重要的模块聊下。

    type service

    这里的type模仿了Atlas中type概念,也像图数据库neo4j中的lable概念,是类型的总称。这么说可能会比较抽象,举个例子你可以就懂了。比如说上节我们聊的数据地图中的一张表,这张表的db是一个type,字段信息是一个type,统计信息是一个type,表也是一个type。如下图所示:

    f02effd2206a294c7f3fd14b93e4cba0.png

    图中有5类type:Table(表),Field(字段),Mysql(mysql db),ES(elasticserch db),ES_Stat(es索引的统计信息),Mysql_stat(mysql 表的统计信息)。

    3类关系:hasA(table hasA field),belong(table belong db),stat(the statistics of table)

    存储方式:图数据库neo4j

    提供的服务:type和其关系的curd

    存储内容:type和type间的关系

    db-index数据同步

    刚聊了db用图数据neo4j存储,索引模块一般用比较流行那两个全文检索引擎solr或ElasticSearch(ES),这里以ES为例聊下ES数据的存储方式和入库方式。

    这里说数据同步有点不合适,其实neo4j和ES的数据都是从MQ(kafka)中消费得到的。同一个时间二者数据可能会些稍微的差别,但最终会一致。neo4j中的每一类顶点映射到ES则为一个索引,neo4j中的关系也就是图数据库中的边映射到ES的边索引(可以建多个边索引,指定某一类边放到一个索引中)。具体例子如下:

    Table 索引:
    {"owner":"lilei"}
    
    Field索引:
    {"field_name":"id", "field_type":"int", "table_name":"table1"}
    {"field_name":"name", "field_type":"string", "table_name":"table1"}
    
    Mysql db索引:
    {"db_name":"db2", "mysql_host":"xxxx"}
    
    ES db 索引:
    {"index_name":"db2", "es_cluster":"xxxx", "template_name":"xxxx"}
    
    ES_Stat索引:
    {"index_name":"table1", "index_num":"5", "row_num":"1111", "sum_size":"1111"}
    
    Mysql_Stat索引:
    {"table":"table1", "row_num":"1111", "sum_size":"1111", "last_modify_time":"2020-09-01 06:06:06"}
    
    Edge索引:
    {"lable":"hasA", "up":"table1_id", "down":"id_id"}
    {"lable":"hasA", "up":"table1_id", "down":"id_name"}
    {"lable":"belong", "up":"table1_id", "down":"id_mysql_db"}
    {"lable":"belong", "up":"table1_id", "down":"id_es_db"}
    {"lable":"stat", "up":"table1_id", "down":"id_es_stat"}
    {"lable":"belong", "up":"table1_id", "down":"id_mysql_stat"}

    这里这么拆分索引其实不合适,因为你会发现会有很多索引数据很少,可以将数据少的索引合并成一个,减少顶点索引的个数。边索引的拆分规则也是类似,数据多的拆出来,数据少的合并一起。

    ETL Hooks

    这里主要涉及到依赖关系解析。所谓的依赖解析其实就是拿到数据表之间,数据表和各个平台任务的依赖关系。

    数据表之间依赖解析

    数据表之间的依赖关系主要通过解析sql和平台任务获取。

    sql依赖解析这里其实还是比较麻烦的。这里有两种方案,一种是用开源的库,比如说atlas解析hive sql, spark sql的jar包;另一种是自己开发。由于我们这边sql类型比较多,有mysql,clickhouse,hive等,所以这里选择了自己开发sql依赖解析。给大家推荐一个好用的sql-parser库moz-sql-parser,该库可以将一个sql转化为json的形式。

    json.dumps(parse("select a as hello, b as world from jobs"))
    '{"select": [{"value": "a", "name": "hello"}, {"value": "b", "name": "world"}], "from": "jobs"}'

    后面依据json解析关系就简单多了。

    平台任务解析

    这里的平台任务指的是任何非sql的转换表的任务。由于各个公司的平台不一样,但获取表之间转换关系的逻辑是相通的。这里以笔者之前遇到过的分析平台为例。

    分析平台有很多节点,比如说过滤节点,匹配节点,关系对计算节点等。用户可以将不同的节点组成任务流,配置任务流后,平台可以定时调度。这里以关系对计算节点为例聊下如何解析表之间的关系。

    关系对计算节点中的计算逻辑非常复杂,但也是输入几张表,输出一张表。所以我们这里不管节点的计算逻辑,只管输入表输出表即可,也就是只管节点的配置信息即可。针对于该节点我们开发了一个插件,只需要查询节点的配置信息,解析出输入表输出表,将依赖关系发送到MQ中即可。具体的信息如下:

    {
      "up": "table1",  #输入表
      "down": "table3", #输出表
      "operator": "AP_pair_compute", #输入表经过AP_pair_compute得到了输出表
      "platform":"AP", #平台名称
      "task_id": "1111", #平台的任务ID
      "node_id": "2222" #任务中的节点id
      "label":"table_platform_table" # 依赖关系名称
    },
    {
      "up": "table2",
      "down": "table3",
      "platform":"AP", #平台名称
      "operator": "AP_pair_compute",
      "task_id": "1111",
      "node_id": "2222",
      "label":"table_platform_table" # 依赖关系名称
    }

    数据表和平台之间的依赖解析

    数据表与平台间的依赖解析其实就是记录平台的哪个任务产生了这个数据表,与数据表再平台上的依赖解析类似。也是针对不同的平台(甚至平台中的节点)开发不同的插件,将解析的数据写到MQ。还是上面的那个例子,关系对计算节点会产生如下的依赖数据:

    {
        "table":"table3",
      "platform":"AP", #平台名称
      "task_id": "1111", #平台的任务ID
      "node_id": "2222" #任务中的节点id
      "label":"table_platform" # 依赖关系名称
    }

    Crawer

    这里说的Crawer其实就是离线计算血缘的模块。这里考虑到并不是所有的血缘计算都是实时的,有些场景需要定时离线爬取数据。比如说所有的hive sql不是online hooks的方式实时计算血缘,而是将hive sql写入DB,起一个定时的离线任务分析血缘,写到MQ。

    下一节我们聊下数据质量平台。

    展开全文
  • 数据血缘关系的概念 在人类社会中,血缘关系是指由婚姻或生育而产生的人际关系。如父母与子女的关系,兄弟姐妹关系,以及由此而派生的其他亲属关系。它是人先天的与生俱来的关系,在人类社会产生之初就已存在,是最...

     

    摘要:

    数据的血缘关系作为数据治理很重要的部分,需要引起格外的重视。

    数据血缘关系的概念

    在人类社会中,血缘关系是指由婚姻或生育而产生的人际关系。如父母与子女的关系,兄弟姐妹关系,以及由此而派生的其他亲属关系。它是人先天的与生俱来的关系,在人类社会产生之初就已存在,是最早形成的一种社会关系。

    大数据时代,数据爆发性增长,海量的、各种类型的数据在快速产生。这些庞大复杂的数据信息,通过联姻融合、转换变换、流转流通,又生成新的数据,汇聚成数据的海洋。

    数据的产生、加工融合、流转流通,到最终消亡,数据之间自然会形成一种关系。我们借鉴人类社会中类似的一种关系来表达数据之间的这种关系,称之为数据的血缘关系。与人类社会中的血缘关系不同,数据的血缘关系还包含了一些特有的特征:

    1. 归属性。一般来说,特定的数据归属特定的组织或者个人,数据具有归属性。

    2. 多源性。同一个数据可以有多个来源(多个父亲)。一个数据可以是多个数据经过加工而生成的,而且这种加工过程可以是多个。

    3. 可追溯性。数据的血缘关系,体现了数据的生命周期,体现了数据从产生到消亡的整个过程,具备可追溯性。

    4. 层次性。数据的血缘关系是有层次的。对数据的分类、归纳、总结等对数据进行的描述信息又形成了新的数据,不同程度的描述信息形成了数据的层次。

    数据血缘关系的层次:

    上图描述的是存储在数据库中的结构化数据血缘关系的层次结构,是最典型的一种血缘关系的层次结构。对于不同类型的数据,血缘关系的层次结构有细微的差别。

    一般来说,数据都归属于某个组织或者某个人,数据都有所有者。数据在不同的所有者之间流转、融合,形成所有者之间通过数据联系起来的一种关系,是数据血缘关系的一种,在层次结构中处在最上层。这种关系,清楚地表明了数据的提供者和需求者。

    数据库、表和字段,是数据的存储结构。不同类型的数据,有不同的存储结构。存储结构决定了血缘关系的层次结构。所以不同类型的数据的血缘关系层次结构有些差别。例如,对于以文件服务器存储的数据来说,血缘关系的层次结构如下图所示。

    不同层级数据的血缘关系,体现着不同的含义。所有者层次,体现了数据的提供方和需求方,其他的层次则体现了数据的来龙去脉。通过不同层级的血缘关系,可以很清楚地了解数据的迁徙流转,为数据价值的评估、数据的管理提供依据。

    数据血缘关系的可视化

    可视化,从技术概念上来看,是利用计算机图形学和图像处理技术,将数据转换成图形或图像在屏幕上显示出来,并进行交互处理的理论、方法和技术。可视化的意义在于迅速快捷地传递信号,形象、直观地将数据及其关系展现出来,方便用户探讨、探索本质,发现问题。

    对于数据的血缘关系,可视化尤为重要。只有通过可视化,血缘关系才能很清晰地展现在用户面前。

    根据数据血缘关系的特点,我们设计了数据的血缘关系可视化图形。

    根据表现含义的不同,血缘关系的可视化图形包括5种可视化元素,分布在图形的不同位置。可视化元素分别是:

    1.信息节点

    信息节点用来表现数据的所有者和数据层次信息或终端信息。根据血缘关系层次的不同,数据信息有所区别。所有者层次只有所有者的信息,其他的层次则包括所有者信息和数据层次信息或者终端信息,例如关系数据库的字段间的血缘关系,该节点的描述信息就是:所有者.数据库.数据表.数据字段。

    信息节点有三种类型:主节点,数据流出节点,数据流入节点。

    主节点只有一个,位于整个图形的中间,是可视化图形的核心节点。图形展示的血缘关系就是此节点的血缘关系,其他与此节点无关的血缘关系都不在图形上展示,以保证图形的简单、清晰。

    数据流入节点可以有多个,是主节点的父节点,表示数据来源,位于整个图形的左侧。

    数据流出节点也可以有多个,是主节点的子节点,表示数据的去向,位于整个图形的右侧。数据流出节点包括一种特殊的节点,即终端节点,终端节点是一种特殊的数据流出节点,表示数据不再往下进行流转,这种数据一般用来做可视化展示。

    2.数据流转线路

    数据流转线路表现的是数据的流转路径,从左到右流转。数据流转线路从数据流入节点出来往主节点汇聚,又从主节点流出往数据流出节点扩散。

    数据流转线路表现了三个维度的信息,分别是方向、数据更新量级、数据更新频次。

    方向的表现方式,没有做特别的设计,默认从左到右流转;

    数据更新的量级通过线条的粗细来表现。线条越粗表示数据量级越大,线条越细则表示数据量级越小。

    数据更新的频次用线条中线段的长度来表现。线段越短表示更新频次越高,线段越长表示更新频次越底,一根实线则表示只流转一次。

    3.清洗规则节点

    清洗规则节点用来表现数据流转过程中的筛选标准。大量的数据分布在不同的地方,每个地方对数据质量的要求都有所不同,数据接受方会根据自己对数据的要求来过滤接入的数据,这些要求就形成数据标准,并依据这些标准来做数据清洗。

    清洗规则可能会有多种。例如要求不能是空值、要求符合某种格式。在可视化图形上,清洗规则用一个标有大写字母“E”的圆圈表示,把各种规则简略化表达,以保证图形的简洁、清晰。查看规则内容的操作也很简单,鼠标移动到标有大写字母“E”的圆圈上,则会自动展示标准清单列表。

    清洗规则的简略图形位于数据流转线路上,表示该线路上流转的数据符合这些标准才能继续流转下去。

    4.转换规则节点

    转换规则节点在表现形式上类似于清洗规则节点,用一个标有大写字母“T”的圆圈表示。位于数据流转线路上,用来表现数据流转过程中发生的变化、变换。

    从数据提供方出来的数据,有时候需要进行特殊处理才能接入到数据需求方,这种处理可能比较简单,例如:只是截取源数据的前四位。也可能非常复杂,需要用到特殊的公式。在可视化方面,为了保证图形的简洁、清晰,做了简略处理。查看数据经过了哪些转换规则,也很简单,鼠标移动到标有大写字母“T”的圆圈上,则会自动展示转换规则清单。

    5.数据归档销毁规则节点

    我们认为数据是有生命周期的,当数据不再具备使用价值,他的生命就结束了,或者归档或者直接销毁。

    判断数据是否还具备使用价值非常困难,需要设计一些条件,当这些条件满足了以后,就认为数据不再具有使用价值,可以归档或者销毁了。

    在可视化图形上,我们设计了一个标有大写字母“R”的圆圈,用来简略的表示数据归档和销毁规则。鼠标移动到标有大写字母“R”的圆圈上,则会自动展示归档和销毁规则清单。

    血缘关系的可视化是一个比较复杂的过程,目前没有成型的可视化图形可以参考,我们设计的这个血缘关系可视化图形组件,能够清晰地表达数据的血缘关系,对组织的数据治理很有帮助。具有以下一些作用。

    数据血缘关系的作用

    数据血缘关系的作用,总结起来有如下几个方面:

    1.数据溯源

    溯源,指的是探寻事物的根本、源头。我们分析处理的数据,可能来源很广泛,有政府的数据,有互联网的数据,有通过数据交易从第三方获取的数据,还有自身拥有的数据。不同来源的数据,数据质量参差不齐,对分析处理的结果影响也不尽相同。当数据发生异常,我们需要能追踪到异常发生的原因,把风险控制在适当的水平。

    数据的血缘关系,体现了数据的来龙去脉,能帮助我们追踪数据的来源,追踪数据处理过程。在数据的血缘关系可视化图形上,主节点的左边就是数据来源节点,非常清晰,一目了然。数据经过了哪些转换也能从可视化图形上看出来,对异常数据产生原因的分析帮助很大。

    2.评估数据价值

    数据的价值在数据交易领域非常重要,涉及到数据的定价。要对数据价值进行评估,就需要有依据。数据血缘关系,可以从几个方面给数据价值的评估提供依据:

    1)数据受众。在血缘关系图上,右边的数据流出节点表示受众,亦即数据需求方,数据需求方越多表示数据价值越大;

    2)数据更新量级。数据血缘关系图中,数据流转线路的线条越粗,表示数据更新的量级越大,从一定程度上反映了数据价值的大小;

    3)数据更新频次。数据更新越频繁,表示数据越鲜活,价值越高。在血缘关系图上,数据流转线路的线段越短,更新越频繁。

    3.数据质量评估

    从数据的血缘关系图上,可以方便的看到数据清洗的标准清单,这个清单反映了对数据质量的要求。

    4.数据归档、销毁的参考

    如果数据没有了受众,就失去了使用价值。从数据的血缘关系图上看,最右边没有了数据节点,就可以去评估主节点所代表的数据是否要归档或者销毁了。

    结语

    当下,我们生活在一个数据看似无穷无尽的年代。数据已经侵淫到我们的生活当中。我们依赖数据完成各种各样的任务,从促进经济发展和推动科学进步,到记录我们的健康信息。毫无疑问,我们已经进入到了大数据时代。

    原始形态的海量数据,不像传统数据那么可信。错误的数据、遗漏信息的数据大规模出现,数据治理显得非常重要。

    数据的血缘关系作为数据治理很重要的部分,需要引起格外的重视。基于这种认识,我们对数据血缘关系做了以上特别的分析研究,希望能引起大家对数据血缘关系的重视。

     

    展开全文
  • 数据血缘关系简述

    2019-12-02 14:03:53
    数据血缘关系的概念 在人类社会中,血缘关系是指由婚姻或生育而产生的人际关系。如父母与子女的关系,兄弟姐妹关系,以及由此而派生的其他亲属关系。它是人先天的与生俱来的关系,在人类社会产生之初就已存在,是最...
  • <div><p>目前是否能自动分析azkaban作业的血缘关系和数据血缘关系? 还是说血缘关系需要我们手动去建立关联?</p><p>该提问来源于开源项目:linkedin/datahub</p></div>
  • 数据血缘属于数据治理中的一个概念,是在数据溯源的过程中找到相关数据之间的联系,它是一个逻辑概念。 数据治理里经常提到的一个词就是血缘分析,血缘分析是保证数据融合的一个手段,通过血缘分析实现数据融合处理...
  • 最近在内部做了个分享,顺便画了一下这次impala数据血缘的架构图: 架构图: 如果想了解如何实现请参照前面几篇文章: impala数据血缘与数据地图系列: 1. 解析impala与hive的血缘日志 2. 实时采集impala血缘...
  • 在数据Show的这期节目中,记者采访了Stitch Fix的软件工程师Neelesh Salian,该公司结合了机器学习和...在与数据工程师、数据科学家和AI研究人员的对话中发现,他们需要一套能帮助他们跟踪数据血缘和数据溯源的解决方案
  • impala数据血缘与数据地图系列: 1. 解析impala与hive的血缘日志 2. 实时采集impala血缘日志推送到kafka ---------------------------------解析impala与hive血缘日志------------------------------------------...
  • 数据血缘关系的概念 在人类社会中,血缘关系是指由婚姻或生育而产生的人际关系。如父母与子女的关系,兄弟姐妹关系,以及由此而派生的其他亲属关系。它是人先天的与生俱来的关系,在人类社会产生之初就已存在,是最...
  • 一、生成血缘数据 血缘关系数据通过Process生成,可以在数据导入时自动生成或通过RestAPI新增Process生成。 1、sqoop同步自动生成血缘数据 sqoop同步MySQL数据库数据到hive,同步成功后,通过sqoop的Atlas Hook...
  • impala数据血缘与数据地图系列: 1. 解析impala与hive的血缘日志 2. 实时采集impala血缘日志推送到kafka -----------------------------------------实时采集impala血缘日志推送到kafka-------------------------...
  • 基于Hql的表级数据血缘

    千次阅读 2019-07-28 17:40:10
    表级数据血缘:数据表的派生关系。 Hql: hive sql 通过hive的hql parser在AST(抽象语法树)层级操作 如果需要做字段血缘,在AST级别是可以完成的,不过需要熟悉大量的hql语法规则和其在ast中的实际表示。 耳闻hiv的ast...
  • 数仓基于表级别的数据血缘分析

    千次阅读 2019-09-30 10:55:44
    1.背景:数据血缘分析在日常的处理过程中非常重要,其分为应用级别、表级别和字段级别三种。在数据处理过程中,需要知道目标表的字段是来源于哪张原始表。对于简单的hsql来说我们很容易可以知道目标表的来源,但是...
  • 开源 数据 血缘 组件 猎豹网格 (Cheetah Grid) The fastest open-source web component of data table. 数据表中最快的开源Web组件。 View demo 查看演示 Download Source 下载源 下载猎豹网格 (Downloading ...
  • 数据血缘从哪里出现? 在切入正题之前,我们先设想几个场景: 1. 业务部门的小A拿到了一张报表,发现当月利息收入与预想的差距甚大,明明刚批了几个大额贷款,为何利息收入没有增加?小A一个电话打给了报表项目组...
  • 数据血缘关系

    千次阅读 2019-01-09 14:59:55
    http://www.cnblogs.com/zhangleisanshi/p/7730196.html
  • impala数据血缘与数据地图系列: 1. 解析impala与hive的血缘日志 2. 实时采集impala血缘日志推送到kafka -----------------------------------------实时采集impala血缘日志推送到kafka-------------------------...
  • 现在数据仓库基本上采用Hadoop平台了,那么数据仓库里面元数据血缘分析的思路有哪些呢 基本上有下面这两种思路: 1、解析hql脚本,通过正则表达式去匹配每一行字符串 2、采用Hadoop自带的语法分析类解析 这里...
  • 编程获得数据血缘关系的需求对数据仓库来说并不普遍,只有数据规模达到很大的程度,或者存在复杂数据生产关系的报表数量增加到很大的程度,单独的数据血缘关系工作才有必要。 在规模没达到之前,人工的识别和管理是...
  • 用工具获取数据血缘关系 用Neo4j可视化 添加节点 CREATE (PRODUCT:TABLES {title:'PRODUCT', tagline:'once upon a time'}) CREATE (PROFIT_RATE_89:TABLE1 {name:'PRODUCT', id_:89,column_name:'...
  • HIVE数仓数据血缘分析工具-SQL解析

    万次阅读 多人点赞 2015-10-27 16:05:42
    1、两个数据报表进行对比,结果差异很大,需要人工核对分析指标的维度信息,比如从头分析数据指标从哪里来,处理条件是什么,最后才能分析出问题原因。 2、基础数据表因某种原因需要修改字段,需要评估其对数仓的...
  • 问题:用azkaban 执行数据仓库各层之间的脚本,然后在Atlas中未能监测到hive表中的变化,血缘关系没有更新? 如下图: ![图片说明](https://img-ask.csdn.net/upload/202008/28/1598619901_595085.png) 但是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 623
精华内容 249
关键字:

数据血缘