每日一问|数据仓库面试题这些你都会吗?

61ff1812d71d3a9c08aefde92b1ae96b.png

ddbb74aa39174847b83d276ca3ab0e58.png

问题1:  数据仓库为什要分层?

c7f6c8cfca96d27c69f6ccced11792e7.png

为什么分层

数据分层是一套让我们的数据体系更有序的行之有效的数据组织和管理方法。数据分层不是银弹,也没有绝对标准,当然也不能包治百病,不能解决所有的数据问题,但是,数据分层却可以给我们带来如下的好处:

1)数据结构化更清晰:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解。

2)数据血缘追踪:提供给外界使用的是一张业务表,但是这张业务表可能来源很多张表。如果有一张来源表出问题了,我们可以快速准确的定位到问题,并清楚每张表的作用范围。

3)增强数据复用能力:减少重复开发,通过数据分层规范化,开发一些通用的中间层数据,能够减少重复计算,提高单张业务表的使用率,提升系统的执行效率。

4)简化复杂的问题:把一个复杂的业务分成多个步骤实现,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。

5)减少业务的影响:业务可能会经常变化,这样做就不必改一次业务就需要重新接入数据。

6)统一数据口径:通过数据分层,提供统一的数据出口,统一对外输出的数据口径。

数据分层结构

一般将数据仓库分为三层,自下而上为:数据引入层(ODS,Operation Data Store)、数据公共层(CDM,Common Data Model)和数据应用层(ADS,Application Data Service)。

  • 数据引入层ODS(Operation Data Store):存放未经过处理的原始数据至数据仓库系统,结构上与源系统保持一致,是数据仓库的数据准备区。

  • 数据公共层CDM(Common Data Model,又称通用数据模型层),包括DIM维度表、DWD和DWS,由ODS层数据加工而成。主要完成数据加工与整合,建立一致性的维度,构建可复用的面向分析和统计的明细事实表,以及汇总公共粒度的指标。

    • 公共维度层(DIM):基于维度建模理念思想,建立整个企业的一致性维度。降低数据计算口径和算法不统一风险。公共维度层的表通常也被称为逻辑维度表,维度和维度逻辑表通常一一对应。

    • 公共汇总粒度事实层(DWS):以分析的主题对象作为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表化手段物理化模型。构建命名规范、口径一致的统计指标,为上层提供公共指标,建立汇总宽表、明细事实表。公共汇总粒度事实层的表通常也被称为汇总逻辑表,用于存放派生指标数据。

    • 明细粒度事实层(DWD):以业务过程作为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细层事实表。可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理。明细粒度事实层的表通常也被称为逻辑事实表。

  • 数据应用层ADS(Application Data Service):存放数据产品个性化的统计指标数据。根据CDM与ODS层加工生成。

fda1d577f923b9b5e94d714d2ed6ff08.png

476716596f59631ed11e61f58c7a549b.png

面试指数:★★★★★

参考文档:

https://help.aliyun.com/document_detail/114447.html

https://www.fanruan.com/bw/gysjj

d68fca1314082775d134b5027c711205.png

e93ff3f7f566ebe1561eecf97f84ccdc.png

6ec4d188a3003f65884d33ae6e05a8c1.png

e5c733d346d2b3693207a5823b340acb.png

问题2:  讲讲什么是维度建模?

170873cf7ff35ad485ed3e3d8355485c.png

维度建模概念及方法

维度建模从分析决策的需求出发构建模型,为分析需求服务,因此它重点关注用户如何更快速地完成需求分析,同时具有较好的大规模复杂查询的响应性能。其典型的代表是形模型,以及在一些特殊场景下使用的雪花模型。(我们通常把行为不同的业务处理过程,即事实,在交叉点上打上标记表示该业务处理过程与该维度相关这个矩阵也称为总线矩阵(Bus Matrix) 总线架构和一致性维度、一致性事实共同组成了Kimball的多维体系结构的基础。)

数据仓库工具箱一书中将其设计分为以下几个步骤:选择业务过程、生命粒度、确定维度、确定事实。

基于复杂的业务场景,为了更有效、准确地进行维度模型建设,基于Kimball的四步维度建模方法,阿里进行了进一步改进。

1)选择业务过程及确定事实表类型。

在明确了业务需求以后,接下来需要进行详细的需求分析,对业务的整个生命周期进行分析,明确关键的业务步骤,从而选择与需求有关的业务过程。

业务过程通常使用行为动词表示业务执行的活动。比如淘宝订单流转的业务过程有四个:创建订单、买家付款、卖家发货、买家确认收货。在选择了业务过程以后,相应的事实表类型也随之确定了。比如选择买家付款整个业务过程,那么事实表应为只包含买家付款这一个业务过程的单事务事实表。

