《数据之路》数据管理

本文的内容来自数据之路
阅读并记录一些知识点和流程
摘取博客上的ETL流程,也是数据治理的一部分

1.元数据

元数据的质量直接影响到数据管理的准确性,如何把元数据建设好将起到至关重要的作用。元数据建设的目标是打通数据接入到加工,再到数据消费整个链路,规范元数据体系与模型,提供统一的元数据服务出口,保障元数据产出的稳定性和质量。

Data Profile标签体系
  1. 基础标签:针对数据的存储情况、访问情况、安全等级等进行打标

  2. 数仓标签:针对数据是增量还是全量、是否可再生、数据的生命周期来进行标签化处理

  3. 业务标签:根据数据归属的主题域、产品线、业务类型为数据打上不同的标签

  4. 潜在标签:这类标签主要是为了说明数据潜在的应用场景,比如社交、媒体、广告、电商、金融等


    Data Profile标签体系

其实就是表与表关联的可理解化(可视化),表现表的重要性,关联,类型,价值,结构等,支持数分与etl

2.计算管理

Map倾斜的解决方案
  1. 对上游小文件进行合并,防止倾斜
  2. 对数据进行打散,防止map端集合的数据倾斜
Join倾斜的解决方案
  1. mapjoin
    Join倾斜时,如果某路输入比较小,则可以采用MapJoin避免倾斜。MapJoin的原理是将Join操作提前到Map端执行,将小表读入内存,顺序扫描大表完成Join,这样可以避免因为分发key不均匀导致数据倾斜。但是MapJoin的使用有限制,必须是Join中的从表比较小才可用。所谓从表,即左外连接中的右表,或者右外连接中的左表。
  2. 空值长尾
    数据表中经常出现空值的数据,如果关联key为空值且数据,量比较大, Join时就会因为空值的聚集导致长尾,针对这种情况可以将空值处理成随机值。因为空值无法关联上,只是分发到一处,因此处理成随机值既不会影响关联结果,也能很好地避免聚焦导致长尾
  3. 热点值
    如果是因为热点值导致的长尾,并且Join的输入比较大无法使用MapJoin,则可以先将热点key取出,对于主表数据用热点key切分成热点数据和非热点数据两部分分别处理,最后合并
Reduce倾斜的解决方案
  1. 对热点值单独处理,例如union all
  2. 分区过多,插入的时候导致小文件过多,设置插入时合并
  3. 对去重的处理(distinct) ,使用disticnt函数,所有的数据只会shuffle到一个reducer上,导致reducer数据倾斜严重

https://blog.csdn.net/weirongneng/article/details/84396129?ops_request_misc=&request_id=&biz_id=102&utm_term=distinct%20%E6%95%B0%E6%8D%AE%E5%80%BE%E6%96%9C&utm_medium=distribute.pc_search_result.none-task-blog-2~

目前Reduce端数据倾斜很多是由Count Distinct问题引起的,因此,在ETL开发工作中应该予以重视Count Distinct问题,避免数据膨胀。对于一些表的Join阶段的Null值问题,应该对表的数据分布要有清楚的认识,在开发时解决这个问题

3.存储和成本管理

数据压缩
数据重分布:避免数据热点,提高压缩效率
存储治理


存储治理

数据生命周期管理矩阵

4.数据质量

数据质量保障原则
  1. 完整性是指数据的记录和信息是否完整,是否存在缺失的情况。数据的缺失主要包括记录的缺失和记录中某个字段信息的缺失,两者都会造成统计结果不准确,所以说完整性是数据质量最基础的保障
  2. 准确性是指数据中记录的信息和数据是否准确,是否存在异常或者错误的信息。
  3. 一致性一般体现在跨度很大的数据仓库体系中,主数据仓库内部有很多业务数据仓库分支,对于同一份数据,必须保证一致性。
  4. 及时性

学习一下元数据清标签体系
注意join中对null的处理
reduce端去重的处理
最后一章数据应用提供了数据视野关于对数据的应用,生产众多的数据产品.基于平台的数据应用架构是令人震撼的.这样的架构是如何搭建与联系起来的及如何正常运行产出价值的

数据应用架构

5.ETL概述

1.什么是逻辑数据映射?它对ETL项目组的作用是什么?

逻辑数据映射(Logical Data Map)用来描述源系统的数据定义、目标数据仓库的模型以及将源系统的数据转换到数据仓库中需要做操作和处理方式的说明文档,通常以表格或Excel的格式保存

  1. 目标表名:
  2. 目标列名:
  3. 目标表类型:注明是事实表、维度表或支架维度表。
  4. SCD类型:对于维度表而言。
  5. 源数据库名:源数据库的实例名,或者连接字符串。
  6. 源表名:
  7. 源列名:
  8. 转换方法:需要对源数据做的操作,如Sum(amount)等

