数据仓库面试题

发布于:2024-07-03 ⋅ 阅读:(10) ⋅ 点赞:(0)

一、ODS、DWD、DWS、ADS划分与职责

数据仓库中的ODS、DWD、DWS、ADS分别代表以下层次,并各自承担不同的职责:

--ODS(Operational Data Store):
名称:贴源层
主要职责:作为数据仓库的第一层,ODS层主要用来接收和存储数据源系统中的数据,同时保证数据的准确性和完整性。ODS层的数据与源系统数据基本保持一致,主要用于简化后续数据加工处理的工作。
数据粒度:细粒度
表类型:通常包括两类,一个用于存储当前需要加载的数据,一个用于存储处理完后的历史数据。

--DWD(Data Warehouse Detail):
名称:数据明细层
主要职责:DWD层是数据处理的核心层,其主要任务是对ODS层中的数据进行清洗、加工、集成、聚合等操作,构建出符合业务需求的数据模型。这一层会对数据进行必要的规范化处理,解决数据的重复、缺失、异常等问题,同时对数据进行标准化和统一化处理。
数据处理方法:包括空值处理、验证数据有效性、规范数据格式、统一数据标准、数据转码、业务规则清洗等。


DIM(Dimension):
名称:维度层
主要职责:DIM层包含了一个或多个维度表,这些维度表描述了数据仓库中的各个维度。例如,在销售数据仓库中,可能包含时间维度表、产品维度表、客户维度表等。

--DWS(Data Warehouse Service):
名称:数据汇总层
主要职责:DWS层是面向业务应用的数据访问层,主要用于提供数据接口和数据服务。它可以提供各种类型的服务,如数据查询、统计、报表、分析等,同时可以通过ETL操作等方式对数据进行加工和处理,为用户提供实时数据服务。
数据处理:包括维度上卷、指标汇总、指标合并等,主要作用是满足共性需求,解决口径不一致、开发任务多等问题,通过宽表化处理提高分析效率。

ADS(Analytics Data Store):
名称:数据应用层
主要职责:ADS层主要是为决策分析层提供数据支持,主要用于存储汇总计算结果和预处理的数据。它主要关注数据的可视化和查询性能,同时还需要具备快速响应的能力,为业务决策提供及时支持。
表类型:通常包括各类报表、查询、仪表盘等。

二、事实表有哪些类型?

--1、事务事实表
事务事实表也称原子事实表,描述业务过程,跟踪控件或时间上某点的度量事件,保存的是最原子的数据,适用于跟踪单个业务事件或事务,如订单、交易等。

--2、周期事实表
以一个周期为时间间隔来记录事实,通常的周期可以是每天、每周、每月、每年等,它只关注某个业务过程在某个时间点的状态,例如订单收货的状态,数据会按照订单收货的时间来切分。

--3、累积快照事实表
用来描述过程开始和结束之间的关键步骤事件,覆盖过程的整个生命周期,适用于那些需要跟踪业务过程从开始到结束所有状态变化的场景,如订单从创建到完成的整个过程

三、数仓中数据模型(数仓中维度与事实之间的模型有那些?)

--1、星型模型
由一个事实表和多个维度表组成,维度表围绕事实表,每个维度表都通过一个或多个键与事实表相连
--2、雪花模型
雪花模型是星型模型的一个扩展,其中维度表可能进一步规范化,形成多个相关的维度表
--3、星座模型
星座模型是多个星型模型或雪花模型的集合,共享某些维度表。

四、 为什么要设计数据分层?

1、方便对表的定位:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解
2、减少重复开发:一些通用的中间层数据,能够减少重复计算
3、统一数据口径:通过数据分层,提供统一的数据出口,统一对外输出的数据口径
4、复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层解决特定的问题

五、事实表设计流程

--1、选择业务
通常一个业务过程对应一张事实表
--2、声明粒度
定义每张事实表的每行数据表示什么,并尽可能选择最细粒度,以应对各种细节程度的需求
--3、确定维度
完成粒度声明以后,也就意味着确定了主键,可以确定与每张事实表相关的维度,选择能够清楚描述业务过程的维度信息,如卖家、买家、商品、时间等。
--4、确定事实
事实是与业务过程有关的度量值,事实通常是数值型的度量值,如销售额、订单数量、点击次数等,事实有可加性、半可加性、非可加性三种类型,需要将不可加性事实分解为可加的组件。
--5、冗余维度
通过将部分维度属性退化到事实表中,可以减少下游用户关联多个表的操作,提高查询效率

六、如何判断事实与维度

--事实(Fact)
度量性质:事实通常是数值型的度量值,如销售额、订单数量、点击次数等。这些度量值可以通过数学计算进行汇总和比较。
业务过程:事实通常与特定的业务过程相关联,例如订单处理、购买行为、网站访问等。每个业务过程都可以产生一个或多个事实。
粒度:事实的粒度是指事实表中的一行数据所代表的业务细节层次。例如,在销售事实表中,粒度可以是每条销售记录(详细粒度)或每日的销售总额(汇总粒度)。
可加性:事实通常具有可加性,意味着可以将多个事实值相加以获取更高层次的总计值。例如,可以将多个订单的销售额相加得到总销售额。

--维度(Dimension)
描述性质:维度用于描述业务过程中的上下文信息,如时间、地点、产品、客户等。维度通常是非数值型的,用于提供对事实的详细描述和分类。
层次结构:维度通常具有层次结构,例如时间维度可以包含年、季度、月、日等层次。这些层次结构有助于用户从不同的角度分析和理解数据。
属性:维度由多个属性组成,这些属性描述了维度的不同方面。例如,客户维度可能包含客户ID、客户姓名、客户地址、客户类型等属性。
稳定性:与事实相比,维度数据通常更稳定,不会频繁变化。维度的属性通常用于过滤和分组事实数据,以便进行更深入的分析。