2)声明粒度

粒度的声明是事实表建模非常重要的一步,意味着精确定义事实表的每一行所表示的业务含义,粒度传递的是与事实表度量有关的细节层次。明确的粒度能够确保对事实表中行的意思的理解不会产生混淆,保证所有的事实按照相同的细节层次记录。

应该尽量选择最细级别的原子粒度,以确保事实表的应用具有最大的灵活性。同时对于订单过程而言,粒度可以被定义为最细的订单级别。比如在订单中有父子订单的概念,即一个子订单对应一种商品,多个子订单一同结算的话,则会生成一个父订单。那么在这个例子中,事实表的粒度应该选择为子订单级别。

3)确定维度

完成粒度声明以后,也就意味着确定了主键,对应的维度组合以及相关的维度字段就可以确定了,应该选择能够描述清楚业务过程所处的环境的维度信息。比如订单付款事务事实表中,粒度为子订单,相关的维度有买家、卖家、商品、收货人信息、业务类型、订单事件等维度。

4)确定事实

事实可以通过回答“过程的度量是什么”来确定。应该选择与业务过程有关的所有事实,且事实的粒度要与所声明的事实表的粒度一致。事实有可加性、半可加性、非可加性三种类型,需要将不可加性事实分解为可加的组件。(可加性是指可以按照任意维度进行聚合;半可加性是指只能按特定维度进行聚合,例如库存,只能按仓库进行聚合,而不能按时间进行聚合;对于比率型事实则不具备可加性。)

比如订单付款事务事实表中,同粒度的事实有子订单分摊的支付金额、邮费、优惠金额等。

5)冗余维度

在传统的维度建模的星型模型中,对维度的处理是需要单独存放在专门的维表中的,通过事实表的外键获取维度。这样做的目的是为了减少事实表的维度冗余,从而减少存储消耗。而在大数据的事实表模型设计中,考虑更多的是提高下游用户的使用效率,降低数据获取的复杂性,减少关联的表数量。所以通常事实表中会冗余方便下游用户使用的常用维度,以实现对事实表的过滤查询、控制聚合层次、排序数据以及定义主从关系等操作。

比如订单付款事务事实表中,通常会冗余大量的常用维度字段,以及商品类目、卖家店铺等维度信息。

维度表

维度是维度建模的基础和灵魂。在维度建模中,将度量称为“事实” , 将环境描述为“维度”,维度是用于分析事实所需要的多样环境。例如, 在分析交易过程时,可以通过买家、卖家、商品和时间等维度描述交易 发生的环境。

维度的设计过程就是确定维度属性的过程,如何生成维度属性,以 及所生成的维度属性的优劣,决定了维度使用的方便性,成为数据仓库 易用性的关键。正如 Kimball 所说的,数据仓库的能力直接与维度属性 的质量和深度成正比。

下面以商品维度为例对维度设计方法进行详细说明。

1)选择维度或新建维度。作为维度建模对核心,在企业级数据仓库中必须保证维度的唯一性。以商品维度为例,有且只允许有一个维度定义。

2)确定主维表。此处的主维表一般是ODS表,直接与业务系统同步。

3)确定相关维表。根据对业务的梳理,确定哪些表和主维表存在关联关系,并选择其中的某些表用于生成维度属性。以商品维度为例,根据对业务逻辑对梳理,可以得到商品与类目、SPU、卖家、店铺等维度存在关系。

4)确定维度属性。主要包含两个阶段,其中第一个阶段是从主维表中选择维度属性或生成新的维度属性;第二个阶段是从相关维表中选择维度属性或生成新的维度属性。以商品维度为例,从主维表和类目、SPU、卖家店铺相关维表中选择属性或生成新的维度属性。

0f297be13030cc370156bb0f4d7bdd57.png

2df2423caab9f2e2bae15ab9438afbd0.png

面试指数:★★★★★

参考文档:《大数据之路:阿里巴巴大数据实践》

ac07b4f71ade6e303956e31c6d4b1676.png

95962308c9e6ca3c0a53a11eca5cb01b.png

c6aecfaf7c7c03f46713cc8f39acbb24.png

a7c764651fb0a8549e1abe1c4f403b50.png

问题3:  数据仓库常用建模方式?

3101fe2f53cc688e4abdb97831279701.png

为什么需要数据建模

随着数据爆发式增长,如何将数据进行有序、有结构地分类组织和存储是我们面临的一个挑战。数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。有了适合业务和基础数据存储环境的模型,大数据就能获得以下好处:

  • 性能:良好的数据模型能帮助我们快速查询所需要的数据,减少数据的I/O吞吐。

  • 成本:良好的数据模型能极大地减少不必要的数据冗余,也能实现计算结果复用,极大地降低大数据系统中的存储和计算成本。

  • 效率:良好的数据模型能极大地改善用户使用数据的体验,提高使用数据的效率。

  • 质量:良好的数据模型能改善数据统计口径的不一致性,减少数据计算错误的可能性。