逻辑数据映射应该贯穿数据迁移项目的始终,在其中说明了数据迁移中的ETL策略。在进行物理数据映射前进行逻辑数据映射对ETL项目组是重要的,它起着元数据的作用。项目中最好选择能生成逻辑数据映射的数据迁移工具

2.在数据仓库项目中,数据探索阶段的主要目的是什么?

在逻辑数据映射进行之前,需要首先对所有的源系统进行分析。对源系统的分析通常包括两个阶段,一个是数据探索阶段(Data Discovery Phase),另一个是异常数据检测阶段
数据探索阶段包括以下内容:

1.收集所有的源系统的文档、数据字典等内容。
2.收集源系统的使用情况,如谁在用、每天多少人用、占多少存储空间等内容。
3.判断出数据的起始来源(System-of-Record)。
4.通过数据概况(Data Profiling)来对源系统的数据关系进行分析。

数据探索阶段的主要目的是理解源系统的情况,为后续的数据建模和逻辑数据映射打下坚实的基础

3.如何确定起始来源数据?

这个问题的关键是理解什么是System-of-Record.System-of-Record和数据仓库领域内的其他很多概念一样,不同的人对它有不同的定义。在Kimball的体系中,System-of-Record是指最初产生数据的地方,即数据的起始来源。在较大的企业内,数据会被冗余的保存在不同的地方,在数据的迁移过程中,会出现修改、清洗等操作,导致与数据的起始来源产生不同
起始来源数据对数据仓库的建立有着非常重要的作用,尤其是对产生一致性维度来说。我们从起始来源数据的越下游开始建立数据仓库,我们遇到垃圾数据的风险就会越大。

4.在ETL过程中四个基本的过程分别是什么?

Kimball数据仓库构建方法中,ETL的过程和传统的实现方法有一些不同,主要分为四个阶段,分别是抽取(extract)、清洗(clean)、一致性处理(comform)和交付(delivery),简称为ECCD。

抽取阶段的主要任务是:

  1. 读取源系统的数据模型。
  2. 连接并访问源系统的数据。
  3. 变化数据捕获。
  4. 抽取数据到数据准备区。

清洗阶段的主要任务是:

  1. 清洗并增补列的属性。
  2. 清洗并增补数据结构。
  3. 清洗并增补数据规则。
  4. 增补复杂的业务规则。
  5. 建立元数据库描述数据质量。
  6. 将清洗后的数据保存到数据准备区。

一致性处理阶段的主要任务是:

  1. 一致性处理业务标签,即维度表中的描述属性。
  2. 一致性处理业务度量及性能指标,通常是事实表中的事实。
  3. 去除重复数据。
  4. 国际化处理。
  5. 将一致性处理后的数据保存到数据准备区。

交付阶段的主要任务是:

  1. 加载星型的和经过雪花处理的维度表数据。
  2. 产生日期维度。
  3. 加载退化维度。
  4. 加载子维度。
  5. 加载1、2、3型的缓慢变化维度。
  6. 处理迟到的维度和迟到的事实。
  7. 加载多值维度。
  8. 加载有复杂层级结构的维度。
  9. 加载文本事实到维度表。
  10. 处理事实表的代理键。
  11. 加载三个基本类型的事实表数据。
  12. 加载和更新聚集
  13. 将处理好的数据加载到数据仓库
5.简述异构数据源中的数据抽取技术。

在数据仓库项目中,需要抽取的数据经常来自不同的数据源,它们的逻辑结构和物理结构都可能不同,即称之为异构数据源
在对异构数据源进行整合抽取时,我们需要做的事情依次是标识出所有的源系统,对源系统进行概况分析,定义数据匹配逻辑,建立筛选规则,生成一致性维度
对于源数据的操作系统平台和数据平台各不相同的情况,我们需要根据实际情况来确定如何进行数据抽取,通常的方法有建立ODBC连接、定义接口文件、建立DBLINK等方法

6.从ERP源系统中抽取数据最好的方法是什么?

