答案来源:大数据面试题V3.0,523道题,679页,46w字

问过的一些公司:字节 x 2,字节(2021.07)-(2021.08)-(2021.10),阿里 x 2,爱奇艺,百度 x 2,百度(2021.08),网易 x 3,网易(2021.09)x2,美团 x 4,美团(2021.09)x2,京东,京东(2021.09),贝壳,keep,马蜂窝 x 2,转转,滴滴,小米,米哈游,有赞 x 2,猿辅导,58 x 2,作业帮社招,字节社招,腾讯社招 x 2,端点数据(2021.07),百度(2021.09),蔚来(2021.09),恒生(2021.09),快手(2021.09),唯品会(2021.10)

参考答案:

首先,我要知道数据仓库分层架构的目标是什么?是为了实现维度建模,进而支撑决策分析目标。

数据分层从关系型在线交易系统到面向主题的数据仓库系统,从范式建模到维度建模的必经之路。

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

隔离原始数据:不论是数据的异常还是数据敏感度,使真实数据与统计数据解耦开。

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

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

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

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

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

减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。

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

分层的核心思想就是解耦,再解耦,把复杂的问题简单化。

数据仓库基础分层主要是分为四层,如下图所示

如上图所示,一个公司可能有多个业务系统,而数据仓库就是将所有的业务系统按照某种组织架构整合起来,形成一个仓储平台,也就是数仓。

1、四层分层

第一层:

ODS——原始数据层:存放原始数据

ODS层即操作数据存储,是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的ETL之后,装入本层;一般来说ODS层的数据和源系统的数据是同构的,主要目的是简化后续数据加工处理的工作。从数据粒度上来说ODS层的数据粒度是最细的。ODS层的表通常包括两类,一个用于存储当前需要加载的数据,一个用于存储处理完后的历史数据。历史数据一般保存3-6个月后需要清除,以节省空间。但不同的项目要区别对待,如果源系统的数据量不大,可以保留更长的时间,甚至全量保存;数据在装入本层前需要做以下工作:去噪、去重、提脏、业务提取、单位统一、砍字段、业务判别。

第二层:

DWD——数据明细层:对ODS层数据进行清洗、维度退化、脱敏等。覆盖所有系统的、完整的、干净的、具有一致性的数据层。

该层一般保持和ODS层一样的数据粒度,并且提供一定的数据质量保证,在ODS的基础上对数据进行加工处理,提供更干净的数据。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,当一个维度没有数据仓库需要的任何数据时,就可以退化维度,将维度退化至事实表中,减少事实表和维表的关联。例如:订单id,这种量级很大的维度,没必要用一张维度表来进行存储,而我们一般在进行数据分析时订单id又非常重要,所以我们将订单id冗余在事实表中,这种维度就是退化维度。

第三层:

DWS——数据服务层: 对DWD层数据进行一个轻度的汇总。

DWS层为公共汇总层,会进行轻度汇总,粒度比明细数据稍粗,会针对度量值进行汇总,目的是避免重复计算。该层数据表会相对比较少,大多都是宽表(一张表会涵盖比较多的业务内容,表中的字段较多)。按照主题划分,如订单、用户等,生成字段比较多的宽表,用于提供后续的业务查询,OLAP分析,数据分发等。

第四层:

DM——数据集市层:为各种统计报表提供数据。

存放的是轻度聚合的数据,也可以称为数据应用层,基于DWD、DWS上的基础数据,整合汇总成分析某一个主题域的报表数据。主要是提供给数据产品和数据分析使用的数据,通常根据业务需求,划分成流量、订单、用户等,生成字段比较多的宽表,用于提供后续的业务查询,OLAP分析,数据分发等。从数据粒度来说,这层的数据是汇总级的数据,也包括部分明细数据。从数据的时间跨度来说,通常是DW层的一部分,主要的目的是为了满足用户分析的需求,而从分析的角度来说,用户通常只需要分析近几年的即可。从数据的广度来说,仍然覆盖了所有业务数据。

2、三层分层

上述四层数仓,如果是问的三层数仓,就相当于是把DWD、DWS合并成DW层,往细的方面分,DW还包括DWM层(数据中间层),三层分层如下:

第一层:

ODS——原始数据层:存放原始数据

第二层:

DW——数据仓库层:数据清洗,初步汇总

本层将从 ODS 层中获得的数据按照主题建立各种数据模型,每一个主题对应一个宏观的分析领域,数据仓库层排除对决策无用的数据,提供特定主题的简明视图。在DW层会保存BI系统中所有的历史数据,例如保存10年的数据。

第三层:

DM——数据集市层

3、五层分层

五层分层如下:

第一层:

ODS——原始数据层:存放原始数据

第二层:

DWD——数据明细层:对ODS层数据进行清洗、维度退化、脱敏等。

第三层:

DWS——数据汇总层: 对DWD层数据进行一个轻度的汇总。

第四层:

ADS——数据应用层:为各种统计报表提供数据

该层是基于DW层的数据,整合汇总成主题域的服务数据,用于提供后续的业务查询等。

第五层:

DIM——维表层:基于维度建模理念思想,建立整个企业的一致性维度。

维表层主要包含两部分数据:

高基数维度数据:一般是用户资料表、商品资料表类似的资料表。数据量可能是千万级或者上亿级别。

低基数维度数据:一般是配置表,比如枚举值对应的中文含义,或者日期维表。数据量可能是个位数或者几千几万。

数据仓库面试题——数据仓库分层相关推荐

  1. 数据仓库面试题整理超详细

    数据仓库面试题 文章目录 数据仓库面试题 数据仓库的定义? 数据仓库和数据库的区别? 如何构建数据仓库? 什么是数据中台? 数据中台.数据仓库.[大数据平台](https://so.csdn.net/ ...

  2. 数据仓库详解及分层理论

    目录 数据仓库定义 数据仓库的特点 数据仓库的作用 数据仓库与传统数据库的区别 数据仓库的架构 数据仓库的要求 什么是数据仓库分层 数据仓库分层的原因 数据仓库具体的分层 说明 数据仓库定义 数据仓库 ...

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

    问题1:  数据仓库为什要分层? 为什么分层 数据分层是一套让我们的数据体系更有序的行之有效的数据组织和管理方法.数据分层不是银弹,也没有绝对标准,当然也不能包治百病,不能解决所有的数据问题,但是,数 ...

  4. 大数据面试题——数据仓库

    文章目录 数据仓库 什么是数据仓库? 数据库与数据仓库的区别? 事实表和维度表 数据仓库的数据模型: 为什么数据仓库要分层? 数据仓库模式:Kimball (金箔)和 Inmon(恩门) 数据库架构- ...

  5. 数据仓库建设-数仓分层

    数据仓库能够帮助企业做出更好的决策,提高业务效率和效益:在数据仓库建设时,绕不开的话题就是数仓分层. 一.数据分层的好处 1. 降低数据开发成本 通用的业务逻辑加工好,后续的开发任务可以基于模型快速使 ...

  6. 数据仓库(6)数仓分层设计架构

      目前主流的数据仓库分层大多为四层,也有五层的架构,这里介绍基本的四层架构. 分别为数据贴源层(ods).数据仓库明细层(dw).多维明细层(dws)和数据集市层(dm).   下面是架构图:    ...

  7. 一文搞懂什么是数据仓库(Data Warehouse)数据仓库与数据库区别有哪些?什么是元数据?

    大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我或者我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 前期回顾 ...

  8. 数据仓库介绍:什么是数据仓库、数据仓库功能、数据仓库价值、数仓领域职业发展方向规划

    数据仓库介绍:什么是数据仓库.数据仓库功能.数据仓库价值.数仓领域职业发展方向规划 大家好,本次分享的主题是数据仓库,通过本次分享的目的,一个是帮助到初次接触大数据行业.或者想要了解大数据体系的伙伴, ...

  9. 【数据仓库】现代数据仓库坏了吗?

    The modern data warehouse architecture creates problems across many layers. Image courtesy of Chad S ...

最新文章

  1. iOS 跑马灯之 TXScrollLabelView
  2. 快速适应性很重要,但不是元学习的全部目标
  3. ul弹性怎么一行显示_css3系列之弹性盒子 flex
  4. 准备树莓派下的模块开发环境
  5. [深度学习] 自然语言处理 --- Huggingface-Pytorch中文语言Bert模型预训练
  6. jaxb list集合对象_JAXB –表示空集合和空集合
  7. servlet的doPost 和doGet和web文件结构
  8. 【备忘】高斯判别分析(GDA)参数手推记录
  9. 快到起飞 | PP-LCNet在CPU上让模型起飞,精度提升且比MobileNetV3+快3倍
  10. mysql timeout expired处理
  11. 高手也不好当,压力更大
  12. [网络安全提高篇] 一一三.Powershell恶意代码检测 (1)论文总结及抽象语法树(AST)提取
  13. 百度地图语音导航开发
  14. 前5名:Raspberry Pi龙卷风警告系统,用于物联网开发的4个开放式开发板等
  15. 基于MVC的社团信息管理系统
  16. C++ :线程的暂停、恢复和停止
  17. 【渝粤题库】国家开放大学2021春2196社会调查研究与方法题目
  18. python基础 多点坐标 绘制折线图 计算两点距离
  19. android设置图片长宽比例,【教程】安卓保证图片长宽比的同时拉伸图片
  20. SOLID之单一职责原则:简约而不简单

热门文章

  1. 运筹学实验8 最短路的求解
  2. 影响因子真的那么可靠吗?
  3. 【视频课】深度学习最有价值的CV领域,30小时掌握目标检测(附作者经历分享)!...
  4. 软件测试之---车载简历编写
  5. 论文三线表中表头添加横线间隔线
  6. 一嗨租车今晚纽交所上市:发行价12美元
  7. Work20230513
  8. 国家高新技术企业认定管理工作网
  9. Sensor简介(一):摄像头模组CCM的结构和原理简述
  10. 《分析一波NBA今年季后赛之狂野西部》程序员不好好写代码,聊上篮球了!