因此,毋庸置疑,大数据系统需要数据模型方法来帮助更好地组织和存储数据,以便在性能、成本、效率和质量之间取得最佳平衡。

常用的数据仓库建模方法论

1 ER模型

数据仓库之父Bill lnmon提出的建模方法是从全企业的高度设计一个 3NF 模型,用实体关系(Entity Relationship, ER)模型描述企业业务,在范式理论上符合 3NF。数据仓库中的 3NF 与 OLTP 系统中的 3NF 的区别在于,它是站在企业角度面向主题的抽象,而不是针对某个具体 业务流程的实体对象关系的抽象。其具有以下几个特点:

  • 需要全面了解企业业务和数据。

  • 实施周期非常长。

  • 对建模人员的能力要求非常高。

采用 ER 模型建设数据仓库模型的出发点是整合数据,将各个系统中的数据以整个企业角度按主题进行相似性组合和合并,并进行一致性处理,为数据分析决策服务,但是并不能直接用于分析决策。

其建模步骤分为三个阶段。

  • 高层模型:一个高度抽象的模型,描述主要的主题以及主题间的关系,用于描述企业的业务总体概况。

  • 中层模型:在高层模型的基础上,细化主题的数据项。

  • 物理模型(也叫底层模型):在中层模型的基础上,考虑物理存储,同时基于性能和平台特点进行物理属性的设计,也可能做一些表的合并、分区的设计等。

ER 模型在实践中最典型的代表是 Teradata 公司基于金融业务发布的 FS-LDM (Financial Services Logical Data Model),它通过对金融业务的高度抽象和总结,将金融业务划分为10大主题 ,并以设计面向金融仓库模型的核心为基础,企业基于此模型做适当调整和扩展就能快速落地实施。

2 维度模型

维度模型是数据仓库领域的 Ralph Kimball 大师所倡导的,他的 The Data Warehouse Toolkit-The Complete Guide to Dimensional Modeling 是数据仓库工程领域最流行的数据仓库建模的经典。

维度建模从分析决策的需求出发构建模型,为分析需求服务,因此它重点关注用户如何更快速地完成需求分析,同时具有较好的大规模复杂查询的响应性能。其典型的代表是星形模型,以及在一些特殊场景下使用的雪花模型。其设计分为以下几个步骤。

  • 选择需要进行分析决策的业务过程。业务过程可以是单个业务事件,比如交易的支付、退款等;也可以是某个事件的状态,比如当前的账户余额等;还可以是一系列相关业务事件组成的业务流程,具体需要看我们分析的是某些事件发生情况,还是当前状态, 或是事件流转效率。

  • 选择粒度。在事件分析中,我们要预判所有分析需要细分的程度,从而决定选择的粒度。粒度是维度的一个组合。

  • 识别维表。选择好粒度之后,就需要基于此粒度设计维表,包括维度属性,用于分析时进行分组和筛选。

  • 选择事实。确定分析需要衡量的指标。

4f76d854f1e36781b32f98b0d5859cf0.png

我整理的学习资料

每日一问|数据仓库面试题这些你都会吗?_第1张图片

识别下方二维码,回复“资料合集”,即可获得下载地址。感觉干货多,记得设为星标974c7944923727d0afce4cbb5455e365.png

每日一问|数据仓库面试题这些你都会吗?_第2张图片

历史精彩文章

1、原创|实时数仓实战项目-第一节

2、原创|实时数仓实战项目-第二节(数仓分层)

3、原创|实时数仓实战项目-第三节(数仓治理)

4、附PPT|2021年总结实时数仓最新架构图

5、原创|渣渣二本,喝下这杯逆袭鸡汤,看完年薪不到70万,算我输!!!

6、实时数仓实战项目-第四节(命名规范和分层设计)

7、Flink 在伴鱼的实践:如何保障数据的准确性

8、干货|ClickHouse源码阅读计划--理论&工具的准备

9、ClickHouse源码阅读计划(二) - IStorage和MergeTree的datapart/WAL部分梳理

10、附PPT|京东零售OLAP平台建设和场景实践

11、附PPT|OLAP技术在数据产品中的应用

12、Flink在京东广告计费系统的架构实践

13、PPT限时下载!易车大数据建设PPT合集!

14、附PPT|业务数据治理中台实践

15、每日一问|HBase RowKey设计原则, 项目中是如何设计的?

9e7615eecae063b9513febb248a2fabf.png

点个在看你最好看

你可能感兴趣的:(数据仓库,大数据,编程语言,python,机器学习)