ERP系统的产生是为了解决企业内异构数据的整合。这个问题也是数据仓库系统面临的主要问题。ERP的解决方案是将企业内的各个应用(包括销售、会计、人力资源、库存和产品等)建立在相同的平台和相同的应用框架下,即在应用操作层将企业内的数据进行了一致性处理。而数据仓库是在应用操作层之上建立一致性的规则并进行一致性处理。目前比较流行的ERP系统有SAP、PeopleSoft、Oracle、Baan和J.D.EDwards(大部分没接触过)
如果企业内只有一套ERP系统,那么数据就已经是一致的了,为数据抽取提供了方便。如果企业内除了ERP外还有其他系统,则数据抽取会变得复杂。因为目前的ERP系统的数据模型都非常复杂,可能有几百几千个表,并且较难理解。直接在ERP系统上建立数据捕获和抽取是非常复杂的。最好的办法是购买能针对ERP系统数据抽取提供功能的ETL工具,将ERP内部的复杂性留给ETL厂商处理

7.简述出三种变化数据捕获技术及其优缺点?☆

1.采用审计列
审计列指表中如“添加日期”、“修改日期”、“修改人”等信息的字段。应用程序在对该表的数据进行操作时,同时更新这些字段,或者建立触发器来更新这些字段。采用这种方式进行变化数据捕获的优点是方便,容易实现。缺点是如果操作型系统没有相应的审计字段,需要改变已有的操作型系统的数据结构,以保证获取过程涉及的每张表都有审计字段。

2.数据库日志
DBMS日志获取是一种通过DBMS提供的日志系统来获得变化的数据。它的优点是对数据库或访问数据库的操作系统的影响最小。缺点是要求DBMS支持,并且对日志记录的格式非常了解。

3.全表扫描
全表扫描或者全表导出文件后进行扫描对比也可以进行变化数据捕获,尤其是捕获删除的数据时。这种方法的优点是,思路清晰,适应面广,缺点是效率比较差。

8.简述应该在ETL的哪个步骤来实现概况分析?

数据概况分析是对源数据内容的概况进行分析,应该在项目的开始后尽早完成,它会对设计和实现有很大的影响。在完成需求收集后就应该立即开始数据概况分析。
数据概况分析不光是对源系统的数据概况的定量描述,而且为ETL系统中需要建立的错误事件事实表(Error Event Table)和审计维度表(Audit Dimension)打下基础,为其提供数据。

9.ETL项目中的数据质量部分核心的交付物有那些?

1.数据概况分析结果
数据概况分析结果是对源系统的数据状况的分析产物,包括如源系统中有多少个表,每个表有多少字段,其中多少为空,表间的外键关系是否存在等反映源系统数据质量的内容。这些内容用来决定数据迁移的设计和实现,并提供给错误事件事实表和审计维度表需要的相关数据。

2.错误事件事实表
错误事件事实表及相关的一系列维度表是数据质量检查部分的一个主要交付物。粒度是每一次数据质量检查中的错误信息。相关维度包括日期维度表、迁移信息维度表、错误事件信息维度表,其中错误事件信息维度表中检查的类型、源系统的信息、涉及的表信息、检查使用的SQL等内容。错误事件事实表不提供给前台用户。

3.审计维度表
审计维度表是给最终用户提供数据质量说明的一个维度表。它描述了用户使用的事实表的数据来源,数据质量情况等内容。

10.简述对一致性维度的三种基本的交付步骤。

数据整合的关键就是生成一致性维度,再通过一致性维度将来自不同数据源的事实数据合并到一起,供分析使用。通常来说,生成一致性维度有如下三个步骤:

1.标准化(Standardizing)
标准化的目的是使不同数据源的数据编码方式,数据格式等相同,为下一步数据匹配打下基础。

2.匹配(Matching and Deduplication)
数据匹配的工作有两种,一种是将不同数据源的标识同一事物的不同属性匹配到一起,是数据更完善;另一种是将不同数据源的相同数据标识成重复,为下一步的筛选打下基础。

3.筛选(Surviving)
数据筛选的主要目的是选定一致性维度作为主数据(Master Data),也就是最终交付的一致性维度数据。

11.简述三种基本事实表,并说明ETL的过程中如何处理它们☆

事实表从粒度的角色来划分可以分为三类,分别是交易粒度事实表(Transaction Grain)、周期快照粒度事实表(Periodic Snapshot)和累计快照粒度事实表(Accumulating Snapshot)。在事实表的设计时,一定要注意一个事实表只能有一个粒度,不能将不同粒度的事实建立在同一张事实表中。
交易粒度事实表的来源伴随交易事件成生的数据,例如销售单。在ETL过程中,以原子粒度直接进行迁移。
周期快照事实表是用来记录有规律的,固定时间间隔的业务累计数据,例如库存日快照。在ETL过程中,以固定的时间间隔生成累计数据。
累积快照事实表用来记录具有时间跨度的业务处理过程的整个过程的信息。在ETL过程中,随着业务处理过程的步骤逐步完善该表中的记录。

12.迟到的数据对事实表和维度表有什么影响?怎样来处理这个问题?

对于迟到的事实记录,我们可以插入到相应的事实表中。在插入的同时,还需要做一些处理。首先,对于具有SCD TYPE 2型维度的事实记录需要在插入前判断该事实记录的发生日期到目前为止,维度记录是否发生过变化,如果有变化,该事实记录需要对应到事实发生时的维度记录上。其次,在事实记录插入完成后,与该事实表相关的聚集事实表和合并事实表需要做相应的处理。
对于迟到的维度记录,我们需要做的处理要复杂一些。首先,如果迟到的维度记录是第一次进入数据仓库中,那么需要在维度表中生成一条维度记录,并将与该维度记录对应的事实记录的外键进行更新。其次,如果迟到的维度记录是对原维度进行的修改,那么我们在维度表中生成一条新记录的同时,还需要找到维度本次变化到下次变化间的事实行,并将其维度外键更新为新加维度的代理关键字

13.如果ETL进程运行较慢,需要分哪几步去找到ETL系统的瓶颈问题。

ETL系统遇到性能问题,运行很慢是一件较常见的事情,这时要做的是逐步找到系统的瓶颈在哪里
首先要确定是由CPU、内存、I/O和网络等产生的瓶颈,还是由ETL处理过程产生的瓶颈
如果环境没有瓶颈,那么需要分析ETL的代码。这时,我们可以采用排除的方法,需要隔离不同的操作,并分别对它们进行测试。如果是采用纯手工编码方式的ETL处理,隔离不同的操作要麻烦一些,这时需要根据编码的实际情况来处理。如果是采用ETL工具的话,目前的ETL工具应该都有隔离不同处理的功能,隔离起来相对容易一些
分析最好从抽取操作开始,然后依次分析各种计算、查找表、聚集、过滤等转换环节的处理操作,最后分析加载操作
实际的处理中,可以按照下面的七个步骤来查找瓶颈:

1.隔离并执行抽取查询语句。
先将抽取部分隔离出来,去掉转换和交付,可以将数据直接抽取到文件中。如果这一步效率很差,基本确定是抽取SQL的问题。从经验来看,未经调优的SQL是一个最常见的导致ETL效率差的原因。如果这步没有问题进入第二步。

2.去掉过滤条件。
这一条是针对全抽取,然后在ETL处理中进行过滤的处理方式而言。在ETL处理中做过滤处理有时会产生瓶颈。可以先将过滤去掉,如果确定为这个原因,可以考虑在抽取时进行数据过滤。

3.排除查找表的问题。
参照数据在ETL处理过程中通常会加载到内存中,目的是做代码和名称的查找替换,也称查找表。有时查找表的数据量过大也会产生瓶颈。可以逐个隔离查找表,来确定是否是这里出现问题。注意要将查找表的数据量降到最低,通常一个自然键一个代理键就可以,这样可以减少不必要的数据I/O。

4.分析排序和聚集操作。
排序和聚集操作都是非常费资源的操作。对这部分隔离,来判断是否因为它们引起性能问题。如果确定是因为这个,需要考虑是否可以将排序和聚集处理移出数据库和ETL工具,移到操作系统中来处理。

5.隔离并分析每一个计算和转换处理。
有时转换过程中的处理操作也会引起ETL工作的性能。逐步隔离移除它们来判断哪里出了问题。要注意观察像默认值、数据类型转换等操作。

6.隔离更新策略。
更新操作在数据量非常大时是性能非常差的。隔离这部分,看看是否这里出了问题。如果确定是因为大批量更新出了性能问题。应该考虑将insert、update和delete分开处理。

7.检测加载数据的数据库I/O。
如果前面各部分都没有问题,最后需要检测是目标数据库的性能问题。可以找个文件代替数据库,如果性能提高很多,需要仔细检测目标数据库的加载过程中的操作。例如是否关闭了所有的约束,关闭了所有的索引,是否使用了批量加载工具。如果性能还没有提高,可以考虑使用并行加载策略。

重点
简述出三种变化数据捕获技术及其优缺点?
在ETL过程中四个基本的过程分别是什么?
ETL项目中的数据质量部分核心的交付物有那些?
简述三种基本事实表,并说明ETL的过程中如何处理它们
迟到的数据对事实表和维度表有什么影响?怎样来处理这个问题?
如果ETL进程运行较慢,需要分哪几步去找到ETL系统的瓶颈问题。
还有上一篇提出的重点:如何有效关联维度表和事实表,在etl中如何对原始数据进行数据域的划分,维表或者事实表的划分

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容